# Documentation (/en) # Seeyu Agent Studio Documentation [#seeyu-agent-studio-documentation] Welcome to Studio, 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 1,000+ integrations and every major LLM. ## Quick Start [#quick-start] Learn what you can build with Seeyu Agent Studio Build your first agent in 10 minutes Learn about the building blocks Explore the integration catalog ## 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 Studio into your applications --- # Research (/en/chat/research) Ask Studio 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?" Studio 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 Studio to write it up. Studio 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." --- # Studio Mailer (/en/chat/mailer) Studio Mailer gives your workspace a dedicated email address. Forward or send emails to it and Studio will process them as tasks — reading the subject, body, and any attachments, then replying to the thread with the result. This means you can interact with Studio directly from your email client without switching apps. ## 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@mothership.seeyu.ai`) 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 Studio and displayed inline in the conversation — image attachments show as previews, just like when you upload them directly in the chat. | 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 | Studio 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 Studio 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** | Studio 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. --- # Automation & configuration (/en/chat/tasks) Studio 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, Studio 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" Studio 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. Studio 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, Studio walks you through connecting it. ## Connecting Integrations [#connecting-integrations] Studio 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 Studio walking through connecting an integration — e.g., the Integration subagent active with an OAuth prompt or confirmation that a credential was connected. */} Once connected, Studio 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 Studio 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. Studio 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 Studio 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. Studio 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. */} --- # Files & documents (/en/chat/files) Describe a document, presentation, image, or visualization and Studio creates it — streaming the content live into the resource panel as it writes. Attach any file to your message and Studio 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. Studio reads the file as context and saves it to your workspace. Use this to: * Hand Studio 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 Studio to turn it into a knowledge base document * Attach a design mockup and ask Studio to describe it or generate code from it Uploaded files appear in the Files panel in the sidebar and are accessible to all workflows in the workspace. Studio 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] Studio 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 Files panel in the sidebar. ## 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] Chat resource panel showing a generated Mothership-Use-Cases.pptx file open with the title slide and first use case slide visible Studio 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] Studio 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]" Chat resource panel showing a generated hero image of a Mothership-branded blimp flying over San Francisco at golden hour, alongside the chat response linking the file Generated images are saved as workspace files. ## Charts and Visualizations [#charts-and-visualizations] Studio 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" Chat resource panel showing a generated chart file with bar charts for backend 5xx errors and error rate over time 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 Studio 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 Studio 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 | --- # Knowledge bases (/en/chat/knowledge) 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 Studio 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 Studio 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" Studio 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 Studio 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 Studio 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 Studio 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. --- # Tables (/en/chat/tables) Chat resource panel showing the pipeline_deals table with company, deal_owner, stage, and amount columns, alongside a chat summary of total pipeline value and breakdown by stage 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 Studio 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?" Studio 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. --- # Chat (/en/chat) Describe what you want and Studio handles it. Build a workflow, run research, generate a presentation, query a table, schedule a recurring job, send a Slack message — Studio knows your entire workspace and takes action directly. ## What You Can Do [#what-you-can-do] | Area | What Studio 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] Studio 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, Studio 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. {/* TODO: Screenshot of Chat showing a subagent section expanded mid-task — e.g., the Build or Research subagent actively working, with its collapsible header and steps visible in the thread. */} ## Adding Context [#adding-context] Bring any workspace object into the conversation via the **+** menu, `@`-mentions, or drag-and-drop from the sidebar. Studio also opens resources automatically when it creates or modifies them. {/* TODO: Screenshot of the resource panel with multiple tabs open — a workflow tab, a table tab, and a file tab — showing different resource types side by side. */} | What to add | How it appears | | ------------------ | ------------------------------------------------- | | **Workflow** | Interactive canvas 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 | | **Past task** | A previous Chat conversation | ## Layout [#layout] Chat has two panes. On the left: the chat thread, where your messages and Studio'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. --- # Workflows (/en/chat/workflows) Describe a workflow and Studio builds it. Reference an existing one by name and Studio edits it. No canvas navigation required — 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. Studio builds it and opens the canvas 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 canvas in the resource panel. */} Open an existing workflow with `@workflow-name` or the **+** menu, then describe the change. Studio 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 Studio 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] Studio 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 Studio to debug it: * "Debug the last failed run of the content pipeline" * "The summarizer block is returning empty output — figure out why" Studio 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] Studio can deploy a workflow as any of the three deployment types: | Deployment type | What it creates | | --------------- | -------------------------------------------------------------------------------- | | **API** | A REST endpoint at `https://agent-studio.seeyu.ai/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." Studio 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] Studio 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 Studio 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] Studio 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" --- # Getting Started (/en/getting-started) Build your first AI workflow in 10 minutes. In this tutorial, you'll create a people research agent that uses advanced LLM-powered search tools to extract and structure information about individuals. ## What You'll Build [#what-youll-build] A people research agent that: 1. Accepts user input through a chat interface 2. Searches the web using AI-powered tools (Exa and Linkup) 3. Extracts and structures information about individuals 4. Returns formatted JSON data with location, profession, and education Getting Started Example ## Step-by-Step Tutorial [#step-by-step-tutorial] Click **New Workflow** in the dashboard and name it "Getting Started". Every new workflow includes a **Start block** by default—this is the entry point that receives user input. Since we'll trigger this workflow via chat, no configuration is needed for the Start block. Drag an **Agent Block** onto the canvas from the left panel and configure it: * **Model**: Select "OpenAI GPT-4o" * **System Prompt**: "You are a people research agent. When given a person's name, use your available search tools to find comprehensive information about them including their location, profession, educational background, and other relevant details." * **User Prompt**: Drag the connection from the Start block's output into this field to connect `` to the user prompt Enhance your agent with web search capabilities. Click on the Agent block to select it. In the **Tools** section: * Click **Add Tool** * Select **Exa** and **Linkup** from the available tools * Provide your API keys for both tools to enable web search and data access Test your workflow using the **Chat panel** on the right side of the screen. In the chat panel: * Click the dropdown and select `agent1.content` to view the agent's output * Enter a test message: "John is a software engineer from San Francisco who studied Computer Science at Stanford University." * Click **Send** to execute the workflow The agent will analyze the person and return structured information. Configure your agent to return structured JSON data. Click on the Agent block to select it. In the **Response Format** section: * Click the **magic wand icon** (✨) next to the schema field * Enter the prompt: "create a schema named person, that contains location, profession, and education" * The AI will automatically generate the JSON schema Return to the **Chat panel** to test the structured response format. With the response format configured, new output options are now available: * Click the dropdown and select the structured output option (the schema you just created) * Enter a test message: "Sarah is a marketing manager from New York who has an MBA from Harvard Business School." * Click **Send** to execute the workflow The agent will now return structured JSON output with the person's information organized into location, profession, and education fields. ## What You've Built [#what-youve-built] You've successfully created an AI workflow that: * ✅ Accepts user input through a chat interface * ✅ Processes unstructured text using AI * ✅ Integrates external search tools (Exa and Linkup) * ✅ Returns structured JSON data with AI-generated schemas * ✅ Demonstrates real-time testing and iteration * ✅ Showcases the power of visual, no-code development ## Key Concepts You Learned [#key-concepts-you-learned] ### Block Types Used [#block-types-used] ### Core Workflow Concepts [#core-workflow-concepts] **Data Flow**\ Connect blocks by dragging connections to pass data between workflow steps **Chat Interface**\ Test workflows in real-time with the chat panel and select different output options **Tool Integration**\ Extend agent capabilities by integrating external services like Exa and Linkup **Variable References**\ Access block outputs using the `` syntax **Structured Output**\ Define JSON schemas to ensure consistent, formatted responses from AI **AI-Generated Schemas**\ Use the magic wand (✨) to generate schemas from natural language prompts **Iterative Development**\ Build, test, and refine workflows quickly with immediate feedback ## Next Steps [#next-steps] Discover API, Function, Condition, and other blocks Connect 1,000+ services including Gmail, Slack, Notion, and more Write custom functions for advanced data processing Make your agent accessible via REST API or webhooks ## Resources [#resources] **Need detailed explanations?** Visit the [Blocks documentation](/workflows#blocks) for comprehensive guides on each component. **Looking for integrations?** Explore the [Tools documentation](/integrations) to see all 1,000+ available integrations. **Ready to go live?** Learn about [Execution and Deployment](/workflows) to make your workflows production-ready. --- # Choosing what to use (/en/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 Studio 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 Studio 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 (/en/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 Studio'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 (/en/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 Studio 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 (/en/agents/mcp) The Model Context Protocol ([MCP](https://modelcontextprotocol.com/)) allows you to connect external tools and services using a standardized protocol, enabling you to integrate APIs and services directly into your workflows. With MCP, you can extend Seeyu Agent Studio's capabilities by adding custom integrations that work seamlessly with your agents and workflows. ## What is MCP? [#what-is-mcp] MCP is an open standard that enables AI assistants to securely connect to external data sources and tools. It provides a standardized way to: * Connect to databases, APIs, and file systems * Access real-time data from external services * Execute custom tools and scripts * Maintain secure, controlled access to external resources ## 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 → MCP Tools**
MCP Tools settings page
2. Click **Add** 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 MCP** to save
Add New MCP Server modal
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. ### Refresh Tools [#refresh-tools] To auto-refresh an MCP tool already in use by an agent, go to **Settings → MCP Tools**, open the server's details, and click **Refresh**. This fetches the latest tool schemas and automatically updates any agent blocks using those tools with the new parameter definitions. ## Using MCP Tools in Agents [#using-mcp-tools-in-agents] Once MCP servers are configured, their tools become available within your agent blocks:
Using MCP Tool in Agent Block
1. Open an **Agent** block 2. In the **Tools** section, click **Add tool…** 3. Under **MCP Servers**, click a server to see its tools
MCP tools list for a selected server
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:
Standalone MCP Tool 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; Studio validates it against the operation's discovered schema before execution. **MCP Server** takes one shared-server ID or managed-connection ID. Studio 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 a Studio 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** | ## Common Use Cases [#common-use-cases] ### Database Integration [#database-integration] Connect to databases to query, insert, or update data within your workflows. ### API Integrations [#api-integrations] Access external APIs and web services that don't have built-in Seeyu Agent Studio integrations. ### File System Access [#file-system-access] Read, write, and manipulate files on local or remote file systems. ### Custom Business Logic [#custom-business-logic] Execute custom scripts or tools specific to your organization's needs. ### Real-time Data Access [#real-time-data-access] Fetch live data from external systems during workflow execution. ## Security Considerations [#security-considerations] * MCP servers run with the permissions of the user who configured them * Always verify MCP server sources before installation * Use environment variables for sensitive configuration data * Review MCP server capabilities before granting access to agents ## Troubleshooting [#troubleshooting] ### MCP Server Not Appearing [#mcp-server-not-appearing] * Verify the server configuration is correct * Check that you have the required permissions * Ensure the MCP server is running and accessible ### Tool Execution Failures [#tool-execution-failures] * Verify tool parameters are correctly formatted * Check MCP server logs for error messages * Ensure required authentication is configured ### Permission Errors [#permission-errors] * Confirm your workspace permission level * Check if the MCP server requires additional authentication * Verify the server is properly configured for your workspace --- # Agent skills (/en/agents/skills) Agent Skills are reusable packages of instructions that give your AI agents specialized capabilities. 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] Skills live on the **Integrations** page: click **Integrations** in the workspace sidebar, then switch to the **Skills** tab. It lists every skill in the workspace, searchable by name. Click a skill to open its detail page, where you edit, share, and delete it. The Skills tab on the Integrations page Click **+ Add to Studio** to open the skill create page, which 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 skill from the Skills 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 Studio follows them for that request — no waiting for Studio 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] Skills are most valuable when agents need specialized knowledge or multi-step workflows: **Domain Expertise** * `api-integration-expert` — Best practices for calling specific APIs (authentication, rate limiting, error handling) * `data-transformation` — ETL patterns, data cleaning, and validation rules * `code-reviewer` — Code review guidelines specific to your team's standards **Workflow Templates** * `bug-investigation` — Step-by-step debugging methodology (reproduce → isolate → test → fix) * `feature-implementation` — Development workflow from requirements to deployment * `document-generator` — Templates and formatting rules for technical documentation **Company-Specific Knowledge** * `our-architecture` — System architecture diagrams, service dependencies, and deployment processes * `style-guide` — Brand guidelines, writing tone, UI/UX patterns * `customer-onboarding` — Standard procedures and common customer questions **When to use skills vs. agent instructions:** * Use **skills** for knowledge that applies across multiple workflows or changes frequently * Use **agent instructions** for task-specific context that's unique to a single agent ## 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 --- # Using files in workflows (/en/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 Studio 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 `studio.files` helpers, like `await studio.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). --- # Editor (/en/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. --- # Files (/en/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. 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. ## 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. 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. --- # Generating files (/en/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. --- # Passing Files (/en/files/passing-files) Seeyu Agent Studio makes it easy to work with files throughout your workflows. Blocks can receive files, process them, and pass them to other blocks seamlessly. ## File Objects [#file-objects] When blocks output files (like Gmail attachments, generated images, or parsed documents), they return a standardized file object: ```json { "name": "report.pdf", "url": "https://...", "base64": "JVBERi0xLjQK...", "type": "application/pdf", "size": 245678 } ``` You can access any of these properties when referencing files from previous blocks. ## The File Block [#the-file-block] The **File block** is the universal entry point for files in your workflows. It accepts files from any source and outputs standardized file objects that work with all integrations. **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 (`name`, `url`, `base64`, `type`, `size`) * `combinedContent` - Extracted text content from all files (for documents) **Example usage:** ``` // Get all files from the File block // Get the first file // Get combined text content from parsed documents ``` 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://agent-studio.seeyu.ai/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://agent-studio.seeyu.ai/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 * **Vision** - Analyze images with AI models * **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. The Vision block needs images, 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. --- # Python (/en/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 studio-sdk ``` ## Quick Start [#quick-start] Here's a simple example to get you started: ```python from studio import StudioClient # Initialize the client client = StudioClient( api_key="your-api-key-here", base_url="https://agent-studio.seeyu.ai" # hosted Studio; the default (https://seeyu.ai) is not the API host ) # 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] ### StudioClient [#studioclient] #### Constructor [#constructor] ```python StudioClient(api_key: str, base_url: str = "https://seeyu.ai") ``` **Parameters:** * `api_key` (str): Your Studio API key * `base_url` (str, optional): Base URL for the Studio API. Set it to `https://agent-studio.seeyu.ai` for hosted Studio #### 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] ``` ### StudioError [#studioerror] ```python class StudioError(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 StudioClient 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 studio import StudioClient client = StudioClient( api_key=os.getenv("STUDIO_API_KEY"), base_url="https://agent-studio.seeyu.ai" ) 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 studio import StudioClient, StudioError import os client = StudioClient( api_key=os.getenv("STUDIO_API_KEY"), base_url="https://agent-studio.seeyu.ai" ) def execute_with_error_handling(): try: result = client.execute_workflow("workflow-id") return result except StudioError 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 studio import StudioClient import os # Using context manager to automatically close the session with StudioClient( api_key=os.getenv("STUDIO_API_KEY"), base_url="https://agent-studio.seeyu.ai" ) 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 studio import StudioClient import os client = StudioClient( api_key=os.getenv("STUDIO_API_KEY"), base_url="https://agent-studio.seeyu.ai" ) 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 studio import StudioClient client = StudioClient( api_key=os.getenv("STUDIO_API_KEY"), base_url="https://agent-studio.seeyu.ai" ) 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 studio import StudioClient, StudioError client = StudioClient( api_key=os.getenv("STUDIO_API_KEY"), base_url="https://agent-studio.seeyu.ai" ) 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 StudioError 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 studio import StudioClient client = StudioClient( api_key=os.getenv("STUDIO_API_KEY"), base_url="https://agent-studio.seeyu.ai" ) 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 studio import StudioClient import os client = StudioClient( api_key=os.getenv("STUDIO_API_KEY"), base_url="https://agent-studio.seeyu.ai" ) 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://agent-studio.seeyu.ai/api/v2/workflows/WORKFLOW_ID/execute', headers={ 'Content-Type': 'application/json', 'X-API-Key': os.getenv('STUDIO_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 studio import StudioClient # Development configuration client = StudioClient( api_key=os.getenv("STUDIO_API_KEY"), base_url=os.getenv("STUDIO_BASE_URL", "https://agent-studio.seeyu.ai") ) ``` ```python import os from studio import StudioClient # Production configuration with error handling api_key = os.getenv("STUDIO_API_KEY") if not api_key: raise ValueError("STUDIO_API_KEY environment variable is required") client = StudioClient( api_key=api_key, base_url=os.getenv("STUDIO_BASE_URL", "https://agent-studio.seeyu.ai") ) ``` ## Getting Your API Key [#getting-your-api-key] Create a key in **Account settings → Studio 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 ## License [#license] Apache-2.0 --- # TypeScript (/en/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 studio-ts-sdk ` `bash yarn add studio-ts-sdk ` `bash bun add studio-ts-sdk ` ## Quick Start [#quick-start] Here's a simple example to get you started: ```typescript import { StudioClient } from "studio-ts-sdk"; // Initialize the client const client = new StudioClient({ apiKey: "your-api-key-here", baseUrl: "https://agent-studio.seeyu.ai", // hosted Studio; the default (https://seeyu.ai) is not the API host }); // 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] ### StudioClient [#studioclient] #### Constructor [#constructor] ```typescript new StudioClient(config: StudioConfig) ``` **Configuration:** * `config.apiKey` (string): Your Studio API key * `config.baseUrl` (string, optional): Base URL for the Studio API (defaults to `https://seeyu.ai`). Set it to `https://agent-studio.seeyu.ai` for hosted Studio #### 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; }; } ``` ### StudioError [#studioerror] ```typescript class StudioError 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 StudioClient 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 { StudioClient } from "studio-ts-sdk"; const client = new StudioClient({ apiKey: process.env.STUDIO_API_KEY!, baseUrl: "https://agent-studio.seeyu.ai", }); 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 { StudioClient, StudioError } from "studio-ts-sdk"; const client = new StudioClient({ apiKey: process.env.STUDIO_API_KEY!, baseUrl: "https://agent-studio.seeyu.ai", }); async function executeWithErrorHandling() { try { const result = await client.executeWorkflow("workflow-id"); return result; } catch (error) { if (error instanceof StudioError) { 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 { StudioClient } from 'studio-ts-sdk'; // Development configuration const apiKey = process.env.STUDIO_API_KEY; if (!apiKey) { throw new Error('STUDIO_API_KEY environment variable is required'); } const client = new StudioClient({ apiKey, baseUrl: process.env.STUDIO_BASE_URL || 'https://agent-studio.seeyu.ai' }); ``` ```typescript import { StudioClient } from 'studio-ts-sdk'; // Production configuration with validation const apiKey = process.env.STUDIO_API_KEY; if (!apiKey) { throw new Error('STUDIO_API_KEY environment variable is required'); } const client = new StudioClient({ apiKey, baseUrl: process.env.STUDIO_BASE_URL || 'https://agent-studio.seeyu.ai' }); ``` ### Node.js Express Integration [#nodejs-express-integration] Integrate with an Express.js server: ```typescript import express from "express"; import { StudioClient } from "studio-ts-sdk"; const app = express(); const client = new StudioClient({ apiKey: process.env.STUDIO_API_KEY!, baseUrl: "https://agent-studio.seeyu.ai", }); 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 or app/api/workflow/route.ts import { NextApiRequest, NextApiResponse } from "next"; import { StudioClient } from "studio-ts-sdk"; const client = new StudioClient({ apiKey: process.env.STUDIO_API_KEY!, baseUrl: "https://agent-studio.seeyu.ai", }); 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 Studio 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 { StudioClient } from 'studio-ts-sdk'; import { readFile } from 'node:fs/promises'; const client = new StudioClient({ apiKey: process.env.STUDIO_API_KEY!, baseUrl: 'https://agent-studio.seeyu.ai' }); 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 { StudioClient, AsyncExecutionResult } from "studio-ts-sdk"; const client = new StudioClient({ apiKey: process.env.STUDIO_API_KEY!, baseUrl: "https://agent-studio.seeyu.ai", }); 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 { StudioClient, StudioError } from "studio-ts-sdk"; const client = new StudioClient({ apiKey: process.env.STUDIO_API_KEY!, baseUrl: "https://agent-studio.seeyu.ai", }); 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 StudioError && 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 { StudioClient } from "studio-ts-sdk"; const client = new StudioClient({ apiKey: process.env.STUDIO_API_KEY!, baseUrl: "https://agent-studio.seeyu.ai", }); 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 { StudioClient } from "studio-ts-sdk"; const client = new StudioClient({ apiKey: process.env.STUDIO_API_KEY!, baseUrl: "https://agent-studio.seeyu.ai", }); 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 Studio SSE response. Keep the Studio 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 → Studio 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) ## License [#license] Apache-2.0 --- # Authentication (/en/api-reference/authentication) The Studio 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. Studio 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** → **Studio API keys**. Workspace administrators can create shared keys from **Workspace settings** → **Studio 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://agent-studio.seeyu.ai/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://agent-studio.seeyu.ai/api/v2/workflows/{workflowId}/execute', { method: 'POST', headers: { 'Content-Type': 'application/json', 'X-API-Key': process.env.STUDIO_API_KEY!, }, body: JSON.stringify({ input: {} }), } ) ``` ```python import os import requests response = requests.post( "https://agent-studio.seeyu.ai/api/v2/workflows/{workflowId}/execute", headers={ "Content-Type": "application/json", "X-API-Key": os.environ["STUDIO_API_KEY"], }, json={"input": {}}, ) ``` ## Workspace Scoping [#workspace-scoping] Every request that names a workspace is checked against the key's own scope before any data is read. The two key types are scoped differently: * **A workspace key can only ever reach its own workspace.** If a request names a different `workspaceId`, the API answers `403` with `API key is not authorized for this workspace` and stops there — no query runs, and the response reveals nothing about whether the other workspace exists. This holds on every endpoint of every API version, and it is not something a workspace admin can grant around. * **A personal key reaches a workspace only when that workspace allows it.** Each workspace has an **Allow personal API keys** setting. With it off, a personal key is refused with `403` and `Personal API keys are not allowed for this workspace`, even when its owner is a member. With it on, the key is still held to its owner's permission level on that workspace — a read endpoint needs `read`, a write endpoint needs `write` — and a key whose owner has neither is refused with `403` and `Access denied`. All three refusals are `403` and are told apart by the message, not by a status code. Branch on the message only for logging — the remedy differs: point the workspace key at its own workspace, turn on **Allow personal API keys** in **Workspace settings**, or raise the owner's workspace permission. A `403` never tells you whether a resource exists in the workspace you could not reach. Resources are always resolved inside `workspaceId`, so a conversation or contact that lives in another workspace is reported as `404` not found rather than as denied. ## 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 * **Chat API** — read and write conversations, messages, contacts, and teams in a workspace inbox * **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 `studio login` to authorize the CLI in your browser, or `studio login --read-only` to request read access. For hosted Studio, add `--endpoint https://agent-studio.seeyu.ai`; the CLI saves the endpoint with the login. 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://agent-studio.seeyu.ai/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. `studio 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-studio-` 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 (/en/api-reference/getting-started) ## Base URL [#base-url] All API requests are made to: ``` https://agent-studio.seeyu.ai ``` This guide covers the **v2** API under `/api/v2/`, which is what the SDKs and every endpoint under **Endpoints** use. The chat inbox is served by a separate, older **v1** surface under `/api/v1/chat/` with different response and error shapes — see [Chat API (v1)](/api-reference/chat). ## 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** → **Studio API keys** to create a personal key, or **Workspace settings** → **Studio API keys** for a workspace key. These examples and the SDKs use API keys; the CLI also supports browser sign-in with `studio 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 Studio editor. The workflow ID is in the URL: ``` https://agent-studio.seeyu.ai/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://agent-studio.seeyu.ai/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://agent-studio.seeyu.ai/api/v2/workflows/${workflowId}/execute`, { method: 'POST', headers: { 'Content-Type': 'application/json', 'X-API-Key': process.env.STUDIO_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://agent-studio.seeyu.ai/api/v2/workflows/{workflow_id}/execute", headers={ "Content-Type": "application/json", "X-API-Key": os.environ["STUDIO_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://agent-studio.seeyu.ai/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://agent-studio.seeyu.ai/api/v2/workflows/{workflowId}/runs/c7a92e15-3f4b-4d8c-a1e6-9b0d5f2c8e74" } } ``` Poll the run status endpoint until the status is terminal: ```bash curl "https://agent-studio.seeyu.ai/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 | | `402` | Usage limit exceeded | `USAGE_LIMIT_EXCEEDED` — the plan does not cover this call | | `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. ### Reading your quota [#reading-your-quota] Every response carries the state of the bucket the request was charged against. Read these rather than hardcoding a rate — the ceiling moves with your plan, and `X-RateLimit-Limit` is the authoritative value for your key at that moment. | Header | Value | | ----------------------- | ------------------------------------------ | | `X-RateLimit-Limit` | Requests allowed in the current window | | `X-RateLimit-Remaining` | Requests still available | | `X-RateLimit-Reset` | ISO 8601 timestamp when the window refills | ### How buckets are keyed [#how-buckets-are-keyed] v2 meters **per operation and per subject**. A key that exhausts its budget on `POST /api/v2/workflows/{id}/execute` can still read logs. Each request is checked against every subject the key resolves to — the API key itself, plus the owning user for a personal key or the workspace for a workspace key — and the most restrictive bucket decides. v1 is coarser: one shared bucket per user across every v1 endpoint. ### Being rate limited [#being-rate-limited] A throttled request returns `429` with the error code `RATE_LIMITED`: ```json { "error": { "code": "RATE_LIMITED", "message": "API rate limit exceeded", "details": { "retryAfter": "2026-09-08T17:45:00.000Z" } } } ``` `Retry-After` gives the wait in whole seconds and `details.retryAfter` the same instant as a timestamp. Back off until then rather than retrying immediately — a retry before the reset is charged against the bucket and pushes it further out. ### Plan gating [#plan-gating] On a free plan, running a workflow programmatically — public API, API key, or MCP server — returns `402` with `USAGE_LIMIT_EXCEEDED` and the message `Programmatic workflow execution requires a paid plan. Upgrade to Pro or higher to use the API.` Reads are unaffected. ## Pagination [#pagination] List endpoints (workflows, logs, audit logs) use **cursor-based pagination**: ```bash # First page curl "https://agent-studio.seeyu.ai/api/v2/logs?workspaceId=WORKSPACE_ID&limit=20" \ -H "X-API-Key: YOUR_API_KEY" # Next page — use the nextCursor from the previous response curl "https://agent-studio.seeyu.ai/api/v2/logs?workspaceId=WORKSPACE_ID&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. --- # Workflow imports and workspace sync (/en/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: $STUDIO_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: $STUDIO_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: $STUDIO_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 Studio 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. --- # Chat API (v1) (/en/api-reference/chat) The chat inbox — conversations, messages, contacts, and teams — is served by a **v1** API under `/api/v1/chat/`. It predates the v2 conventions and does not share them. Read this page once before you write against it; everything else in the API Reference describes v2. ## Base URL and authentication [#base-url-and-authentication] ```bash curl -X GET "https://agent-studio.seeyu.ai/api/v1/chat/conversations?workspaceId=WORKSPACE_ID" \ -H "X-API-Key: YOUR_API_KEY" ``` Authentication is the same `X-API-Key` header as the rest of the API — see [Authentication](/api-reference/authentication). ## Every operation names a workspace [#every-operation-names-a-workspace] `workspaceId` is a **required query parameter** on every read and a required body field on every write. There is no implicit workspace: a request without it is a `400`. A workspace-scoped API key can only ever reach its own workspace. If a request names a different `workspaceId`, the API answers `403` before any query runs. See [Workspace scoping](/api-reference/authentication#workspace-scoping) for the full rules and the three distinct `403` messages. Because resources are always resolved *inside* `workspaceId`, a conversation, contact, or team that lives in another workspace is reported as `404` not found rather than as denied — the API is never an existence oracle for a workspace you cannot reach. ## Responses are bare objects, not `{ data }` [#responses-are-bare-objects-not--data-] v2 wraps every success in `{ "data": ... }`. v1 does not: ```json { "conversation": { "id": "conv_...", "status": "open" } } ``` ```json { "conversations": [ ... ], "pagination": { "page": 1, "perPage": 25, "total": 42, "totalPages": 2 } } ``` ## Errors are flat [#errors-are-flat] v2 answers `{ "error": { "code": "...", "message": "..." } }`. v1 answers a flat object whose only guaranteed field is `error`: | Status | Body | Meaning | | ------ | -------------------------------- | ------------------------------------------------------------------- | | `400` | `{ error, details }` | The request failed validation. `details` lists the failing fields. | | `401` | `{ error }` | The `X-API-Key` header is missing, malformed, expired, or revoked. | | `403` | `{ error }` | The key may not reach this workspace. | | `404` | `{ error }` | No such resource **in this workspace**. | | `409` | `{ error, code, ... }` | The request collides with existing state. See below. | | `429` | `{ error, message, retryAfter }` | Rate limited. Prefer the `Retry-After` header, which is in seconds. | | `500` | `{ error, requestId }` | Unexpected server error. Quote `requestId` in a support request. | Branch on the HTTP status and, for a `409`, on `code`. The `error` string is human-readable and is not a stable contract. ## Recovering from a `409` [#recovering-from-a-409] Two operations can conflict, and both hand you the blocking record so you can reuse it instead of retrying. **`POST /api/v1/chat/conversations`** → `code: "active_conversation_exists"`. The contact already has a conversation in progress *in that inbox*. The `conversation` field carries it — continue the thread there. Conversations in the contact's other inboxes do not block. **`POST /api/v1/chat/contacts`** → `code: "PHONE_ALREADY_EXISTS"`. Another contact in the workspace already holds that phone number, normalized to digits. The response carries `contactId`, `contactName`, `phone`, and `conversationId` — the existing contact's most recently active conversation, or `null`. ## Pagination [#pagination] Most v1 chat lists page by **offset**, with `page` and `perPage` (both integers; `perPage` caps at 100), and return a `pagination` object: ```json { "page": 2, "perPage": 25, "total": 130, "totalPages": 6 } ``` Offset pagination is not a stable snapshot. Conversations are ordered by most recent activity, so a conversation whose activity changes between two requests can appear on two pages or on none. For a consistent sweep, filter to a fixed `status` or process pages back to front. Two endpoints differ, both preserved from the original release: * **`GET /api/v1/chat/contacts`** uses `limit` instead of `perPage`, and its `pagination` object carries `limit` instead of `perPage`. * **`GET /api/v1/chat/conversations/{conversationId}/messages`** is cursor-paginated instead. Omit `before` for the latest page, then pass `meta.before` from each response to walk backwards until `meta.hasMore` is `false`. Messages come back oldest-first within a page. ## Interactive WhatsApp messages [#interactive-whatsapp-messages] On a WhatsApp inbox, a message can give the contact options to tap instead of a reply to type. Send them as `contentAttributes.items` on [Send Message](/api-reference/chat-messages/sendChatMessageV1), or on the first message of [Create Conversation](/api-reference/chat-conversations/createChatConversationV1): ```bash curl -X POST "https://agent-studio.seeyu.ai/api/v1/chat/conversations/CONVERSATION_ID/messages" \ -H "X-API-Key: YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "workspaceId": "WORKSPACE_ID", "content": "Selecione o setor com o qual deseja falar:", "contentAttributes": { "button": "Menu", "sectionTitle": "Setores", "items": [ { "title": "Financeiro", "value": "1" }, { "title": "Comercial", "value": "2" }, { "title": "Secretaria", "value": "3" }, { "title": "Livraria", "value": "4" } ] } }' ``` `content` is the text shown above the options. Each item is `{ title, value, description? }`: the contact sees `title`, and `value` comes back when they tap it, so give every item a different `value`. How many items you send decides how they appear: | Items | Sent as | `title` | `description` | `value` | | ------- | -------------------------------------- | ------------------- | ------------------- | -------------------- | | 1 to 3 | Reply buttons | up to 20 characters | not shown | up to 256 characters | | 4 to 10 | A list the contact opens with a button | up to 24 characters | up to 72 characters | up to 200 characters | A list sends the first 10 items and drops the rest. Two more keys set its labels, and reply buttons ignore both: | Key | What it sets | Limit | Default | | -------------- | ------------------------------------------- | ------------- | ------------ | | `button` | The label of the button that opens the list | 20 characters | `Selecionar` | | `sectionTitle` | The title above the options | 24 characters | `Opções` | A `title`, `description` or label over its limit is cut to fit rather than rejected, and a blank label falls back to its default. A `value` is sent as is, so keep it within its limit. Leave `contentType` at its default: WhatsApp reads `items` whatever the type. The contact's tap arrives as an incoming message whose `content` is the option's `title`. Its `contentAttributes.interactive` holds WhatsApp's reply, with your `value` as `button_reply.id` or `list_reply.id`. Match on that `value` rather than on the title. Options are a free-form message, so WhatsApp only delivers them inside the 24-hour window that opens each time the contact writes to you. Outside it, start with an approved template. ## Rate limits [#rate-limits] Every response carries `X-RateLimit-Limit`, `X-RateLimit-Remaining`, and `X-RateLimit-Reset`. A `429` adds `Retry-After` in seconds — add jitter rather than retrying at exactly that offset. Limits are per plan and shared with the rest of the API. --- # Using a knowledge base in a workflow (/en/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. --- # Debugging retrieval (/en/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. --- # Overview (/en/knowledgebase) The knowledgebase allows you to upload, process, and search through your documents with intelligent vector search and chunking. Documents of various types are automatically processed, embedded, and made searchable. Your documents are intelligently chunked, and you can view, edit, and search through them using natural language queries. ## Upload and Processing [#upload-and-processing] Simply upload your documents to get started. Seeyu Agent Studio automatically processes them in the background, extracting text, creating embeddings, and breaking them into searchable chunks. The system handles the entire processing pipeline for you: 1. **Text Extraction**: Content is extracted from your documents using specialized parsers for each file type 2. **Intelligent Chunking**: Documents are broken into meaningful chunks with configurable size and overlap 3. **Embedding Generation**: Vector embeddings are created for semantic search capabilities 4. **Processing Status**: Track the progress as your documents are processed ## Supported File Types [#supported-file-types] Studio supports PDF, Word (DOC/DOCX), plain text (TXT), Markdown (MD), HTML, HTM, Excel (XLS/XLSX), PowerPoint (PPT/PPTX), CSV, JSON, and YAML/YML files. Files can be up to 100MB each, with optimal performance for files under 50MB. You can upload multiple documents simultaneously, and PDF files include OCR processing for scanned documents. ## Viewing and Editing Chunks [#viewing-and-editing-chunks] Once your documents are processed, you can view and edit the individual chunks. This gives you full control over how your content is organized and searched. Document chunks view showing processed content ### Chunk Configuration [#chunk-configuration] When creating a knowledge base, you can configure how documents are split into chunks: | Setting | Unit | Default | Range | Description | | ------------------ | ---------- | ------- | --------- | --------------------------------------------------- | | **Max Chunk Size** | tokens | 1,024 | 100-4,000 | Maximum size of each chunk (1 token ≈ 4 characters) | | **Min Chunk Size** | characters | 100 | 100-2,000 | Minimum chunk size to avoid tiny fragments | | **Overlap** | tokens | 200 | 0-500 | Context overlap between consecutive chunks | You can also pick a chunking strategy (Auto, Text, Recursive, Sentence, Token, or Regex) to control where splits happen. See [Chunking Strategies](/knowledgebase/chunking-strategies) for a breakdown of when to use each. * **Hierarchical splitting**: Respects document structure (sections, paragraphs, sentences) ### Editing Capabilities [#editing-capabilities] * **Edit chunk content**: Modify the text content of individual chunks * **Adjust chunk boundaries**: Merge or split chunks as needed * **Add metadata**: Enhance chunks with additional context * **Bulk operations**: Manage multiple chunks efficiently ## Advanced PDF Processing [#advanced-pdf-processing] For PDF documents, Seeyu Agent Studio offers enhanced processing capabilities: ### OCR Support [#ocr-support] When configured with Azure or [Mistral OCR](https://docs.mistral.ai/ocr/): * **Scanned document processing**: Extract text from image-based PDFs * **Mixed content handling**: Process PDFs with both text and images * **High accuracy**: Advanced AI models ensure accurate text extraction ## Using The Knowledge Block in Workflows [#using-the-knowledge-block-in-workflows] Once your documents are processed, you can use them in your AI workflows through the Knowledge block. This enables Retrieval-Augmented Generation (RAG), allowing your AI agents to access and reason over your document content to provide more accurate, contextual responses. Using Knowledge Block in Workflows ### Knowledge Block Features [#knowledge-block-features] * **Semantic search**: Find relevant content using natural language queries * **Context integration**: Automatically include relevant chunks in agent prompts * **Dynamic retrieval**: Search happens in real-time during workflow execution * **Relevance scoring**: Results ranked by semantic similarity ### Integration Options [#integration-options] * **System prompts**: Provide context to your AI agents * **Dynamic context**: Search and include relevant information during conversations * **Multi-document search**: Query across your entire knowledgebase * **Filtered search**: Combine with tags for precise content retrieval ## Vector Search Technology [#vector-search-technology] Seeyu Agent Studio uses vector search powered by [pgvector](https://github.com/pgvector/pgvector) to understand the meaning and context of your content: ### Semantic Understanding [#semantic-understanding] * **Contextual search**: Finds relevant content even when exact keywords don't match * **Concept-based retrieval**: Understands relationships between ideas * **Multi-language support**: Works across different languages * **Synonym recognition**: Finds related terms and concepts ### Search Capabilities [#search-capabilities] * **Natural language queries**: Ask questions in plain English * **Similarity search**: Find conceptually similar content * **Hybrid search**: Combines vector and traditional keyword search * **Configurable results**: Control the number and relevance threshold of results ## Document Management [#document-management] ### Organization Features [#organization-features] * **Bulk upload**: Upload multiple files at once via the asynchronous API * **Processing status**: Real-time updates on document processing * **Search and filter**: Find documents quickly in large collections * **Metadata tracking**: Automatic capture of file information and processing details ### Security and Privacy [#security-and-privacy] * **Secure storage**: Documents stored with enterprise-grade security * **Access control**: Workspace-based permissions * **Processing isolation**: Each workspace has isolated document processing * **Data retention**: Configure document retention policies ## Getting Started [#getting-started] 1. **Navigate to your knowledgebase**: Access from your workspace sidebar 2. **Upload documents**: Drag and drop or select files to upload 3. **Monitor processing**: Watch as documents are processed and chunked 4. **Explore chunks**: View and edit the processed content 5. **Add to workflows**: Use the Knowledge block to integrate with your AI agents The knowledgebase transforms your static documents into an intelligent, searchable resource that your AI workflows can leverage for more informed and contextual responses. --- # Tags and filtering (/en/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 input field, 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 `– – –`: Knowledge base document list showing Name, Size, Tokens, Chunks, Uploaded, Status, and Tags columns — Document1.txt shows no tags (– – –) while Document2.txt shows the value 'Waleed' 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: Knowledge block editor showing Operation: search, Knowledge Base: test, Search Query field (optional), Number of Results, and a Tag Filters section with Filter 1 containing Tag: Name, Operator: equals, and a Value field 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. --- # Connectors (/en/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 Studio 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 | | **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) | If you rotate an API key in the external service, update it in Studio as well — OAuth tokens refresh automatically, but API keys do not. ### 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 * **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] Knowledge base document list showing synced Google Docs documents with Name, Size, Tokens, Chunks, Uploaded date, Status, and Tags columns 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. --- # Export (/en/knowledgebase/export-import) An **export** is a single archive that holds a knowledge base: every document, the chunks Studio split it into, the tag definitions and values, and the chunking settings. Use it to keep a copy of a base outside Studio. 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 `.simkb.zip`. ## What the archive contains [#what-the-archive-contains] ```text .simkb.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 Studio 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 studio knowledge export --output-file kb.zip studio knowledge export --output-file kb.zip --no-vectors ``` --- # Chunking Strategies (/en/knowledgebase/chunking-strategies) Studio splits every uploaded document into chunks before generating embeddings. The strategy controls *where* those splits happen. ## How chunking works [#how-chunking-works] Every chunker follows a two-phase pattern: 1. **Split** — break the document at boundaries (paragraphs, sentences, tokens, or a custom regex) 2. **Pack** — merge adjacent splits up to the maximum chunk size This is documented in [LangChain's text splitter guide](https://python.langchain.com/docs/concepts/text_splitters/), which states the principle: *"no resulting merged split should exceed the designated chunk size."* LlamaIndex, Chonkie, and Unstructured follow the same convention. The packing step is what keeps chunks roughly uniform. It also means a chunk usually spans multiple splits — a precise split boundary is not the same as a chunk boundary. Most "why is my regex not producing one chunk per match" surprises trace back to this. ## Configuration shared by all strategies [#configuration-shared-by-all-strategies] | 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 tradeoffs in size and overlap. ## Strategies [#strategies] ### Auto [#auto] Studio 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. ## How to choose [#how-to-choose] Pick **Auto** unless you have a reason not to. If Auto isn't right: * Sentence integrity matters → **Sentence** * Your content has structural markers Text doesn't know about → **Recursive** * You need uniform chunk sizes → **Token** * You have explicit delimiters → **Regex** * Each record must be its own chunk → see below ## 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. Studio'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] --- # Quick Reference (/en/quick-reference) A quick lookup for everyday actions in the Seeyu Agent Studio workflow editor. For keyboard shortcuts, see [Keyboard Shortcuts](/keyboard-shortcuts). **Mod** refers to `Cmd` on macOS and `Ctrl` on Windows/Linux. ## Workspaces [#workspaces]
Action How Preview
Create a workspace Click workspace dropdown → **New Workspace**
Switch workspaces Click workspace dropdown → Select workspace
Invite team members Sidebar → **Invite** . Internal invites join the organization; external workspace members get workspace access only.
Rename a workspace Right-click workspace → **Rename**
Duplicate a workspace Right-click workspace → **Duplicate**
Export a workspace Right-click workspace → **Export**
Delete a workspace Right-click workspace → **Delete**
## Workflows [#workflows]
Action How Preview
Create a workflow Click **+** button in sidebar
Reorder / move workflows Drag workflow up/down or onto a folder
Import a workflow Click import button in sidebar → Select file
Multi-select workflows `Mod+Click` or `Shift+Click` workflows in sidebar
Open in new tab Right-click workflow → **Open in New Tab**
Rename a workflow Right-click workflow → **Rename**
Duplicate a workflow Right-click workflow → **Duplicate**
Export a workflow Right-click workflow → **Export**
Delete a workflow Right-click workflow → **Delete**
Rename a folder Right-click folder → **Rename**
Create workflow in folder Right-click folder → **Create workflow**
Create folder in folder Right-click folder → **Create folder**
Duplicate a folder Right-click folder → **Duplicate**
Export a folder Right-click folder → **Export**
Delete a folder Right-click folder → **Delete**
## Blocks [#blocks]
Action How Preview
Add a block Drag from Toolbar panel, or right-click canvas → **Add Block**
Multi-select blocks `Mod+Click` additional blocks, or shift-drag to draw selection box
Copy blocks `Mod+C` with blocks selected
Paste blocks `Mod+V` to paste copied blocks
Duplicate blocks Right-click → **Duplicate**
Delete blocks `Delete` or `Backspace` key, or right-click → **Delete**
Rename a block Click block name in header, or edit in the Editor panel
Enable/Disable a block Right-click → **Enable/Disable**
Lock/Unlock a block Hover block → Click lock icon (Admin only)
Toggle handle orientation Right-click → **Toggle Handles**
Configure a block Select block → use Editor panel on right
## Connections [#connections]
Action How Preview
Create a connection Drag from output handle to input handle
Delete a connection Click edge to select → `Delete` key
Use output in another block Drag connection tag into input field
## Panels & Views [#panels--views]
Action How Preview
Search toolbar `Mod+Alt+F`
Search everything `Mod+K`
Toggle manual mode Click toggle button to switch between manual and selector
Collapse/expand sidebar Click collapse button on sidebar
## Running & Testing [#running--testing]
Action How Preview
Run workflow Click Run Workflow button or `Mod+Enter`
Stop workflow Click Stop button or `Mod+Enter` while running
Test with chat Use Chat panel on the right side
Select output to view Click dropdown in Chat panel → Select block output
Clear chat history Click clear button in Chat panel
Run from block Hover block → Click play button, or right-click → **Run from block**
Run until block Right-click block → **Run until block**
View execution logs Open terminal panel at bottom, or `Mod+L`
Filter logs Click filter icon in terminal → Filter by block or status
Search logs Use search field in terminal or right-click log entry → **Search**
Copy log entry Clipboard Icon or Right-click log entry → **Copy**
Clear terminal Trash icon or `Mod+D`
## Deployment [#deployment]
Action How Preview
Deploy a workflow Click **Deploy** button in panel
Update deployment Click **Update** when changes are detected
View deployment status Check status indicator (Live/Update/Deploy) in Deploy tab
Revert deployment Access previous versions in Deploy tab → **Promote to live**
Add version description Deploy tab → Click description icon → Add or generate description
Copy API endpoint Deploy tab → API → Copy API cURL
## Variables [#variables]
Action How Preview
Add / Edit / Delete workflow variable Panel -> Variables -> **Add Variable** , click to edit, or delete icon
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
--- # Roles and permissions (/en/platform/permissions) Access in Studio 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] Studio 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 a Studio 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 | Unlimited (seat-gated invites) | 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] 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 Studio. * **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 Studio 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 Studio 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] **Perfect for:** Stakeholders, observers, or team members who need visibility but shouldn't make changes **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] **Perfect for:** Developers, content creators, or team members actively working on automation **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] **Perfect for:** Team leads, project managers, or technical leads who need to manage the workspace **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 Studio 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. *** ## Best Practices [#best-practices] ### Start with Minimal Permissions [#start-with-minimal-permissions] Give users the lowest permission level they need to do their job. You can always increase permissions later. ### Use Organization Structure Wisely [#use-organization-structure-wisely] * Make trusted team leads **Organization Admins** * Most team members should be **Organization Members** * Reserve workspace **Admin** permissions for people who need to manage users ### Review Permissions Regularly [#review-permissions-regularly] Periodically review who has access to what, especially when team members change roles or leave the company. ### Environment Variable Security [#environment-variable-security] * Use personal environment variables for sensitive API keys * Use workspace environment variables for shared configuration * Regularly audit who has access to sensitive variables *** ## 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 --- # Organizing a workspace (/en/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] --- # Cost calculation (/en/platform/costs) Studio calculates workflow usage from the base run charge, billable model usage, and hosted tool usage. ## Credits [#credits] Studio 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 Studio 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 Studio-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 Studio-provided model keys, model usage is billed through Studio. 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 Studio'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 Studio'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 Studio Cloud | | **Organization** | Every current and future workspace in the organization | Organization **admin** or **owner** | Any organization plan on Studio 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, Studio'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 Studio'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 Studio'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] Studio 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 Studio 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] Studio 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, Studio 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://agent-studio.seeyu.ai/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://agent-studio.seeyu.ai/account/settings/billing) * 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 --- # Connected accounts (/en/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] Connected accounts must be enabled for your organization. Studio Cloud also 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 using environment-based feature flags, set `CREDENTIAL_GROUPS=true`. 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. Studio 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 Studio 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 a Studio user [#how-the-email-is-associated-with-a-studio-user] On first use, the invitation email must match the signed-in user's verified Studio email. Studio 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 Studio 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 Studio 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 Studio 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. --- # Workspace fundamentals (/en/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 sidebar is the map of a workspace. Each section is one kind of resource: {/* VISUAL: the workspace sidebar with sections labeled: Workflows, Tables, Files, Knowledge Base, Scheduled Tasks, Logs, Settings. Each row shows one example item. */} ### 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. ### Files [#files] A **file** is a document or binary stored in the workspace, readable by workflows and organized into folders. ### 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). ### Logs [#logs] 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 sidebar section. 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 Studio 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] --- # Secrets (/en/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 tab showing Workspace and Personal sections with inline key-value rows Secrets are organized into two sections: * **Workspace** — 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 key name (e.g. `OPENAI_API_KEY`) into the **Key** 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, click the trash icon on its row and 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, Studio 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 Studio. 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 Studio can see the read in the code before it runs. A hardcoded literal never does: Studio 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, Studio 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 Studio 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. ### Copilot code execution [#copilot-code-execution] Copilot'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: * **Studio 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 Studio 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 Copilot-visible tool result 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. Secret details view showing Key, Value, Description, and Members sections 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 Studio 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 Studio 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 Studio 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 --- # Keyboard Shortcuts (/en/keyboard-shortcuts) Studio 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 [Studio 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 canvas | 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 canvas | | `Mod` + `Shift` + `F` | Fit to view | | `Mod` + `F` | Search and replace in the workflow | | `Mod` + `Shift` + `Enter` | Accept Copilot changes | | `Mod` + `Alt` + `F` | Focus the Toolbar search | ## 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 | --- # Google Books (/en/integrations/google_books) {/* MANUAL-CONTENT-START:intro */} Use [Google Books](https://books.google.com) in Studio 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 | --- # Salesforce Integration Users (/en/integrations/salesforce-service-account) Connect Salesforce through an External Client App and a dedicated integration user. Studio 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. Studio supports both server-to-server flows. Pick one: | Feature | **Client credentials** | **JWT bearer** | | ------------------ | ------------------------------------------ | --------------------------------------------------------------------------------------------------- | | What Studio stores | Consumer key + **consumer secret** | Consumer key + **private key** | | Who calls run as | The app's **Run As** user | The **username** you name in Studio | | 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 Studio 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 Studio 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 Studio 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. Studio 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 Studio 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 Studio 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 Studio; `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=studio-salesforce" ``` Keep `server.key` somewhere safe — Studio 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) Studio 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 Studio. 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 Studio [#adding-the-integration-user-app-to-studio] Open **Integrations** from your workspace sidebar Search for "Salesforce" and open it, then click **Add to Studio** 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**. Studio 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; Studio 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. --- # LinkedIn (/en/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 | --- # PagerDuty (/en/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 }) | --- # Embeddings (/en/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 — Studio's own per-run charge still applies — and the model list is whatever you have pulled onto that server rather than a catalog Studio 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 Studio uses each model's own width rather than one that may or may not take effect. Point Studio at the server with `OLLAMA_URL`. Studio 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. Studio'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 embeddings | | `model` | string | Model used | | `provider` | string | Provider used | | `dimensions` | number | Dimensionality of each vector | | `usage` | json | Token usage | ### 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 | Yes | API key for the selected embedding provider | #### Output [#output-1] | Parameter | Type | Description | | ------------ | ------ | ----------------------------- | | `embeddings` | json | Generated embeddings | | `model` | string | Model used | | `provider` | string | Provider used | | `dimensions` | number | Dimensionality of each vector | | `usage` | json | Token usage | ### 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 embeddings | | `model` | string | Model used | | `provider` | string | Provider used | | `dimensions` | number | Dimensionality of each vector | | `usage` | json | Token usage | ### 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 embeddings | | `model` | string | Model used | | `provider` | string | Provider used | | `dimensions` | number | Dimensionality of each vector | | `usage` | json | Token usage | ### 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 embeddings | | `model` | string | Model used | | `provider` | string | Provider used | | `dimensions` | number | Dimensionality of each vector | | `usage` | json | Token usage | ### 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 embeddings | | `model` | string | Model used | | `provider` | string | Provider used | | `dimensions` | number | Dimensionality of each vector | | `usage` | json | Token usage | --- # Reddit (/en/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 | --- # Mailgun (/en/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 | | `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 | | `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 | | `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 | | `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 | | `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 | | `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 | #### 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 | | `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 | --- # Airtable Personal Access Tokens (/en/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. `studio-airtable-bot`) Add the scopes your workflows need. The full set Studio'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 Studio show the token owner's email as the credential name; and `webhook:manage` is only needed if you use Airtable triggers in Studio. {/* 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. Studio 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 Studio. 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 Studio [#adding-the-personal-access-token-to-studio] Open **Integrations** from your workspace sidebar Search for "Airtable" and open it, then click **Add to Studio** 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**. Studio 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. --- # Wealthbox API Access Tokens (/en/integrations/wealthbox-service-account) Connect Wealthbox with an API access token from the user whose records your workflows should access. The token uses that user's permissions. ## Prerequisites [#prerequisites] Wealthbox trial accounts cannot use the API (calls return `402 Trial expired`). If you don't see an **API Access** section in your Wealthbox settings, contact Wealthbox support before continuing. Wealthbox tokens are tied to the user who creates them and carry that user's permissions. For production workflows, create the token from a dedicated service login with adequate record visibility rather than a personal account — the credential then survives any individual employee leaving. ## Creating the API Access Token [#creating-the-api-access-token] Log in to Wealthbox, open **Settings** (the three-dot menu), and go to **API Access** (direct link: [app.crmworkspace.com/settings/access\_tokens](https://app.crmworkspace.com/settings/access_tokens)) {/* TODO(screenshot): Wealthbox settings page with the API Access section open */} Click **Create Access Token**, give it a label (e.g. `studio-workflows`), and save {/* TODO(screenshot): Wealthbox Create Access Token dialog with a label filled in */} Copy the token. Wealthbox doesn't document an expiry for API access tokens; you can revoke it from this same page at any time. The token carries the full permissions 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. Studio encrypts the token at rest. ## Adding the API Access Token to Studio [#adding-the-api-access-token-to-studio] Open **Integrations** from your workspace sidebar Search for "Wealthbox" and open it, then click **Add to Studio** and choose **Add access token** {/* TODO(screenshot): Wealthbox integration page with the service-account connect option */} Paste the API access token, and optionally set a display name and description {/* TODO(screenshot): Add Wealthbox access token dialog with the API access token filled in */} Click **Add access token**. Studio verifies the token by calling Wealthbox's `/v1/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 Wealthbox block to your workflow. In the credential dropdown, select the saved Wealthbox API access token. Select it and configure the block as you normally would. {/* TODO(screenshot): Wealthbox block in a workflow with the Wealthbox service account selected as the credential */} The block calls Wealthbox's API (`api.crmworkspace.com`) with the token. The credential acts as the Wealthbox user who created the token — contacts, tasks, and notes the workflows touch are the ones that user can see under Wealthbox's permission settings. --- # Chatwoot (/en/integrations/chatwoot) ## Usage Instructions [#usage-instructions] Integrate with Chatwoot to list and manage conversations, send messages, manage contacts, assign agents, and apply labels. Works with self-hosted and cloud Chatwoot instances. ## Actions [#actions] ### List Conversations from Chatwoot [#list-conversations-from-chatwoot] List conversations from a Chatwoot account with optional status and assignee filters #### Input [#input] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ---------------------------------------------------------------------------------- | | `baseUrl` | string | Yes | Chatwoot instance URL (e.g., [https://app.chatwoot.com](https://app.chatwoot.com)) | | `apiAccessToken` | string | Yes | Chatwoot API access token | | `accountId` | string | Yes | Chatwoot account ID | | `status` | string | No | Filter by status: open, resolved, pending, snoozed, all | | `assignee_type` | string | No | Filter by assignee type: me, unassigned, all, assigned | | `page` | number | No | Page number for pagination (starts at 1) | #### Output [#output] | Parameter | Type | Description | | ------------------------ | ------- | ------------------------------------------------------ | | `conversations` | array | Array of conversation objects | | ↳ `id` | number | Conversation ID | | ↳ `account_id` | number | Account ID | | ↳ `inbox_id` | number | Inbox ID | | ↳ `status` | string | Conversation status (open, resolved, pending, snoozed) | | ↳ `agent_last_seen_at` | string | Timestamp when the agent last viewed | | ↳ `contact_last_seen_at` | string | Timestamp when the contact last viewed | | ↳ `created_at` | string | Conversation creation timestamp | | ↳ `updated_at` | string | Conversation last updated timestamp | | ↳ `priority` | string | Priority (nil, urgent, high, medium, low) | | ↳ `unread_count` | number | Number of unread messages | | ↳ `labels` | array | Labels assigned to the conversation | | ↳ `meta` | object | Conversation metadata (sender, assignee, team, etc.) | | ↳ `messages` | array | Recent messages in the conversation | | ↳ `id` | number | Message ID | | ↳ `content` | string | Message content | | ↳ `message_type` | string | Message type (incoming, outgoing, activity) | | ↳ `created_at` | number | Unix timestamp of message creation | | ↳ `private` | boolean | Whether the message is private (internal note) | | `meta` | object | Pagination and filter metadata | | `success` | boolean | Operation success status | ### Get Conversation from Chatwoot [#get-conversation-from-chatwoot] Get details of a specific conversation by ID from Chatwoot #### Input [#input-1] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ---------------------------------------------------------------------------------- | | `baseUrl` | string | Yes | Chatwoot instance URL (e.g., [https://app.chatwoot.com](https://app.chatwoot.com)) | | `apiAccessToken` | string | Yes | Chatwoot API access token | | `accountId` | string | Yes | Chatwoot account ID | | `conversationId` | string | Yes | The conversation ID to retrieve | #### Output [#output-1] | Parameter | Type | Description | | ------------------------ | ------- | ------------------------------------------------------ | | `conversation` | object | Conversation details | | ↳ `id` | number | Conversation ID | | ↳ `account_id` | number | Account ID | | ↳ `inbox_id` | number | Inbox ID | | ↳ `status` | string | Conversation status (open, resolved, pending, snoozed) | | ↳ `agent_last_seen_at` | string | Timestamp when the agent last viewed | | ↳ `contact_last_seen_at` | string | Timestamp when the contact last viewed | | ↳ `created_at` | string | Conversation creation timestamp | | ↳ `updated_at` | string | Conversation last updated timestamp | | ↳ `priority` | string | Priority (nil, urgent, high, medium, low) | | ↳ `unread_count` | number | Number of unread messages | | ↳ `labels` | array | Labels assigned to the conversation | | ↳ `meta` | object | Conversation metadata (sender, assignee, team, etc.) | | ↳ `messages` | array | Recent messages in the conversation | | ↳ `id` | number | Message ID | | ↳ `content` | string | Message content | | ↳ `message_type` | string | Message type (incoming, outgoing, activity) | | ↳ `created_at` | number | Unix timestamp of message creation | | ↳ `private` | boolean | Whether the message is private (internal note) | | `success` | boolean | Operation success status | ### Send Message in Chatwoot [#send-message-in-chatwoot] Send a message in a Chatwoot conversation #### Input [#input-2] | Parameter | Type | Required | Description | | ---------------- | ------- | -------- | ---------------------------------------------------------------------------------- | | `baseUrl` | string | Yes | Chatwoot instance URL (e.g., [https://app.chatwoot.com](https://app.chatwoot.com)) | | `apiAccessToken` | string | Yes | Chatwoot API access token | | `accountId` | string | Yes | Chatwoot account ID | | `conversationId` | string | Yes | The conversation ID to send the message to | | `content` | string | Yes | The message content to send | | `message_type` | string | No | Message type: outgoing (default) or incoming | | `private` | boolean | No | Whether the message is a private note (internal) | #### Output [#output-2] | Parameter | Type | Description | | ---------------------- | ------- | ------------------------------------------------------ | | `message` | object | The sent message object | | ↳ `id` | number | Message ID | | ↳ `content` | string | Message content | | ↳ `message_type` | string | Message type: incoming (0), outgoing (1), activity (2) | | ↳ `content_type` | string | Content type (text, input\_select, etc.) | | ↳ `content_attributes` | object | Additional content attributes | | ↳ `created_at` | number | Unix timestamp of message creation | | ↳ `private` | boolean | Whether the message is private (internal note) | | ↳ `sender` | object | Message sender details | | ↳ `id` | number | Sender ID | | ↳ `name` | string | Sender name | | ↳ `email` | string | Sender email | | ↳ `phone_number` | string | Sender phone number | | ↳ `thumbnail` | string | Sender avatar URL | | ↳ `type` | string | Sender type (contact) | | ↳ `conversation_id` | number | Conversation this message belongs to | | ↳ `account_id` | number | Account ID | | `messageId` | number | ID of the sent message | | `success` | boolean | Operation success status | ### Send WhatsApp Template Message in Chatwoot [#send-whatsapp-template-message-in-chatwoot] Send a WhatsApp template message in a Chatwoot conversation. Requires a pre-approved template name and its parameters. #### Input [#input-3] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `baseUrl` | string | Yes | Chatwoot instance URL (e.g., [https://app.chatwoot.com](https://app.chatwoot.com)) | | `apiAccessToken` | string | Yes | Chatwoot API access token | | `accountId` | string | Yes | Chatwoot account ID | | `conversationId` | string | Yes | The conversation ID to send the template message to | | `content` | string | Yes | The rendered message text (fallback shown if template fails) | | `templateName` | string | Yes | The WhatsApp-approved template name (e.g., "technician\_visit") | | `templateLanguage` | string | Yes | Template language code (e.g., "en\_US", "en", "es") | | `templateCategory` | string | No | Template category: UTILITY, MARKETING, or AUTHENTICATION | | `processedParams` | string | No | JSON object with template variable substitutions. Supports body params (e.g., \{"body": \{"1": "John", "2": "Dubai"}}) and header media (e.g., \{"body": \{...}, "header": \{"media\_url": "https\://...", "media\_type": "image"}}) | #### Output [#output-3] | Parameter | Type | Description | | ---------------------- | ------- | ------------------------------------------------------ | | `message` | object | The sent template message object | | ↳ `id` | number | Message ID | | ↳ `content` | string | Message content | | ↳ `message_type` | string | Message type: incoming (0), outgoing (1), activity (2) | | ↳ `content_type` | string | Content type (text, input\_select, etc.) | | ↳ `content_attributes` | object | Additional content attributes | | ↳ `created_at` | number | Unix timestamp of message creation | | ↳ `private` | boolean | Whether the message is private (internal note) | | ↳ `sender` | object | Message sender details | | ↳ `id` | number | Sender ID | | ↳ `name` | string | Sender name | | ↳ `email` | string | Sender email | | ↳ `phone_number` | string | Sender phone number | | ↳ `thumbnail` | string | Sender avatar URL | | ↳ `type` | string | Sender type (contact) | | ↳ `conversation_id` | number | Conversation this message belongs to | | ↳ `account_id` | number | Account ID | | `messageId` | number | ID of the sent message | | `success` | boolean | Operation success status | ### Send Attachment in Chatwoot [#send-attachment-in-chatwoot] Send a message with a file attachment in a Chatwoot conversation. Supports uploaded files or external URLs. #### Input [#input-4] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ---------------------------------------------------------------------------------- | | `baseUrl` | string | Yes | Chatwoot instance URL (e.g., [https://app.chatwoot.com](https://app.chatwoot.com)) | | `apiAccessToken` | string | Yes | Chatwoot API access token | | `accountId` | string | Yes | Chatwoot account ID | | `conversationId` | string | Yes | The conversation ID to send the attachment to | | `content` | string | No | Optional text caption for the attachment | | `message_type` | string | No | Message type: outgoing (default) or incoming | | `file` | file | No | File to attach (from upload or another block) | | `attachmentUrl` | string | No | URL of the file to attach (alternative to file upload) | | `file_type` | string | No | Type of file: image, audio, video, or file (auto-detected if omitted) | #### Output [#output-4] | Parameter | Type | Description | | ---------------------- | ------- | ------------------------------------------------------ | | `message` | object | The sent message with attachment object | | ↳ `id` | number | Message ID | | ↳ `content` | string | Message content | | ↳ `message_type` | string | Message type: incoming (0), outgoing (1), activity (2) | | ↳ `content_type` | string | Content type (text, input\_select, etc.) | | ↳ `content_attributes` | object | Additional content attributes | | ↳ `created_at` | number | Unix timestamp of message creation | | ↳ `private` | boolean | Whether the message is private (internal note) | | ↳ `sender` | object | Message sender details | | ↳ `id` | number | Sender ID | | ↳ `name` | string | Sender name | | ↳ `email` | string | Sender email | | ↳ `phone_number` | string | Sender phone number | | ↳ `thumbnail` | string | Sender avatar URL | | ↳ `type` | string | Sender type (contact) | | ↳ `conversation_id` | number | Conversation this message belongs to | | ↳ `account_id` | number | Account ID | | `messageId` | number | ID of the sent message | | `success` | boolean | Operation success status | ### Toggle Conversation Status in Chatwoot [#toggle-conversation-status-in-chatwoot] Change the status of a Chatwoot conversation (open, resolved, pending, snoozed) #### Input [#input-5] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ---------------------------------------------------------------------------------- | | `baseUrl` | string | Yes | Chatwoot instance URL (e.g., [https://app.chatwoot.com](https://app.chatwoot.com)) | | `apiAccessToken` | string | Yes | Chatwoot API access token | | `accountId` | string | Yes | Chatwoot account ID | | `conversationId` | string | Yes | The conversation ID to update | | `status` | string | Yes | Target status: open, resolved, pending, or snoozed | | `snoozed_until` | string | No | Unix timestamp until when to snooze (required when status is snoozed) | #### Output [#output-5] | Parameter | Type | Description | | ----------------- | ------- | ---------------------------------- | | `current_status` | string | The new status of the conversation | | `conversation_id` | number | Conversation ID | | `success` | boolean | Operation success status | ### Assign Conversation in Chatwoot [#assign-conversation-in-chatwoot] Assign a Chatwoot conversation to an agent or team #### Input [#input-6] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ---------------------------------------------------------------------------------- | | `baseUrl` | string | Yes | Chatwoot instance URL (e.g., [https://app.chatwoot.com](https://app.chatwoot.com)) | | `apiAccessToken` | string | Yes | Chatwoot API access token | | `accountId` | string | Yes | Chatwoot account ID | | `conversationId` | string | Yes | The conversation ID to assign | | `assignee_id` | string | No | Agent ID to assign the conversation to | | `team_id` | string | No | Team ID to assign the conversation to | #### Output [#output-6] | Parameter | Type | Description | | ------------- | ------- | ------------------------ | | `assignee_id` | number | Assigned agent ID | | `team_id` | number | Assigned team ID | | `success` | boolean | Operation success status | ### Add Labels to Conversation in Chatwoot [#add-labels-to-conversation-in-chatwoot] Add labels to a Chatwoot conversation (replaces existing labels) #### Input [#input-7] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ----------------------------------------------------------------------------------- | | `baseUrl` | string | Yes | Chatwoot instance URL (e.g., [https://app.chatwoot.com](https://app.chatwoot.com)) | | `apiAccessToken` | string | Yes | Chatwoot API access token | | `accountId` | string | Yes | Chatwoot account ID | | `conversationId` | string | Yes | The conversation ID to add labels to | | `labels` | json | Yes | JSON array of label names to set on the conversation (e.g., \["support", "urgent"]) | #### Output [#output-7] | Parameter | Type | Description | | --------- | ------- | ---------------------------------- | | `labels` | array | Labels now set on the conversation | | `success` | boolean | Operation success status | ### List Contacts from Chatwoot [#list-contacts-from-chatwoot] List all contacts from a Chatwoot account with pagination support #### Input [#input-8] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ---------------------------------------------------------------------------------- | | `baseUrl` | string | Yes | Chatwoot instance URL (e.g., [https://app.chatwoot.com](https://app.chatwoot.com)) | | `apiAccessToken` | string | Yes | Chatwoot API access token | | `accountId` | string | Yes | Chatwoot account ID | | `page` | number | No | Page number for pagination (starts at 1) | #### Output [#output-8] | Parameter | Type | Description | | ----------------------- | ------- | -------------------------------- | | `contacts` | array | Array of contact objects | | ↳ `id` | number | Contact ID | | ↳ `name` | string | Contact name | | ↳ `email` | string | Contact email | | ↳ `phone_number` | string | Contact phone number | | ↳ `thumbnail` | string | Contact avatar URL | | ↳ `identifier` | string | External identifier | | ↳ `custom_attributes` | object | Custom attributes on the contact | | ↳ `created_at` | string | Contact creation timestamp | | ↳ `updated_at` | string | Contact last updated timestamp | | ↳ `availability_status` | string | Availability (online, offline) | | ↳ `last_activity_at` | string | Last activity timestamp | | `meta` | object | Pagination metadata | | `success` | boolean | Operation success status | ### Get Contact from Chatwoot [#get-contact-from-chatwoot] Get details of a specific contact by ID from Chatwoot #### Input [#input-9] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ---------------------------------------------------------------------------------- | | `baseUrl` | string | Yes | Chatwoot instance URL (e.g., [https://app.chatwoot.com](https://app.chatwoot.com)) | | `apiAccessToken` | string | Yes | Chatwoot API access token | | `accountId` | string | Yes | Chatwoot account ID | | `contactId` | string | Yes | The contact ID to retrieve | #### Output [#output-9] | Parameter | Type | Description | | ----------------------- | ------- | -------------------------------- | | `contact` | object | Contact details | | ↳ `id` | number | Contact ID | | ↳ `name` | string | Contact name | | ↳ `email` | string | Contact email | | ↳ `phone_number` | string | Contact phone number | | ↳ `thumbnail` | string | Contact avatar URL | | ↳ `identifier` | string | External identifier | | ↳ `custom_attributes` | object | Custom attributes on the contact | | ↳ `created_at` | string | Contact creation timestamp | | ↳ `updated_at` | string | Contact last updated timestamp | | ↳ `availability_status` | string | Availability (online, offline) | | ↳ `last_activity_at` | string | Last activity timestamp | | `success` | boolean | Operation success status | ### Create Contact in Chatwoot [#create-contact-in-chatwoot] Create a new contact in Chatwoot #### Input [#input-10] | Parameter | Type | Required | Description | | ------------------- | ------ | -------- | ---------------------------------------------------------------------------------- | | `baseUrl` | string | Yes | Chatwoot instance URL (e.g., [https://app.chatwoot.com](https://app.chatwoot.com)) | | `apiAccessToken` | string | Yes | Chatwoot API access token | | `accountId` | string | Yes | Chatwoot account ID | | `name` | string | No | Contact name | | `email` | string | No | Contact email address | | `phone_number` | string | No | Contact phone number (with country code, e.g., +1234567890) | | `inbox_id` | string | No | Inbox ID to associate the contact with | | `identifier` | string | No | External unique identifier for the contact | | `custom_attributes` | json | No | Custom attributes as a JSON object | #### Output [#output-10] | Parameter | Type | Description | | ----------------------- | ------- | -------------------------------- | | `contact` | object | Created contact details | | ↳ `id` | number | Contact ID | | ↳ `name` | string | Contact name | | ↳ `email` | string | Contact email | | ↳ `phone_number` | string | Contact phone number | | ↳ `thumbnail` | string | Contact avatar URL | | ↳ `identifier` | string | External identifier | | ↳ `custom_attributes` | object | Custom attributes on the contact | | ↳ `created_at` | string | Contact creation timestamp | | ↳ `updated_at` | string | Contact last updated timestamp | | ↳ `availability_status` | string | Availability (online, offline) | | ↳ `last_activity_at` | string | Last activity timestamp | | `contactId` | number | ID of the created contact | | `success` | boolean | Operation success status | ### Update Contact in Chatwoot [#update-contact-in-chatwoot] Update an existing contact in Chatwoot #### Input [#input-11] | Parameter | Type | Required | Description | | ------------------- | ------ | -------- | ---------------------------------------------------------------------------------- | | `baseUrl` | string | Yes | Chatwoot instance URL (e.g., [https://app.chatwoot.com](https://app.chatwoot.com)) | | `apiAccessToken` | string | Yes | Chatwoot API access token | | `accountId` | string | Yes | Chatwoot account ID | | `contactId` | string | Yes | The contact ID to update | | `name` | string | No | Updated contact name | | `email` | string | No | Updated contact email | | `phone_number` | string | No | Updated phone number | | `identifier` | string | No | Updated external identifier | | `custom_attributes` | json | No | Custom attributes to update as a JSON object | #### Output [#output-11] | Parameter | Type | Description | | ----------------------- | ------- | -------------------------------- | | `contact` | object | Updated contact details | | ↳ `id` | number | Contact ID | | ↳ `name` | string | Contact name | | ↳ `email` | string | Contact email | | ↳ `phone_number` | string | Contact phone number | | ↳ `thumbnail` | string | Contact avatar URL | | ↳ `identifier` | string | External identifier | | ↳ `custom_attributes` | object | Custom attributes on the contact | | ↳ `created_at` | string | Contact creation timestamp | | ↳ `updated_at` | string | Contact last updated timestamp | | ↳ `availability_status` | string | Availability (online, offline) | | ↳ `last_activity_at` | string | Last activity timestamp | | `success` | boolean | Operation success status | ### Search Contacts in Chatwoot [#search-contacts-in-chatwoot] Search contacts in Chatwoot by name, email, phone number, or identifier #### Input [#input-12] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ---------------------------------------------------------------------------------- | | `baseUrl` | string | Yes | Chatwoot instance URL (e.g., [https://app.chatwoot.com](https://app.chatwoot.com)) | | `apiAccessToken` | string | Yes | Chatwoot API access token | | `accountId` | string | Yes | Chatwoot account ID | | `q` | string | Yes | Search query (searches name, email, phone, identifier) | | `page` | number | No | Page number for pagination | #### Output [#output-12] | Parameter | Type | Description | | ----------------------- | ------- | --------------------------------- | | `contacts` | array | Array of matching contact objects | | ↳ `id` | number | Contact ID | | ↳ `name` | string | Contact name | | ↳ `email` | string | Contact email | | ↳ `phone_number` | string | Contact phone number | | ↳ `thumbnail` | string | Contact avatar URL | | ↳ `identifier` | string | External identifier | | ↳ `custom_attributes` | object | Custom attributes on the contact | | ↳ `created_at` | string | Contact creation timestamp | | ↳ `updated_at` | string | Contact last updated timestamp | | ↳ `availability_status` | string | Availability (online, offline) | | ↳ `last_activity_at` | string | Last activity timestamp | | `meta` | object | Pagination metadata | | `success` | boolean | Operation success status | ### List Labels from Chatwoot [#list-labels-from-chatwoot] List all labels in a Chatwoot account #### Input [#input-13] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ---------------------------------------------------------------------------------- | | `baseUrl` | string | Yes | Chatwoot instance URL (e.g., [https://app.chatwoot.com](https://app.chatwoot.com)) | | `apiAccessToken` | string | Yes | Chatwoot API access token | | `accountId` | string | Yes | Chatwoot account ID | #### Output [#output-13] | Parameter | Type | Description | | ------------------- | ------- | ------------------------ | | `labels` | array | Array of label objects | | ↳ `id` | number | Label ID | | ↳ `title` | string | Label title | | ↳ `description` | string | Label description | | ↳ `color` | string | Label color hex code | | ↳ `show_on_sidebar` | boolean | Whether shown on sidebar | | `success` | boolean | Operation success status | ### List Agents from Chatwoot [#list-agents-from-chatwoot] List all agents in a Chatwoot account #### Input [#input-14] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ---------------------------------------------------------------------------------- | | `baseUrl` | string | Yes | Chatwoot instance URL (e.g., [https://app.chatwoot.com](https://app.chatwoot.com)) | | `apiAccessToken` | string | Yes | Chatwoot API access token | | `accountId` | string | Yes | Chatwoot account ID | #### Output [#output-14] | Parameter | Type | Description | | ----------------------- | ------- | ------------------------------------ | | `agents` | array | Array of agent objects | | ↳ `id` | number | Agent ID | | ↳ `name` | string | Agent name | | ↳ `email` | string | Agent email | | ↳ `role` | string | Agent role (agent, administrator) | | ↳ `availability_status` | string | Availability (online, busy, offline) | | ↳ `thumbnail` | string | Agent avatar URL | | `success` | boolean | Operation success status | ### List Inboxes from Chatwoot [#list-inboxes-from-chatwoot] List all inboxes in a Chatwoot account #### Input [#input-15] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ---------------------------------------------------------------------------------- | | `baseUrl` | string | Yes | Chatwoot instance URL (e.g., [https://app.chatwoot.com](https://app.chatwoot.com)) | | `apiAccessToken` | string | Yes | Chatwoot API access token | | `accountId` | string | Yes | Chatwoot account ID | #### Output [#output-15] | Parameter | Type | Description | | -------------------- | ------- | ------------------------------------- | | `inboxes` | array | Array of inbox objects | | ↳ `id` | number | Inbox ID | | ↳ `name` | string | Inbox name | | ↳ `channel_type` | string | Channel type (e.g., web\_widget, api) | | ↳ `greeting_enabled` | boolean | Whether greeting is enabled | | ↳ `greeting_message` | string | Greeting message text | | `success` | boolean | Operation success status | ### Get WhatsApp Templates in Chatwoot [#get-whatsapp-templates-in-chatwoot] Retrieve available WhatsApp message templates from a Chatwoot inbox. Useful for listing approved templates before sending template messages. #### Input [#input-16] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ---------------------------------------------------------------------------------- | | `baseUrl` | string | Yes | Chatwoot instance URL (e.g., [https://app.chatwoot.com](https://app.chatwoot.com)) | | `apiAccessToken` | string | Yes | Chatwoot API access token | | `accountId` | string | Yes | Chatwoot account ID | | `inboxId` | string | Yes | The inbox ID to retrieve templates from (must be a WhatsApp inbox) | #### Output [#output-16] | Parameter | Type | Description | | ----------- | ------- | ------------------------------------ | | `templates` | array | List of available WhatsApp templates | | `count` | number | Number of templates found | | `success` | boolean | Operation success status | --- # Smartlead (/en/integrations/smartlead) {/* MANUAL-CONTENT-START:intro */} [Smartlead](https://www.smartlead.ai/) is a cold email outreach platform. Campaigns pair a multi-step email sequence with a pool of sending mailboxes and a schedule, and Smartlead handles delivery, follow-ups, reply detection, and per-campaign analytics. With the Smartlead integration in Studio, you can: * **Manage campaigns**: Create, get, list, duplicate, and delete campaigns, and update their status, schedule, and settings * **Build sequences**: Retrieve and save the multi-step email sequence attached to a campaign * **Import and manage leads**: Add leads to a campaign, list and export them, look leads up by ID or email, and update their fields * **Control lead state**: Change a lead's category, pause or resume it, mark it complete, unsubscribe it from a campaign or globally, and remove it from a campaign * **Organize lead lists**: Create, get, list, update, and delete lead lists, and list the available lead categories * **Manage sending mailboxes**: List email accounts, and add or remove them from a campaign * **Read analytics**: Pull campaign analytics overall or by date, plus campaign, lead, and mailbox statistics * **Follow conversations**: List inbox replies, lead activities, and a lead's full message history * **Register webhooks**: List, create or update, and delete campaign webhooks, and read the webhook summary In Studio, the Smartlead integration enables your agents to run outreach end to end. An agent can build a campaign and its sequence from a brief, enrich and import leads from another system, react to replies and engagement webhooks by recategorizing or pausing a lead, and roll campaign analytics into a report. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate Smartlead into workflows. Create campaigns, write multi-step email sequences, import and categorize leads, pull campaign analytics, and register webhooks for engagement events. ## Actions [#actions] ### Smartlead List Campaigns [#smartlead-list-campaigns] Retrieves all Smartlead campaigns for the authenticated account. #### Input [#input] | Parameter | Type | Required | Description | | ------------- | ------- | -------- | ------------------------------------------------------- | | `apiKey` | string | Yes | Smartlead API key | | `clientId` | number | No | Only return campaigns for this client (agency accounts) | | `includeTags` | boolean | No | Include campaign tags in the response | #### Output [#output] | Parameter | Type | Description | | ----------------------------- | ------- | ------------------------------------------------------------------ | | `campaigns` | array | List of campaigns | | `leads` | array | List of leads | | `sequences` | array | Email sequence steps | | `categories` | array | Lead categories | | `webhooks` | array | Campaign webhooks | | `stats` | array | Per-email statistics rows | | `history` | array | Lead message history | | `count` | number | Number of records returned | | `total_leads` | number | Total leads in the campaign, or leads newly added when importing | | `total_stats` | number | Total statistics rows matching the filters | | `id` | number | Record ID | | `name` | string | Record name | | `status` | string | Campaign status | | `email` | string | Lead email address | | `webhook_url` | string | Webhook destination URL | | `event_types` | array | Webhook event types | | `sent_count` | number | Emails sent | | `open_count` | number | Email opens | | `click_count` | number | Link clicks | | `reply_count` | number | Replies | | `bounce_count` | number | Bounces | | `campaign_lead_stats` | json | Lead counts by state | | `upload_count` | number | Leads submitted in the request | | `success` | boolean | Whether the action succeeded | | `items` | array | Records returned by Smartlead | | `rows` | array | Rows returned by Smartlead | | `lists` | array | Lead lists | | `summary` | array | Webhook delivery summary rows | | `csv` | string | Exported leads as CSV | | `row_count` | number | Rows in the exported CSV | | `has_more` | boolean | Whether more rows are available | | `list_name` | string | Lead list name | | `positive_reply_count` | number | Replies categorized as positive | | `offset` | number | Pagination offset used | | `limit` | number | Pagination limit used | | `total_count` | number | Total records matching the request | | `from` | string | Start of the reported window | | `to` | string | End of the reported window | | `start_date` | string | Start of the reported range | | `end_date` | string | End of the reported range | | `skipped_count` | number | Emails skipped | | `failed_count` | number | Failed sends | | `stopped_count` | number | Stopped leads | | `unsubscribed_count` | number | Unsubscribes | | `unique_sent_count` | number | Unique leads emailed | | `unique_open_count` | number | Unique opens | | `unique_click_count` | number | Unique clicks | | `block_count` | number | Blocked sends, or leads skipped by the block list | | `drafted_count` | number | Drafted emails | | `sequence_count` | number | Sequence steps in the campaign | | `duplicate_count` | number | Duplicate leads skipped on import | | `invalid_email_count` | number | Leads skipped for an invalid email | | `invalid_emails` | array | Emails rejected as invalid | | `already_added_to_campaign` | number | Leads already in the campaign | | `unsubscribed_leads` | array | Leads skipped because they unsubscribed | | `lead_import_stopped_count` | number | Leads whose import was stopped | | `is_lead_limit_exhausted` | boolean | Whether the plan lead limit was hit | | `is_last_sequence` | boolean | Whether the lead was on the final step | | `next_sequence_id` | number | ID of the next sequence step | | `next_sequence_delay_in_days` | number | Days before the next step | | `first_name` | string | Lead first name | | `last_name` | string | Lead last name | | `phone_number` | string | Lead phone number | | `company_name` | string | Lead company name | | `website` | string | Lead website | | `location` | string | Lead location | | `linkedin_profile` | string | Lead LinkedIn profile URL | | `company_url` | string | Lead company URL | | `custom_fields` | json | Lead custom fields | | `is_unsubscribed` | boolean | Whether the lead is unsubscribed | | `lead_campaign_data` | array | Campaigns the lead belongs to | | `created_at` | string | Creation timestamp | | `updated_at` | string | Last update timestamp | | `leads_count` | number | Leads in the list | | `active_leads_count` | number | Active leads in the list | | `track_settings` | array | Disabled tracking settings | | `scheduler_cron_value` | json | Campaign sending schedule | | `accounts` | array | Sending email accounts, excluding their stored mailbox credentials | | `user_id` | number | Owning Smartlead user ID | | `min_time_btwn_emails` | number | Minimum minutes between emails | | `max_leads_per_day` | number | Maximum new leads per day | | `stop_lead_settings` | string | Activity that stops a lead sequence | | `schedule_start_time` | string | Scheduled start time | | `enable_ai_esp_matching` | boolean | Whether AI ESP matching is enabled | | `send_as_plain_text` | boolean | Whether emails send as plain text | | `follow_up_percentage` | number | Follow-up percentage | | `unsubscribe_text` | string | Unsubscribe text | | `parent_campaign_id` | number | Parent campaign ID | | `client_id` | number | Client ID for agency accounts | | `client_name` | string | Client name | | `client_email` | string | Client email | | `client_company_name` | string | Client company name | | `tags` | array | Tags on the record | | `email_campaign_id` | number | Campaign the webhook belongs to | ### Smartlead Get Campaign [#smartlead-get-campaign] Retrieves a single Smartlead campaign by ID. #### Input [#input-1] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | --------------------- | | `apiKey` | string | Yes | Smartlead API key | | `campaignId` | number | Yes | Smartlead campaign ID | #### Output [#output-1] | Parameter | Type | Description | | ----------------------------- | ------- | ------------------------------------------------------------------ | | `campaigns` | array | List of campaigns | | `leads` | array | List of leads | | `sequences` | array | Email sequence steps | | `categories` | array | Lead categories | | `webhooks` | array | Campaign webhooks | | `stats` | array | Per-email statistics rows | | `history` | array | Lead message history | | `count` | number | Number of records returned | | `total_leads` | number | Total leads in the campaign, or leads newly added when importing | | `total_stats` | number | Total statistics rows matching the filters | | `id` | number | Record ID | | `name` | string | Record name | | `status` | string | Campaign status | | `email` | string | Lead email address | | `webhook_url` | string | Webhook destination URL | | `event_types` | array | Webhook event types | | `sent_count` | number | Emails sent | | `open_count` | number | Email opens | | `click_count` | number | Link clicks | | `reply_count` | number | Replies | | `bounce_count` | number | Bounces | | `campaign_lead_stats` | json | Lead counts by state | | `upload_count` | number | Leads submitted in the request | | `success` | boolean | Whether the action succeeded | | `items` | array | Records returned by Smartlead | | `rows` | array | Rows returned by Smartlead | | `lists` | array | Lead lists | | `summary` | array | Webhook delivery summary rows | | `csv` | string | Exported leads as CSV | | `row_count` | number | Rows in the exported CSV | | `has_more` | boolean | Whether more rows are available | | `list_name` | string | Lead list name | | `positive_reply_count` | number | Replies categorized as positive | | `offset` | number | Pagination offset used | | `limit` | number | Pagination limit used | | `total_count` | number | Total records matching the request | | `from` | string | Start of the reported window | | `to` | string | End of the reported window | | `start_date` | string | Start of the reported range | | `end_date` | string | End of the reported range | | `skipped_count` | number | Emails skipped | | `failed_count` | number | Failed sends | | `stopped_count` | number | Stopped leads | | `unsubscribed_count` | number | Unsubscribes | | `unique_sent_count` | number | Unique leads emailed | | `unique_open_count` | number | Unique opens | | `unique_click_count` | number | Unique clicks | | `block_count` | number | Blocked sends, or leads skipped by the block list | | `drafted_count` | number | Drafted emails | | `sequence_count` | number | Sequence steps in the campaign | | `duplicate_count` | number | Duplicate leads skipped on import | | `invalid_email_count` | number | Leads skipped for an invalid email | | `invalid_emails` | array | Emails rejected as invalid | | `already_added_to_campaign` | number | Leads already in the campaign | | `unsubscribed_leads` | array | Leads skipped because they unsubscribed | | `lead_import_stopped_count` | number | Leads whose import was stopped | | `is_lead_limit_exhausted` | boolean | Whether the plan lead limit was hit | | `is_last_sequence` | boolean | Whether the lead was on the final step | | `next_sequence_id` | number | ID of the next sequence step | | `next_sequence_delay_in_days` | number | Days before the next step | | `first_name` | string | Lead first name | | `last_name` | string | Lead last name | | `phone_number` | string | Lead phone number | | `company_name` | string | Lead company name | | `website` | string | Lead website | | `location` | string | Lead location | | `linkedin_profile` | string | Lead LinkedIn profile URL | | `company_url` | string | Lead company URL | | `custom_fields` | json | Lead custom fields | | `is_unsubscribed` | boolean | Whether the lead is unsubscribed | | `lead_campaign_data` | array | Campaigns the lead belongs to | | `created_at` | string | Creation timestamp | | `updated_at` | string | Last update timestamp | | `leads_count` | number | Leads in the list | | `active_leads_count` | number | Active leads in the list | | `track_settings` | array | Disabled tracking settings | | `scheduler_cron_value` | json | Campaign sending schedule | | `accounts` | array | Sending email accounts, excluding their stored mailbox credentials | | `user_id` | number | Owning Smartlead user ID | | `min_time_btwn_emails` | number | Minimum minutes between emails | | `max_leads_per_day` | number | Maximum new leads per day | | `stop_lead_settings` | string | Activity that stops a lead sequence | | `schedule_start_time` | string | Scheduled start time | | `enable_ai_esp_matching` | boolean | Whether AI ESP matching is enabled | | `send_as_plain_text` | boolean | Whether emails send as plain text | | `follow_up_percentage` | number | Follow-up percentage | | `unsubscribe_text` | string | Unsubscribe text | | `parent_campaign_id` | number | Parent campaign ID | | `client_id` | number | Client ID for agency accounts | | `client_name` | string | Client name | | `client_email` | string | Client email | | `client_company_name` | string | Client company name | | `tags` | array | Tags on the record | | `email_campaign_id` | number | Campaign the webhook belongs to | ### Smartlead Create Campaign [#smartlead-create-campaign] Creates a Smartlead campaign. The campaign starts in DRAFTED status; add sequences, email accounts, and a schedule before starting it. #### Input [#input-2] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | -------------------------------------------- | | `apiKey` | string | Yes | Smartlead API key | | `name` | string | Yes | Campaign name | | `clientId` | number | No | Client to own the campaign (agency accounts) | #### Output [#output-2] | Parameter | Type | Description | | ----------------------------- | ------- | ------------------------------------------------------------------ | | `campaigns` | array | List of campaigns | | `leads` | array | List of leads | | `sequences` | array | Email sequence steps | | `categories` | array | Lead categories | | `webhooks` | array | Campaign webhooks | | `stats` | array | Per-email statistics rows | | `history` | array | Lead message history | | `count` | number | Number of records returned | | `total_leads` | number | Total leads in the campaign, or leads newly added when importing | | `total_stats` | number | Total statistics rows matching the filters | | `id` | number | Record ID | | `name` | string | Record name | | `status` | string | Campaign status | | `email` | string | Lead email address | | `webhook_url` | string | Webhook destination URL | | `event_types` | array | Webhook event types | | `sent_count` | number | Emails sent | | `open_count` | number | Email opens | | `click_count` | number | Link clicks | | `reply_count` | number | Replies | | `bounce_count` | number | Bounces | | `campaign_lead_stats` | json | Lead counts by state | | `upload_count` | number | Leads submitted in the request | | `success` | boolean | Whether the action succeeded | | `items` | array | Records returned by Smartlead | | `rows` | array | Rows returned by Smartlead | | `lists` | array | Lead lists | | `summary` | array | Webhook delivery summary rows | | `csv` | string | Exported leads as CSV | | `row_count` | number | Rows in the exported CSV | | `has_more` | boolean | Whether more rows are available | | `list_name` | string | Lead list name | | `positive_reply_count` | number | Replies categorized as positive | | `offset` | number | Pagination offset used | | `limit` | number | Pagination limit used | | `total_count` | number | Total records matching the request | | `from` | string | Start of the reported window | | `to` | string | End of the reported window | | `start_date` | string | Start of the reported range | | `end_date` | string | End of the reported range | | `skipped_count` | number | Emails skipped | | `failed_count` | number | Failed sends | | `stopped_count` | number | Stopped leads | | `unsubscribed_count` | number | Unsubscribes | | `unique_sent_count` | number | Unique leads emailed | | `unique_open_count` | number | Unique opens | | `unique_click_count` | number | Unique clicks | | `block_count` | number | Blocked sends, or leads skipped by the block list | | `drafted_count` | number | Drafted emails | | `sequence_count` | number | Sequence steps in the campaign | | `duplicate_count` | number | Duplicate leads skipped on import | | `invalid_email_count` | number | Leads skipped for an invalid email | | `invalid_emails` | array | Emails rejected as invalid | | `already_added_to_campaign` | number | Leads already in the campaign | | `unsubscribed_leads` | array | Leads skipped because they unsubscribed | | `lead_import_stopped_count` | number | Leads whose import was stopped | | `is_lead_limit_exhausted` | boolean | Whether the plan lead limit was hit | | `is_last_sequence` | boolean | Whether the lead was on the final step | | `next_sequence_id` | number | ID of the next sequence step | | `next_sequence_delay_in_days` | number | Days before the next step | | `first_name` | string | Lead first name | | `last_name` | string | Lead last name | | `phone_number` | string | Lead phone number | | `company_name` | string | Lead company name | | `website` | string | Lead website | | `location` | string | Lead location | | `linkedin_profile` | string | Lead LinkedIn profile URL | | `company_url` | string | Lead company URL | | `custom_fields` | json | Lead custom fields | | `is_unsubscribed` | boolean | Whether the lead is unsubscribed | | `lead_campaign_data` | array | Campaigns the lead belongs to | | `created_at` | string | Creation timestamp | | `updated_at` | string | Last update timestamp | | `leads_count` | number | Leads in the list | | `active_leads_count` | number | Active leads in the list | | `track_settings` | array | Disabled tracking settings | | `scheduler_cron_value` | json | Campaign sending schedule | | `accounts` | array | Sending email accounts, excluding their stored mailbox credentials | | `user_id` | number | Owning Smartlead user ID | | `min_time_btwn_emails` | number | Minimum minutes between emails | | `max_leads_per_day` | number | Maximum new leads per day | | `stop_lead_settings` | string | Activity that stops a lead sequence | | `schedule_start_time` | string | Scheduled start time | | `enable_ai_esp_matching` | boolean | Whether AI ESP matching is enabled | | `send_as_plain_text` | boolean | Whether emails send as plain text | | `follow_up_percentage` | number | Follow-up percentage | | `unsubscribe_text` | string | Unsubscribe text | | `parent_campaign_id` | number | Parent campaign ID | | `client_id` | number | Client ID for agency accounts | | `client_name` | string | Client name | | `client_email` | string | Client email | | `client_company_name` | string | Client company name | | `tags` | array | Tags on the record | | `email_campaign_id` | number | Campaign the webhook belongs to | ### Smartlead Update Campaign Status [#smartlead-update-campaign-status] Starts, pauses, or stops a Smartlead campaign. START requires the campaign to already have a schedule, sequences, and at least one email account. #### Input [#input-3] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------------------------------- | | `apiKey` | string | Yes | Smartlead API key | | `campaignId` | number | Yes | Smartlead campaign ID | | `status` | string | Yes | Target status: START, PAUSED, STOPPED | #### Output [#output-3] | Parameter | Type | Description | | ----------------------------- | ------- | ------------------------------------------------------------------ | | `campaigns` | array | List of campaigns | | `leads` | array | List of leads | | `sequences` | array | Email sequence steps | | `categories` | array | Lead categories | | `webhooks` | array | Campaign webhooks | | `stats` | array | Per-email statistics rows | | `history` | array | Lead message history | | `count` | number | Number of records returned | | `total_leads` | number | Total leads in the campaign, or leads newly added when importing | | `total_stats` | number | Total statistics rows matching the filters | | `id` | number | Record ID | | `name` | string | Record name | | `status` | string | Campaign status | | `email` | string | Lead email address | | `webhook_url` | string | Webhook destination URL | | `event_types` | array | Webhook event types | | `sent_count` | number | Emails sent | | `open_count` | number | Email opens | | `click_count` | number | Link clicks | | `reply_count` | number | Replies | | `bounce_count` | number | Bounces | | `campaign_lead_stats` | json | Lead counts by state | | `upload_count` | number | Leads submitted in the request | | `success` | boolean | Whether the action succeeded | | `items` | array | Records returned by Smartlead | | `rows` | array | Rows returned by Smartlead | | `lists` | array | Lead lists | | `summary` | array | Webhook delivery summary rows | | `csv` | string | Exported leads as CSV | | `row_count` | number | Rows in the exported CSV | | `has_more` | boolean | Whether more rows are available | | `list_name` | string | Lead list name | | `positive_reply_count` | number | Replies categorized as positive | | `offset` | number | Pagination offset used | | `limit` | number | Pagination limit used | | `total_count` | number | Total records matching the request | | `from` | string | Start of the reported window | | `to` | string | End of the reported window | | `start_date` | string | Start of the reported range | | `end_date` | string | End of the reported range | | `skipped_count` | number | Emails skipped | | `failed_count` | number | Failed sends | | `stopped_count` | number | Stopped leads | | `unsubscribed_count` | number | Unsubscribes | | `unique_sent_count` | number | Unique leads emailed | | `unique_open_count` | number | Unique opens | | `unique_click_count` | number | Unique clicks | | `block_count` | number | Blocked sends, or leads skipped by the block list | | `drafted_count` | number | Drafted emails | | `sequence_count` | number | Sequence steps in the campaign | | `duplicate_count` | number | Duplicate leads skipped on import | | `invalid_email_count` | number | Leads skipped for an invalid email | | `invalid_emails` | array | Emails rejected as invalid | | `already_added_to_campaign` | number | Leads already in the campaign | | `unsubscribed_leads` | array | Leads skipped because they unsubscribed | | `lead_import_stopped_count` | number | Leads whose import was stopped | | `is_lead_limit_exhausted` | boolean | Whether the plan lead limit was hit | | `is_last_sequence` | boolean | Whether the lead was on the final step | | `next_sequence_id` | number | ID of the next sequence step | | `next_sequence_delay_in_days` | number | Days before the next step | | `first_name` | string | Lead first name | | `last_name` | string | Lead last name | | `phone_number` | string | Lead phone number | | `company_name` | string | Lead company name | | `website` | string | Lead website | | `location` | string | Lead location | | `linkedin_profile` | string | Lead LinkedIn profile URL | | `company_url` | string | Lead company URL | | `custom_fields` | json | Lead custom fields | | `is_unsubscribed` | boolean | Whether the lead is unsubscribed | | `lead_campaign_data` | array | Campaigns the lead belongs to | | `created_at` | string | Creation timestamp | | `updated_at` | string | Last update timestamp | | `leads_count` | number | Leads in the list | | `active_leads_count` | number | Active leads in the list | | `track_settings` | array | Disabled tracking settings | | `scheduler_cron_value` | json | Campaign sending schedule | | `accounts` | array | Sending email accounts, excluding their stored mailbox credentials | | `user_id` | number | Owning Smartlead user ID | | `min_time_btwn_emails` | number | Minimum minutes between emails | | `max_leads_per_day` | number | Maximum new leads per day | | `stop_lead_settings` | string | Activity that stops a lead sequence | | `schedule_start_time` | string | Scheduled start time | | `enable_ai_esp_matching` | boolean | Whether AI ESP matching is enabled | | `send_as_plain_text` | boolean | Whether emails send as plain text | | `follow_up_percentage` | number | Follow-up percentage | | `unsubscribe_text` | string | Unsubscribe text | | `parent_campaign_id` | number | Parent campaign ID | | `client_id` | number | Client ID for agency accounts | | `client_name` | string | Client name | | `client_email` | string | Client email | | `client_company_name` | string | Client company name | | `tags` | array | Tags on the record | | `email_campaign_id` | number | Campaign the webhook belongs to | ### Smartlead Update Campaign Schedule [#smartlead-update-campaign-schedule] Sets the sending window, timezone, and throughput limits for a Smartlead campaign. A campaign cannot be started until a schedule exists. #### Input [#input-4] | Parameter | Type | Required | Description | | ---------------------- | ------ | -------- | ---------------------------------------------------------------------- | | `apiKey` | string | Yes | Smartlead API key | | `campaignId` | number | Yes | Smartlead campaign ID | | `timezone` | string | Yes | IANA timezone for the sending window, e.g. America/Los\_Angeles | | `daysOfTheWeek` | array | Yes | Sending days as ISO weekday numbers, where 1 is Monday and 7 is Sunday | | `startHour` | string | Yes | Sending window start in 24-hour HH:MM format, e.g. 09:00 | | `endHour` | string | Yes | Sending window end in 24-hour HH:MM format, e.g. 17:00 | | `minTimeBetweenEmails` | number | No | Minimum minutes to wait between emails | | `maxNewLeadsPerDay` | number | No | Maximum new leads to contact per day | | `scheduleStartTime` | string | No | ISO 8601 timestamp to begin sending, omit to start immediately | #### Output [#output-4] | Parameter | Type | Description | | ----------------------------- | ------- | ------------------------------------------------------------------ | | `campaigns` | array | List of campaigns | | `leads` | array | List of leads | | `sequences` | array | Email sequence steps | | `categories` | array | Lead categories | | `webhooks` | array | Campaign webhooks | | `stats` | array | Per-email statistics rows | | `history` | array | Lead message history | | `count` | number | Number of records returned | | `total_leads` | number | Total leads in the campaign, or leads newly added when importing | | `total_stats` | number | Total statistics rows matching the filters | | `id` | number | Record ID | | `name` | string | Record name | | `status` | string | Campaign status | | `email` | string | Lead email address | | `webhook_url` | string | Webhook destination URL | | `event_types` | array | Webhook event types | | `sent_count` | number | Emails sent | | `open_count` | number | Email opens | | `click_count` | number | Link clicks | | `reply_count` | number | Replies | | `bounce_count` | number | Bounces | | `campaign_lead_stats` | json | Lead counts by state | | `upload_count` | number | Leads submitted in the request | | `success` | boolean | Whether the action succeeded | | `items` | array | Records returned by Smartlead | | `rows` | array | Rows returned by Smartlead | | `lists` | array | Lead lists | | `summary` | array | Webhook delivery summary rows | | `csv` | string | Exported leads as CSV | | `row_count` | number | Rows in the exported CSV | | `has_more` | boolean | Whether more rows are available | | `list_name` | string | Lead list name | | `positive_reply_count` | number | Replies categorized as positive | | `offset` | number | Pagination offset used | | `limit` | number | Pagination limit used | | `total_count` | number | Total records matching the request | | `from` | string | Start of the reported window | | `to` | string | End of the reported window | | `start_date` | string | Start of the reported range | | `end_date` | string | End of the reported range | | `skipped_count` | number | Emails skipped | | `failed_count` | number | Failed sends | | `stopped_count` | number | Stopped leads | | `unsubscribed_count` | number | Unsubscribes | | `unique_sent_count` | number | Unique leads emailed | | `unique_open_count` | number | Unique opens | | `unique_click_count` | number | Unique clicks | | `block_count` | number | Blocked sends, or leads skipped by the block list | | `drafted_count` | number | Drafted emails | | `sequence_count` | number | Sequence steps in the campaign | | `duplicate_count` | number | Duplicate leads skipped on import | | `invalid_email_count` | number | Leads skipped for an invalid email | | `invalid_emails` | array | Emails rejected as invalid | | `already_added_to_campaign` | number | Leads already in the campaign | | `unsubscribed_leads` | array | Leads skipped because they unsubscribed | | `lead_import_stopped_count` | number | Leads whose import was stopped | | `is_lead_limit_exhausted` | boolean | Whether the plan lead limit was hit | | `is_last_sequence` | boolean | Whether the lead was on the final step | | `next_sequence_id` | number | ID of the next sequence step | | `next_sequence_delay_in_days` | number | Days before the next step | | `first_name` | string | Lead first name | | `last_name` | string | Lead last name | | `phone_number` | string | Lead phone number | | `company_name` | string | Lead company name | | `website` | string | Lead website | | `location` | string | Lead location | | `linkedin_profile` | string | Lead LinkedIn profile URL | | `company_url` | string | Lead company URL | | `custom_fields` | json | Lead custom fields | | `is_unsubscribed` | boolean | Whether the lead is unsubscribed | | `lead_campaign_data` | array | Campaigns the lead belongs to | | `created_at` | string | Creation timestamp | | `updated_at` | string | Last update timestamp | | `leads_count` | number | Leads in the list | | `active_leads_count` | number | Active leads in the list | | `track_settings` | array | Disabled tracking settings | | `scheduler_cron_value` | json | Campaign sending schedule | | `accounts` | array | Sending email accounts, excluding their stored mailbox credentials | | `user_id` | number | Owning Smartlead user ID | | `min_time_btwn_emails` | number | Minimum minutes between emails | | `max_leads_per_day` | number | Maximum new leads per day | | `stop_lead_settings` | string | Activity that stops a lead sequence | | `schedule_start_time` | string | Scheduled start time | | `enable_ai_esp_matching` | boolean | Whether AI ESP matching is enabled | | `send_as_plain_text` | boolean | Whether emails send as plain text | | `follow_up_percentage` | number | Follow-up percentage | | `unsubscribe_text` | string | Unsubscribe text | | `parent_campaign_id` | number | Parent campaign ID | | `client_id` | number | Client ID for agency accounts | | `client_name` | string | Client name | | `client_email` | string | Client email | | `client_company_name` | string | Client company name | | `tags` | array | Tags on the record | | `email_campaign_id` | number | Campaign the webhook belongs to | ### Smartlead Update Campaign Settings [#smartlead-update-campaign-settings] Updates tracking, stop-on-activity, and sending settings for a Smartlead campaign. #### Input [#input-5] | Parameter | Type | Required | Description | | --------------------- | ------- | -------- | -------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Smartlead API key | | `campaignId` | number | Yes | Smartlead campaign ID | | `trackSettings` | array | No | Tracking to disable. Allowed values: DONT\_TRACK\_EMAIL\_OPEN, DONT\_TRACK\_LINK\_CLICK, DONT\_TRACK\_REPLY\_TO\_AN\_EMAIL | | `stopLeadSettings` | string | No | Lead activity that stops the sequence: REPLY\_TO\_AN\_EMAIL, CLICK\_ON\_A\_LINK, OPEN\_AN\_EMAIL | | `sendAsPlainText` | boolean | No | Send campaign emails as plain text | | `followUpPercentage` | number | No | Percentage of leads that receive follow-ups | | `unsubscribeText` | string | No | Unsubscribe text appended to emails | | `enableAiEspMatching` | boolean | No | Match sending accounts to recipient email providers | #### Output [#output-5] | Parameter | Type | Description | | ----------------------------- | ------- | ------------------------------------------------------------------ | | `campaigns` | array | List of campaigns | | `leads` | array | List of leads | | `sequences` | array | Email sequence steps | | `categories` | array | Lead categories | | `webhooks` | array | Campaign webhooks | | `stats` | array | Per-email statistics rows | | `history` | array | Lead message history | | `count` | number | Number of records returned | | `total_leads` | number | Total leads in the campaign, or leads newly added when importing | | `total_stats` | number | Total statistics rows matching the filters | | `id` | number | Record ID | | `name` | string | Record name | | `status` | string | Campaign status | | `email` | string | Lead email address | | `webhook_url` | string | Webhook destination URL | | `event_types` | array | Webhook event types | | `sent_count` | number | Emails sent | | `open_count` | number | Email opens | | `click_count` | number | Link clicks | | `reply_count` | number | Replies | | `bounce_count` | number | Bounces | | `campaign_lead_stats` | json | Lead counts by state | | `upload_count` | number | Leads submitted in the request | | `success` | boolean | Whether the action succeeded | | `items` | array | Records returned by Smartlead | | `rows` | array | Rows returned by Smartlead | | `lists` | array | Lead lists | | `summary` | array | Webhook delivery summary rows | | `csv` | string | Exported leads as CSV | | `row_count` | number | Rows in the exported CSV | | `has_more` | boolean | Whether more rows are available | | `list_name` | string | Lead list name | | `positive_reply_count` | number | Replies categorized as positive | | `offset` | number | Pagination offset used | | `limit` | number | Pagination limit used | | `total_count` | number | Total records matching the request | | `from` | string | Start of the reported window | | `to` | string | End of the reported window | | `start_date` | string | Start of the reported range | | `end_date` | string | End of the reported range | | `skipped_count` | number | Emails skipped | | `failed_count` | number | Failed sends | | `stopped_count` | number | Stopped leads | | `unsubscribed_count` | number | Unsubscribes | | `unique_sent_count` | number | Unique leads emailed | | `unique_open_count` | number | Unique opens | | `unique_click_count` | number | Unique clicks | | `block_count` | number | Blocked sends, or leads skipped by the block list | | `drafted_count` | number | Drafted emails | | `sequence_count` | number | Sequence steps in the campaign | | `duplicate_count` | number | Duplicate leads skipped on import | | `invalid_email_count` | number | Leads skipped for an invalid email | | `invalid_emails` | array | Emails rejected as invalid | | `already_added_to_campaign` | number | Leads already in the campaign | | `unsubscribed_leads` | array | Leads skipped because they unsubscribed | | `lead_import_stopped_count` | number | Leads whose import was stopped | | `is_lead_limit_exhausted` | boolean | Whether the plan lead limit was hit | | `is_last_sequence` | boolean | Whether the lead was on the final step | | `next_sequence_id` | number | ID of the next sequence step | | `next_sequence_delay_in_days` | number | Days before the next step | | `first_name` | string | Lead first name | | `last_name` | string | Lead last name | | `phone_number` | string | Lead phone number | | `company_name` | string | Lead company name | | `website` | string | Lead website | | `location` | string | Lead location | | `linkedin_profile` | string | Lead LinkedIn profile URL | | `company_url` | string | Lead company URL | | `custom_fields` | json | Lead custom fields | | `is_unsubscribed` | boolean | Whether the lead is unsubscribed | | `lead_campaign_data` | array | Campaigns the lead belongs to | | `created_at` | string | Creation timestamp | | `updated_at` | string | Last update timestamp | | `leads_count` | number | Leads in the list | | `active_leads_count` | number | Active leads in the list | | `track_settings` | array | Disabled tracking settings | | `scheduler_cron_value` | json | Campaign sending schedule | | `accounts` | array | Sending email accounts, excluding their stored mailbox credentials | | `user_id` | number | Owning Smartlead user ID | | `min_time_btwn_emails` | number | Minimum minutes between emails | | `max_leads_per_day` | number | Maximum new leads per day | | `stop_lead_settings` | string | Activity that stops a lead sequence | | `schedule_start_time` | string | Scheduled start time | | `enable_ai_esp_matching` | boolean | Whether AI ESP matching is enabled | | `send_as_plain_text` | boolean | Whether emails send as plain text | | `follow_up_percentage` | number | Follow-up percentage | | `unsubscribe_text` | string | Unsubscribe text | | `parent_campaign_id` | number | Parent campaign ID | | `client_id` | number | Client ID for agency accounts | | `client_name` | string | Client name | | `client_email` | string | Client email | | `client_company_name` | string | Client company name | | `tags` | array | Tags on the record | | `email_campaign_id` | number | Campaign the webhook belongs to | ### Smartlead Get Campaign Analytics [#smartlead-get-campaign-analytics] Retrieves lifetime performance totals for a Smartlead campaign — sends, opens, clicks, replies, bounces, and lead counts by state. #### Input [#input-6] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | --------------------- | | `apiKey` | string | Yes | Smartlead API key | | `campaignId` | number | Yes | Smartlead campaign ID | #### Output [#output-6] | Parameter | Type | Description | | ----------------------------- | ------- | ------------------------------------------------------------------ | | `campaigns` | array | List of campaigns | | `leads` | array | List of leads | | `sequences` | array | Email sequence steps | | `categories` | array | Lead categories | | `webhooks` | array | Campaign webhooks | | `stats` | array | Per-email statistics rows | | `history` | array | Lead message history | | `count` | number | Number of records returned | | `total_leads` | number | Total leads in the campaign, or leads newly added when importing | | `total_stats` | number | Total statistics rows matching the filters | | `id` | number | Record ID | | `name` | string | Record name | | `status` | string | Campaign status | | `email` | string | Lead email address | | `webhook_url` | string | Webhook destination URL | | `event_types` | array | Webhook event types | | `sent_count` | number | Emails sent | | `open_count` | number | Email opens | | `click_count` | number | Link clicks | | `reply_count` | number | Replies | | `bounce_count` | number | Bounces | | `campaign_lead_stats` | json | Lead counts by state | | `upload_count` | number | Leads submitted in the request | | `success` | boolean | Whether the action succeeded | | `items` | array | Records returned by Smartlead | | `rows` | array | Rows returned by Smartlead | | `lists` | array | Lead lists | | `summary` | array | Webhook delivery summary rows | | `csv` | string | Exported leads as CSV | | `row_count` | number | Rows in the exported CSV | | `has_more` | boolean | Whether more rows are available | | `list_name` | string | Lead list name | | `positive_reply_count` | number | Replies categorized as positive | | `offset` | number | Pagination offset used | | `limit` | number | Pagination limit used | | `total_count` | number | Total records matching the request | | `from` | string | Start of the reported window | | `to` | string | End of the reported window | | `start_date` | string | Start of the reported range | | `end_date` | string | End of the reported range | | `skipped_count` | number | Emails skipped | | `failed_count` | number | Failed sends | | `stopped_count` | number | Stopped leads | | `unsubscribed_count` | number | Unsubscribes | | `unique_sent_count` | number | Unique leads emailed | | `unique_open_count` | number | Unique opens | | `unique_click_count` | number | Unique clicks | | `block_count` | number | Blocked sends, or leads skipped by the block list | | `drafted_count` | number | Drafted emails | | `sequence_count` | number | Sequence steps in the campaign | | `duplicate_count` | number | Duplicate leads skipped on import | | `invalid_email_count` | number | Leads skipped for an invalid email | | `invalid_emails` | array | Emails rejected as invalid | | `already_added_to_campaign` | number | Leads already in the campaign | | `unsubscribed_leads` | array | Leads skipped because they unsubscribed | | `lead_import_stopped_count` | number | Leads whose import was stopped | | `is_lead_limit_exhausted` | boolean | Whether the plan lead limit was hit | | `is_last_sequence` | boolean | Whether the lead was on the final step | | `next_sequence_id` | number | ID of the next sequence step | | `next_sequence_delay_in_days` | number | Days before the next step | | `first_name` | string | Lead first name | | `last_name` | string | Lead last name | | `phone_number` | string | Lead phone number | | `company_name` | string | Lead company name | | `website` | string | Lead website | | `location` | string | Lead location | | `linkedin_profile` | string | Lead LinkedIn profile URL | | `company_url` | string | Lead company URL | | `custom_fields` | json | Lead custom fields | | `is_unsubscribed` | boolean | Whether the lead is unsubscribed | | `lead_campaign_data` | array | Campaigns the lead belongs to | | `created_at` | string | Creation timestamp | | `updated_at` | string | Last update timestamp | | `leads_count` | number | Leads in the list | | `active_leads_count` | number | Active leads in the list | | `track_settings` | array | Disabled tracking settings | | `scheduler_cron_value` | json | Campaign sending schedule | | `accounts` | array | Sending email accounts, excluding their stored mailbox credentials | | `user_id` | number | Owning Smartlead user ID | | `min_time_btwn_emails` | number | Minimum minutes between emails | | `max_leads_per_day` | number | Maximum new leads per day | | `stop_lead_settings` | string | Activity that stops a lead sequence | | `schedule_start_time` | string | Scheduled start time | | `enable_ai_esp_matching` | boolean | Whether AI ESP matching is enabled | | `send_as_plain_text` | boolean | Whether emails send as plain text | | `follow_up_percentage` | number | Follow-up percentage | | `unsubscribe_text` | string | Unsubscribe text | | `parent_campaign_id` | number | Parent campaign ID | | `client_id` | number | Client ID for agency accounts | | `client_name` | string | Client name | | `client_email` | string | Client email | | `client_company_name` | string | Client company name | | `tags` | array | Tags on the record | | `email_campaign_id` | number | Campaign the webhook belongs to | ### Smartlead Get Campaign Analytics By Date [#smartlead-get-campaign-analytics-by-date] Retrieves Smartlead campaign performance totals for a date range. Smartlead rejects ranges longer than roughly one month. #### Input [#input-7] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------------------------------- | | `apiKey` | string | Yes | Smartlead API key | | `campaignId` | number | Yes | Smartlead campaign ID | | `startDate` | string | Yes | Range start date in YYYY-MM-DD format | | `endDate` | string | Yes | Range end date in YYYY-MM-DD format | #### Output [#output-7] | Parameter | Type | Description | | ----------------------------- | ------- | ------------------------------------------------------------------ | | `campaigns` | array | List of campaigns | | `leads` | array | List of leads | | `sequences` | array | Email sequence steps | | `categories` | array | Lead categories | | `webhooks` | array | Campaign webhooks | | `stats` | array | Per-email statistics rows | | `history` | array | Lead message history | | `count` | number | Number of records returned | | `total_leads` | number | Total leads in the campaign, or leads newly added when importing | | `total_stats` | number | Total statistics rows matching the filters | | `id` | number | Record ID | | `name` | string | Record name | | `status` | string | Campaign status | | `email` | string | Lead email address | | `webhook_url` | string | Webhook destination URL | | `event_types` | array | Webhook event types | | `sent_count` | number | Emails sent | | `open_count` | number | Email opens | | `click_count` | number | Link clicks | | `reply_count` | number | Replies | | `bounce_count` | number | Bounces | | `campaign_lead_stats` | json | Lead counts by state | | `upload_count` | number | Leads submitted in the request | | `success` | boolean | Whether the action succeeded | | `items` | array | Records returned by Smartlead | | `rows` | array | Rows returned by Smartlead | | `lists` | array | Lead lists | | `summary` | array | Webhook delivery summary rows | | `csv` | string | Exported leads as CSV | | `row_count` | number | Rows in the exported CSV | | `has_more` | boolean | Whether more rows are available | | `list_name` | string | Lead list name | | `positive_reply_count` | number | Replies categorized as positive | | `offset` | number | Pagination offset used | | `limit` | number | Pagination limit used | | `total_count` | number | Total records matching the request | | `from` | string | Start of the reported window | | `to` | string | End of the reported window | | `start_date` | string | Start of the reported range | | `end_date` | string | End of the reported range | | `skipped_count` | number | Emails skipped | | `failed_count` | number | Failed sends | | `stopped_count` | number | Stopped leads | | `unsubscribed_count` | number | Unsubscribes | | `unique_sent_count` | number | Unique leads emailed | | `unique_open_count` | number | Unique opens | | `unique_click_count` | number | Unique clicks | | `block_count` | number | Blocked sends, or leads skipped by the block list | | `drafted_count` | number | Drafted emails | | `sequence_count` | number | Sequence steps in the campaign | | `duplicate_count` | number | Duplicate leads skipped on import | | `invalid_email_count` | number | Leads skipped for an invalid email | | `invalid_emails` | array | Emails rejected as invalid | | `already_added_to_campaign` | number | Leads already in the campaign | | `unsubscribed_leads` | array | Leads skipped because they unsubscribed | | `lead_import_stopped_count` | number | Leads whose import was stopped | | `is_lead_limit_exhausted` | boolean | Whether the plan lead limit was hit | | `is_last_sequence` | boolean | Whether the lead was on the final step | | `next_sequence_id` | number | ID of the next sequence step | | `next_sequence_delay_in_days` | number | Days before the next step | | `first_name` | string | Lead first name | | `last_name` | string | Lead last name | | `phone_number` | string | Lead phone number | | `company_name` | string | Lead company name | | `website` | string | Lead website | | `location` | string | Lead location | | `linkedin_profile` | string | Lead LinkedIn profile URL | | `company_url` | string | Lead company URL | | `custom_fields` | json | Lead custom fields | | `is_unsubscribed` | boolean | Whether the lead is unsubscribed | | `lead_campaign_data` | array | Campaigns the lead belongs to | | `created_at` | string | Creation timestamp | | `updated_at` | string | Last update timestamp | | `leads_count` | number | Leads in the list | | `active_leads_count` | number | Active leads in the list | | `track_settings` | array | Disabled tracking settings | | `scheduler_cron_value` | json | Campaign sending schedule | | `accounts` | array | Sending email accounts, excluding their stored mailbox credentials | | `user_id` | number | Owning Smartlead user ID | | `min_time_btwn_emails` | number | Minimum minutes between emails | | `max_leads_per_day` | number | Maximum new leads per day | | `stop_lead_settings` | string | Activity that stops a lead sequence | | `schedule_start_time` | string | Scheduled start time | | `enable_ai_esp_matching` | boolean | Whether AI ESP matching is enabled | | `send_as_plain_text` | boolean | Whether emails send as plain text | | `follow_up_percentage` | number | Follow-up percentage | | `unsubscribe_text` | string | Unsubscribe text | | `parent_campaign_id` | number | Parent campaign ID | | `client_id` | number | Client ID for agency accounts | | `client_name` | string | Client name | | `client_email` | string | Client email | | `client_company_name` | string | Client company name | | `tags` | array | Tags on the record | | `email_campaign_id` | number | Campaign the webhook belongs to | ### Smartlead Get Campaign Sequences [#smartlead-get-campaign-sequences] Retrieves the email sequence steps for a Smartlead campaign, including subjects, bodies, and per-step delays. #### Input [#input-8] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | --------------------- | | `apiKey` | string | Yes | Smartlead API key | | `campaignId` | number | Yes | Smartlead campaign ID | #### Output [#output-8] | Parameter | Type | Description | | ----------------------------- | ------- | ------------------------------------------------------------------ | | `campaigns` | array | List of campaigns | | `leads` | array | List of leads | | `sequences` | array | Email sequence steps | | `categories` | array | Lead categories | | `webhooks` | array | Campaign webhooks | | `stats` | array | Per-email statistics rows | | `history` | array | Lead message history | | `count` | number | Number of records returned | | `total_leads` | number | Total leads in the campaign, or leads newly added when importing | | `total_stats` | number | Total statistics rows matching the filters | | `id` | number | Record ID | | `name` | string | Record name | | `status` | string | Campaign status | | `email` | string | Lead email address | | `webhook_url` | string | Webhook destination URL | | `event_types` | array | Webhook event types | | `sent_count` | number | Emails sent | | `open_count` | number | Email opens | | `click_count` | number | Link clicks | | `reply_count` | number | Replies | | `bounce_count` | number | Bounces | | `campaign_lead_stats` | json | Lead counts by state | | `upload_count` | number | Leads submitted in the request | | `success` | boolean | Whether the action succeeded | | `items` | array | Records returned by Smartlead | | `rows` | array | Rows returned by Smartlead | | `lists` | array | Lead lists | | `summary` | array | Webhook delivery summary rows | | `csv` | string | Exported leads as CSV | | `row_count` | number | Rows in the exported CSV | | `has_more` | boolean | Whether more rows are available | | `list_name` | string | Lead list name | | `positive_reply_count` | number | Replies categorized as positive | | `offset` | number | Pagination offset used | | `limit` | number | Pagination limit used | | `total_count` | number | Total records matching the request | | `from` | string | Start of the reported window | | `to` | string | End of the reported window | | `start_date` | string | Start of the reported range | | `end_date` | string | End of the reported range | | `skipped_count` | number | Emails skipped | | `failed_count` | number | Failed sends | | `stopped_count` | number | Stopped leads | | `unsubscribed_count` | number | Unsubscribes | | `unique_sent_count` | number | Unique leads emailed | | `unique_open_count` | number | Unique opens | | `unique_click_count` | number | Unique clicks | | `block_count` | number | Blocked sends, or leads skipped by the block list | | `drafted_count` | number | Drafted emails | | `sequence_count` | number | Sequence steps in the campaign | | `duplicate_count` | number | Duplicate leads skipped on import | | `invalid_email_count` | number | Leads skipped for an invalid email | | `invalid_emails` | array | Emails rejected as invalid | | `already_added_to_campaign` | number | Leads already in the campaign | | `unsubscribed_leads` | array | Leads skipped because they unsubscribed | | `lead_import_stopped_count` | number | Leads whose import was stopped | | `is_lead_limit_exhausted` | boolean | Whether the plan lead limit was hit | | `is_last_sequence` | boolean | Whether the lead was on the final step | | `next_sequence_id` | number | ID of the next sequence step | | `next_sequence_delay_in_days` | number | Days before the next step | | `first_name` | string | Lead first name | | `last_name` | string | Lead last name | | `phone_number` | string | Lead phone number | | `company_name` | string | Lead company name | | `website` | string | Lead website | | `location` | string | Lead location | | `linkedin_profile` | string | Lead LinkedIn profile URL | | `company_url` | string | Lead company URL | | `custom_fields` | json | Lead custom fields | | `is_unsubscribed` | boolean | Whether the lead is unsubscribed | | `lead_campaign_data` | array | Campaigns the lead belongs to | | `created_at` | string | Creation timestamp | | `updated_at` | string | Last update timestamp | | `leads_count` | number | Leads in the list | | `active_leads_count` | number | Active leads in the list | | `track_settings` | array | Disabled tracking settings | | `scheduler_cron_value` | json | Campaign sending schedule | | `accounts` | array | Sending email accounts, excluding their stored mailbox credentials | | `user_id` | number | Owning Smartlead user ID | | `min_time_btwn_emails` | number | Minimum minutes between emails | | `max_leads_per_day` | number | Maximum new leads per day | | `stop_lead_settings` | string | Activity that stops a lead sequence | | `schedule_start_time` | string | Scheduled start time | | `enable_ai_esp_matching` | boolean | Whether AI ESP matching is enabled | | `send_as_plain_text` | boolean | Whether emails send as plain text | | `follow_up_percentage` | number | Follow-up percentage | | `unsubscribe_text` | string | Unsubscribe text | | `parent_campaign_id` | number | Parent campaign ID | | `client_id` | number | Client ID for agency accounts | | `client_name` | string | Client name | | `client_email` | string | Client email | | `client_company_name` | string | Client company name | | `tags` | array | Tags on the record | | `email_campaign_id` | number | Campaign the webhook belongs to | ### Smartlead Save Campaign Sequences [#smartlead-save-campaign-sequences] Replaces the email sequence for a Smartlead campaign. Send every step in one call — steps omitted from the request are removed. An empty subject makes a step reply in the previous thread. #### Input [#input-9] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Smartlead API key | | `campaignId` | number | Yes | Smartlead campaign ID | | `sequences` | array | Yes | Ordered sequence steps. Each entry accepts seq\_number, delay\_in\_days, subject, and email\_body (HTML). Personalize with \{\{first\_name}} or \{\{company\_name}}. | #### Output [#output-9] | Parameter | Type | Description | | ----------------------------- | ------- | ------------------------------------------------------------------ | | `campaigns` | array | List of campaigns | | `leads` | array | List of leads | | `sequences` | array | Email sequence steps | | `categories` | array | Lead categories | | `webhooks` | array | Campaign webhooks | | `stats` | array | Per-email statistics rows | | `history` | array | Lead message history | | `count` | number | Number of records returned | | `total_leads` | number | Total leads in the campaign, or leads newly added when importing | | `total_stats` | number | Total statistics rows matching the filters | | `id` | number | Record ID | | `name` | string | Record name | | `status` | string | Campaign status | | `email` | string | Lead email address | | `webhook_url` | string | Webhook destination URL | | `event_types` | array | Webhook event types | | `sent_count` | number | Emails sent | | `open_count` | number | Email opens | | `click_count` | number | Link clicks | | `reply_count` | number | Replies | | `bounce_count` | number | Bounces | | `campaign_lead_stats` | json | Lead counts by state | | `upload_count` | number | Leads submitted in the request | | `success` | boolean | Whether the action succeeded | | `items` | array | Records returned by Smartlead | | `rows` | array | Rows returned by Smartlead | | `lists` | array | Lead lists | | `summary` | array | Webhook delivery summary rows | | `csv` | string | Exported leads as CSV | | `row_count` | number | Rows in the exported CSV | | `has_more` | boolean | Whether more rows are available | | `list_name` | string | Lead list name | | `positive_reply_count` | number | Replies categorized as positive | | `offset` | number | Pagination offset used | | `limit` | number | Pagination limit used | | `total_count` | number | Total records matching the request | | `from` | string | Start of the reported window | | `to` | string | End of the reported window | | `start_date` | string | Start of the reported range | | `end_date` | string | End of the reported range | | `skipped_count` | number | Emails skipped | | `failed_count` | number | Failed sends | | `stopped_count` | number | Stopped leads | | `unsubscribed_count` | number | Unsubscribes | | `unique_sent_count` | number | Unique leads emailed | | `unique_open_count` | number | Unique opens | | `unique_click_count` | number | Unique clicks | | `block_count` | number | Blocked sends, or leads skipped by the block list | | `drafted_count` | number | Drafted emails | | `sequence_count` | number | Sequence steps in the campaign | | `duplicate_count` | number | Duplicate leads skipped on import | | `invalid_email_count` | number | Leads skipped for an invalid email | | `invalid_emails` | array | Emails rejected as invalid | | `already_added_to_campaign` | number | Leads already in the campaign | | `unsubscribed_leads` | array | Leads skipped because they unsubscribed | | `lead_import_stopped_count` | number | Leads whose import was stopped | | `is_lead_limit_exhausted` | boolean | Whether the plan lead limit was hit | | `is_last_sequence` | boolean | Whether the lead was on the final step | | `next_sequence_id` | number | ID of the next sequence step | | `next_sequence_delay_in_days` | number | Days before the next step | | `first_name` | string | Lead first name | | `last_name` | string | Lead last name | | `phone_number` | string | Lead phone number | | `company_name` | string | Lead company name | | `website` | string | Lead website | | `location` | string | Lead location | | `linkedin_profile` | string | Lead LinkedIn profile URL | | `company_url` | string | Lead company URL | | `custom_fields` | json | Lead custom fields | | `is_unsubscribed` | boolean | Whether the lead is unsubscribed | | `lead_campaign_data` | array | Campaigns the lead belongs to | | `created_at` | string | Creation timestamp | | `updated_at` | string | Last update timestamp | | `leads_count` | number | Leads in the list | | `active_leads_count` | number | Active leads in the list | | `track_settings` | array | Disabled tracking settings | | `scheduler_cron_value` | json | Campaign sending schedule | | `accounts` | array | Sending email accounts, excluding their stored mailbox credentials | | `user_id` | number | Owning Smartlead user ID | | `min_time_btwn_emails` | number | Minimum minutes between emails | | `max_leads_per_day` | number | Maximum new leads per day | | `stop_lead_settings` | string | Activity that stops a lead sequence | | `schedule_start_time` | string | Scheduled start time | | `enable_ai_esp_matching` | boolean | Whether AI ESP matching is enabled | | `send_as_plain_text` | boolean | Whether emails send as plain text | | `follow_up_percentage` | number | Follow-up percentage | | `unsubscribe_text` | string | Unsubscribe text | | `parent_campaign_id` | number | Parent campaign ID | | `client_id` | number | Client ID for agency accounts | | `client_name` | string | Client name | | `client_email` | string | Client email | | `client_company_name` | string | Client company name | | `tags` | array | Tags on the record | | `email_campaign_id` | number | Campaign the webhook belongs to | ### Smartlead Get Campaign Statistics [#smartlead-get-campaign-statistics] Retrieves per-email statistics rows for a Smartlead campaign, filterable by sequence step, engagement status, and sent-time range. #### Input [#input-10] | Parameter | Type | Required | Description | | --------------------- | ------ | -------- | --------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Smartlead API key | | `campaignId` | number | Yes | Smartlead campaign ID | | `offset` | number | No | Pagination offset (default 0) | | `limit` | number | No | Rows to return (default 100) | | `emailSequenceNumber` | number | No | Only return rows for this sequence step | | `emailStatus` | string | No | Only return rows with this engagement status: opened, clicked, replied, unsubscribed, bounced | | `sentTimeStartDate` | string | No | Only return rows sent on or after this date (YYYY-MM-DD) | | `sentTimeEndDate` | string | No | Only return rows sent on or before this date (YYYY-MM-DD) | #### Output [#output-10] | Parameter | Type | Description | | ----------------------------- | ------- | ------------------------------------------------------------------ | | `campaigns` | array | List of campaigns | | `leads` | array | List of leads | | `sequences` | array | Email sequence steps | | `categories` | array | Lead categories | | `webhooks` | array | Campaign webhooks | | `stats` | array | Per-email statistics rows | | `history` | array | Lead message history | | `count` | number | Number of records returned | | `total_leads` | number | Total leads in the campaign, or leads newly added when importing | | `total_stats` | number | Total statistics rows matching the filters | | `id` | number | Record ID | | `name` | string | Record name | | `status` | string | Campaign status | | `email` | string | Lead email address | | `webhook_url` | string | Webhook destination URL | | `event_types` | array | Webhook event types | | `sent_count` | number | Emails sent | | `open_count` | number | Email opens | | `click_count` | number | Link clicks | | `reply_count` | number | Replies | | `bounce_count` | number | Bounces | | `campaign_lead_stats` | json | Lead counts by state | | `upload_count` | number | Leads submitted in the request | | `success` | boolean | Whether the action succeeded | | `items` | array | Records returned by Smartlead | | `rows` | array | Rows returned by Smartlead | | `lists` | array | Lead lists | | `summary` | array | Webhook delivery summary rows | | `csv` | string | Exported leads as CSV | | `row_count` | number | Rows in the exported CSV | | `has_more` | boolean | Whether more rows are available | | `list_name` | string | Lead list name | | `positive_reply_count` | number | Replies categorized as positive | | `offset` | number | Pagination offset used | | `limit` | number | Pagination limit used | | `total_count` | number | Total records matching the request | | `from` | string | Start of the reported window | | `to` | string | End of the reported window | | `start_date` | string | Start of the reported range | | `end_date` | string | End of the reported range | | `skipped_count` | number | Emails skipped | | `failed_count` | number | Failed sends | | `stopped_count` | number | Stopped leads | | `unsubscribed_count` | number | Unsubscribes | | `unique_sent_count` | number | Unique leads emailed | | `unique_open_count` | number | Unique opens | | `unique_click_count` | number | Unique clicks | | `block_count` | number | Blocked sends, or leads skipped by the block list | | `drafted_count` | number | Drafted emails | | `sequence_count` | number | Sequence steps in the campaign | | `duplicate_count` | number | Duplicate leads skipped on import | | `invalid_email_count` | number | Leads skipped for an invalid email | | `invalid_emails` | array | Emails rejected as invalid | | `already_added_to_campaign` | number | Leads already in the campaign | | `unsubscribed_leads` | array | Leads skipped because they unsubscribed | | `lead_import_stopped_count` | number | Leads whose import was stopped | | `is_lead_limit_exhausted` | boolean | Whether the plan lead limit was hit | | `is_last_sequence` | boolean | Whether the lead was on the final step | | `next_sequence_id` | number | ID of the next sequence step | | `next_sequence_delay_in_days` | number | Days before the next step | | `first_name` | string | Lead first name | | `last_name` | string | Lead last name | | `phone_number` | string | Lead phone number | | `company_name` | string | Lead company name | | `website` | string | Lead website | | `location` | string | Lead location | | `linkedin_profile` | string | Lead LinkedIn profile URL | | `company_url` | string | Lead company URL | | `custom_fields` | json | Lead custom fields | | `is_unsubscribed` | boolean | Whether the lead is unsubscribed | | `lead_campaign_data` | array | Campaigns the lead belongs to | | `created_at` | string | Creation timestamp | | `updated_at` | string | Last update timestamp | | `leads_count` | number | Leads in the list | | `active_leads_count` | number | Active leads in the list | | `track_settings` | array | Disabled tracking settings | | `scheduler_cron_value` | json | Campaign sending schedule | | `accounts` | array | Sending email accounts, excluding their stored mailbox credentials | | `user_id` | number | Owning Smartlead user ID | | `min_time_btwn_emails` | number | Minimum minutes between emails | | `max_leads_per_day` | number | Maximum new leads per day | | `stop_lead_settings` | string | Activity that stops a lead sequence | | `schedule_start_time` | string | Scheduled start time | | `enable_ai_esp_matching` | boolean | Whether AI ESP matching is enabled | | `send_as_plain_text` | boolean | Whether emails send as plain text | | `follow_up_percentage` | number | Follow-up percentage | | `unsubscribe_text` | string | Unsubscribe text | | `parent_campaign_id` | number | Parent campaign ID | | `client_id` | number | Client ID for agency accounts | | `client_name` | string | Client name | | `client_email` | string | Client email | | `client_company_name` | string | Client company name | | `tags` | array | Tags on the record | | `email_campaign_id` | number | Campaign the webhook belongs to | ### Smartlead Add Leads to Campaign [#smartlead-add-leads-to-campaign] Adds leads to a Smartlead campaign, up to 400 per call. Returns per-reason counts for leads that were skipped as duplicates, blocked, bounced, or invalid. #### Input [#input-11] | Parameter | Type | Required | Description | | ------------------------------------- | ------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Smartlead API key | | `campaignId` | number | Yes | Smartlead campaign ID | | `leads` | array | Yes | Leads to add (max 400). Each entry requires email and accepts first\_name, last\_name, phone\_number, company\_name, website, location, linkedin\_profile, company\_url, and custom\_fields. | | `ignoreGlobalBlockList` | boolean | No | Add leads even if they are on the global block list | | `ignoreUnsubscribeList` | boolean | No | Add leads even if they previously unsubscribed | | `ignoreDuplicateLeadsInOtherCampaign` | boolean | No | Add leads even if they already exist in another campaign | | `ignoreCommunityBounceList` | boolean | No | Add leads even if they are on the community bounce list | #### Output [#output-11] | Parameter | Type | Description | | ----------------------------- | ------- | ------------------------------------------------------------------ | | `campaigns` | array | List of campaigns | | `leads` | array | List of leads | | `sequences` | array | Email sequence steps | | `categories` | array | Lead categories | | `webhooks` | array | Campaign webhooks | | `stats` | array | Per-email statistics rows | | `history` | array | Lead message history | | `count` | number | Number of records returned | | `total_leads` | number | Total leads in the campaign, or leads newly added when importing | | `total_stats` | number | Total statistics rows matching the filters | | `id` | number | Record ID | | `name` | string | Record name | | `status` | string | Campaign status | | `email` | string | Lead email address | | `webhook_url` | string | Webhook destination URL | | `event_types` | array | Webhook event types | | `sent_count` | number | Emails sent | | `open_count` | number | Email opens | | `click_count` | number | Link clicks | | `reply_count` | number | Replies | | `bounce_count` | number | Bounces | | `campaign_lead_stats` | json | Lead counts by state | | `upload_count` | number | Leads submitted in the request | | `success` | boolean | Whether the action succeeded | | `items` | array | Records returned by Smartlead | | `rows` | array | Rows returned by Smartlead | | `lists` | array | Lead lists | | `summary` | array | Webhook delivery summary rows | | `csv` | string | Exported leads as CSV | | `row_count` | number | Rows in the exported CSV | | `has_more` | boolean | Whether more rows are available | | `list_name` | string | Lead list name | | `positive_reply_count` | number | Replies categorized as positive | | `offset` | number | Pagination offset used | | `limit` | number | Pagination limit used | | `total_count` | number | Total records matching the request | | `from` | string | Start of the reported window | | `to` | string | End of the reported window | | `start_date` | string | Start of the reported range | | `end_date` | string | End of the reported range | | `skipped_count` | number | Emails skipped | | `failed_count` | number | Failed sends | | `stopped_count` | number | Stopped leads | | `unsubscribed_count` | number | Unsubscribes | | `unique_sent_count` | number | Unique leads emailed | | `unique_open_count` | number | Unique opens | | `unique_click_count` | number | Unique clicks | | `block_count` | number | Blocked sends, or leads skipped by the block list | | `drafted_count` | number | Drafted emails | | `sequence_count` | number | Sequence steps in the campaign | | `duplicate_count` | number | Duplicate leads skipped on import | | `invalid_email_count` | number | Leads skipped for an invalid email | | `invalid_emails` | array | Emails rejected as invalid | | `already_added_to_campaign` | number | Leads already in the campaign | | `unsubscribed_leads` | array | Leads skipped because they unsubscribed | | `lead_import_stopped_count` | number | Leads whose import was stopped | | `is_lead_limit_exhausted` | boolean | Whether the plan lead limit was hit | | `is_last_sequence` | boolean | Whether the lead was on the final step | | `next_sequence_id` | number | ID of the next sequence step | | `next_sequence_delay_in_days` | number | Days before the next step | | `first_name` | string | Lead first name | | `last_name` | string | Lead last name | | `phone_number` | string | Lead phone number | | `company_name` | string | Lead company name | | `website` | string | Lead website | | `location` | string | Lead location | | `linkedin_profile` | string | Lead LinkedIn profile URL | | `company_url` | string | Lead company URL | | `custom_fields` | json | Lead custom fields | | `is_unsubscribed` | boolean | Whether the lead is unsubscribed | | `lead_campaign_data` | array | Campaigns the lead belongs to | | `created_at` | string | Creation timestamp | | `updated_at` | string | Last update timestamp | | `leads_count` | number | Leads in the list | | `active_leads_count` | number | Active leads in the list | | `track_settings` | array | Disabled tracking settings | | `scheduler_cron_value` | json | Campaign sending schedule | | `accounts` | array | Sending email accounts, excluding their stored mailbox credentials | | `user_id` | number | Owning Smartlead user ID | | `min_time_btwn_emails` | number | Minimum minutes between emails | | `max_leads_per_day` | number | Maximum new leads per day | | `stop_lead_settings` | string | Activity that stops a lead sequence | | `schedule_start_time` | string | Scheduled start time | | `enable_ai_esp_matching` | boolean | Whether AI ESP matching is enabled | | `send_as_plain_text` | boolean | Whether emails send as plain text | | `follow_up_percentage` | number | Follow-up percentage | | `unsubscribe_text` | string | Unsubscribe text | | `parent_campaign_id` | number | Parent campaign ID | | `client_id` | number | Client ID for agency accounts | | `client_name` | string | Client name | | `client_email` | string | Client email | | `client_company_name` | string | Client company name | | `tags` | array | Tags on the record | | `email_campaign_id` | number | Campaign the webhook belongs to | ### Smartlead List Campaign Leads [#smartlead-list-campaign-leads] Retrieves the leads in a Smartlead campaign with their per-campaign status. #### Input [#input-12] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | -------------------------------------- | | `apiKey` | string | Yes | Smartlead API key | | `campaignId` | number | Yes | Smartlead campaign ID | | `offset` | number | No | Pagination offset (default 0) | | `limit` | number | No | Leads to return per page (default 100) | #### Output [#output-12] | Parameter | Type | Description | | ----------------------------- | ------- | ------------------------------------------------------------------ | | `campaigns` | array | List of campaigns | | `leads` | array | List of leads | | `sequences` | array | Email sequence steps | | `categories` | array | Lead categories | | `webhooks` | array | Campaign webhooks | | `stats` | array | Per-email statistics rows | | `history` | array | Lead message history | | `count` | number | Number of records returned | | `total_leads` | number | Total leads in the campaign, or leads newly added when importing | | `total_stats` | number | Total statistics rows matching the filters | | `id` | number | Record ID | | `name` | string | Record name | | `status` | string | Campaign status | | `email` | string | Lead email address | | `webhook_url` | string | Webhook destination URL | | `event_types` | array | Webhook event types | | `sent_count` | number | Emails sent | | `open_count` | number | Email opens | | `click_count` | number | Link clicks | | `reply_count` | number | Replies | | `bounce_count` | number | Bounces | | `campaign_lead_stats` | json | Lead counts by state | | `upload_count` | number | Leads submitted in the request | | `success` | boolean | Whether the action succeeded | | `items` | array | Records returned by Smartlead | | `rows` | array | Rows returned by Smartlead | | `lists` | array | Lead lists | | `summary` | array | Webhook delivery summary rows | | `csv` | string | Exported leads as CSV | | `row_count` | number | Rows in the exported CSV | | `has_more` | boolean | Whether more rows are available | | `list_name` | string | Lead list name | | `positive_reply_count` | number | Replies categorized as positive | | `offset` | number | Pagination offset used | | `limit` | number | Pagination limit used | | `total_count` | number | Total records matching the request | | `from` | string | Start of the reported window | | `to` | string | End of the reported window | | `start_date` | string | Start of the reported range | | `end_date` | string | End of the reported range | | `skipped_count` | number | Emails skipped | | `failed_count` | number | Failed sends | | `stopped_count` | number | Stopped leads | | `unsubscribed_count` | number | Unsubscribes | | `unique_sent_count` | number | Unique leads emailed | | `unique_open_count` | number | Unique opens | | `unique_click_count` | number | Unique clicks | | `block_count` | number | Blocked sends, or leads skipped by the block list | | `drafted_count` | number | Drafted emails | | `sequence_count` | number | Sequence steps in the campaign | | `duplicate_count` | number | Duplicate leads skipped on import | | `invalid_email_count` | number | Leads skipped for an invalid email | | `invalid_emails` | array | Emails rejected as invalid | | `already_added_to_campaign` | number | Leads already in the campaign | | `unsubscribed_leads` | array | Leads skipped because they unsubscribed | | `lead_import_stopped_count` | number | Leads whose import was stopped | | `is_lead_limit_exhausted` | boolean | Whether the plan lead limit was hit | | `is_last_sequence` | boolean | Whether the lead was on the final step | | `next_sequence_id` | number | ID of the next sequence step | | `next_sequence_delay_in_days` | number | Days before the next step | | `first_name` | string | Lead first name | | `last_name` | string | Lead last name | | `phone_number` | string | Lead phone number | | `company_name` | string | Lead company name | | `website` | string | Lead website | | `location` | string | Lead location | | `linkedin_profile` | string | Lead LinkedIn profile URL | | `company_url` | string | Lead company URL | | `custom_fields` | json | Lead custom fields | | `is_unsubscribed` | boolean | Whether the lead is unsubscribed | | `lead_campaign_data` | array | Campaigns the lead belongs to | | `created_at` | string | Creation timestamp | | `updated_at` | string | Last update timestamp | | `leads_count` | number | Leads in the list | | `active_leads_count` | number | Active leads in the list | | `track_settings` | array | Disabled tracking settings | | `scheduler_cron_value` | json | Campaign sending schedule | | `accounts` | array | Sending email accounts, excluding their stored mailbox credentials | | `user_id` | number | Owning Smartlead user ID | | `min_time_btwn_emails` | number | Minimum minutes between emails | | `max_leads_per_day` | number | Maximum new leads per day | | `stop_lead_settings` | string | Activity that stops a lead sequence | | `schedule_start_time` | string | Scheduled start time | | `enable_ai_esp_matching` | boolean | Whether AI ESP matching is enabled | | `send_as_plain_text` | boolean | Whether emails send as plain text | | `follow_up_percentage` | number | Follow-up percentage | | `unsubscribe_text` | string | Unsubscribe text | | `parent_campaign_id` | number | Parent campaign ID | | `client_id` | number | Client ID for agency accounts | | `client_name` | string | Client name | | `client_email` | string | Client email | | `client_company_name` | string | Client company name | | `tags` | array | Tags on the record | | `email_campaign_id` | number | Campaign the webhook belongs to | ### Smartlead Get Lead by Email [#smartlead-get-lead-by-email] Looks up a Smartlead lead by email address and returns the lead record plus every campaign it belongs to. #### Input [#input-13] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------------------------- | | `apiKey` | string | Yes | Smartlead API key | | `email` | string | Yes | Lead email address to look up | #### Output [#output-13] | Parameter | Type | Description | | ----------------------------- | ------- | ------------------------------------------------------------------ | | `campaigns` | array | List of campaigns | | `leads` | array | List of leads | | `sequences` | array | Email sequence steps | | `categories` | array | Lead categories | | `webhooks` | array | Campaign webhooks | | `stats` | array | Per-email statistics rows | | `history` | array | Lead message history | | `count` | number | Number of records returned | | `total_leads` | number | Total leads in the campaign, or leads newly added when importing | | `total_stats` | number | Total statistics rows matching the filters | | `id` | number | Record ID | | `name` | string | Record name | | `status` | string | Campaign status | | `email` | string | Lead email address | | `webhook_url` | string | Webhook destination URL | | `event_types` | array | Webhook event types | | `sent_count` | number | Emails sent | | `open_count` | number | Email opens | | `click_count` | number | Link clicks | | `reply_count` | number | Replies | | `bounce_count` | number | Bounces | | `campaign_lead_stats` | json | Lead counts by state | | `upload_count` | number | Leads submitted in the request | | `success` | boolean | Whether the action succeeded | | `items` | array | Records returned by Smartlead | | `rows` | array | Rows returned by Smartlead | | `lists` | array | Lead lists | | `summary` | array | Webhook delivery summary rows | | `csv` | string | Exported leads as CSV | | `row_count` | number | Rows in the exported CSV | | `has_more` | boolean | Whether more rows are available | | `list_name` | string | Lead list name | | `positive_reply_count` | number | Replies categorized as positive | | `offset` | number | Pagination offset used | | `limit` | number | Pagination limit used | | `total_count` | number | Total records matching the request | | `from` | string | Start of the reported window | | `to` | string | End of the reported window | | `start_date` | string | Start of the reported range | | `end_date` | string | End of the reported range | | `skipped_count` | number | Emails skipped | | `failed_count` | number | Failed sends | | `stopped_count` | number | Stopped leads | | `unsubscribed_count` | number | Unsubscribes | | `unique_sent_count` | number | Unique leads emailed | | `unique_open_count` | number | Unique opens | | `unique_click_count` | number | Unique clicks | | `block_count` | number | Blocked sends, or leads skipped by the block list | | `drafted_count` | number | Drafted emails | | `sequence_count` | number | Sequence steps in the campaign | | `duplicate_count` | number | Duplicate leads skipped on import | | `invalid_email_count` | number | Leads skipped for an invalid email | | `invalid_emails` | array | Emails rejected as invalid | | `already_added_to_campaign` | number | Leads already in the campaign | | `unsubscribed_leads` | array | Leads skipped because they unsubscribed | | `lead_import_stopped_count` | number | Leads whose import was stopped | | `is_lead_limit_exhausted` | boolean | Whether the plan lead limit was hit | | `is_last_sequence` | boolean | Whether the lead was on the final step | | `next_sequence_id` | number | ID of the next sequence step | | `next_sequence_delay_in_days` | number | Days before the next step | | `first_name` | string | Lead first name | | `last_name` | string | Lead last name | | `phone_number` | string | Lead phone number | | `company_name` | string | Lead company name | | `website` | string | Lead website | | `location` | string | Lead location | | `linkedin_profile` | string | Lead LinkedIn profile URL | | `company_url` | string | Lead company URL | | `custom_fields` | json | Lead custom fields | | `is_unsubscribed` | boolean | Whether the lead is unsubscribed | | `lead_campaign_data` | array | Campaigns the lead belongs to | | `created_at` | string | Creation timestamp | | `updated_at` | string | Last update timestamp | | `leads_count` | number | Leads in the list | | `active_leads_count` | number | Active leads in the list | | `track_settings` | array | Disabled tracking settings | | `scheduler_cron_value` | json | Campaign sending schedule | | `accounts` | array | Sending email accounts, excluding their stored mailbox credentials | | `user_id` | number | Owning Smartlead user ID | | `min_time_btwn_emails` | number | Minimum minutes between emails | | `max_leads_per_day` | number | Maximum new leads per day | | `stop_lead_settings` | string | Activity that stops a lead sequence | | `schedule_start_time` | string | Scheduled start time | | `enable_ai_esp_matching` | boolean | Whether AI ESP matching is enabled | | `send_as_plain_text` | boolean | Whether emails send as plain text | | `follow_up_percentage` | number | Follow-up percentage | | `unsubscribe_text` | string | Unsubscribe text | | `parent_campaign_id` | number | Parent campaign ID | | `client_id` | number | Client ID for agency accounts | | `client_name` | string | Client name | | `client_email` | string | Client email | | `client_company_name` | string | Client company name | | `tags` | array | Tags on the record | | `email_campaign_id` | number | Campaign the webhook belongs to | ### Smartlead Update Lead [#smartlead-update-lead] Updates a lead in a Smartlead campaign. Smartlead requires the email field even when it is unchanged, and lead edits apply across every campaign the lead belongs to. #### Input [#input-14] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | -------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Smartlead API key | | `campaignId` | number | Yes | Smartlead campaign ID | | `leadId` | number | Yes | Smartlead lead ID — the nested lead.id from List Campaign Leads, NOT campaign\_lead\_map\_id | | `email` | string | Yes | Lead email address — required by Smartlead even when unchanged | | `firstName` | string | No | Lead first name | | `lastName` | string | No | Lead last name | | `phoneNumber` | string | No | Lead phone number | | `companyName` | string | No | Lead company name | | `website` | string | No | Lead website | | `location` | string | No | Lead location | | `linkedinProfile` | string | No | Lead LinkedIn profile URL | | `companyUrl` | string | No | Lead company URL | | `customFields` | object | No | Custom field values keyed by field name (max 200 keys) | #### Output [#output-14] | Parameter | Type | Description | | ----------------------------- | ------- | ------------------------------------------------------------------ | | `campaigns` | array | List of campaigns | | `leads` | array | List of leads | | `sequences` | array | Email sequence steps | | `categories` | array | Lead categories | | `webhooks` | array | Campaign webhooks | | `stats` | array | Per-email statistics rows | | `history` | array | Lead message history | | `count` | number | Number of records returned | | `total_leads` | number | Total leads in the campaign, or leads newly added when importing | | `total_stats` | number | Total statistics rows matching the filters | | `id` | number | Record ID | | `name` | string | Record name | | `status` | string | Campaign status | | `email` | string | Lead email address | | `webhook_url` | string | Webhook destination URL | | `event_types` | array | Webhook event types | | `sent_count` | number | Emails sent | | `open_count` | number | Email opens | | `click_count` | number | Link clicks | | `reply_count` | number | Replies | | `bounce_count` | number | Bounces | | `campaign_lead_stats` | json | Lead counts by state | | `upload_count` | number | Leads submitted in the request | | `success` | boolean | Whether the action succeeded | | `items` | array | Records returned by Smartlead | | `rows` | array | Rows returned by Smartlead | | `lists` | array | Lead lists | | `summary` | array | Webhook delivery summary rows | | `csv` | string | Exported leads as CSV | | `row_count` | number | Rows in the exported CSV | | `has_more` | boolean | Whether more rows are available | | `list_name` | string | Lead list name | | `positive_reply_count` | number | Replies categorized as positive | | `offset` | number | Pagination offset used | | `limit` | number | Pagination limit used | | `total_count` | number | Total records matching the request | | `from` | string | Start of the reported window | | `to` | string | End of the reported window | | `start_date` | string | Start of the reported range | | `end_date` | string | End of the reported range | | `skipped_count` | number | Emails skipped | | `failed_count` | number | Failed sends | | `stopped_count` | number | Stopped leads | | `unsubscribed_count` | number | Unsubscribes | | `unique_sent_count` | number | Unique leads emailed | | `unique_open_count` | number | Unique opens | | `unique_click_count` | number | Unique clicks | | `block_count` | number | Blocked sends, or leads skipped by the block list | | `drafted_count` | number | Drafted emails | | `sequence_count` | number | Sequence steps in the campaign | | `duplicate_count` | number | Duplicate leads skipped on import | | `invalid_email_count` | number | Leads skipped for an invalid email | | `invalid_emails` | array | Emails rejected as invalid | | `already_added_to_campaign` | number | Leads already in the campaign | | `unsubscribed_leads` | array | Leads skipped because they unsubscribed | | `lead_import_stopped_count` | number | Leads whose import was stopped | | `is_lead_limit_exhausted` | boolean | Whether the plan lead limit was hit | | `is_last_sequence` | boolean | Whether the lead was on the final step | | `next_sequence_id` | number | ID of the next sequence step | | `next_sequence_delay_in_days` | number | Days before the next step | | `first_name` | string | Lead first name | | `last_name` | string | Lead last name | | `phone_number` | string | Lead phone number | | `company_name` | string | Lead company name | | `website` | string | Lead website | | `location` | string | Lead location | | `linkedin_profile` | string | Lead LinkedIn profile URL | | `company_url` | string | Lead company URL | | `custom_fields` | json | Lead custom fields | | `is_unsubscribed` | boolean | Whether the lead is unsubscribed | | `lead_campaign_data` | array | Campaigns the lead belongs to | | `created_at` | string | Creation timestamp | | `updated_at` | string | Last update timestamp | | `leads_count` | number | Leads in the list | | `active_leads_count` | number | Active leads in the list | | `track_settings` | array | Disabled tracking settings | | `scheduler_cron_value` | json | Campaign sending schedule | | `accounts` | array | Sending email accounts, excluding their stored mailbox credentials | | `user_id` | number | Owning Smartlead user ID | | `min_time_btwn_emails` | number | Minimum minutes between emails | | `max_leads_per_day` | number | Maximum new leads per day | | `stop_lead_settings` | string | Activity that stops a lead sequence | | `schedule_start_time` | string | Scheduled start time | | `enable_ai_esp_matching` | boolean | Whether AI ESP matching is enabled | | `send_as_plain_text` | boolean | Whether emails send as plain text | | `follow_up_percentage` | number | Follow-up percentage | | `unsubscribe_text` | string | Unsubscribe text | | `parent_campaign_id` | number | Parent campaign ID | | `client_id` | number | Client ID for agency accounts | | `client_name` | string | Client name | | `client_email` | string | Client email | | `client_company_name` | string | Client company name | | `tags` | array | Tags on the record | | `email_campaign_id` | number | Campaign the webhook belongs to | ### Smartlead Update Lead Category [#smartlead-update-lead-category] Sets the category of a lead in a Smartlead campaign, such as Interested or Not Interested. Use List Lead Categories to resolve a category ID. #### Input [#input-15] | Parameter | Type | Required | Description | | ------------ | ------- | -------- | -------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Smartlead API key | | `campaignId` | number | Yes | Smartlead campaign ID | | `leadId` | number | Yes | Smartlead lead ID — the nested lead.id from List Campaign Leads, NOT campaign\_lead\_map\_id | | `categoryId` | number | Yes | Lead category ID to apply | | `pauseLead` | boolean | No | Also pause the lead sequence when applying the category | #### Output [#output-15] | Parameter | Type | Description | | ----------------------------- | ------- | ------------------------------------------------------------------ | | `campaigns` | array | List of campaigns | | `leads` | array | List of leads | | `sequences` | array | Email sequence steps | | `categories` | array | Lead categories | | `webhooks` | array | Campaign webhooks | | `stats` | array | Per-email statistics rows | | `history` | array | Lead message history | | `count` | number | Number of records returned | | `total_leads` | number | Total leads in the campaign, or leads newly added when importing | | `total_stats` | number | Total statistics rows matching the filters | | `id` | number | Record ID | | `name` | string | Record name | | `status` | string | Campaign status | | `email` | string | Lead email address | | `webhook_url` | string | Webhook destination URL | | `event_types` | array | Webhook event types | | `sent_count` | number | Emails sent | | `open_count` | number | Email opens | | `click_count` | number | Link clicks | | `reply_count` | number | Replies | | `bounce_count` | number | Bounces | | `campaign_lead_stats` | json | Lead counts by state | | `upload_count` | number | Leads submitted in the request | | `success` | boolean | Whether the action succeeded | | `items` | array | Records returned by Smartlead | | `rows` | array | Rows returned by Smartlead | | `lists` | array | Lead lists | | `summary` | array | Webhook delivery summary rows | | `csv` | string | Exported leads as CSV | | `row_count` | number | Rows in the exported CSV | | `has_more` | boolean | Whether more rows are available | | `list_name` | string | Lead list name | | `positive_reply_count` | number | Replies categorized as positive | | `offset` | number | Pagination offset used | | `limit` | number | Pagination limit used | | `total_count` | number | Total records matching the request | | `from` | string | Start of the reported window | | `to` | string | End of the reported window | | `start_date` | string | Start of the reported range | | `end_date` | string | End of the reported range | | `skipped_count` | number | Emails skipped | | `failed_count` | number | Failed sends | | `stopped_count` | number | Stopped leads | | `unsubscribed_count` | number | Unsubscribes | | `unique_sent_count` | number | Unique leads emailed | | `unique_open_count` | number | Unique opens | | `unique_click_count` | number | Unique clicks | | `block_count` | number | Blocked sends, or leads skipped by the block list | | `drafted_count` | number | Drafted emails | | `sequence_count` | number | Sequence steps in the campaign | | `duplicate_count` | number | Duplicate leads skipped on import | | `invalid_email_count` | number | Leads skipped for an invalid email | | `invalid_emails` | array | Emails rejected as invalid | | `already_added_to_campaign` | number | Leads already in the campaign | | `unsubscribed_leads` | array | Leads skipped because they unsubscribed | | `lead_import_stopped_count` | number | Leads whose import was stopped | | `is_lead_limit_exhausted` | boolean | Whether the plan lead limit was hit | | `is_last_sequence` | boolean | Whether the lead was on the final step | | `next_sequence_id` | number | ID of the next sequence step | | `next_sequence_delay_in_days` | number | Days before the next step | | `first_name` | string | Lead first name | | `last_name` | string | Lead last name | | `phone_number` | string | Lead phone number | | `company_name` | string | Lead company name | | `website` | string | Lead website | | `location` | string | Lead location | | `linkedin_profile` | string | Lead LinkedIn profile URL | | `company_url` | string | Lead company URL | | `custom_fields` | json | Lead custom fields | | `is_unsubscribed` | boolean | Whether the lead is unsubscribed | | `lead_campaign_data` | array | Campaigns the lead belongs to | | `created_at` | string | Creation timestamp | | `updated_at` | string | Last update timestamp | | `leads_count` | number | Leads in the list | | `active_leads_count` | number | Active leads in the list | | `track_settings` | array | Disabled tracking settings | | `scheduler_cron_value` | json | Campaign sending schedule | | `accounts` | array | Sending email accounts, excluding their stored mailbox credentials | | `user_id` | number | Owning Smartlead user ID | | `min_time_btwn_emails` | number | Minimum minutes between emails | | `max_leads_per_day` | number | Maximum new leads per day | | `stop_lead_settings` | string | Activity that stops a lead sequence | | `schedule_start_time` | string | Scheduled start time | | `enable_ai_esp_matching` | boolean | Whether AI ESP matching is enabled | | `send_as_plain_text` | boolean | Whether emails send as plain text | | `follow_up_percentage` | number | Follow-up percentage | | `unsubscribe_text` | string | Unsubscribe text | | `parent_campaign_id` | number | Parent campaign ID | | `client_id` | number | Client ID for agency accounts | | `client_name` | string | Client name | | `client_email` | string | Client email | | `client_company_name` | string | Client company name | | `tags` | array | Tags on the record | | `email_campaign_id` | number | Campaign the webhook belongs to | ### Smartlead Pause Lead [#smartlead-pause-lead] Pauses a lead in a Smartlead campaign so it stops receiving sequence emails. #### Input [#input-16] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | -------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Smartlead API key | | `campaignId` | number | Yes | Smartlead campaign ID | | `leadId` | number | Yes | Smartlead lead ID — the nested lead.id from List Campaign Leads, NOT campaign\_lead\_map\_id | #### Output [#output-16] | Parameter | Type | Description | | ----------------------------- | ------- | ------------------------------------------------------------------ | | `campaigns` | array | List of campaigns | | `leads` | array | List of leads | | `sequences` | array | Email sequence steps | | `categories` | array | Lead categories | | `webhooks` | array | Campaign webhooks | | `stats` | array | Per-email statistics rows | | `history` | array | Lead message history | | `count` | number | Number of records returned | | `total_leads` | number | Total leads in the campaign, or leads newly added when importing | | `total_stats` | number | Total statistics rows matching the filters | | `id` | number | Record ID | | `name` | string | Record name | | `status` | string | Campaign status | | `email` | string | Lead email address | | `webhook_url` | string | Webhook destination URL | | `event_types` | array | Webhook event types | | `sent_count` | number | Emails sent | | `open_count` | number | Email opens | | `click_count` | number | Link clicks | | `reply_count` | number | Replies | | `bounce_count` | number | Bounces | | `campaign_lead_stats` | json | Lead counts by state | | `upload_count` | number | Leads submitted in the request | | `success` | boolean | Whether the action succeeded | | `items` | array | Records returned by Smartlead | | `rows` | array | Rows returned by Smartlead | | `lists` | array | Lead lists | | `summary` | array | Webhook delivery summary rows | | `csv` | string | Exported leads as CSV | | `row_count` | number | Rows in the exported CSV | | `has_more` | boolean | Whether more rows are available | | `list_name` | string | Lead list name | | `positive_reply_count` | number | Replies categorized as positive | | `offset` | number | Pagination offset used | | `limit` | number | Pagination limit used | | `total_count` | number | Total records matching the request | | `from` | string | Start of the reported window | | `to` | string | End of the reported window | | `start_date` | string | Start of the reported range | | `end_date` | string | End of the reported range | | `skipped_count` | number | Emails skipped | | `failed_count` | number | Failed sends | | `stopped_count` | number | Stopped leads | | `unsubscribed_count` | number | Unsubscribes | | `unique_sent_count` | number | Unique leads emailed | | `unique_open_count` | number | Unique opens | | `unique_click_count` | number | Unique clicks | | `block_count` | number | Blocked sends, or leads skipped by the block list | | `drafted_count` | number | Drafted emails | | `sequence_count` | number | Sequence steps in the campaign | | `duplicate_count` | number | Duplicate leads skipped on import | | `invalid_email_count` | number | Leads skipped for an invalid email | | `invalid_emails` | array | Emails rejected as invalid | | `already_added_to_campaign` | number | Leads already in the campaign | | `unsubscribed_leads` | array | Leads skipped because they unsubscribed | | `lead_import_stopped_count` | number | Leads whose import was stopped | | `is_lead_limit_exhausted` | boolean | Whether the plan lead limit was hit | | `is_last_sequence` | boolean | Whether the lead was on the final step | | `next_sequence_id` | number | ID of the next sequence step | | `next_sequence_delay_in_days` | number | Days before the next step | | `first_name` | string | Lead first name | | `last_name` | string | Lead last name | | `phone_number` | string | Lead phone number | | `company_name` | string | Lead company name | | `website` | string | Lead website | | `location` | string | Lead location | | `linkedin_profile` | string | Lead LinkedIn profile URL | | `company_url` | string | Lead company URL | | `custom_fields` | json | Lead custom fields | | `is_unsubscribed` | boolean | Whether the lead is unsubscribed | | `lead_campaign_data` | array | Campaigns the lead belongs to | | `created_at` | string | Creation timestamp | | `updated_at` | string | Last update timestamp | | `leads_count` | number | Leads in the list | | `active_leads_count` | number | Active leads in the list | | `track_settings` | array | Disabled tracking settings | | `scheduler_cron_value` | json | Campaign sending schedule | | `accounts` | array | Sending email accounts, excluding their stored mailbox credentials | | `user_id` | number | Owning Smartlead user ID | | `min_time_btwn_emails` | number | Minimum minutes between emails | | `max_leads_per_day` | number | Maximum new leads per day | | `stop_lead_settings` | string | Activity that stops a lead sequence | | `schedule_start_time` | string | Scheduled start time | | `enable_ai_esp_matching` | boolean | Whether AI ESP matching is enabled | | `send_as_plain_text` | boolean | Whether emails send as plain text | | `follow_up_percentage` | number | Follow-up percentage | | `unsubscribe_text` | string | Unsubscribe text | | `parent_campaign_id` | number | Parent campaign ID | | `client_id` | number | Client ID for agency accounts | | `client_name` | string | Client name | | `client_email` | string | Client email | | `client_company_name` | string | Client company name | | `tags` | array | Tags on the record | | `email_campaign_id` | number | Campaign the webhook belongs to | ### Smartlead Resume Lead [#smartlead-resume-lead] Resumes a paused lead in a Smartlead campaign, optionally after a delay. #### Input [#input-17] | Parameter | Type | Required | Description | | ------------------------- | ------ | -------- | -------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Smartlead API key | | `campaignId` | number | Yes | Smartlead campaign ID | | `leadId` | number | Yes | Smartlead lead ID — the nested lead.id from List Campaign Leads, NOT campaign\_lead\_map\_id | | `resumeLeadWithDelayDays` | number | No | Days to wait before the next email; 0 resumes immediately | #### Output [#output-17] | Parameter | Type | Description | | ----------------------------- | ------- | ------------------------------------------------------------------ | | `campaigns` | array | List of campaigns | | `leads` | array | List of leads | | `sequences` | array | Email sequence steps | | `categories` | array | Lead categories | | `webhooks` | array | Campaign webhooks | | `stats` | array | Per-email statistics rows | | `history` | array | Lead message history | | `count` | number | Number of records returned | | `total_leads` | number | Total leads in the campaign, or leads newly added when importing | | `total_stats` | number | Total statistics rows matching the filters | | `id` | number | Record ID | | `name` | string | Record name | | `status` | string | Campaign status | | `email` | string | Lead email address | | `webhook_url` | string | Webhook destination URL | | `event_types` | array | Webhook event types | | `sent_count` | number | Emails sent | | `open_count` | number | Email opens | | `click_count` | number | Link clicks | | `reply_count` | number | Replies | | `bounce_count` | number | Bounces | | `campaign_lead_stats` | json | Lead counts by state | | `upload_count` | number | Leads submitted in the request | | `success` | boolean | Whether the action succeeded | | `items` | array | Records returned by Smartlead | | `rows` | array | Rows returned by Smartlead | | `lists` | array | Lead lists | | `summary` | array | Webhook delivery summary rows | | `csv` | string | Exported leads as CSV | | `row_count` | number | Rows in the exported CSV | | `has_more` | boolean | Whether more rows are available | | `list_name` | string | Lead list name | | `positive_reply_count` | number | Replies categorized as positive | | `offset` | number | Pagination offset used | | `limit` | number | Pagination limit used | | `total_count` | number | Total records matching the request | | `from` | string | Start of the reported window | | `to` | string | End of the reported window | | `start_date` | string | Start of the reported range | | `end_date` | string | End of the reported range | | `skipped_count` | number | Emails skipped | | `failed_count` | number | Failed sends | | `stopped_count` | number | Stopped leads | | `unsubscribed_count` | number | Unsubscribes | | `unique_sent_count` | number | Unique leads emailed | | `unique_open_count` | number | Unique opens | | `unique_click_count` | number | Unique clicks | | `block_count` | number | Blocked sends, or leads skipped by the block list | | `drafted_count` | number | Drafted emails | | `sequence_count` | number | Sequence steps in the campaign | | `duplicate_count` | number | Duplicate leads skipped on import | | `invalid_email_count` | number | Leads skipped for an invalid email | | `invalid_emails` | array | Emails rejected as invalid | | `already_added_to_campaign` | number | Leads already in the campaign | | `unsubscribed_leads` | array | Leads skipped because they unsubscribed | | `lead_import_stopped_count` | number | Leads whose import was stopped | | `is_lead_limit_exhausted` | boolean | Whether the plan lead limit was hit | | `is_last_sequence` | boolean | Whether the lead was on the final step | | `next_sequence_id` | number | ID of the next sequence step | | `next_sequence_delay_in_days` | number | Days before the next step | | `first_name` | string | Lead first name | | `last_name` | string | Lead last name | | `phone_number` | string | Lead phone number | | `company_name` | string | Lead company name | | `website` | string | Lead website | | `location` | string | Lead location | | `linkedin_profile` | string | Lead LinkedIn profile URL | | `company_url` | string | Lead company URL | | `custom_fields` | json | Lead custom fields | | `is_unsubscribed` | boolean | Whether the lead is unsubscribed | | `lead_campaign_data` | array | Campaigns the lead belongs to | | `created_at` | string | Creation timestamp | | `updated_at` | string | Last update timestamp | | `leads_count` | number | Leads in the list | | `active_leads_count` | number | Active leads in the list | | `track_settings` | array | Disabled tracking settings | | `scheduler_cron_value` | json | Campaign sending schedule | | `accounts` | array | Sending email accounts, excluding their stored mailbox credentials | | `user_id` | number | Owning Smartlead user ID | | `min_time_btwn_emails` | number | Minimum minutes between emails | | `max_leads_per_day` | number | Maximum new leads per day | | `stop_lead_settings` | string | Activity that stops a lead sequence | | `schedule_start_time` | string | Scheduled start time | | `enable_ai_esp_matching` | boolean | Whether AI ESP matching is enabled | | `send_as_plain_text` | boolean | Whether emails send as plain text | | `follow_up_percentage` | number | Follow-up percentage | | `unsubscribe_text` | string | Unsubscribe text | | `parent_campaign_id` | number | Parent campaign ID | | `client_id` | number | Client ID for agency accounts | | `client_name` | string | Client name | | `client_email` | string | Client email | | `client_company_name` | string | Client company name | | `tags` | array | Tags on the record | | `email_campaign_id` | number | Campaign the webhook belongs to | ### Smartlead List Lead Categories [#smartlead-list-lead-categories] Retrieves the lead categories configured on the Smartlead account, with the category IDs needed to categorize a lead. #### Input [#input-18] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------------- | | `apiKey` | string | Yes | Smartlead API key | #### Output [#output-18] | Parameter | Type | Description | | ----------------------------- | ------- | ------------------------------------------------------------------ | | `campaigns` | array | List of campaigns | | `leads` | array | List of leads | | `sequences` | array | Email sequence steps | | `categories` | array | Lead categories | | `webhooks` | array | Campaign webhooks | | `stats` | array | Per-email statistics rows | | `history` | array | Lead message history | | `count` | number | Number of records returned | | `total_leads` | number | Total leads in the campaign, or leads newly added when importing | | `total_stats` | number | Total statistics rows matching the filters | | `id` | number | Record ID | | `name` | string | Record name | | `status` | string | Campaign status | | `email` | string | Lead email address | | `webhook_url` | string | Webhook destination URL | | `event_types` | array | Webhook event types | | `sent_count` | number | Emails sent | | `open_count` | number | Email opens | | `click_count` | number | Link clicks | | `reply_count` | number | Replies | | `bounce_count` | number | Bounces | | `campaign_lead_stats` | json | Lead counts by state | | `upload_count` | number | Leads submitted in the request | | `success` | boolean | Whether the action succeeded | | `items` | array | Records returned by Smartlead | | `rows` | array | Rows returned by Smartlead | | `lists` | array | Lead lists | | `summary` | array | Webhook delivery summary rows | | `csv` | string | Exported leads as CSV | | `row_count` | number | Rows in the exported CSV | | `has_more` | boolean | Whether more rows are available | | `list_name` | string | Lead list name | | `positive_reply_count` | number | Replies categorized as positive | | `offset` | number | Pagination offset used | | `limit` | number | Pagination limit used | | `total_count` | number | Total records matching the request | | `from` | string | Start of the reported window | | `to` | string | End of the reported window | | `start_date` | string | Start of the reported range | | `end_date` | string | End of the reported range | | `skipped_count` | number | Emails skipped | | `failed_count` | number | Failed sends | | `stopped_count` | number | Stopped leads | | `unsubscribed_count` | number | Unsubscribes | | `unique_sent_count` | number | Unique leads emailed | | `unique_open_count` | number | Unique opens | | `unique_click_count` | number | Unique clicks | | `block_count` | number | Blocked sends, or leads skipped by the block list | | `drafted_count` | number | Drafted emails | | `sequence_count` | number | Sequence steps in the campaign | | `duplicate_count` | number | Duplicate leads skipped on import | | `invalid_email_count` | number | Leads skipped for an invalid email | | `invalid_emails` | array | Emails rejected as invalid | | `already_added_to_campaign` | number | Leads already in the campaign | | `unsubscribed_leads` | array | Leads skipped because they unsubscribed | | `lead_import_stopped_count` | number | Leads whose import was stopped | | `is_lead_limit_exhausted` | boolean | Whether the plan lead limit was hit | | `is_last_sequence` | boolean | Whether the lead was on the final step | | `next_sequence_id` | number | ID of the next sequence step | | `next_sequence_delay_in_days` | number | Days before the next step | | `first_name` | string | Lead first name | | `last_name` | string | Lead last name | | `phone_number` | string | Lead phone number | | `company_name` | string | Lead company name | | `website` | string | Lead website | | `location` | string | Lead location | | `linkedin_profile` | string | Lead LinkedIn profile URL | | `company_url` | string | Lead company URL | | `custom_fields` | json | Lead custom fields | | `is_unsubscribed` | boolean | Whether the lead is unsubscribed | | `lead_campaign_data` | array | Campaigns the lead belongs to | | `created_at` | string | Creation timestamp | | `updated_at` | string | Last update timestamp | | `leads_count` | number | Leads in the list | | `active_leads_count` | number | Active leads in the list | | `track_settings` | array | Disabled tracking settings | | `scheduler_cron_value` | json | Campaign sending schedule | | `accounts` | array | Sending email accounts, excluding their stored mailbox credentials | | `user_id` | number | Owning Smartlead user ID | | `min_time_btwn_emails` | number | Minimum minutes between emails | | `max_leads_per_day` | number | Maximum new leads per day | | `stop_lead_settings` | string | Activity that stops a lead sequence | | `schedule_start_time` | string | Scheduled start time | | `enable_ai_esp_matching` | boolean | Whether AI ESP matching is enabled | | `send_as_plain_text` | boolean | Whether emails send as plain text | | `follow_up_percentage` | number | Follow-up percentage | | `unsubscribe_text` | string | Unsubscribe text | | `parent_campaign_id` | number | Parent campaign ID | | `client_id` | number | Client ID for agency accounts | | `client_name` | string | Client name | | `client_email` | string | Client email | | `client_company_name` | string | Client company name | | `tags` | array | Tags on the record | | `email_campaign_id` | number | Campaign the webhook belongs to | ### Smartlead Get Lead Message History [#smartlead-get-lead-message-history] Retrieves the sent-and-received message history for a lead in a Smartlead campaign. #### Input [#input-19] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | -------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Smartlead API key | | `campaignId` | number | Yes | Smartlead campaign ID | | `leadId` | number | Yes | Smartlead lead ID — the nested lead.id from List Campaign Leads, NOT campaign\_lead\_map\_id | #### Output [#output-19] | Parameter | Type | Description | | ----------------------------- | ------- | ------------------------------------------------------------------ | | `campaigns` | array | List of campaigns | | `leads` | array | List of leads | | `sequences` | array | Email sequence steps | | `categories` | array | Lead categories | | `webhooks` | array | Campaign webhooks | | `stats` | array | Per-email statistics rows | | `history` | array | Lead message history | | `count` | number | Number of records returned | | `total_leads` | number | Total leads in the campaign, or leads newly added when importing | | `total_stats` | number | Total statistics rows matching the filters | | `id` | number | Record ID | | `name` | string | Record name | | `status` | string | Campaign status | | `email` | string | Lead email address | | `webhook_url` | string | Webhook destination URL | | `event_types` | array | Webhook event types | | `sent_count` | number | Emails sent | | `open_count` | number | Email opens | | `click_count` | number | Link clicks | | `reply_count` | number | Replies | | `bounce_count` | number | Bounces | | `campaign_lead_stats` | json | Lead counts by state | | `upload_count` | number | Leads submitted in the request | | `success` | boolean | Whether the action succeeded | | `items` | array | Records returned by Smartlead | | `rows` | array | Rows returned by Smartlead | | `lists` | array | Lead lists | | `summary` | array | Webhook delivery summary rows | | `csv` | string | Exported leads as CSV | | `row_count` | number | Rows in the exported CSV | | `has_more` | boolean | Whether more rows are available | | `list_name` | string | Lead list name | | `positive_reply_count` | number | Replies categorized as positive | | `offset` | number | Pagination offset used | | `limit` | number | Pagination limit used | | `total_count` | number | Total records matching the request | | `from` | string | Start of the reported window | | `to` | string | End of the reported window | | `start_date` | string | Start of the reported range | | `end_date` | string | End of the reported range | | `skipped_count` | number | Emails skipped | | `failed_count` | number | Failed sends | | `stopped_count` | number | Stopped leads | | `unsubscribed_count` | number | Unsubscribes | | `unique_sent_count` | number | Unique leads emailed | | `unique_open_count` | number | Unique opens | | `unique_click_count` | number | Unique clicks | | `block_count` | number | Blocked sends, or leads skipped by the block list | | `drafted_count` | number | Drafted emails | | `sequence_count` | number | Sequence steps in the campaign | | `duplicate_count` | number | Duplicate leads skipped on import | | `invalid_email_count` | number | Leads skipped for an invalid email | | `invalid_emails` | array | Emails rejected as invalid | | `already_added_to_campaign` | number | Leads already in the campaign | | `unsubscribed_leads` | array | Leads skipped because they unsubscribed | | `lead_import_stopped_count` | number | Leads whose import was stopped | | `is_lead_limit_exhausted` | boolean | Whether the plan lead limit was hit | | `is_last_sequence` | boolean | Whether the lead was on the final step | | `next_sequence_id` | number | ID of the next sequence step | | `next_sequence_delay_in_days` | number | Days before the next step | | `first_name` | string | Lead first name | | `last_name` | string | Lead last name | | `phone_number` | string | Lead phone number | | `company_name` | string | Lead company name | | `website` | string | Lead website | | `location` | string | Lead location | | `linkedin_profile` | string | Lead LinkedIn profile URL | | `company_url` | string | Lead company URL | | `custom_fields` | json | Lead custom fields | | `is_unsubscribed` | boolean | Whether the lead is unsubscribed | | `lead_campaign_data` | array | Campaigns the lead belongs to | | `created_at` | string | Creation timestamp | | `updated_at` | string | Last update timestamp | | `leads_count` | number | Leads in the list | | `active_leads_count` | number | Active leads in the list | | `track_settings` | array | Disabled tracking settings | | `scheduler_cron_value` | json | Campaign sending schedule | | `accounts` | array | Sending email accounts, excluding their stored mailbox credentials | | `user_id` | number | Owning Smartlead user ID | | `min_time_btwn_emails` | number | Minimum minutes between emails | | `max_leads_per_day` | number | Maximum new leads per day | | `stop_lead_settings` | string | Activity that stops a lead sequence | | `schedule_start_time` | string | Scheduled start time | | `enable_ai_esp_matching` | boolean | Whether AI ESP matching is enabled | | `send_as_plain_text` | boolean | Whether emails send as plain text | | `follow_up_percentage` | number | Follow-up percentage | | `unsubscribe_text` | string | Unsubscribe text | | `parent_campaign_id` | number | Parent campaign ID | | `client_id` | number | Client ID for agency accounts | | `client_name` | string | Client name | | `client_email` | string | Client email | | `client_company_name` | string | Client company name | | `tags` | array | Tags on the record | | `email_campaign_id` | number | Campaign the webhook belongs to | ### Smartlead List Campaign Webhooks [#smartlead-list-campaign-webhooks] Retrieves the webhooks registered on a Smartlead campaign. #### Input [#input-20] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | --------------------- | | `apiKey` | string | Yes | Smartlead API key | | `campaignId` | number | Yes | Smartlead campaign ID | #### Output [#output-20] | Parameter | Type | Description | | ----------------------------- | ------- | ------------------------------------------------------------------ | | `campaigns` | array | List of campaigns | | `leads` | array | List of leads | | `sequences` | array | Email sequence steps | | `categories` | array | Lead categories | | `webhooks` | array | Campaign webhooks | | `stats` | array | Per-email statistics rows | | `history` | array | Lead message history | | `count` | number | Number of records returned | | `total_leads` | number | Total leads in the campaign, or leads newly added when importing | | `total_stats` | number | Total statistics rows matching the filters | | `id` | number | Record ID | | `name` | string | Record name | | `status` | string | Campaign status | | `email` | string | Lead email address | | `webhook_url` | string | Webhook destination URL | | `event_types` | array | Webhook event types | | `sent_count` | number | Emails sent | | `open_count` | number | Email opens | | `click_count` | number | Link clicks | | `reply_count` | number | Replies | | `bounce_count` | number | Bounces | | `campaign_lead_stats` | json | Lead counts by state | | `upload_count` | number | Leads submitted in the request | | `success` | boolean | Whether the action succeeded | | `items` | array | Records returned by Smartlead | | `rows` | array | Rows returned by Smartlead | | `lists` | array | Lead lists | | `summary` | array | Webhook delivery summary rows | | `csv` | string | Exported leads as CSV | | `row_count` | number | Rows in the exported CSV | | `has_more` | boolean | Whether more rows are available | | `list_name` | string | Lead list name | | `positive_reply_count` | number | Replies categorized as positive | | `offset` | number | Pagination offset used | | `limit` | number | Pagination limit used | | `total_count` | number | Total records matching the request | | `from` | string | Start of the reported window | | `to` | string | End of the reported window | | `start_date` | string | Start of the reported range | | `end_date` | string | End of the reported range | | `skipped_count` | number | Emails skipped | | `failed_count` | number | Failed sends | | `stopped_count` | number | Stopped leads | | `unsubscribed_count` | number | Unsubscribes | | `unique_sent_count` | number | Unique leads emailed | | `unique_open_count` | number | Unique opens | | `unique_click_count` | number | Unique clicks | | `block_count` | number | Blocked sends, or leads skipped by the block list | | `drafted_count` | number | Drafted emails | | `sequence_count` | number | Sequence steps in the campaign | | `duplicate_count` | number | Duplicate leads skipped on import | | `invalid_email_count` | number | Leads skipped for an invalid email | | `invalid_emails` | array | Emails rejected as invalid | | `already_added_to_campaign` | number | Leads already in the campaign | | `unsubscribed_leads` | array | Leads skipped because they unsubscribed | | `lead_import_stopped_count` | number | Leads whose import was stopped | | `is_lead_limit_exhausted` | boolean | Whether the plan lead limit was hit | | `is_last_sequence` | boolean | Whether the lead was on the final step | | `next_sequence_id` | number | ID of the next sequence step | | `next_sequence_delay_in_days` | number | Days before the next step | | `first_name` | string | Lead first name | | `last_name` | string | Lead last name | | `phone_number` | string | Lead phone number | | `company_name` | string | Lead company name | | `website` | string | Lead website | | `location` | string | Lead location | | `linkedin_profile` | string | Lead LinkedIn profile URL | | `company_url` | string | Lead company URL | | `custom_fields` | json | Lead custom fields | | `is_unsubscribed` | boolean | Whether the lead is unsubscribed | | `lead_campaign_data` | array | Campaigns the lead belongs to | | `created_at` | string | Creation timestamp | | `updated_at` | string | Last update timestamp | | `leads_count` | number | Leads in the list | | `active_leads_count` | number | Active leads in the list | | `track_settings` | array | Disabled tracking settings | | `scheduler_cron_value` | json | Campaign sending schedule | | `accounts` | array | Sending email accounts, excluding their stored mailbox credentials | | `user_id` | number | Owning Smartlead user ID | | `min_time_btwn_emails` | number | Minimum minutes between emails | | `max_leads_per_day` | number | Maximum new leads per day | | `stop_lead_settings` | string | Activity that stops a lead sequence | | `schedule_start_time` | string | Scheduled start time | | `enable_ai_esp_matching` | boolean | Whether AI ESP matching is enabled | | `send_as_plain_text` | boolean | Whether emails send as plain text | | `follow_up_percentage` | number | Follow-up percentage | | `unsubscribe_text` | string | Unsubscribe text | | `parent_campaign_id` | number | Parent campaign ID | | `client_id` | number | Client ID for agency accounts | | `client_name` | string | Client name | | `client_email` | string | Client email | | `client_company_name` | string | Client company name | | `tags` | array | Tags on the record | | `email_campaign_id` | number | Campaign the webhook belongs to | ### Smartlead Create or Update Campaign Webhook [#smartlead-create-or-update-campaign-webhook] Creates a webhook on a Smartlead campaign, or updates an existing one when a webhook ID is supplied. Smartlead requires at least one lead category. #### Input [#input-21] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Smartlead API key | | `campaignId` | number | Yes | Smartlead campaign ID | | `name` | string | Yes | Webhook name | | `webhookUrl` | string | Yes | HTTPS URL Smartlead should post events to | | `eventTypes` | array | Yes | Events to subscribe to. Allowed values: EMAIL\_SENT, EMAIL\_OPEN, EMAIL\_LINK\_CLICK, EMAIL\_REPLY, EMAIL\_BOUNCE, LEAD\_UNSUBSCRIBED, LEAD\_CATEGORY\_UPDATED | | `categories` | array | Yes | Lead category names the webhook applies to, e.g. Interested. Smartlead rejects an empty list. | | `webhookId` | number | No | Existing webhook ID to update; omit to create a new webhook | #### Output [#output-21] | Parameter | Type | Description | | ----------------------------- | ------- | ------------------------------------------------------------------ | | `campaigns` | array | List of campaigns | | `leads` | array | List of leads | | `sequences` | array | Email sequence steps | | `categories` | array | Lead categories | | `webhooks` | array | Campaign webhooks | | `stats` | array | Per-email statistics rows | | `history` | array | Lead message history | | `count` | number | Number of records returned | | `total_leads` | number | Total leads in the campaign, or leads newly added when importing | | `total_stats` | number | Total statistics rows matching the filters | | `id` | number | Record ID | | `name` | string | Record name | | `status` | string | Campaign status | | `email` | string | Lead email address | | `webhook_url` | string | Webhook destination URL | | `event_types` | array | Webhook event types | | `sent_count` | number | Emails sent | | `open_count` | number | Email opens | | `click_count` | number | Link clicks | | `reply_count` | number | Replies | | `bounce_count` | number | Bounces | | `campaign_lead_stats` | json | Lead counts by state | | `upload_count` | number | Leads submitted in the request | | `success` | boolean | Whether the action succeeded | | `items` | array | Records returned by Smartlead | | `rows` | array | Rows returned by Smartlead | | `lists` | array | Lead lists | | `summary` | array | Webhook delivery summary rows | | `csv` | string | Exported leads as CSV | | `row_count` | number | Rows in the exported CSV | | `has_more` | boolean | Whether more rows are available | | `list_name` | string | Lead list name | | `positive_reply_count` | number | Replies categorized as positive | | `offset` | number | Pagination offset used | | `limit` | number | Pagination limit used | | `total_count` | number | Total records matching the request | | `from` | string | Start of the reported window | | `to` | string | End of the reported window | | `start_date` | string | Start of the reported range | | `end_date` | string | End of the reported range | | `skipped_count` | number | Emails skipped | | `failed_count` | number | Failed sends | | `stopped_count` | number | Stopped leads | | `unsubscribed_count` | number | Unsubscribes | | `unique_sent_count` | number | Unique leads emailed | | `unique_open_count` | number | Unique opens | | `unique_click_count` | number | Unique clicks | | `block_count` | number | Blocked sends, or leads skipped by the block list | | `drafted_count` | number | Drafted emails | | `sequence_count` | number | Sequence steps in the campaign | | `duplicate_count` | number | Duplicate leads skipped on import | | `invalid_email_count` | number | Leads skipped for an invalid email | | `invalid_emails` | array | Emails rejected as invalid | | `already_added_to_campaign` | number | Leads already in the campaign | | `unsubscribed_leads` | array | Leads skipped because they unsubscribed | | `lead_import_stopped_count` | number | Leads whose import was stopped | | `is_lead_limit_exhausted` | boolean | Whether the plan lead limit was hit | | `is_last_sequence` | boolean | Whether the lead was on the final step | | `next_sequence_id` | number | ID of the next sequence step | | `next_sequence_delay_in_days` | number | Days before the next step | | `first_name` | string | Lead first name | | `last_name` | string | Lead last name | | `phone_number` | string | Lead phone number | | `company_name` | string | Lead company name | | `website` | string | Lead website | | `location` | string | Lead location | | `linkedin_profile` | string | Lead LinkedIn profile URL | | `company_url` | string | Lead company URL | | `custom_fields` | json | Lead custom fields | | `is_unsubscribed` | boolean | Whether the lead is unsubscribed | | `lead_campaign_data` | array | Campaigns the lead belongs to | | `created_at` | string | Creation timestamp | | `updated_at` | string | Last update timestamp | | `leads_count` | number | Leads in the list | | `active_leads_count` | number | Active leads in the list | | `track_settings` | array | Disabled tracking settings | | `scheduler_cron_value` | json | Campaign sending schedule | | `accounts` | array | Sending email accounts, excluding their stored mailbox credentials | | `user_id` | number | Owning Smartlead user ID | | `min_time_btwn_emails` | number | Minimum minutes between emails | | `max_leads_per_day` | number | Maximum new leads per day | | `stop_lead_settings` | string | Activity that stops a lead sequence | | `schedule_start_time` | string | Scheduled start time | | `enable_ai_esp_matching` | boolean | Whether AI ESP matching is enabled | | `send_as_plain_text` | boolean | Whether emails send as plain text | | `follow_up_percentage` | number | Follow-up percentage | | `unsubscribe_text` | string | Unsubscribe text | | `parent_campaign_id` | number | Parent campaign ID | | `client_id` | number | Client ID for agency accounts | | `client_name` | string | Client name | | `client_email` | string | Client email | | `client_company_name` | string | Client company name | | `tags` | array | Tags on the record | | `email_campaign_id` | number | Campaign the webhook belongs to | ### Smartlead Delete Campaign Webhook [#smartlead-delete-campaign-webhook] Deletes a webhook from a Smartlead campaign. #### Input [#input-22] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | -------------------------------------------------------- | | `apiKey` | string | Yes | Smartlead API key | | `campaignId` | number | Yes | Smartlead campaign ID | | `webhookId` | number | Yes | ID of the webhook to delete, from List Campaign Webhooks | #### Output [#output-22] | Parameter | Type | Description | | ----------------------------- | ------- | ------------------------------------------------------------------ | | `campaigns` | array | List of campaigns | | `leads` | array | List of leads | | `sequences` | array | Email sequence steps | | `categories` | array | Lead categories | | `webhooks` | array | Campaign webhooks | | `stats` | array | Per-email statistics rows | | `history` | array | Lead message history | | `count` | number | Number of records returned | | `total_leads` | number | Total leads in the campaign, or leads newly added when importing | | `total_stats` | number | Total statistics rows matching the filters | | `id` | number | Record ID | | `name` | string | Record name | | `status` | string | Campaign status | | `email` | string | Lead email address | | `webhook_url` | string | Webhook destination URL | | `event_types` | array | Webhook event types | | `sent_count` | number | Emails sent | | `open_count` | number | Email opens | | `click_count` | number | Link clicks | | `reply_count` | number | Replies | | `bounce_count` | number | Bounces | | `campaign_lead_stats` | json | Lead counts by state | | `upload_count` | number | Leads submitted in the request | | `success` | boolean | Whether the action succeeded | | `items` | array | Records returned by Smartlead | | `rows` | array | Rows returned by Smartlead | | `lists` | array | Lead lists | | `summary` | array | Webhook delivery summary rows | | `csv` | string | Exported leads as CSV | | `row_count` | number | Rows in the exported CSV | | `has_more` | boolean | Whether more rows are available | | `list_name` | string | Lead list name | | `positive_reply_count` | number | Replies categorized as positive | | `offset` | number | Pagination offset used | | `limit` | number | Pagination limit used | | `total_count` | number | Total records matching the request | | `from` | string | Start of the reported window | | `to` | string | End of the reported window | | `start_date` | string | Start of the reported range | | `end_date` | string | End of the reported range | | `skipped_count` | number | Emails skipped | | `failed_count` | number | Failed sends | | `stopped_count` | number | Stopped leads | | `unsubscribed_count` | number | Unsubscribes | | `unique_sent_count` | number | Unique leads emailed | | `unique_open_count` | number | Unique opens | | `unique_click_count` | number | Unique clicks | | `block_count` | number | Blocked sends, or leads skipped by the block list | | `drafted_count` | number | Drafted emails | | `sequence_count` | number | Sequence steps in the campaign | | `duplicate_count` | number | Duplicate leads skipped on import | | `invalid_email_count` | number | Leads skipped for an invalid email | | `invalid_emails` | array | Emails rejected as invalid | | `already_added_to_campaign` | number | Leads already in the campaign | | `unsubscribed_leads` | array | Leads skipped because they unsubscribed | | `lead_import_stopped_count` | number | Leads whose import was stopped | | `is_lead_limit_exhausted` | boolean | Whether the plan lead limit was hit | | `is_last_sequence` | boolean | Whether the lead was on the final step | | `next_sequence_id` | number | ID of the next sequence step | | `next_sequence_delay_in_days` | number | Days before the next step | | `first_name` | string | Lead first name | | `last_name` | string | Lead last name | | `phone_number` | string | Lead phone number | | `company_name` | string | Lead company name | | `website` | string | Lead website | | `location` | string | Lead location | | `linkedin_profile` | string | Lead LinkedIn profile URL | | `company_url` | string | Lead company URL | | `custom_fields` | json | Lead custom fields | | `is_unsubscribed` | boolean | Whether the lead is unsubscribed | | `lead_campaign_data` | array | Campaigns the lead belongs to | | `created_at` | string | Creation timestamp | | `updated_at` | string | Last update timestamp | | `leads_count` | number | Leads in the list | | `active_leads_count` | number | Active leads in the list | | `track_settings` | array | Disabled tracking settings | | `scheduler_cron_value` | json | Campaign sending schedule | | `accounts` | array | Sending email accounts, excluding their stored mailbox credentials | | `user_id` | number | Owning Smartlead user ID | | `min_time_btwn_emails` | number | Minimum minutes between emails | | `max_leads_per_day` | number | Maximum new leads per day | | `stop_lead_settings` | string | Activity that stops a lead sequence | | `schedule_start_time` | string | Scheduled start time | | `enable_ai_esp_matching` | boolean | Whether AI ESP matching is enabled | | `send_as_plain_text` | boolean | Whether emails send as plain text | | `follow_up_percentage` | number | Follow-up percentage | | `unsubscribe_text` | string | Unsubscribe text | | `parent_campaign_id` | number | Parent campaign ID | | `client_id` | number | Client ID for agency accounts | | `client_name` | string | Client name | | `client_email` | string | Client email | | `client_company_name` | string | Client company name | | `tags` | array | Tags on the record | | `email_campaign_id` | number | Campaign the webhook belongs to | ### Smartlead Get Campaign Webhook Summary [#smartlead-get-campaign-webhook-summary] Retrieves webhook delivery counts for a Smartlead campaign over a time window, for checking whether events are reaching their destination. #### Input [#input-23] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | -------------------------------------------- | | `apiKey` | string | Yes | Smartlead API key | | `campaignId` | number | Yes | Smartlead campaign ID | | `fromTime` | string | Yes | Start of the window as an ISO 8601 timestamp | | `toTime` | string | Yes | End of the window as an ISO 8601 timestamp | #### Output [#output-23] | Parameter | Type | Description | | ----------------------------- | ------- | ------------------------------------------------------------------ | | `campaigns` | array | List of campaigns | | `leads` | array | List of leads | | `sequences` | array | Email sequence steps | | `categories` | array | Lead categories | | `webhooks` | array | Campaign webhooks | | `stats` | array | Per-email statistics rows | | `history` | array | Lead message history | | `count` | number | Number of records returned | | `total_leads` | number | Total leads in the campaign, or leads newly added when importing | | `total_stats` | number | Total statistics rows matching the filters | | `id` | number | Record ID | | `name` | string | Record name | | `status` | string | Campaign status | | `email` | string | Lead email address | | `webhook_url` | string | Webhook destination URL | | `event_types` | array | Webhook event types | | `sent_count` | number | Emails sent | | `open_count` | number | Email opens | | `click_count` | number | Link clicks | | `reply_count` | number | Replies | | `bounce_count` | number | Bounces | | `campaign_lead_stats` | json | Lead counts by state | | `upload_count` | number | Leads submitted in the request | | `success` | boolean | Whether the action succeeded | | `items` | array | Records returned by Smartlead | | `rows` | array | Rows returned by Smartlead | | `lists` | array | Lead lists | | `summary` | array | Webhook delivery summary rows | | `csv` | string | Exported leads as CSV | | `row_count` | number | Rows in the exported CSV | | `has_more` | boolean | Whether more rows are available | | `list_name` | string | Lead list name | | `positive_reply_count` | number | Replies categorized as positive | | `offset` | number | Pagination offset used | | `limit` | number | Pagination limit used | | `total_count` | number | Total records matching the request | | `from` | string | Start of the reported window | | `to` | string | End of the reported window | | `start_date` | string | Start of the reported range | | `end_date` | string | End of the reported range | | `skipped_count` | number | Emails skipped | | `failed_count` | number | Failed sends | | `stopped_count` | number | Stopped leads | | `unsubscribed_count` | number | Unsubscribes | | `unique_sent_count` | number | Unique leads emailed | | `unique_open_count` | number | Unique opens | | `unique_click_count` | number | Unique clicks | | `block_count` | number | Blocked sends, or leads skipped by the block list | | `drafted_count` | number | Drafted emails | | `sequence_count` | number | Sequence steps in the campaign | | `duplicate_count` | number | Duplicate leads skipped on import | | `invalid_email_count` | number | Leads skipped for an invalid email | | `invalid_emails` | array | Emails rejected as invalid | | `already_added_to_campaign` | number | Leads already in the campaign | | `unsubscribed_leads` | array | Leads skipped because they unsubscribed | | `lead_import_stopped_count` | number | Leads whose import was stopped | | `is_lead_limit_exhausted` | boolean | Whether the plan lead limit was hit | | `is_last_sequence` | boolean | Whether the lead was on the final step | | `next_sequence_id` | number | ID of the next sequence step | | `next_sequence_delay_in_days` | number | Days before the next step | | `first_name` | string | Lead first name | | `last_name` | string | Lead last name | | `phone_number` | string | Lead phone number | | `company_name` | string | Lead company name | | `website` | string | Lead website | | `location` | string | Lead location | | `linkedin_profile` | string | Lead LinkedIn profile URL | | `company_url` | string | Lead company URL | | `custom_fields` | json | Lead custom fields | | `is_unsubscribed` | boolean | Whether the lead is unsubscribed | | `lead_campaign_data` | array | Campaigns the lead belongs to | | `created_at` | string | Creation timestamp | | `updated_at` | string | Last update timestamp | | `leads_count` | number | Leads in the list | | `active_leads_count` | number | Active leads in the list | | `track_settings` | array | Disabled tracking settings | | `scheduler_cron_value` | json | Campaign sending schedule | | `accounts` | array | Sending email accounts, excluding their stored mailbox credentials | | `user_id` | number | Owning Smartlead user ID | | `min_time_btwn_emails` | number | Minimum minutes between emails | | `max_leads_per_day` | number | Maximum new leads per day | | `stop_lead_settings` | string | Activity that stops a lead sequence | | `schedule_start_time` | string | Scheduled start time | | `enable_ai_esp_matching` | boolean | Whether AI ESP matching is enabled | | `send_as_plain_text` | boolean | Whether emails send as plain text | | `follow_up_percentage` | number | Follow-up percentage | | `unsubscribe_text` | string | Unsubscribe text | | `parent_campaign_id` | number | Parent campaign ID | | `client_id` | number | Client ID for agency accounts | | `client_name` | string | Client name | | `client_email` | string | Client email | | `client_company_name` | string | Client company name | | `tags` | array | Tags on the record | | `email_campaign_id` | number | Campaign the webhook belongs to | ### Smartlead Duplicate Campaign [#smartlead-duplicate-campaign] Copies a Smartlead campaign, including its sequences and settings. The copy is named "\ - copy" and starts in DRAFTED status. #### Input [#input-24] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | --------------------- | | `apiKey` | string | Yes | Smartlead API key | | `campaignId` | number | Yes | Smartlead campaign ID | #### Output [#output-24] | Parameter | Type | Description | | ----------------------------- | ------- | ------------------------------------------------------------------ | | `campaigns` | array | List of campaigns | | `leads` | array | List of leads | | `sequences` | array | Email sequence steps | | `categories` | array | Lead categories | | `webhooks` | array | Campaign webhooks | | `stats` | array | Per-email statistics rows | | `history` | array | Lead message history | | `count` | number | Number of records returned | | `total_leads` | number | Total leads in the campaign, or leads newly added when importing | | `total_stats` | number | Total statistics rows matching the filters | | `id` | number | Record ID | | `name` | string | Record name | | `status` | string | Campaign status | | `email` | string | Lead email address | | `webhook_url` | string | Webhook destination URL | | `event_types` | array | Webhook event types | | `sent_count` | number | Emails sent | | `open_count` | number | Email opens | | `click_count` | number | Link clicks | | `reply_count` | number | Replies | | `bounce_count` | number | Bounces | | `campaign_lead_stats` | json | Lead counts by state | | `upload_count` | number | Leads submitted in the request | | `success` | boolean | Whether the action succeeded | | `items` | array | Records returned by Smartlead | | `rows` | array | Rows returned by Smartlead | | `lists` | array | Lead lists | | `summary` | array | Webhook delivery summary rows | | `csv` | string | Exported leads as CSV | | `row_count` | number | Rows in the exported CSV | | `has_more` | boolean | Whether more rows are available | | `list_name` | string | Lead list name | | `positive_reply_count` | number | Replies categorized as positive | | `offset` | number | Pagination offset used | | `limit` | number | Pagination limit used | | `total_count` | number | Total records matching the request | | `from` | string | Start of the reported window | | `to` | string | End of the reported window | | `start_date` | string | Start of the reported range | | `end_date` | string | End of the reported range | | `skipped_count` | number | Emails skipped | | `failed_count` | number | Failed sends | | `stopped_count` | number | Stopped leads | | `unsubscribed_count` | number | Unsubscribes | | `unique_sent_count` | number | Unique leads emailed | | `unique_open_count` | number | Unique opens | | `unique_click_count` | number | Unique clicks | | `block_count` | number | Blocked sends, or leads skipped by the block list | | `drafted_count` | number | Drafted emails | | `sequence_count` | number | Sequence steps in the campaign | | `duplicate_count` | number | Duplicate leads skipped on import | | `invalid_email_count` | number | Leads skipped for an invalid email | | `invalid_emails` | array | Emails rejected as invalid | | `already_added_to_campaign` | number | Leads already in the campaign | | `unsubscribed_leads` | array | Leads skipped because they unsubscribed | | `lead_import_stopped_count` | number | Leads whose import was stopped | | `is_lead_limit_exhausted` | boolean | Whether the plan lead limit was hit | | `is_last_sequence` | boolean | Whether the lead was on the final step | | `next_sequence_id` | number | ID of the next sequence step | | `next_sequence_delay_in_days` | number | Days before the next step | | `first_name` | string | Lead first name | | `last_name` | string | Lead last name | | `phone_number` | string | Lead phone number | | `company_name` | string | Lead company name | | `website` | string | Lead website | | `location` | string | Lead location | | `linkedin_profile` | string | Lead LinkedIn profile URL | | `company_url` | string | Lead company URL | | `custom_fields` | json | Lead custom fields | | `is_unsubscribed` | boolean | Whether the lead is unsubscribed | | `lead_campaign_data` | array | Campaigns the lead belongs to | | `created_at` | string | Creation timestamp | | `updated_at` | string | Last update timestamp | | `leads_count` | number | Leads in the list | | `active_leads_count` | number | Active leads in the list | | `track_settings` | array | Disabled tracking settings | | `scheduler_cron_value` | json | Campaign sending schedule | | `accounts` | array | Sending email accounts, excluding their stored mailbox credentials | | `user_id` | number | Owning Smartlead user ID | | `min_time_btwn_emails` | number | Minimum minutes between emails | | `max_leads_per_day` | number | Maximum new leads per day | | `stop_lead_settings` | string | Activity that stops a lead sequence | | `schedule_start_time` | string | Scheduled start time | | `enable_ai_esp_matching` | boolean | Whether AI ESP matching is enabled | | `send_as_plain_text` | boolean | Whether emails send as plain text | | `follow_up_percentage` | number | Follow-up percentage | | `unsubscribe_text` | string | Unsubscribe text | | `parent_campaign_id` | number | Parent campaign ID | | `client_id` | number | Client ID for agency accounts | | `client_name` | string | Client name | | `client_email` | string | Client email | | `client_company_name` | string | Client company name | | `tags` | array | Tags on the record | | `email_campaign_id` | number | Campaign the webhook belongs to | ### Smartlead Delete Campaign [#smartlead-delete-campaign] Permanently deletes a Smartlead campaign along with its sequences, leads, and webhooks. This cannot be undone. #### Input [#input-25] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | --------------------- | | `apiKey` | string | Yes | Smartlead API key | | `campaignId` | number | Yes | Smartlead campaign ID | #### Output [#output-25] | Parameter | Type | Description | | ----------------------------- | ------- | ------------------------------------------------------------------ | | `campaigns` | array | List of campaigns | | `leads` | array | List of leads | | `sequences` | array | Email sequence steps | | `categories` | array | Lead categories | | `webhooks` | array | Campaign webhooks | | `stats` | array | Per-email statistics rows | | `history` | array | Lead message history | | `count` | number | Number of records returned | | `total_leads` | number | Total leads in the campaign, or leads newly added when importing | | `total_stats` | number | Total statistics rows matching the filters | | `id` | number | Record ID | | `name` | string | Record name | | `status` | string | Campaign status | | `email` | string | Lead email address | | `webhook_url` | string | Webhook destination URL | | `event_types` | array | Webhook event types | | `sent_count` | number | Emails sent | | `open_count` | number | Email opens | | `click_count` | number | Link clicks | | `reply_count` | number | Replies | | `bounce_count` | number | Bounces | | `campaign_lead_stats` | json | Lead counts by state | | `upload_count` | number | Leads submitted in the request | | `success` | boolean | Whether the action succeeded | | `items` | array | Records returned by Smartlead | | `rows` | array | Rows returned by Smartlead | | `lists` | array | Lead lists | | `summary` | array | Webhook delivery summary rows | | `csv` | string | Exported leads as CSV | | `row_count` | number | Rows in the exported CSV | | `has_more` | boolean | Whether more rows are available | | `list_name` | string | Lead list name | | `positive_reply_count` | number | Replies categorized as positive | | `offset` | number | Pagination offset used | | `limit` | number | Pagination limit used | | `total_count` | number | Total records matching the request | | `from` | string | Start of the reported window | | `to` | string | End of the reported window | | `start_date` | string | Start of the reported range | | `end_date` | string | End of the reported range | | `skipped_count` | number | Emails skipped | | `failed_count` | number | Failed sends | | `stopped_count` | number | Stopped leads | | `unsubscribed_count` | number | Unsubscribes | | `unique_sent_count` | number | Unique leads emailed | | `unique_open_count` | number | Unique opens | | `unique_click_count` | number | Unique clicks | | `block_count` | number | Blocked sends, or leads skipped by the block list | | `drafted_count` | number | Drafted emails | | `sequence_count` | number | Sequence steps in the campaign | | `duplicate_count` | number | Duplicate leads skipped on import | | `invalid_email_count` | number | Leads skipped for an invalid email | | `invalid_emails` | array | Emails rejected as invalid | | `already_added_to_campaign` | number | Leads already in the campaign | | `unsubscribed_leads` | array | Leads skipped because they unsubscribed | | `lead_import_stopped_count` | number | Leads whose import was stopped | | `is_lead_limit_exhausted` | boolean | Whether the plan lead limit was hit | | `is_last_sequence` | boolean | Whether the lead was on the final step | | `next_sequence_id` | number | ID of the next sequence step | | `next_sequence_delay_in_days` | number | Days before the next step | | `first_name` | string | Lead first name | | `last_name` | string | Lead last name | | `phone_number` | string | Lead phone number | | `company_name` | string | Lead company name | | `website` | string | Lead website | | `location` | string | Lead location | | `linkedin_profile` | string | Lead LinkedIn profile URL | | `company_url` | string | Lead company URL | | `custom_fields` | json | Lead custom fields | | `is_unsubscribed` | boolean | Whether the lead is unsubscribed | | `lead_campaign_data` | array | Campaigns the lead belongs to | | `created_at` | string | Creation timestamp | | `updated_at` | string | Last update timestamp | | `leads_count` | number | Leads in the list | | `active_leads_count` | number | Active leads in the list | | `track_settings` | array | Disabled tracking settings | | `scheduler_cron_value` | json | Campaign sending schedule | | `accounts` | array | Sending email accounts, excluding their stored mailbox credentials | | `user_id` | number | Owning Smartlead user ID | | `min_time_btwn_emails` | number | Minimum minutes between emails | | `max_leads_per_day` | number | Maximum new leads per day | | `stop_lead_settings` | string | Activity that stops a lead sequence | | `schedule_start_time` | string | Scheduled start time | | `enable_ai_esp_matching` | boolean | Whether AI ESP matching is enabled | | `send_as_plain_text` | boolean | Whether emails send as plain text | | `follow_up_percentage` | number | Follow-up percentage | | `unsubscribe_text` | string | Unsubscribe text | | `parent_campaign_id` | number | Parent campaign ID | | `client_id` | number | Client ID for agency accounts | | `client_name` | string | Client name | | `client_email` | string | Client email | | `client_company_name` | string | Client company name | | `tags` | array | Tags on the record | | `email_campaign_id` | number | Campaign the webhook belongs to | ### Smartlead Export Campaign Leads [#smartlead-export-campaign-leads] Exports every lead in a Smartlead campaign as CSV, including engagement counts and the sequence step last sent to each lead. #### Input [#input-26] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | --------------------- | | `apiKey` | string | Yes | Smartlead API key | | `campaignId` | number | Yes | Smartlead campaign ID | #### Output [#output-26] | Parameter | Type | Description | | ----------------------------- | ------- | ------------------------------------------------------------------ | | `campaigns` | array | List of campaigns | | `leads` | array | List of leads | | `sequences` | array | Email sequence steps | | `categories` | array | Lead categories | | `webhooks` | array | Campaign webhooks | | `stats` | array | Per-email statistics rows | | `history` | array | Lead message history | | `count` | number | Number of records returned | | `total_leads` | number | Total leads in the campaign, or leads newly added when importing | | `total_stats` | number | Total statistics rows matching the filters | | `id` | number | Record ID | | `name` | string | Record name | | `status` | string | Campaign status | | `email` | string | Lead email address | | `webhook_url` | string | Webhook destination URL | | `event_types` | array | Webhook event types | | `sent_count` | number | Emails sent | | `open_count` | number | Email opens | | `click_count` | number | Link clicks | | `reply_count` | number | Replies | | `bounce_count` | number | Bounces | | `campaign_lead_stats` | json | Lead counts by state | | `upload_count` | number | Leads submitted in the request | | `success` | boolean | Whether the action succeeded | | `items` | array | Records returned by Smartlead | | `rows` | array | Rows returned by Smartlead | | `lists` | array | Lead lists | | `summary` | array | Webhook delivery summary rows | | `csv` | string | Exported leads as CSV | | `row_count` | number | Rows in the exported CSV | | `has_more` | boolean | Whether more rows are available | | `list_name` | string | Lead list name | | `positive_reply_count` | number | Replies categorized as positive | | `offset` | number | Pagination offset used | | `limit` | number | Pagination limit used | | `total_count` | number | Total records matching the request | | `from` | string | Start of the reported window | | `to` | string | End of the reported window | | `start_date` | string | Start of the reported range | | `end_date` | string | End of the reported range | | `skipped_count` | number | Emails skipped | | `failed_count` | number | Failed sends | | `stopped_count` | number | Stopped leads | | `unsubscribed_count` | number | Unsubscribes | | `unique_sent_count` | number | Unique leads emailed | | `unique_open_count` | number | Unique opens | | `unique_click_count` | number | Unique clicks | | `block_count` | number | Blocked sends, or leads skipped by the block list | | `drafted_count` | number | Drafted emails | | `sequence_count` | number | Sequence steps in the campaign | | `duplicate_count` | number | Duplicate leads skipped on import | | `invalid_email_count` | number | Leads skipped for an invalid email | | `invalid_emails` | array | Emails rejected as invalid | | `already_added_to_campaign` | number | Leads already in the campaign | | `unsubscribed_leads` | array | Leads skipped because they unsubscribed | | `lead_import_stopped_count` | number | Leads whose import was stopped | | `is_lead_limit_exhausted` | boolean | Whether the plan lead limit was hit | | `is_last_sequence` | boolean | Whether the lead was on the final step | | `next_sequence_id` | number | ID of the next sequence step | | `next_sequence_delay_in_days` | number | Days before the next step | | `first_name` | string | Lead first name | | `last_name` | string | Lead last name | | `phone_number` | string | Lead phone number | | `company_name` | string | Lead company name | | `website` | string | Lead website | | `location` | string | Lead location | | `linkedin_profile` | string | Lead LinkedIn profile URL | | `company_url` | string | Lead company URL | | `custom_fields` | json | Lead custom fields | | `is_unsubscribed` | boolean | Whether the lead is unsubscribed | | `lead_campaign_data` | array | Campaigns the lead belongs to | | `created_at` | string | Creation timestamp | | `updated_at` | string | Last update timestamp | | `leads_count` | number | Leads in the list | | `active_leads_count` | number | Active leads in the list | | `track_settings` | array | Disabled tracking settings | | `scheduler_cron_value` | json | Campaign sending schedule | | `accounts` | array | Sending email accounts, excluding their stored mailbox credentials | | `user_id` | number | Owning Smartlead user ID | | `min_time_btwn_emails` | number | Minimum minutes between emails | | `max_leads_per_day` | number | Maximum new leads per day | | `stop_lead_settings` | string | Activity that stops a lead sequence | | `schedule_start_time` | string | Scheduled start time | | `enable_ai_esp_matching` | boolean | Whether AI ESP matching is enabled | | `send_as_plain_text` | boolean | Whether emails send as plain text | | `follow_up_percentage` | number | Follow-up percentage | | `unsubscribe_text` | string | Unsubscribe text | | `parent_campaign_id` | number | Parent campaign ID | | `client_id` | number | Client ID for agency accounts | | `client_name` | string | Client name | | `client_email` | string | Client email | | `client_company_name` | string | Client company name | | `tags` | array | Tags on the record | | `email_campaign_id` | number | Campaign the webhook belongs to | ### Smartlead List Campaign Email Accounts [#smartlead-list-campaign-email-accounts] Retrieves the sending email accounts attached to a Smartlead campaign. #### Input [#input-27] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | --------------------- | | `apiKey` | string | Yes | Smartlead API key | | `campaignId` | number | Yes | Smartlead campaign ID | #### Output [#output-27] | Parameter | Type | Description | | ----------------------------- | ------- | ------------------------------------------------------------------ | | `campaigns` | array | List of campaigns | | `leads` | array | List of leads | | `sequences` | array | Email sequence steps | | `categories` | array | Lead categories | | `webhooks` | array | Campaign webhooks | | `stats` | array | Per-email statistics rows | | `history` | array | Lead message history | | `count` | number | Number of records returned | | `total_leads` | number | Total leads in the campaign, or leads newly added when importing | | `total_stats` | number | Total statistics rows matching the filters | | `id` | number | Record ID | | `name` | string | Record name | | `status` | string | Campaign status | | `email` | string | Lead email address | | `webhook_url` | string | Webhook destination URL | | `event_types` | array | Webhook event types | | `sent_count` | number | Emails sent | | `open_count` | number | Email opens | | `click_count` | number | Link clicks | | `reply_count` | number | Replies | | `bounce_count` | number | Bounces | | `campaign_lead_stats` | json | Lead counts by state | | `upload_count` | number | Leads submitted in the request | | `success` | boolean | Whether the action succeeded | | `items` | array | Records returned by Smartlead | | `rows` | array | Rows returned by Smartlead | | `lists` | array | Lead lists | | `summary` | array | Webhook delivery summary rows | | `csv` | string | Exported leads as CSV | | `row_count` | number | Rows in the exported CSV | | `has_more` | boolean | Whether more rows are available | | `list_name` | string | Lead list name | | `positive_reply_count` | number | Replies categorized as positive | | `offset` | number | Pagination offset used | | `limit` | number | Pagination limit used | | `total_count` | number | Total records matching the request | | `from` | string | Start of the reported window | | `to` | string | End of the reported window | | `start_date` | string | Start of the reported range | | `end_date` | string | End of the reported range | | `skipped_count` | number | Emails skipped | | `failed_count` | number | Failed sends | | `stopped_count` | number | Stopped leads | | `unsubscribed_count` | number | Unsubscribes | | `unique_sent_count` | number | Unique leads emailed | | `unique_open_count` | number | Unique opens | | `unique_click_count` | number | Unique clicks | | `block_count` | number | Blocked sends, or leads skipped by the block list | | `drafted_count` | number | Drafted emails | | `sequence_count` | number | Sequence steps in the campaign | | `duplicate_count` | number | Duplicate leads skipped on import | | `invalid_email_count` | number | Leads skipped for an invalid email | | `invalid_emails` | array | Emails rejected as invalid | | `already_added_to_campaign` | number | Leads already in the campaign | | `unsubscribed_leads` | array | Leads skipped because they unsubscribed | | `lead_import_stopped_count` | number | Leads whose import was stopped | | `is_lead_limit_exhausted` | boolean | Whether the plan lead limit was hit | | `is_last_sequence` | boolean | Whether the lead was on the final step | | `next_sequence_id` | number | ID of the next sequence step | | `next_sequence_delay_in_days` | number | Days before the next step | | `first_name` | string | Lead first name | | `last_name` | string | Lead last name | | `phone_number` | string | Lead phone number | | `company_name` | string | Lead company name | | `website` | string | Lead website | | `location` | string | Lead location | | `linkedin_profile` | string | Lead LinkedIn profile URL | | `company_url` | string | Lead company URL | | `custom_fields` | json | Lead custom fields | | `is_unsubscribed` | boolean | Whether the lead is unsubscribed | | `lead_campaign_data` | array | Campaigns the lead belongs to | | `created_at` | string | Creation timestamp | | `updated_at` | string | Last update timestamp | | `leads_count` | number | Leads in the list | | `active_leads_count` | number | Active leads in the list | | `track_settings` | array | Disabled tracking settings | | `scheduler_cron_value` | json | Campaign sending schedule | | `accounts` | array | Sending email accounts, excluding their stored mailbox credentials | | `user_id` | number | Owning Smartlead user ID | | `min_time_btwn_emails` | number | Minimum minutes between emails | | `max_leads_per_day` | number | Maximum new leads per day | | `stop_lead_settings` | string | Activity that stops a lead sequence | | `schedule_start_time` | string | Scheduled start time | | `enable_ai_esp_matching` | boolean | Whether AI ESP matching is enabled | | `send_as_plain_text` | boolean | Whether emails send as plain text | | `follow_up_percentage` | number | Follow-up percentage | | `unsubscribe_text` | string | Unsubscribe text | | `parent_campaign_id` | number | Parent campaign ID | | `client_id` | number | Client ID for agency accounts | | `client_name` | string | Client name | | `client_email` | string | Client email | | `client_company_name` | string | Client company name | | `tags` | array | Tags on the record | | `email_campaign_id` | number | Campaign the webhook belongs to | ### Smartlead Add Email Accounts to Campaign [#smartlead-add-email-accounts-to-campaign] Attaches sending email accounts to a Smartlead campaign. A campaign needs at least one attached account before it can start. #### Input [#input-28] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ------------------------------------------------------------- | | `apiKey` | string | Yes | Smartlead API key | | `campaignId` | number | Yes | Smartlead campaign ID | | `emailAccountIds` | array | Yes | IDs of the email accounts to attach, from List Email Accounts | #### Output [#output-28] | Parameter | Type | Description | | ----------------------------- | ------- | ------------------------------------------------------------------ | | `campaigns` | array | List of campaigns | | `leads` | array | List of leads | | `sequences` | array | Email sequence steps | | `categories` | array | Lead categories | | `webhooks` | array | Campaign webhooks | | `stats` | array | Per-email statistics rows | | `history` | array | Lead message history | | `count` | number | Number of records returned | | `total_leads` | number | Total leads in the campaign, or leads newly added when importing | | `total_stats` | number | Total statistics rows matching the filters | | `id` | number | Record ID | | `name` | string | Record name | | `status` | string | Campaign status | | `email` | string | Lead email address | | `webhook_url` | string | Webhook destination URL | | `event_types` | array | Webhook event types | | `sent_count` | number | Emails sent | | `open_count` | number | Email opens | | `click_count` | number | Link clicks | | `reply_count` | number | Replies | | `bounce_count` | number | Bounces | | `campaign_lead_stats` | json | Lead counts by state | | `upload_count` | number | Leads submitted in the request | | `success` | boolean | Whether the action succeeded | | `items` | array | Records returned by Smartlead | | `rows` | array | Rows returned by Smartlead | | `lists` | array | Lead lists | | `summary` | array | Webhook delivery summary rows | | `csv` | string | Exported leads as CSV | | `row_count` | number | Rows in the exported CSV | | `has_more` | boolean | Whether more rows are available | | `list_name` | string | Lead list name | | `positive_reply_count` | number | Replies categorized as positive | | `offset` | number | Pagination offset used | | `limit` | number | Pagination limit used | | `total_count` | number | Total records matching the request | | `from` | string | Start of the reported window | | `to` | string | End of the reported window | | `start_date` | string | Start of the reported range | | `end_date` | string | End of the reported range | | `skipped_count` | number | Emails skipped | | `failed_count` | number | Failed sends | | `stopped_count` | number | Stopped leads | | `unsubscribed_count` | number | Unsubscribes | | `unique_sent_count` | number | Unique leads emailed | | `unique_open_count` | number | Unique opens | | `unique_click_count` | number | Unique clicks | | `block_count` | number | Blocked sends, or leads skipped by the block list | | `drafted_count` | number | Drafted emails | | `sequence_count` | number | Sequence steps in the campaign | | `duplicate_count` | number | Duplicate leads skipped on import | | `invalid_email_count` | number | Leads skipped for an invalid email | | `invalid_emails` | array | Emails rejected as invalid | | `already_added_to_campaign` | number | Leads already in the campaign | | `unsubscribed_leads` | array | Leads skipped because they unsubscribed | | `lead_import_stopped_count` | number | Leads whose import was stopped | | `is_lead_limit_exhausted` | boolean | Whether the plan lead limit was hit | | `is_last_sequence` | boolean | Whether the lead was on the final step | | `next_sequence_id` | number | ID of the next sequence step | | `next_sequence_delay_in_days` | number | Days before the next step | | `first_name` | string | Lead first name | | `last_name` | string | Lead last name | | `phone_number` | string | Lead phone number | | `company_name` | string | Lead company name | | `website` | string | Lead website | | `location` | string | Lead location | | `linkedin_profile` | string | Lead LinkedIn profile URL | | `company_url` | string | Lead company URL | | `custom_fields` | json | Lead custom fields | | `is_unsubscribed` | boolean | Whether the lead is unsubscribed | | `lead_campaign_data` | array | Campaigns the lead belongs to | | `created_at` | string | Creation timestamp | | `updated_at` | string | Last update timestamp | | `leads_count` | number | Leads in the list | | `active_leads_count` | number | Active leads in the list | | `track_settings` | array | Disabled tracking settings | | `scheduler_cron_value` | json | Campaign sending schedule | | `accounts` | array | Sending email accounts, excluding their stored mailbox credentials | | `user_id` | number | Owning Smartlead user ID | | `min_time_btwn_emails` | number | Minimum minutes between emails | | `max_leads_per_day` | number | Maximum new leads per day | | `stop_lead_settings` | string | Activity that stops a lead sequence | | `schedule_start_time` | string | Scheduled start time | | `enable_ai_esp_matching` | boolean | Whether AI ESP matching is enabled | | `send_as_plain_text` | boolean | Whether emails send as plain text | | `follow_up_percentage` | number | Follow-up percentage | | `unsubscribe_text` | string | Unsubscribe text | | `parent_campaign_id` | number | Parent campaign ID | | `client_id` | number | Client ID for agency accounts | | `client_name` | string | Client name | | `client_email` | string | Client email | | `client_company_name` | string | Client company name | | `tags` | array | Tags on the record | | `email_campaign_id` | number | Campaign the webhook belongs to | ### Smartlead Remove Email Accounts from Campaign [#smartlead-remove-email-accounts-from-campaign] Detaches sending email accounts from a Smartlead campaign. #### Input [#input-29] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ----------------------------------- | | `apiKey` | string | Yes | Smartlead API key | | `campaignId` | number | Yes | Smartlead campaign ID | | `emailAccountIds` | array | Yes | IDs of the email accounts to detach | #### Output [#output-29] | Parameter | Type | Description | | ----------------------------- | ------- | ------------------------------------------------------------------ | | `campaigns` | array | List of campaigns | | `leads` | array | List of leads | | `sequences` | array | Email sequence steps | | `categories` | array | Lead categories | | `webhooks` | array | Campaign webhooks | | `stats` | array | Per-email statistics rows | | `history` | array | Lead message history | | `count` | number | Number of records returned | | `total_leads` | number | Total leads in the campaign, or leads newly added when importing | | `total_stats` | number | Total statistics rows matching the filters | | `id` | number | Record ID | | `name` | string | Record name | | `status` | string | Campaign status | | `email` | string | Lead email address | | `webhook_url` | string | Webhook destination URL | | `event_types` | array | Webhook event types | | `sent_count` | number | Emails sent | | `open_count` | number | Email opens | | `click_count` | number | Link clicks | | `reply_count` | number | Replies | | `bounce_count` | number | Bounces | | `campaign_lead_stats` | json | Lead counts by state | | `upload_count` | number | Leads submitted in the request | | `success` | boolean | Whether the action succeeded | | `items` | array | Records returned by Smartlead | | `rows` | array | Rows returned by Smartlead | | `lists` | array | Lead lists | | `summary` | array | Webhook delivery summary rows | | `csv` | string | Exported leads as CSV | | `row_count` | number | Rows in the exported CSV | | `has_more` | boolean | Whether more rows are available | | `list_name` | string | Lead list name | | `positive_reply_count` | number | Replies categorized as positive | | `offset` | number | Pagination offset used | | `limit` | number | Pagination limit used | | `total_count` | number | Total records matching the request | | `from` | string | Start of the reported window | | `to` | string | End of the reported window | | `start_date` | string | Start of the reported range | | `end_date` | string | End of the reported range | | `skipped_count` | number | Emails skipped | | `failed_count` | number | Failed sends | | `stopped_count` | number | Stopped leads | | `unsubscribed_count` | number | Unsubscribes | | `unique_sent_count` | number | Unique leads emailed | | `unique_open_count` | number | Unique opens | | `unique_click_count` | number | Unique clicks | | `block_count` | number | Blocked sends, or leads skipped by the block list | | `drafted_count` | number | Drafted emails | | `sequence_count` | number | Sequence steps in the campaign | | `duplicate_count` | number | Duplicate leads skipped on import | | `invalid_email_count` | number | Leads skipped for an invalid email | | `invalid_emails` | array | Emails rejected as invalid | | `already_added_to_campaign` | number | Leads already in the campaign | | `unsubscribed_leads` | array | Leads skipped because they unsubscribed | | `lead_import_stopped_count` | number | Leads whose import was stopped | | `is_lead_limit_exhausted` | boolean | Whether the plan lead limit was hit | | `is_last_sequence` | boolean | Whether the lead was on the final step | | `next_sequence_id` | number | ID of the next sequence step | | `next_sequence_delay_in_days` | number | Days before the next step | | `first_name` | string | Lead first name | | `last_name` | string | Lead last name | | `phone_number` | string | Lead phone number | | `company_name` | string | Lead company name | | `website` | string | Lead website | | `location` | string | Lead location | | `linkedin_profile` | string | Lead LinkedIn profile URL | | `company_url` | string | Lead company URL | | `custom_fields` | json | Lead custom fields | | `is_unsubscribed` | boolean | Whether the lead is unsubscribed | | `lead_campaign_data` | array | Campaigns the lead belongs to | | `created_at` | string | Creation timestamp | | `updated_at` | string | Last update timestamp | | `leads_count` | number | Leads in the list | | `active_leads_count` | number | Active leads in the list | | `track_settings` | array | Disabled tracking settings | | `scheduler_cron_value` | json | Campaign sending schedule | | `accounts` | array | Sending email accounts, excluding their stored mailbox credentials | | `user_id` | number | Owning Smartlead user ID | | `min_time_btwn_emails` | number | Minimum minutes between emails | | `max_leads_per_day` | number | Maximum new leads per day | | `stop_lead_settings` | string | Activity that stops a lead sequence | | `schedule_start_time` | string | Scheduled start time | | `enable_ai_esp_matching` | boolean | Whether AI ESP matching is enabled | | `send_as_plain_text` | boolean | Whether emails send as plain text | | `follow_up_percentage` | number | Follow-up percentage | | `unsubscribe_text` | string | Unsubscribe text | | `parent_campaign_id` | number | Parent campaign ID | | `client_id` | number | Client ID for agency accounts | | `client_name` | string | Client name | | `client_email` | string | Client email | | `client_company_name` | string | Client company name | | `tags` | array | Tags on the record | | `email_campaign_id` | number | Campaign the webhook belongs to | ### Smartlead List Email Accounts [#smartlead-list-email-accounts] Retrieves the sending email accounts on the Smartlead account, including their IDs for attaching to a campaign. #### Input [#input-30] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ------------------------------------------------------ | | `apiKey` | string | Yes | Smartlead API key | | `offset` | number | No | Pagination offset (default 0) | | `limit` | number | No | Accounts to return per page (default 100) | | `clientId` | number | No | Only return accounts for this client (agency accounts) | #### Output [#output-30] | Parameter | Type | Description | | ----------------------------- | ------- | ------------------------------------------------------------------ | | `campaigns` | array | List of campaigns | | `leads` | array | List of leads | | `sequences` | array | Email sequence steps | | `categories` | array | Lead categories | | `webhooks` | array | Campaign webhooks | | `stats` | array | Per-email statistics rows | | `history` | array | Lead message history | | `count` | number | Number of records returned | | `total_leads` | number | Total leads in the campaign, or leads newly added when importing | | `total_stats` | number | Total statistics rows matching the filters | | `id` | number | Record ID | | `name` | string | Record name | | `status` | string | Campaign status | | `email` | string | Lead email address | | `webhook_url` | string | Webhook destination URL | | `event_types` | array | Webhook event types | | `sent_count` | number | Emails sent | | `open_count` | number | Email opens | | `click_count` | number | Link clicks | | `reply_count` | number | Replies | | `bounce_count` | number | Bounces | | `campaign_lead_stats` | json | Lead counts by state | | `upload_count` | number | Leads submitted in the request | | `success` | boolean | Whether the action succeeded | | `items` | array | Records returned by Smartlead | | `rows` | array | Rows returned by Smartlead | | `lists` | array | Lead lists | | `summary` | array | Webhook delivery summary rows | | `csv` | string | Exported leads as CSV | | `row_count` | number | Rows in the exported CSV | | `has_more` | boolean | Whether more rows are available | | `list_name` | string | Lead list name | | `positive_reply_count` | number | Replies categorized as positive | | `offset` | number | Pagination offset used | | `limit` | number | Pagination limit used | | `total_count` | number | Total records matching the request | | `from` | string | Start of the reported window | | `to` | string | End of the reported window | | `start_date` | string | Start of the reported range | | `end_date` | string | End of the reported range | | `skipped_count` | number | Emails skipped | | `failed_count` | number | Failed sends | | `stopped_count` | number | Stopped leads | | `unsubscribed_count` | number | Unsubscribes | | `unique_sent_count` | number | Unique leads emailed | | `unique_open_count` | number | Unique opens | | `unique_click_count` | number | Unique clicks | | `block_count` | number | Blocked sends, or leads skipped by the block list | | `drafted_count` | number | Drafted emails | | `sequence_count` | number | Sequence steps in the campaign | | `duplicate_count` | number | Duplicate leads skipped on import | | `invalid_email_count` | number | Leads skipped for an invalid email | | `invalid_emails` | array | Emails rejected as invalid | | `already_added_to_campaign` | number | Leads already in the campaign | | `unsubscribed_leads` | array | Leads skipped because they unsubscribed | | `lead_import_stopped_count` | number | Leads whose import was stopped | | `is_lead_limit_exhausted` | boolean | Whether the plan lead limit was hit | | `is_last_sequence` | boolean | Whether the lead was on the final step | | `next_sequence_id` | number | ID of the next sequence step | | `next_sequence_delay_in_days` | number | Days before the next step | | `first_name` | string | Lead first name | | `last_name` | string | Lead last name | | `phone_number` | string | Lead phone number | | `company_name` | string | Lead company name | | `website` | string | Lead website | | `location` | string | Lead location | | `linkedin_profile` | string | Lead LinkedIn profile URL | | `company_url` | string | Lead company URL | | `custom_fields` | json | Lead custom fields | | `is_unsubscribed` | boolean | Whether the lead is unsubscribed | | `lead_campaign_data` | array | Campaigns the lead belongs to | | `created_at` | string | Creation timestamp | | `updated_at` | string | Last update timestamp | | `leads_count` | number | Leads in the list | | `active_leads_count` | number | Active leads in the list | | `track_settings` | array | Disabled tracking settings | | `scheduler_cron_value` | json | Campaign sending schedule | | `accounts` | array | Sending email accounts, excluding their stored mailbox credentials | | `user_id` | number | Owning Smartlead user ID | | `min_time_btwn_emails` | number | Minimum minutes between emails | | `max_leads_per_day` | number | Maximum new leads per day | | `stop_lead_settings` | string | Activity that stops a lead sequence | | `schedule_start_time` | string | Scheduled start time | | `enable_ai_esp_matching` | boolean | Whether AI ESP matching is enabled | | `send_as_plain_text` | boolean | Whether emails send as plain text | | `follow_up_percentage` | number | Follow-up percentage | | `unsubscribe_text` | string | Unsubscribe text | | `parent_campaign_id` | number | Parent campaign ID | | `client_id` | number | Client ID for agency accounts | | `client_name` | string | Client name | | `client_email` | string | Client email | | `client_company_name` | string | Client company name | | `tags` | array | Tags on the record | | `email_campaign_id` | number | Campaign the webhook belongs to | ### Smartlead Get Campaign Lead Statistics [#smartlead-get-campaign-lead-statistics] Retrieves per-lead engagement statistics for a Smartlead campaign. #### Input [#input-31] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ---------------------------- | | `apiKey` | string | Yes | Smartlead API key | | `campaignId` | number | Yes | Smartlead campaign ID | | `limit` | number | No | Rows to return (default 100) | | `offset` | number | No | Rows to skip (default 0) | #### Output [#output-31] | Parameter | Type | Description | | ----------------------------- | ------- | ------------------------------------------------------------------ | | `campaigns` | array | List of campaigns | | `leads` | array | List of leads | | `sequences` | array | Email sequence steps | | `categories` | array | Lead categories | | `webhooks` | array | Campaign webhooks | | `stats` | array | Per-email statistics rows | | `history` | array | Lead message history | | `count` | number | Number of records returned | | `total_leads` | number | Total leads in the campaign, or leads newly added when importing | | `total_stats` | number | Total statistics rows matching the filters | | `id` | number | Record ID | | `name` | string | Record name | | `status` | string | Campaign status | | `email` | string | Lead email address | | `webhook_url` | string | Webhook destination URL | | `event_types` | array | Webhook event types | | `sent_count` | number | Emails sent | | `open_count` | number | Email opens | | `click_count` | number | Link clicks | | `reply_count` | number | Replies | | `bounce_count` | number | Bounces | | `campaign_lead_stats` | json | Lead counts by state | | `upload_count` | number | Leads submitted in the request | | `success` | boolean | Whether the action succeeded | | `items` | array | Records returned by Smartlead | | `rows` | array | Rows returned by Smartlead | | `lists` | array | Lead lists | | `summary` | array | Webhook delivery summary rows | | `csv` | string | Exported leads as CSV | | `row_count` | number | Rows in the exported CSV | | `has_more` | boolean | Whether more rows are available | | `list_name` | string | Lead list name | | `positive_reply_count` | number | Replies categorized as positive | | `offset` | number | Pagination offset used | | `limit` | number | Pagination limit used | | `total_count` | number | Total records matching the request | | `from` | string | Start of the reported window | | `to` | string | End of the reported window | | `start_date` | string | Start of the reported range | | `end_date` | string | End of the reported range | | `skipped_count` | number | Emails skipped | | `failed_count` | number | Failed sends | | `stopped_count` | number | Stopped leads | | `unsubscribed_count` | number | Unsubscribes | | `unique_sent_count` | number | Unique leads emailed | | `unique_open_count` | number | Unique opens | | `unique_click_count` | number | Unique clicks | | `block_count` | number | Blocked sends, or leads skipped by the block list | | `drafted_count` | number | Drafted emails | | `sequence_count` | number | Sequence steps in the campaign | | `duplicate_count` | number | Duplicate leads skipped on import | | `invalid_email_count` | number | Leads skipped for an invalid email | | `invalid_emails` | array | Emails rejected as invalid | | `already_added_to_campaign` | number | Leads already in the campaign | | `unsubscribed_leads` | array | Leads skipped because they unsubscribed | | `lead_import_stopped_count` | number | Leads whose import was stopped | | `is_lead_limit_exhausted` | boolean | Whether the plan lead limit was hit | | `is_last_sequence` | boolean | Whether the lead was on the final step | | `next_sequence_id` | number | ID of the next sequence step | | `next_sequence_delay_in_days` | number | Days before the next step | | `first_name` | string | Lead first name | | `last_name` | string | Lead last name | | `phone_number` | string | Lead phone number | | `company_name` | string | Lead company name | | `website` | string | Lead website | | `location` | string | Lead location | | `linkedin_profile` | string | Lead LinkedIn profile URL | | `company_url` | string | Lead company URL | | `custom_fields` | json | Lead custom fields | | `is_unsubscribed` | boolean | Whether the lead is unsubscribed | | `lead_campaign_data` | array | Campaigns the lead belongs to | | `created_at` | string | Creation timestamp | | `updated_at` | string | Last update timestamp | | `leads_count` | number | Leads in the list | | `active_leads_count` | number | Active leads in the list | | `track_settings` | array | Disabled tracking settings | | `scheduler_cron_value` | json | Campaign sending schedule | | `accounts` | array | Sending email accounts, excluding their stored mailbox credentials | | `user_id` | number | Owning Smartlead user ID | | `min_time_btwn_emails` | number | Minimum minutes between emails | | `max_leads_per_day` | number | Maximum new leads per day | | `stop_lead_settings` | string | Activity that stops a lead sequence | | `schedule_start_time` | string | Scheduled start time | | `enable_ai_esp_matching` | boolean | Whether AI ESP matching is enabled | | `send_as_plain_text` | boolean | Whether emails send as plain text | | `follow_up_percentage` | number | Follow-up percentage | | `unsubscribe_text` | string | Unsubscribe text | | `parent_campaign_id` | number | Parent campaign ID | | `client_id` | number | Client ID for agency accounts | | `client_name` | string | Client name | | `client_email` | string | Client email | | `client_company_name` | string | Client company name | | `tags` | array | Tags on the record | | `email_campaign_id` | number | Campaign the webhook belongs to | ### Smartlead Get Campaign Mailbox Statistics [#smartlead-get-campaign-mailbox-statistics] Retrieves per-mailbox sending statistics for a Smartlead campaign, for spotting which sending accounts are underperforming. #### Input [#input-32] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | --------------------- | | `apiKey` | string | Yes | Smartlead API key | | `campaignId` | number | Yes | Smartlead campaign ID | #### Output [#output-32] | Parameter | Type | Description | | ----------------------------- | ------- | ------------------------------------------------------------------ | | `campaigns` | array | List of campaigns | | `leads` | array | List of leads | | `sequences` | array | Email sequence steps | | `categories` | array | Lead categories | | `webhooks` | array | Campaign webhooks | | `stats` | array | Per-email statistics rows | | `history` | array | Lead message history | | `count` | number | Number of records returned | | `total_leads` | number | Total leads in the campaign, or leads newly added when importing | | `total_stats` | number | Total statistics rows matching the filters | | `id` | number | Record ID | | `name` | string | Record name | | `status` | string | Campaign status | | `email` | string | Lead email address | | `webhook_url` | string | Webhook destination URL | | `event_types` | array | Webhook event types | | `sent_count` | number | Emails sent | | `open_count` | number | Email opens | | `click_count` | number | Link clicks | | `reply_count` | number | Replies | | `bounce_count` | number | Bounces | | `campaign_lead_stats` | json | Lead counts by state | | `upload_count` | number | Leads submitted in the request | | `success` | boolean | Whether the action succeeded | | `items` | array | Records returned by Smartlead | | `rows` | array | Rows returned by Smartlead | | `lists` | array | Lead lists | | `summary` | array | Webhook delivery summary rows | | `csv` | string | Exported leads as CSV | | `row_count` | number | Rows in the exported CSV | | `has_more` | boolean | Whether more rows are available | | `list_name` | string | Lead list name | | `positive_reply_count` | number | Replies categorized as positive | | `offset` | number | Pagination offset used | | `limit` | number | Pagination limit used | | `total_count` | number | Total records matching the request | | `from` | string | Start of the reported window | | `to` | string | End of the reported window | | `start_date` | string | Start of the reported range | | `end_date` | string | End of the reported range | | `skipped_count` | number | Emails skipped | | `failed_count` | number | Failed sends | | `stopped_count` | number | Stopped leads | | `unsubscribed_count` | number | Unsubscribes | | `unique_sent_count` | number | Unique leads emailed | | `unique_open_count` | number | Unique opens | | `unique_click_count` | number | Unique clicks | | `block_count` | number | Blocked sends, or leads skipped by the block list | | `drafted_count` | number | Drafted emails | | `sequence_count` | number | Sequence steps in the campaign | | `duplicate_count` | number | Duplicate leads skipped on import | | `invalid_email_count` | number | Leads skipped for an invalid email | | `invalid_emails` | array | Emails rejected as invalid | | `already_added_to_campaign` | number | Leads already in the campaign | | `unsubscribed_leads` | array | Leads skipped because they unsubscribed | | `lead_import_stopped_count` | number | Leads whose import was stopped | | `is_lead_limit_exhausted` | boolean | Whether the plan lead limit was hit | | `is_last_sequence` | boolean | Whether the lead was on the final step | | `next_sequence_id` | number | ID of the next sequence step | | `next_sequence_delay_in_days` | number | Days before the next step | | `first_name` | string | Lead first name | | `last_name` | string | Lead last name | | `phone_number` | string | Lead phone number | | `company_name` | string | Lead company name | | `website` | string | Lead website | | `location` | string | Lead location | | `linkedin_profile` | string | Lead LinkedIn profile URL | | `company_url` | string | Lead company URL | | `custom_fields` | json | Lead custom fields | | `is_unsubscribed` | boolean | Whether the lead is unsubscribed | | `lead_campaign_data` | array | Campaigns the lead belongs to | | `created_at` | string | Creation timestamp | | `updated_at` | string | Last update timestamp | | `leads_count` | number | Leads in the list | | `active_leads_count` | number | Active leads in the list | | `track_settings` | array | Disabled tracking settings | | `scheduler_cron_value` | json | Campaign sending schedule | | `accounts` | array | Sending email accounts, excluding their stored mailbox credentials | | `user_id` | number | Owning Smartlead user ID | | `min_time_btwn_emails` | number | Minimum minutes between emails | | `max_leads_per_day` | number | Maximum new leads per day | | `stop_lead_settings` | string | Activity that stops a lead sequence | | `schedule_start_time` | string | Scheduled start time | | `enable_ai_esp_matching` | boolean | Whether AI ESP matching is enabled | | `send_as_plain_text` | boolean | Whether emails send as plain text | | `follow_up_percentage` | number | Follow-up percentage | | `unsubscribe_text` | string | Unsubscribe text | | `parent_campaign_id` | number | Parent campaign ID | | `client_id` | number | Client ID for agency accounts | | `client_name` | string | Client name | | `client_email` | string | Client email | | `client_company_name` | string | Client company name | | `tags` | array | Tags on the record | | `email_campaign_id` | number | Campaign the webhook belongs to | ### Smartlead Get Campaign Top-Level Analytics By Date [#smartlead-get-campaign-top-level-analytics-by-date] Retrieves top-level Smartlead campaign counts for a date range, including positive replies, skipped, failed, and stopped counts not present in the standard analytics. #### Input [#input-33] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------------------------------- | | `apiKey` | string | Yes | Smartlead API key | | `campaignId` | number | Yes | Smartlead campaign ID | | `startDate` | string | Yes | Range start date in YYYY-MM-DD format | | `endDate` | string | Yes | Range end date in YYYY-MM-DD format | #### Output [#output-33] | Parameter | Type | Description | | ----------------------------- | ------- | ------------------------------------------------------------------ | | `campaigns` | array | List of campaigns | | `leads` | array | List of leads | | `sequences` | array | Email sequence steps | | `categories` | array | Lead categories | | `webhooks` | array | Campaign webhooks | | `stats` | array | Per-email statistics rows | | `history` | array | Lead message history | | `count` | number | Number of records returned | | `total_leads` | number | Total leads in the campaign, or leads newly added when importing | | `total_stats` | number | Total statistics rows matching the filters | | `id` | number | Record ID | | `name` | string | Record name | | `status` | string | Campaign status | | `email` | string | Lead email address | | `webhook_url` | string | Webhook destination URL | | `event_types` | array | Webhook event types | | `sent_count` | number | Emails sent | | `open_count` | number | Email opens | | `click_count` | number | Link clicks | | `reply_count` | number | Replies | | `bounce_count` | number | Bounces | | `campaign_lead_stats` | json | Lead counts by state | | `upload_count` | number | Leads submitted in the request | | `success` | boolean | Whether the action succeeded | | `items` | array | Records returned by Smartlead | | `rows` | array | Rows returned by Smartlead | | `lists` | array | Lead lists | | `summary` | array | Webhook delivery summary rows | | `csv` | string | Exported leads as CSV | | `row_count` | number | Rows in the exported CSV | | `has_more` | boolean | Whether more rows are available | | `list_name` | string | Lead list name | | `positive_reply_count` | number | Replies categorized as positive | | `offset` | number | Pagination offset used | | `limit` | number | Pagination limit used | | `total_count` | number | Total records matching the request | | `from` | string | Start of the reported window | | `to` | string | End of the reported window | | `start_date` | string | Start of the reported range | | `end_date` | string | End of the reported range | | `skipped_count` | number | Emails skipped | | `failed_count` | number | Failed sends | | `stopped_count` | number | Stopped leads | | `unsubscribed_count` | number | Unsubscribes | | `unique_sent_count` | number | Unique leads emailed | | `unique_open_count` | number | Unique opens | | `unique_click_count` | number | Unique clicks | | `block_count` | number | Blocked sends, or leads skipped by the block list | | `drafted_count` | number | Drafted emails | | `sequence_count` | number | Sequence steps in the campaign | | `duplicate_count` | number | Duplicate leads skipped on import | | `invalid_email_count` | number | Leads skipped for an invalid email | | `invalid_emails` | array | Emails rejected as invalid | | `already_added_to_campaign` | number | Leads already in the campaign | | `unsubscribed_leads` | array | Leads skipped because they unsubscribed | | `lead_import_stopped_count` | number | Leads whose import was stopped | | `is_lead_limit_exhausted` | boolean | Whether the plan lead limit was hit | | `is_last_sequence` | boolean | Whether the lead was on the final step | | `next_sequence_id` | number | ID of the next sequence step | | `next_sequence_delay_in_days` | number | Days before the next step | | `first_name` | string | Lead first name | | `last_name` | string | Lead last name | | `phone_number` | string | Lead phone number | | `company_name` | string | Lead company name | | `website` | string | Lead website | | `location` | string | Lead location | | `linkedin_profile` | string | Lead LinkedIn profile URL | | `company_url` | string | Lead company URL | | `custom_fields` | json | Lead custom fields | | `is_unsubscribed` | boolean | Whether the lead is unsubscribed | | `lead_campaign_data` | array | Campaigns the lead belongs to | | `created_at` | string | Creation timestamp | | `updated_at` | string | Last update timestamp | | `leads_count` | number | Leads in the list | | `active_leads_count` | number | Active leads in the list | | `track_settings` | array | Disabled tracking settings | | `scheduler_cron_value` | json | Campaign sending schedule | | `accounts` | array | Sending email accounts, excluding their stored mailbox credentials | | `user_id` | number | Owning Smartlead user ID | | `min_time_btwn_emails` | number | Minimum minutes between emails | | `max_leads_per_day` | number | Maximum new leads per day | | `stop_lead_settings` | string | Activity that stops a lead sequence | | `schedule_start_time` | string | Scheduled start time | | `enable_ai_esp_matching` | boolean | Whether AI ESP matching is enabled | | `send_as_plain_text` | boolean | Whether emails send as plain text | | `follow_up_percentage` | number | Follow-up percentage | | `unsubscribe_text` | string | Unsubscribe text | | `parent_campaign_id` | number | Parent campaign ID | | `client_id` | number | Client ID for agency accounts | | `client_name` | string | Client name | | `client_email` | string | Client email | | `client_company_name` | string | Client company name | | `tags` | array | Tags on the record | | `email_campaign_id` | number | Campaign the webhook belongs to | ### Smartlead List Lead Activities [#smartlead-list-lead-activities] Retrieves recent lead activity across all Smartlead campaigns — opens, clicks, replies, and status changes. Smartlead exposes no campaign filter on this endpoint. #### Input [#input-34] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------------------------- | | `apiKey` | string | Yes | Smartlead API key | | `offset` | number | No | Pagination offset (default 0) | | `limit` | number | No | Rows to return per page | #### Output [#output-34] | Parameter | Type | Description | | ----------------------------- | ------- | ------------------------------------------------------------------ | | `campaigns` | array | List of campaigns | | `leads` | array | List of leads | | `sequences` | array | Email sequence steps | | `categories` | array | Lead categories | | `webhooks` | array | Campaign webhooks | | `stats` | array | Per-email statistics rows | | `history` | array | Lead message history | | `count` | number | Number of records returned | | `total_leads` | number | Total leads in the campaign, or leads newly added when importing | | `total_stats` | number | Total statistics rows matching the filters | | `id` | number | Record ID | | `name` | string | Record name | | `status` | string | Campaign status | | `email` | string | Lead email address | | `webhook_url` | string | Webhook destination URL | | `event_types` | array | Webhook event types | | `sent_count` | number | Emails sent | | `open_count` | number | Email opens | | `click_count` | number | Link clicks | | `reply_count` | number | Replies | | `bounce_count` | number | Bounces | | `campaign_lead_stats` | json | Lead counts by state | | `upload_count` | number | Leads submitted in the request | | `success` | boolean | Whether the action succeeded | | `items` | array | Records returned by Smartlead | | `rows` | array | Rows returned by Smartlead | | `lists` | array | Lead lists | | `summary` | array | Webhook delivery summary rows | | `csv` | string | Exported leads as CSV | | `row_count` | number | Rows in the exported CSV | | `has_more` | boolean | Whether more rows are available | | `list_name` | string | Lead list name | | `positive_reply_count` | number | Replies categorized as positive | | `offset` | number | Pagination offset used | | `limit` | number | Pagination limit used | | `total_count` | number | Total records matching the request | | `from` | string | Start of the reported window | | `to` | string | End of the reported window | | `start_date` | string | Start of the reported range | | `end_date` | string | End of the reported range | | `skipped_count` | number | Emails skipped | | `failed_count` | number | Failed sends | | `stopped_count` | number | Stopped leads | | `unsubscribed_count` | number | Unsubscribes | | `unique_sent_count` | number | Unique leads emailed | | `unique_open_count` | number | Unique opens | | `unique_click_count` | number | Unique clicks | | `block_count` | number | Blocked sends, or leads skipped by the block list | | `drafted_count` | number | Drafted emails | | `sequence_count` | number | Sequence steps in the campaign | | `duplicate_count` | number | Duplicate leads skipped on import | | `invalid_email_count` | number | Leads skipped for an invalid email | | `invalid_emails` | array | Emails rejected as invalid | | `already_added_to_campaign` | number | Leads already in the campaign | | `unsubscribed_leads` | array | Leads skipped because they unsubscribed | | `lead_import_stopped_count` | number | Leads whose import was stopped | | `is_lead_limit_exhausted` | boolean | Whether the plan lead limit was hit | | `is_last_sequence` | boolean | Whether the lead was on the final step | | `next_sequence_id` | number | ID of the next sequence step | | `next_sequence_delay_in_days` | number | Days before the next step | | `first_name` | string | Lead first name | | `last_name` | string | Lead last name | | `phone_number` | string | Lead phone number | | `company_name` | string | Lead company name | | `website` | string | Lead website | | `location` | string | Lead location | | `linkedin_profile` | string | Lead LinkedIn profile URL | | `company_url` | string | Lead company URL | | `custom_fields` | json | Lead custom fields | | `is_unsubscribed` | boolean | Whether the lead is unsubscribed | | `lead_campaign_data` | array | Campaigns the lead belongs to | | `created_at` | string | Creation timestamp | | `updated_at` | string | Last update timestamp | | `leads_count` | number | Leads in the list | | `active_leads_count` | number | Active leads in the list | | `track_settings` | array | Disabled tracking settings | | `scheduler_cron_value` | json | Campaign sending schedule | | `accounts` | array | Sending email accounts, excluding their stored mailbox credentials | | `user_id` | number | Owning Smartlead user ID | | `min_time_btwn_emails` | number | Minimum minutes between emails | | `max_leads_per_day` | number | Maximum new leads per day | | `stop_lead_settings` | string | Activity that stops a lead sequence | | `schedule_start_time` | string | Scheduled start time | | `enable_ai_esp_matching` | boolean | Whether AI ESP matching is enabled | | `send_as_plain_text` | boolean | Whether emails send as plain text | | `follow_up_percentage` | number | Follow-up percentage | | `unsubscribe_text` | string | Unsubscribe text | | `parent_campaign_id` | number | Parent campaign ID | | `client_id` | number | Client ID for agency accounts | | `client_name` | string | Client name | | `client_email` | string | Client email | | `client_company_name` | string | Client company name | | `tags` | array | Tags on the record | | `email_campaign_id` | number | Campaign the webhook belongs to | ### Smartlead Get Lead by ID [#smartlead-get-lead-by-id] Looks up a Smartlead lead by its ID. #### Input [#input-35] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Smartlead API key | | `leadId` | number | Yes | Smartlead lead ID — the nested lead.id from List Campaign Leads, NOT campaign\_lead\_map\_id | #### Output [#output-35] | Parameter | Type | Description | | ----------------------------- | ------- | ------------------------------------------------------------------ | | `campaigns` | array | List of campaigns | | `leads` | array | List of leads | | `sequences` | array | Email sequence steps | | `categories` | array | Lead categories | | `webhooks` | array | Campaign webhooks | | `stats` | array | Per-email statistics rows | | `history` | array | Lead message history | | `count` | number | Number of records returned | | `total_leads` | number | Total leads in the campaign, or leads newly added when importing | | `total_stats` | number | Total statistics rows matching the filters | | `id` | number | Record ID | | `name` | string | Record name | | `status` | string | Campaign status | | `email` | string | Lead email address | | `webhook_url` | string | Webhook destination URL | | `event_types` | array | Webhook event types | | `sent_count` | number | Emails sent | | `open_count` | number | Email opens | | `click_count` | number | Link clicks | | `reply_count` | number | Replies | | `bounce_count` | number | Bounces | | `campaign_lead_stats` | json | Lead counts by state | | `upload_count` | number | Leads submitted in the request | | `success` | boolean | Whether the action succeeded | | `items` | array | Records returned by Smartlead | | `rows` | array | Rows returned by Smartlead | | `lists` | array | Lead lists | | `summary` | array | Webhook delivery summary rows | | `csv` | string | Exported leads as CSV | | `row_count` | number | Rows in the exported CSV | | `has_more` | boolean | Whether more rows are available | | `list_name` | string | Lead list name | | `positive_reply_count` | number | Replies categorized as positive | | `offset` | number | Pagination offset used | | `limit` | number | Pagination limit used | | `total_count` | number | Total records matching the request | | `from` | string | Start of the reported window | | `to` | string | End of the reported window | | `start_date` | string | Start of the reported range | | `end_date` | string | End of the reported range | | `skipped_count` | number | Emails skipped | | `failed_count` | number | Failed sends | | `stopped_count` | number | Stopped leads | | `unsubscribed_count` | number | Unsubscribes | | `unique_sent_count` | number | Unique leads emailed | | `unique_open_count` | number | Unique opens | | `unique_click_count` | number | Unique clicks | | `block_count` | number | Blocked sends, or leads skipped by the block list | | `drafted_count` | number | Drafted emails | | `sequence_count` | number | Sequence steps in the campaign | | `duplicate_count` | number | Duplicate leads skipped on import | | `invalid_email_count` | number | Leads skipped for an invalid email | | `invalid_emails` | array | Emails rejected as invalid | | `already_added_to_campaign` | number | Leads already in the campaign | | `unsubscribed_leads` | array | Leads skipped because they unsubscribed | | `lead_import_stopped_count` | number | Leads whose import was stopped | | `is_lead_limit_exhausted` | boolean | Whether the plan lead limit was hit | | `is_last_sequence` | boolean | Whether the lead was on the final step | | `next_sequence_id` | number | ID of the next sequence step | | `next_sequence_delay_in_days` | number | Days before the next step | | `first_name` | string | Lead first name | | `last_name` | string | Lead last name | | `phone_number` | string | Lead phone number | | `company_name` | string | Lead company name | | `website` | string | Lead website | | `location` | string | Lead location | | `linkedin_profile` | string | Lead LinkedIn profile URL | | `company_url` | string | Lead company URL | | `custom_fields` | json | Lead custom fields | | `is_unsubscribed` | boolean | Whether the lead is unsubscribed | | `lead_campaign_data` | array | Campaigns the lead belongs to | | `created_at` | string | Creation timestamp | | `updated_at` | string | Last update timestamp | | `leads_count` | number | Leads in the list | | `active_leads_count` | number | Active leads in the list | | `track_settings` | array | Disabled tracking settings | | `scheduler_cron_value` | json | Campaign sending schedule | | `accounts` | array | Sending email accounts, excluding their stored mailbox credentials | | `user_id` | number | Owning Smartlead user ID | | `min_time_btwn_emails` | number | Minimum minutes between emails | | `max_leads_per_day` | number | Maximum new leads per day | | `stop_lead_settings` | string | Activity that stops a lead sequence | | `schedule_start_time` | string | Scheduled start time | | `enable_ai_esp_matching` | boolean | Whether AI ESP matching is enabled | | `send_as_plain_text` | boolean | Whether emails send as plain text | | `follow_up_percentage` | number | Follow-up percentage | | `unsubscribe_text` | string | Unsubscribe text | | `parent_campaign_id` | number | Parent campaign ID | | `client_id` | number | Client ID for agency accounts | | `client_name` | string | Client name | | `client_email` | string | Client email | | `client_company_name` | string | Client company name | | `tags` | array | Tags on the record | | `email_campaign_id` | number | Campaign the webhook belongs to | ### Smartlead Unsubscribe Lead from Campaign [#smartlead-unsubscribe-lead-from-campaign] Unsubscribes a lead from a single Smartlead campaign, leaving it active in other campaigns. #### Input [#input-36] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | -------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Smartlead API key | | `campaignId` | number | Yes | Smartlead campaign ID | | `leadId` | number | Yes | Smartlead lead ID — the nested lead.id from List Campaign Leads, NOT campaign\_lead\_map\_id | #### Output [#output-36] | Parameter | Type | Description | | ----------------------------- | ------- | ------------------------------------------------------------------ | | `campaigns` | array | List of campaigns | | `leads` | array | List of leads | | `sequences` | array | Email sequence steps | | `categories` | array | Lead categories | | `webhooks` | array | Campaign webhooks | | `stats` | array | Per-email statistics rows | | `history` | array | Lead message history | | `count` | number | Number of records returned | | `total_leads` | number | Total leads in the campaign, or leads newly added when importing | | `total_stats` | number | Total statistics rows matching the filters | | `id` | number | Record ID | | `name` | string | Record name | | `status` | string | Campaign status | | `email` | string | Lead email address | | `webhook_url` | string | Webhook destination URL | | `event_types` | array | Webhook event types | | `sent_count` | number | Emails sent | | `open_count` | number | Email opens | | `click_count` | number | Link clicks | | `reply_count` | number | Replies | | `bounce_count` | number | Bounces | | `campaign_lead_stats` | json | Lead counts by state | | `upload_count` | number | Leads submitted in the request | | `success` | boolean | Whether the action succeeded | | `items` | array | Records returned by Smartlead | | `rows` | array | Rows returned by Smartlead | | `lists` | array | Lead lists | | `summary` | array | Webhook delivery summary rows | | `csv` | string | Exported leads as CSV | | `row_count` | number | Rows in the exported CSV | | `has_more` | boolean | Whether more rows are available | | `list_name` | string | Lead list name | | `positive_reply_count` | number | Replies categorized as positive | | `offset` | number | Pagination offset used | | `limit` | number | Pagination limit used | | `total_count` | number | Total records matching the request | | `from` | string | Start of the reported window | | `to` | string | End of the reported window | | `start_date` | string | Start of the reported range | | `end_date` | string | End of the reported range | | `skipped_count` | number | Emails skipped | | `failed_count` | number | Failed sends | | `stopped_count` | number | Stopped leads | | `unsubscribed_count` | number | Unsubscribes | | `unique_sent_count` | number | Unique leads emailed | | `unique_open_count` | number | Unique opens | | `unique_click_count` | number | Unique clicks | | `block_count` | number | Blocked sends, or leads skipped by the block list | | `drafted_count` | number | Drafted emails | | `sequence_count` | number | Sequence steps in the campaign | | `duplicate_count` | number | Duplicate leads skipped on import | | `invalid_email_count` | number | Leads skipped for an invalid email | | `invalid_emails` | array | Emails rejected as invalid | | `already_added_to_campaign` | number | Leads already in the campaign | | `unsubscribed_leads` | array | Leads skipped because they unsubscribed | | `lead_import_stopped_count` | number | Leads whose import was stopped | | `is_lead_limit_exhausted` | boolean | Whether the plan lead limit was hit | | `is_last_sequence` | boolean | Whether the lead was on the final step | | `next_sequence_id` | number | ID of the next sequence step | | `next_sequence_delay_in_days` | number | Days before the next step | | `first_name` | string | Lead first name | | `last_name` | string | Lead last name | | `phone_number` | string | Lead phone number | | `company_name` | string | Lead company name | | `website` | string | Lead website | | `location` | string | Lead location | | `linkedin_profile` | string | Lead LinkedIn profile URL | | `company_url` | string | Lead company URL | | `custom_fields` | json | Lead custom fields | | `is_unsubscribed` | boolean | Whether the lead is unsubscribed | | `lead_campaign_data` | array | Campaigns the lead belongs to | | `created_at` | string | Creation timestamp | | `updated_at` | string | Last update timestamp | | `leads_count` | number | Leads in the list | | `active_leads_count` | number | Active leads in the list | | `track_settings` | array | Disabled tracking settings | | `scheduler_cron_value` | json | Campaign sending schedule | | `accounts` | array | Sending email accounts, excluding their stored mailbox credentials | | `user_id` | number | Owning Smartlead user ID | | `min_time_btwn_emails` | number | Minimum minutes between emails | | `max_leads_per_day` | number | Maximum new leads per day | | `stop_lead_settings` | string | Activity that stops a lead sequence | | `schedule_start_time` | string | Scheduled start time | | `enable_ai_esp_matching` | boolean | Whether AI ESP matching is enabled | | `send_as_plain_text` | boolean | Whether emails send as plain text | | `follow_up_percentage` | number | Follow-up percentage | | `unsubscribe_text` | string | Unsubscribe text | | `parent_campaign_id` | number | Parent campaign ID | | `client_id` | number | Client ID for agency accounts | | `client_name` | string | Client name | | `client_email` | string | Client email | | `client_company_name` | string | Client company name | | `tags` | array | Tags on the record | | `email_campaign_id` | number | Campaign the webhook belongs to | ### Smartlead Unsubscribe Lead Globally [#smartlead-unsubscribe-lead-globally] Unsubscribes a lead across every Smartlead campaign and adds it to the account-wide unsubscribe list. #### Input [#input-37] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Smartlead API key | | `leadId` | number | Yes | Smartlead lead ID — the nested lead.id from List Campaign Leads, NOT campaign\_lead\_map\_id | #### Output [#output-37] | Parameter | Type | Description | | ----------------------------- | ------- | ------------------------------------------------------------------ | | `campaigns` | array | List of campaigns | | `leads` | array | List of leads | | `sequences` | array | Email sequence steps | | `categories` | array | Lead categories | | `webhooks` | array | Campaign webhooks | | `stats` | array | Per-email statistics rows | | `history` | array | Lead message history | | `count` | number | Number of records returned | | `total_leads` | number | Total leads in the campaign, or leads newly added when importing | | `total_stats` | number | Total statistics rows matching the filters | | `id` | number | Record ID | | `name` | string | Record name | | `status` | string | Campaign status | | `email` | string | Lead email address | | `webhook_url` | string | Webhook destination URL | | `event_types` | array | Webhook event types | | `sent_count` | number | Emails sent | | `open_count` | number | Email opens | | `click_count` | number | Link clicks | | `reply_count` | number | Replies | | `bounce_count` | number | Bounces | | `campaign_lead_stats` | json | Lead counts by state | | `upload_count` | number | Leads submitted in the request | | `success` | boolean | Whether the action succeeded | | `items` | array | Records returned by Smartlead | | `rows` | array | Rows returned by Smartlead | | `lists` | array | Lead lists | | `summary` | array | Webhook delivery summary rows | | `csv` | string | Exported leads as CSV | | `row_count` | number | Rows in the exported CSV | | `has_more` | boolean | Whether more rows are available | | `list_name` | string | Lead list name | | `positive_reply_count` | number | Replies categorized as positive | | `offset` | number | Pagination offset used | | `limit` | number | Pagination limit used | | `total_count` | number | Total records matching the request | | `from` | string | Start of the reported window | | `to` | string | End of the reported window | | `start_date` | string | Start of the reported range | | `end_date` | string | End of the reported range | | `skipped_count` | number | Emails skipped | | `failed_count` | number | Failed sends | | `stopped_count` | number | Stopped leads | | `unsubscribed_count` | number | Unsubscribes | | `unique_sent_count` | number | Unique leads emailed | | `unique_open_count` | number | Unique opens | | `unique_click_count` | number | Unique clicks | | `block_count` | number | Blocked sends, or leads skipped by the block list | | `drafted_count` | number | Drafted emails | | `sequence_count` | number | Sequence steps in the campaign | | `duplicate_count` | number | Duplicate leads skipped on import | | `invalid_email_count` | number | Leads skipped for an invalid email | | `invalid_emails` | array | Emails rejected as invalid | | `already_added_to_campaign` | number | Leads already in the campaign | | `unsubscribed_leads` | array | Leads skipped because they unsubscribed | | `lead_import_stopped_count` | number | Leads whose import was stopped | | `is_lead_limit_exhausted` | boolean | Whether the plan lead limit was hit | | `is_last_sequence` | boolean | Whether the lead was on the final step | | `next_sequence_id` | number | ID of the next sequence step | | `next_sequence_delay_in_days` | number | Days before the next step | | `first_name` | string | Lead first name | | `last_name` | string | Lead last name | | `phone_number` | string | Lead phone number | | `company_name` | string | Lead company name | | `website` | string | Lead website | | `location` | string | Lead location | | `linkedin_profile` | string | Lead LinkedIn profile URL | | `company_url` | string | Lead company URL | | `custom_fields` | json | Lead custom fields | | `is_unsubscribed` | boolean | Whether the lead is unsubscribed | | `lead_campaign_data` | array | Campaigns the lead belongs to | | `created_at` | string | Creation timestamp | | `updated_at` | string | Last update timestamp | | `leads_count` | number | Leads in the list | | `active_leads_count` | number | Active leads in the list | | `track_settings` | array | Disabled tracking settings | | `scheduler_cron_value` | json | Campaign sending schedule | | `accounts` | array | Sending email accounts, excluding their stored mailbox credentials | | `user_id` | number | Owning Smartlead user ID | | `min_time_btwn_emails` | number | Minimum minutes between emails | | `max_leads_per_day` | number | Maximum new leads per day | | `stop_lead_settings` | string | Activity that stops a lead sequence | | `schedule_start_time` | string | Scheduled start time | | `enable_ai_esp_matching` | boolean | Whether AI ESP matching is enabled | | `send_as_plain_text` | boolean | Whether emails send as plain text | | `follow_up_percentage` | number | Follow-up percentage | | `unsubscribe_text` | string | Unsubscribe text | | `parent_campaign_id` | number | Parent campaign ID | | `client_id` | number | Client ID for agency accounts | | `client_name` | string | Client name | | `client_email` | string | Client email | | `client_company_name` | string | Client company name | | `tags` | array | Tags on the record | | `email_campaign_id` | number | Campaign the webhook belongs to | ### Smartlead Mark Lead Complete [#smartlead-mark-lead-complete] Marks a lead as completed in a Smartlead campaign so it stops receiving further sequence steps. #### Input [#input-38] | Parameter | Type | Required | Description | | ------------------- | ------ | -------- | -------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Smartlead API key | | `campaignId` | number | Yes | Smartlead campaign ID | | `campaignLeadMapId` | number | Yes | The campaign\_lead\_map\_id from List Campaign Leads — this endpoint takes the map ID, NOT lead.id | #### Output [#output-38] | Parameter | Type | Description | | ----------------------------- | ------- | ------------------------------------------------------------------ | | `campaigns` | array | List of campaigns | | `leads` | array | List of leads | | `sequences` | array | Email sequence steps | | `categories` | array | Lead categories | | `webhooks` | array | Campaign webhooks | | `stats` | array | Per-email statistics rows | | `history` | array | Lead message history | | `count` | number | Number of records returned | | `total_leads` | number | Total leads in the campaign, or leads newly added when importing | | `total_stats` | number | Total statistics rows matching the filters | | `id` | number | Record ID | | `name` | string | Record name | | `status` | string | Campaign status | | `email` | string | Lead email address | | `webhook_url` | string | Webhook destination URL | | `event_types` | array | Webhook event types | | `sent_count` | number | Emails sent | | `open_count` | number | Email opens | | `click_count` | number | Link clicks | | `reply_count` | number | Replies | | `bounce_count` | number | Bounces | | `campaign_lead_stats` | json | Lead counts by state | | `upload_count` | number | Leads submitted in the request | | `success` | boolean | Whether the action succeeded | | `items` | array | Records returned by Smartlead | | `rows` | array | Rows returned by Smartlead | | `lists` | array | Lead lists | | `summary` | array | Webhook delivery summary rows | | `csv` | string | Exported leads as CSV | | `row_count` | number | Rows in the exported CSV | | `has_more` | boolean | Whether more rows are available | | `list_name` | string | Lead list name | | `positive_reply_count` | number | Replies categorized as positive | | `offset` | number | Pagination offset used | | `limit` | number | Pagination limit used | | `total_count` | number | Total records matching the request | | `from` | string | Start of the reported window | | `to` | string | End of the reported window | | `start_date` | string | Start of the reported range | | `end_date` | string | End of the reported range | | `skipped_count` | number | Emails skipped | | `failed_count` | number | Failed sends | | `stopped_count` | number | Stopped leads | | `unsubscribed_count` | number | Unsubscribes | | `unique_sent_count` | number | Unique leads emailed | | `unique_open_count` | number | Unique opens | | `unique_click_count` | number | Unique clicks | | `block_count` | number | Blocked sends, or leads skipped by the block list | | `drafted_count` | number | Drafted emails | | `sequence_count` | number | Sequence steps in the campaign | | `duplicate_count` | number | Duplicate leads skipped on import | | `invalid_email_count` | number | Leads skipped for an invalid email | | `invalid_emails` | array | Emails rejected as invalid | | `already_added_to_campaign` | number | Leads already in the campaign | | `unsubscribed_leads` | array | Leads skipped because they unsubscribed | | `lead_import_stopped_count` | number | Leads whose import was stopped | | `is_lead_limit_exhausted` | boolean | Whether the plan lead limit was hit | | `is_last_sequence` | boolean | Whether the lead was on the final step | | `next_sequence_id` | number | ID of the next sequence step | | `next_sequence_delay_in_days` | number | Days before the next step | | `first_name` | string | Lead first name | | `last_name` | string | Lead last name | | `phone_number` | string | Lead phone number | | `company_name` | string | Lead company name | | `website` | string | Lead website | | `location` | string | Lead location | | `linkedin_profile` | string | Lead LinkedIn profile URL | | `company_url` | string | Lead company URL | | `custom_fields` | json | Lead custom fields | | `is_unsubscribed` | boolean | Whether the lead is unsubscribed | | `lead_campaign_data` | array | Campaigns the lead belongs to | | `created_at` | string | Creation timestamp | | `updated_at` | string | Last update timestamp | | `leads_count` | number | Leads in the list | | `active_leads_count` | number | Active leads in the list | | `track_settings` | array | Disabled tracking settings | | `scheduler_cron_value` | json | Campaign sending schedule | | `accounts` | array | Sending email accounts, excluding their stored mailbox credentials | | `user_id` | number | Owning Smartlead user ID | | `min_time_btwn_emails` | number | Minimum minutes between emails | | `max_leads_per_day` | number | Maximum new leads per day | | `stop_lead_settings` | string | Activity that stops a lead sequence | | `schedule_start_time` | string | Scheduled start time | | `enable_ai_esp_matching` | boolean | Whether AI ESP matching is enabled | | `send_as_plain_text` | boolean | Whether emails send as plain text | | `follow_up_percentage` | number | Follow-up percentage | | `unsubscribe_text` | string | Unsubscribe text | | `parent_campaign_id` | number | Parent campaign ID | | `client_id` | number | Client ID for agency accounts | | `client_name` | string | Client name | | `client_email` | string | Client email | | `client_company_name` | string | Client company name | | `tags` | array | Tags on the record | | `email_campaign_id` | number | Campaign the webhook belongs to | ### Smartlead Delete Lead from Campaign [#smartlead-delete-lead-from-campaign] Removes a lead from a Smartlead campaign. The lead record itself remains on the account. #### Input [#input-39] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | -------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Smartlead API key | | `campaignId` | number | Yes | Smartlead campaign ID | | `leadId` | number | Yes | Smartlead lead ID — the nested lead.id from List Campaign Leads, NOT campaign\_lead\_map\_id | #### Output [#output-39] | Parameter | Type | Description | | ----------------------------- | ------- | ------------------------------------------------------------------ | | `campaigns` | array | List of campaigns | | `leads` | array | List of leads | | `sequences` | array | Email sequence steps | | `categories` | array | Lead categories | | `webhooks` | array | Campaign webhooks | | `stats` | array | Per-email statistics rows | | `history` | array | Lead message history | | `count` | number | Number of records returned | | `total_leads` | number | Total leads in the campaign, or leads newly added when importing | | `total_stats` | number | Total statistics rows matching the filters | | `id` | number | Record ID | | `name` | string | Record name | | `status` | string | Campaign status | | `email` | string | Lead email address | | `webhook_url` | string | Webhook destination URL | | `event_types` | array | Webhook event types | | `sent_count` | number | Emails sent | | `open_count` | number | Email opens | | `click_count` | number | Link clicks | | `reply_count` | number | Replies | | `bounce_count` | number | Bounces | | `campaign_lead_stats` | json | Lead counts by state | | `upload_count` | number | Leads submitted in the request | | `success` | boolean | Whether the action succeeded | | `items` | array | Records returned by Smartlead | | `rows` | array | Rows returned by Smartlead | | `lists` | array | Lead lists | | `summary` | array | Webhook delivery summary rows | | `csv` | string | Exported leads as CSV | | `row_count` | number | Rows in the exported CSV | | `has_more` | boolean | Whether more rows are available | | `list_name` | string | Lead list name | | `positive_reply_count` | number | Replies categorized as positive | | `offset` | number | Pagination offset used | | `limit` | number | Pagination limit used | | `total_count` | number | Total records matching the request | | `from` | string | Start of the reported window | | `to` | string | End of the reported window | | `start_date` | string | Start of the reported range | | `end_date` | string | End of the reported range | | `skipped_count` | number | Emails skipped | | `failed_count` | number | Failed sends | | `stopped_count` | number | Stopped leads | | `unsubscribed_count` | number | Unsubscribes | | `unique_sent_count` | number | Unique leads emailed | | `unique_open_count` | number | Unique opens | | `unique_click_count` | number | Unique clicks | | `block_count` | number | Blocked sends, or leads skipped by the block list | | `drafted_count` | number | Drafted emails | | `sequence_count` | number | Sequence steps in the campaign | | `duplicate_count` | number | Duplicate leads skipped on import | | `invalid_email_count` | number | Leads skipped for an invalid email | | `invalid_emails` | array | Emails rejected as invalid | | `already_added_to_campaign` | number | Leads already in the campaign | | `unsubscribed_leads` | array | Leads skipped because they unsubscribed | | `lead_import_stopped_count` | number | Leads whose import was stopped | | `is_lead_limit_exhausted` | boolean | Whether the plan lead limit was hit | | `is_last_sequence` | boolean | Whether the lead was on the final step | | `next_sequence_id` | number | ID of the next sequence step | | `next_sequence_delay_in_days` | number | Days before the next step | | `first_name` | string | Lead first name | | `last_name` | string | Lead last name | | `phone_number` | string | Lead phone number | | `company_name` | string | Lead company name | | `website` | string | Lead website | | `location` | string | Lead location | | `linkedin_profile` | string | Lead LinkedIn profile URL | | `company_url` | string | Lead company URL | | `custom_fields` | json | Lead custom fields | | `is_unsubscribed` | boolean | Whether the lead is unsubscribed | | `lead_campaign_data` | array | Campaigns the lead belongs to | | `created_at` | string | Creation timestamp | | `updated_at` | string | Last update timestamp | | `leads_count` | number | Leads in the list | | `active_leads_count` | number | Active leads in the list | | `track_settings` | array | Disabled tracking settings | | `scheduler_cron_value` | json | Campaign sending schedule | | `accounts` | array | Sending email accounts, excluding their stored mailbox credentials | | `user_id` | number | Owning Smartlead user ID | | `min_time_btwn_emails` | number | Minimum minutes between emails | | `max_leads_per_day` | number | Maximum new leads per day | | `stop_lead_settings` | string | Activity that stops a lead sequence | | `schedule_start_time` | string | Scheduled start time | | `enable_ai_esp_matching` | boolean | Whether AI ESP matching is enabled | | `send_as_plain_text` | boolean | Whether emails send as plain text | | `follow_up_percentage` | number | Follow-up percentage | | `unsubscribe_text` | string | Unsubscribe text | | `parent_campaign_id` | number | Parent campaign ID | | `client_id` | number | Client ID for agency accounts | | `client_name` | string | Client name | | `client_email` | string | Client email | | `client_company_name` | string | Client company name | | `tags` | array | Tags on the record | | `email_campaign_id` | number | Campaign the webhook belongs to | ### Smartlead List Inbox Replies [#smartlead-list-inbox-replies] Retrieves replies from the Smartlead master inbox across all campaigns, optionally limited to unread replies. Smartlead exposes no campaign filter on this endpoint. #### Input [#input-40] | Parameter | Type | Required | Description | | ------------ | ------- | -------- | ----------------------------- | | `apiKey` | string | Yes | Smartlead API key | | `unreadOnly` | boolean | No | Return only unread replies | | `offset` | number | No | Pagination offset (default 0) | | `limit` | number | No | Replies to return per page | #### Output [#output-40] | Parameter | Type | Description | | ----------------------------- | ------- | ------------------------------------------------------------------ | | `campaigns` | array | List of campaigns | | `leads` | array | List of leads | | `sequences` | array | Email sequence steps | | `categories` | array | Lead categories | | `webhooks` | array | Campaign webhooks | | `stats` | array | Per-email statistics rows | | `history` | array | Lead message history | | `count` | number | Number of records returned | | `total_leads` | number | Total leads in the campaign, or leads newly added when importing | | `total_stats` | number | Total statistics rows matching the filters | | `id` | number | Record ID | | `name` | string | Record name | | `status` | string | Campaign status | | `email` | string | Lead email address | | `webhook_url` | string | Webhook destination URL | | `event_types` | array | Webhook event types | | `sent_count` | number | Emails sent | | `open_count` | number | Email opens | | `click_count` | number | Link clicks | | `reply_count` | number | Replies | | `bounce_count` | number | Bounces | | `campaign_lead_stats` | json | Lead counts by state | | `upload_count` | number | Leads submitted in the request | | `success` | boolean | Whether the action succeeded | | `items` | array | Records returned by Smartlead | | `rows` | array | Rows returned by Smartlead | | `lists` | array | Lead lists | | `summary` | array | Webhook delivery summary rows | | `csv` | string | Exported leads as CSV | | `row_count` | number | Rows in the exported CSV | | `has_more` | boolean | Whether more rows are available | | `list_name` | string | Lead list name | | `positive_reply_count` | number | Replies categorized as positive | | `offset` | number | Pagination offset used | | `limit` | number | Pagination limit used | | `total_count` | number | Total records matching the request | | `from` | string | Start of the reported window | | `to` | string | End of the reported window | | `start_date` | string | Start of the reported range | | `end_date` | string | End of the reported range | | `skipped_count` | number | Emails skipped | | `failed_count` | number | Failed sends | | `stopped_count` | number | Stopped leads | | `unsubscribed_count` | number | Unsubscribes | | `unique_sent_count` | number | Unique leads emailed | | `unique_open_count` | number | Unique opens | | `unique_click_count` | number | Unique clicks | | `block_count` | number | Blocked sends, or leads skipped by the block list | | `drafted_count` | number | Drafted emails | | `sequence_count` | number | Sequence steps in the campaign | | `duplicate_count` | number | Duplicate leads skipped on import | | `invalid_email_count` | number | Leads skipped for an invalid email | | `invalid_emails` | array | Emails rejected as invalid | | `already_added_to_campaign` | number | Leads already in the campaign | | `unsubscribed_leads` | array | Leads skipped because they unsubscribed | | `lead_import_stopped_count` | number | Leads whose import was stopped | | `is_lead_limit_exhausted` | boolean | Whether the plan lead limit was hit | | `is_last_sequence` | boolean | Whether the lead was on the final step | | `next_sequence_id` | number | ID of the next sequence step | | `next_sequence_delay_in_days` | number | Days before the next step | | `first_name` | string | Lead first name | | `last_name` | string | Lead last name | | `phone_number` | string | Lead phone number | | `company_name` | string | Lead company name | | `website` | string | Lead website | | `location` | string | Lead location | | `linkedin_profile` | string | Lead LinkedIn profile URL | | `company_url` | string | Lead company URL | | `custom_fields` | json | Lead custom fields | | `is_unsubscribed` | boolean | Whether the lead is unsubscribed | | `lead_campaign_data` | array | Campaigns the lead belongs to | | `created_at` | string | Creation timestamp | | `updated_at` | string | Last update timestamp | | `leads_count` | number | Leads in the list | | `active_leads_count` | number | Active leads in the list | | `track_settings` | array | Disabled tracking settings | | `scheduler_cron_value` | json | Campaign sending schedule | | `accounts` | array | Sending email accounts, excluding their stored mailbox credentials | | `user_id` | number | Owning Smartlead user ID | | `min_time_btwn_emails` | number | Minimum minutes between emails | | `max_leads_per_day` | number | Maximum new leads per day | | `stop_lead_settings` | string | Activity that stops a lead sequence | | `schedule_start_time` | string | Scheduled start time | | `enable_ai_esp_matching` | boolean | Whether AI ESP matching is enabled | | `send_as_plain_text` | boolean | Whether emails send as plain text | | `follow_up_percentage` | number | Follow-up percentage | | `unsubscribe_text` | string | Unsubscribe text | | `parent_campaign_id` | number | Parent campaign ID | | `client_id` | number | Client ID for agency accounts | | `client_name` | string | Client name | | `client_email` | string | Client email | | `client_company_name` | string | Client company name | | `tags` | array | Tags on the record | | `email_campaign_id` | number | Campaign the webhook belongs to | ### Smartlead List Lead Lists [#smartlead-list-lead-lists] Retrieves the lead lists on the Smartlead account with their lead counts. #### Input [#input-41] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------------------------- | | `apiKey` | string | Yes | Smartlead API key | | `offset` | number | No | Pagination offset (default 0) | | `limit` | number | No | Lists to return per page | #### Output [#output-41] | Parameter | Type | Description | | ----------------------------- | ------- | ------------------------------------------------------------------ | | `campaigns` | array | List of campaigns | | `leads` | array | List of leads | | `sequences` | array | Email sequence steps | | `categories` | array | Lead categories | | `webhooks` | array | Campaign webhooks | | `stats` | array | Per-email statistics rows | | `history` | array | Lead message history | | `count` | number | Number of records returned | | `total_leads` | number | Total leads in the campaign, or leads newly added when importing | | `total_stats` | number | Total statistics rows matching the filters | | `id` | number | Record ID | | `name` | string | Record name | | `status` | string | Campaign status | | `email` | string | Lead email address | | `webhook_url` | string | Webhook destination URL | | `event_types` | array | Webhook event types | | `sent_count` | number | Emails sent | | `open_count` | number | Email opens | | `click_count` | number | Link clicks | | `reply_count` | number | Replies | | `bounce_count` | number | Bounces | | `campaign_lead_stats` | json | Lead counts by state | | `upload_count` | number | Leads submitted in the request | | `success` | boolean | Whether the action succeeded | | `items` | array | Records returned by Smartlead | | `rows` | array | Rows returned by Smartlead | | `lists` | array | Lead lists | | `summary` | array | Webhook delivery summary rows | | `csv` | string | Exported leads as CSV | | `row_count` | number | Rows in the exported CSV | | `has_more` | boolean | Whether more rows are available | | `list_name` | string | Lead list name | | `positive_reply_count` | number | Replies categorized as positive | | `offset` | number | Pagination offset used | | `limit` | number | Pagination limit used | | `total_count` | number | Total records matching the request | | `from` | string | Start of the reported window | | `to` | string | End of the reported window | | `start_date` | string | Start of the reported range | | `end_date` | string | End of the reported range | | `skipped_count` | number | Emails skipped | | `failed_count` | number | Failed sends | | `stopped_count` | number | Stopped leads | | `unsubscribed_count` | number | Unsubscribes | | `unique_sent_count` | number | Unique leads emailed | | `unique_open_count` | number | Unique opens | | `unique_click_count` | number | Unique clicks | | `block_count` | number | Blocked sends, or leads skipped by the block list | | `drafted_count` | number | Drafted emails | | `sequence_count` | number | Sequence steps in the campaign | | `duplicate_count` | number | Duplicate leads skipped on import | | `invalid_email_count` | number | Leads skipped for an invalid email | | `invalid_emails` | array | Emails rejected as invalid | | `already_added_to_campaign` | number | Leads already in the campaign | | `unsubscribed_leads` | array | Leads skipped because they unsubscribed | | `lead_import_stopped_count` | number | Leads whose import was stopped | | `is_lead_limit_exhausted` | boolean | Whether the plan lead limit was hit | | `is_last_sequence` | boolean | Whether the lead was on the final step | | `next_sequence_id` | number | ID of the next sequence step | | `next_sequence_delay_in_days` | number | Days before the next step | | `first_name` | string | Lead first name | | `last_name` | string | Lead last name | | `phone_number` | string | Lead phone number | | `company_name` | string | Lead company name | | `website` | string | Lead website | | `location` | string | Lead location | | `linkedin_profile` | string | Lead LinkedIn profile URL | | `company_url` | string | Lead company URL | | `custom_fields` | json | Lead custom fields | | `is_unsubscribed` | boolean | Whether the lead is unsubscribed | | `lead_campaign_data` | array | Campaigns the lead belongs to | | `created_at` | string | Creation timestamp | | `updated_at` | string | Last update timestamp | | `leads_count` | number | Leads in the list | | `active_leads_count` | number | Active leads in the list | | `track_settings` | array | Disabled tracking settings | | `scheduler_cron_value` | json | Campaign sending schedule | | `accounts` | array | Sending email accounts, excluding their stored mailbox credentials | | `user_id` | number | Owning Smartlead user ID | | `min_time_btwn_emails` | number | Minimum minutes between emails | | `max_leads_per_day` | number | Maximum new leads per day | | `stop_lead_settings` | string | Activity that stops a lead sequence | | `schedule_start_time` | string | Scheduled start time | | `enable_ai_esp_matching` | boolean | Whether AI ESP matching is enabled | | `send_as_plain_text` | boolean | Whether emails send as plain text | | `follow_up_percentage` | number | Follow-up percentage | | `unsubscribe_text` | string | Unsubscribe text | | `parent_campaign_id` | number | Parent campaign ID | | `client_id` | number | Client ID for agency accounts | | `client_name` | string | Client name | | `client_email` | string | Client email | | `client_company_name` | string | Client company name | | `tags` | array | Tags on the record | | `email_campaign_id` | number | Campaign the webhook belongs to | ### Smartlead Get Lead List [#smartlead-get-lead-list] Retrieves a single Smartlead lead list by ID. #### Input [#input-42] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ----------------- | | `apiKey` | string | Yes | Smartlead API key | | `leadListId` | number | Yes | Lead list ID | #### Output [#output-42] | Parameter | Type | Description | | ----------------------------- | ------- | ------------------------------------------------------------------ | | `campaigns` | array | List of campaigns | | `leads` | array | List of leads | | `sequences` | array | Email sequence steps | | `categories` | array | Lead categories | | `webhooks` | array | Campaign webhooks | | `stats` | array | Per-email statistics rows | | `history` | array | Lead message history | | `count` | number | Number of records returned | | `total_leads` | number | Total leads in the campaign, or leads newly added when importing | | `total_stats` | number | Total statistics rows matching the filters | | `id` | number | Record ID | | `name` | string | Record name | | `status` | string | Campaign status | | `email` | string | Lead email address | | `webhook_url` | string | Webhook destination URL | | `event_types` | array | Webhook event types | | `sent_count` | number | Emails sent | | `open_count` | number | Email opens | | `click_count` | number | Link clicks | | `reply_count` | number | Replies | | `bounce_count` | number | Bounces | | `campaign_lead_stats` | json | Lead counts by state | | `upload_count` | number | Leads submitted in the request | | `success` | boolean | Whether the action succeeded | | `items` | array | Records returned by Smartlead | | `rows` | array | Rows returned by Smartlead | | `lists` | array | Lead lists | | `summary` | array | Webhook delivery summary rows | | `csv` | string | Exported leads as CSV | | `row_count` | number | Rows in the exported CSV | | `has_more` | boolean | Whether more rows are available | | `list_name` | string | Lead list name | | `positive_reply_count` | number | Replies categorized as positive | | `offset` | number | Pagination offset used | | `limit` | number | Pagination limit used | | `total_count` | number | Total records matching the request | | `from` | string | Start of the reported window | | `to` | string | End of the reported window | | `start_date` | string | Start of the reported range | | `end_date` | string | End of the reported range | | `skipped_count` | number | Emails skipped | | `failed_count` | number | Failed sends | | `stopped_count` | number | Stopped leads | | `unsubscribed_count` | number | Unsubscribes | | `unique_sent_count` | number | Unique leads emailed | | `unique_open_count` | number | Unique opens | | `unique_click_count` | number | Unique clicks | | `block_count` | number | Blocked sends, or leads skipped by the block list | | `drafted_count` | number | Drafted emails | | `sequence_count` | number | Sequence steps in the campaign | | `duplicate_count` | number | Duplicate leads skipped on import | | `invalid_email_count` | number | Leads skipped for an invalid email | | `invalid_emails` | array | Emails rejected as invalid | | `already_added_to_campaign` | number | Leads already in the campaign | | `unsubscribed_leads` | array | Leads skipped because they unsubscribed | | `lead_import_stopped_count` | number | Leads whose import was stopped | | `is_lead_limit_exhausted` | boolean | Whether the plan lead limit was hit | | `is_last_sequence` | boolean | Whether the lead was on the final step | | `next_sequence_id` | number | ID of the next sequence step | | `next_sequence_delay_in_days` | number | Days before the next step | | `first_name` | string | Lead first name | | `last_name` | string | Lead last name | | `phone_number` | string | Lead phone number | | `company_name` | string | Lead company name | | `website` | string | Lead website | | `location` | string | Lead location | | `linkedin_profile` | string | Lead LinkedIn profile URL | | `company_url` | string | Lead company URL | | `custom_fields` | json | Lead custom fields | | `is_unsubscribed` | boolean | Whether the lead is unsubscribed | | `lead_campaign_data` | array | Campaigns the lead belongs to | | `created_at` | string | Creation timestamp | | `updated_at` | string | Last update timestamp | | `leads_count` | number | Leads in the list | | `active_leads_count` | number | Active leads in the list | | `track_settings` | array | Disabled tracking settings | | `scheduler_cron_value` | json | Campaign sending schedule | | `accounts` | array | Sending email accounts, excluding their stored mailbox credentials | | `user_id` | number | Owning Smartlead user ID | | `min_time_btwn_emails` | number | Minimum minutes between emails | | `max_leads_per_day` | number | Maximum new leads per day | | `stop_lead_settings` | string | Activity that stops a lead sequence | | `schedule_start_time` | string | Scheduled start time | | `enable_ai_esp_matching` | boolean | Whether AI ESP matching is enabled | | `send_as_plain_text` | boolean | Whether emails send as plain text | | `follow_up_percentage` | number | Follow-up percentage | | `unsubscribe_text` | string | Unsubscribe text | | `parent_campaign_id` | number | Parent campaign ID | | `client_id` | number | Client ID for agency accounts | | `client_name` | string | Client name | | `client_email` | string | Client email | | `client_company_name` | string | Client company name | | `tags` | array | Tags on the record | | `email_campaign_id` | number | Campaign the webhook belongs to | ### Smartlead Create Lead List [#smartlead-create-lead-list] Creates a lead list on the Smartlead account. #### Input [#input-43] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | -------------------------- | | `apiKey` | string | Yes | Smartlead API key | | `listName` | string | Yes | Name for the new lead list | #### Output [#output-43] | Parameter | Type | Description | | ----------------------------- | ------- | ------------------------------------------------------------------ | | `campaigns` | array | List of campaigns | | `leads` | array | List of leads | | `sequences` | array | Email sequence steps | | `categories` | array | Lead categories | | `webhooks` | array | Campaign webhooks | | `stats` | array | Per-email statistics rows | | `history` | array | Lead message history | | `count` | number | Number of records returned | | `total_leads` | number | Total leads in the campaign, or leads newly added when importing | | `total_stats` | number | Total statistics rows matching the filters | | `id` | number | Record ID | | `name` | string | Record name | | `status` | string | Campaign status | | `email` | string | Lead email address | | `webhook_url` | string | Webhook destination URL | | `event_types` | array | Webhook event types | | `sent_count` | number | Emails sent | | `open_count` | number | Email opens | | `click_count` | number | Link clicks | | `reply_count` | number | Replies | | `bounce_count` | number | Bounces | | `campaign_lead_stats` | json | Lead counts by state | | `upload_count` | number | Leads submitted in the request | | `success` | boolean | Whether the action succeeded | | `items` | array | Records returned by Smartlead | | `rows` | array | Rows returned by Smartlead | | `lists` | array | Lead lists | | `summary` | array | Webhook delivery summary rows | | `csv` | string | Exported leads as CSV | | `row_count` | number | Rows in the exported CSV | | `has_more` | boolean | Whether more rows are available | | `list_name` | string | Lead list name | | `positive_reply_count` | number | Replies categorized as positive | | `offset` | number | Pagination offset used | | `limit` | number | Pagination limit used | | `total_count` | number | Total records matching the request | | `from` | string | Start of the reported window | | `to` | string | End of the reported window | | `start_date` | string | Start of the reported range | | `end_date` | string | End of the reported range | | `skipped_count` | number | Emails skipped | | `failed_count` | number | Failed sends | | `stopped_count` | number | Stopped leads | | `unsubscribed_count` | number | Unsubscribes | | `unique_sent_count` | number | Unique leads emailed | | `unique_open_count` | number | Unique opens | | `unique_click_count` | number | Unique clicks | | `block_count` | number | Blocked sends, or leads skipped by the block list | | `drafted_count` | number | Drafted emails | | `sequence_count` | number | Sequence steps in the campaign | | `duplicate_count` | number | Duplicate leads skipped on import | | `invalid_email_count` | number | Leads skipped for an invalid email | | `invalid_emails` | array | Emails rejected as invalid | | `already_added_to_campaign` | number | Leads already in the campaign | | `unsubscribed_leads` | array | Leads skipped because they unsubscribed | | `lead_import_stopped_count` | number | Leads whose import was stopped | | `is_lead_limit_exhausted` | boolean | Whether the plan lead limit was hit | | `is_last_sequence` | boolean | Whether the lead was on the final step | | `next_sequence_id` | number | ID of the next sequence step | | `next_sequence_delay_in_days` | number | Days before the next step | | `first_name` | string | Lead first name | | `last_name` | string | Lead last name | | `phone_number` | string | Lead phone number | | `company_name` | string | Lead company name | | `website` | string | Lead website | | `location` | string | Lead location | | `linkedin_profile` | string | Lead LinkedIn profile URL | | `company_url` | string | Lead company URL | | `custom_fields` | json | Lead custom fields | | `is_unsubscribed` | boolean | Whether the lead is unsubscribed | | `lead_campaign_data` | array | Campaigns the lead belongs to | | `created_at` | string | Creation timestamp | | `updated_at` | string | Last update timestamp | | `leads_count` | number | Leads in the list | | `active_leads_count` | number | Active leads in the list | | `track_settings` | array | Disabled tracking settings | | `scheduler_cron_value` | json | Campaign sending schedule | | `accounts` | array | Sending email accounts, excluding their stored mailbox credentials | | `user_id` | number | Owning Smartlead user ID | | `min_time_btwn_emails` | number | Minimum minutes between emails | | `max_leads_per_day` | number | Maximum new leads per day | | `stop_lead_settings` | string | Activity that stops a lead sequence | | `schedule_start_time` | string | Scheduled start time | | `enable_ai_esp_matching` | boolean | Whether AI ESP matching is enabled | | `send_as_plain_text` | boolean | Whether emails send as plain text | | `follow_up_percentage` | number | Follow-up percentage | | `unsubscribe_text` | string | Unsubscribe text | | `parent_campaign_id` | number | Parent campaign ID | | `client_id` | number | Client ID for agency accounts | | `client_name` | string | Client name | | `client_email` | string | Client email | | `client_company_name` | string | Client company name | | `tags` | array | Tags on the record | | `email_campaign_id` | number | Campaign the webhook belongs to | ### Smartlead Update Lead List [#smartlead-update-lead-list] Renames a Smartlead lead list. #### Input [#input-44] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | -------------------------- | | `apiKey` | string | Yes | Smartlead API key | | `leadListId` | number | Yes | Lead list ID to update | | `listName` | string | Yes | New name for the lead list | #### Output [#output-44] | Parameter | Type | Description | | ----------------------------- | ------- | ------------------------------------------------------------------ | | `campaigns` | array | List of campaigns | | `leads` | array | List of leads | | `sequences` | array | Email sequence steps | | `categories` | array | Lead categories | | `webhooks` | array | Campaign webhooks | | `stats` | array | Per-email statistics rows | | `history` | array | Lead message history | | `count` | number | Number of records returned | | `total_leads` | number | Total leads in the campaign, or leads newly added when importing | | `total_stats` | number | Total statistics rows matching the filters | | `id` | number | Record ID | | `name` | string | Record name | | `status` | string | Campaign status | | `email` | string | Lead email address | | `webhook_url` | string | Webhook destination URL | | `event_types` | array | Webhook event types | | `sent_count` | number | Emails sent | | `open_count` | number | Email opens | | `click_count` | number | Link clicks | | `reply_count` | number | Replies | | `bounce_count` | number | Bounces | | `campaign_lead_stats` | json | Lead counts by state | | `upload_count` | number | Leads submitted in the request | | `success` | boolean | Whether the action succeeded | | `items` | array | Records returned by Smartlead | | `rows` | array | Rows returned by Smartlead | | `lists` | array | Lead lists | | `summary` | array | Webhook delivery summary rows | | `csv` | string | Exported leads as CSV | | `row_count` | number | Rows in the exported CSV | | `has_more` | boolean | Whether more rows are available | | `list_name` | string | Lead list name | | `positive_reply_count` | number | Replies categorized as positive | | `offset` | number | Pagination offset used | | `limit` | number | Pagination limit used | | `total_count` | number | Total records matching the request | | `from` | string | Start of the reported window | | `to` | string | End of the reported window | | `start_date` | string | Start of the reported range | | `end_date` | string | End of the reported range | | `skipped_count` | number | Emails skipped | | `failed_count` | number | Failed sends | | `stopped_count` | number | Stopped leads | | `unsubscribed_count` | number | Unsubscribes | | `unique_sent_count` | number | Unique leads emailed | | `unique_open_count` | number | Unique opens | | `unique_click_count` | number | Unique clicks | | `block_count` | number | Blocked sends, or leads skipped by the block list | | `drafted_count` | number | Drafted emails | | `sequence_count` | number | Sequence steps in the campaign | | `duplicate_count` | number | Duplicate leads skipped on import | | `invalid_email_count` | number | Leads skipped for an invalid email | | `invalid_emails` | array | Emails rejected as invalid | | `already_added_to_campaign` | number | Leads already in the campaign | | `unsubscribed_leads` | array | Leads skipped because they unsubscribed | | `lead_import_stopped_count` | number | Leads whose import was stopped | | `is_lead_limit_exhausted` | boolean | Whether the plan lead limit was hit | | `is_last_sequence` | boolean | Whether the lead was on the final step | | `next_sequence_id` | number | ID of the next sequence step | | `next_sequence_delay_in_days` | number | Days before the next step | | `first_name` | string | Lead first name | | `last_name` | string | Lead last name | | `phone_number` | string | Lead phone number | | `company_name` | string | Lead company name | | `website` | string | Lead website | | `location` | string | Lead location | | `linkedin_profile` | string | Lead LinkedIn profile URL | | `company_url` | string | Lead company URL | | `custom_fields` | json | Lead custom fields | | `is_unsubscribed` | boolean | Whether the lead is unsubscribed | | `lead_campaign_data` | array | Campaigns the lead belongs to | | `created_at` | string | Creation timestamp | | `updated_at` | string | Last update timestamp | | `leads_count` | number | Leads in the list | | `active_leads_count` | number | Active leads in the list | | `track_settings` | array | Disabled tracking settings | | `scheduler_cron_value` | json | Campaign sending schedule | | `accounts` | array | Sending email accounts, excluding their stored mailbox credentials | | `user_id` | number | Owning Smartlead user ID | | `min_time_btwn_emails` | number | Minimum minutes between emails | | `max_leads_per_day` | number | Maximum new leads per day | | `stop_lead_settings` | string | Activity that stops a lead sequence | | `schedule_start_time` | string | Scheduled start time | | `enable_ai_esp_matching` | boolean | Whether AI ESP matching is enabled | | `send_as_plain_text` | boolean | Whether emails send as plain text | | `follow_up_percentage` | number | Follow-up percentage | | `unsubscribe_text` | string | Unsubscribe text | | `parent_campaign_id` | number | Parent campaign ID | | `client_id` | number | Client ID for agency accounts | | `client_name` | string | Client name | | `client_email` | string | Client email | | `client_company_name` | string | Client company name | | `tags` | array | Tags on the record | | `email_campaign_id` | number | Campaign the webhook belongs to | ### Smartlead Delete Lead List [#smartlead-delete-lead-list] Deletes a Smartlead lead list. #### Input [#input-45] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ---------------------- | | `apiKey` | string | Yes | Smartlead API key | | `leadListId` | number | Yes | Lead list ID to delete | #### Output [#output-45] | Parameter | Type | Description | | ----------------------------- | ------- | ------------------------------------------------------------------ | | `campaigns` | array | List of campaigns | | `leads` | array | List of leads | | `sequences` | array | Email sequence steps | | `categories` | array | Lead categories | | `webhooks` | array | Campaign webhooks | | `stats` | array | Per-email statistics rows | | `history` | array | Lead message history | | `count` | number | Number of records returned | | `total_leads` | number | Total leads in the campaign, or leads newly added when importing | | `total_stats` | number | Total statistics rows matching the filters | | `id` | number | Record ID | | `name` | string | Record name | | `status` | string | Campaign status | | `email` | string | Lead email address | | `webhook_url` | string | Webhook destination URL | | `event_types` | array | Webhook event types | | `sent_count` | number | Emails sent | | `open_count` | number | Email opens | | `click_count` | number | Link clicks | | `reply_count` | number | Replies | | `bounce_count` | number | Bounces | | `campaign_lead_stats` | json | Lead counts by state | | `upload_count` | number | Leads submitted in the request | | `success` | boolean | Whether the action succeeded | | `items` | array | Records returned by Smartlead | | `rows` | array | Rows returned by Smartlead | | `lists` | array | Lead lists | | `summary` | array | Webhook delivery summary rows | | `csv` | string | Exported leads as CSV | | `row_count` | number | Rows in the exported CSV | | `has_more` | boolean | Whether more rows are available | | `list_name` | string | Lead list name | | `positive_reply_count` | number | Replies categorized as positive | | `offset` | number | Pagination offset used | | `limit` | number | Pagination limit used | | `total_count` | number | Total records matching the request | | `from` | string | Start of the reported window | | `to` | string | End of the reported window | | `start_date` | string | Start of the reported range | | `end_date` | string | End of the reported range | | `skipped_count` | number | Emails skipped | | `failed_count` | number | Failed sends | | `stopped_count` | number | Stopped leads | | `unsubscribed_count` | number | Unsubscribes | | `unique_sent_count` | number | Unique leads emailed | | `unique_open_count` | number | Unique opens | | `unique_click_count` | number | Unique clicks | | `block_count` | number | Blocked sends, or leads skipped by the block list | | `drafted_count` | number | Drafted emails | | `sequence_count` | number | Sequence steps in the campaign | | `duplicate_count` | number | Duplicate leads skipped on import | | `invalid_email_count` | number | Leads skipped for an invalid email | | `invalid_emails` | array | Emails rejected as invalid | | `already_added_to_campaign` | number | Leads already in the campaign | | `unsubscribed_leads` | array | Leads skipped because they unsubscribed | | `lead_import_stopped_count` | number | Leads whose import was stopped | | `is_lead_limit_exhausted` | boolean | Whether the plan lead limit was hit | | `is_last_sequence` | boolean | Whether the lead was on the final step | | `next_sequence_id` | number | ID of the next sequence step | | `next_sequence_delay_in_days` | number | Days before the next step | | `first_name` | string | Lead first name | | `last_name` | string | Lead last name | | `phone_number` | string | Lead phone number | | `company_name` | string | Lead company name | | `website` | string | Lead website | | `location` | string | Lead location | | `linkedin_profile` | string | Lead LinkedIn profile URL | | `company_url` | string | Lead company URL | | `custom_fields` | json | Lead custom fields | | `is_unsubscribed` | boolean | Whether the lead is unsubscribed | | `lead_campaign_data` | array | Campaigns the lead belongs to | | `created_at` | string | Creation timestamp | | `updated_at` | string | Last update timestamp | | `leads_count` | number | Leads in the list | | `active_leads_count` | number | Active leads in the list | | `track_settings` | array | Disabled tracking settings | | `scheduler_cron_value` | json | Campaign sending schedule | | `accounts` | array | Sending email accounts, excluding their stored mailbox credentials | | `user_id` | number | Owning Smartlead user ID | | `min_time_btwn_emails` | number | Minimum minutes between emails | | `max_leads_per_day` | number | Maximum new leads per day | | `stop_lead_settings` | string | Activity that stops a lead sequence | | `schedule_start_time` | string | Scheduled start time | | `enable_ai_esp_matching` | boolean | Whether AI ESP matching is enabled | | `send_as_plain_text` | boolean | Whether emails send as plain text | | `follow_up_percentage` | number | Follow-up percentage | | `unsubscribe_text` | string | Unsubscribe text | | `parent_campaign_id` | number | Parent campaign ID | | `client_id` | number | Client ID for agency accounts | | `client_name` | string | Client name | | `client_email` | string | Client email | | `client_company_name` | string | Client company name | | `tags` | array | Tags on the record | | `email_campaign_id` | number | Campaign the webhook belongs to | ### Smartlead List Clients [#smartlead-list-clients] Retrieves the clients on a Smartlead agency account, including the client IDs used to scope campaigns and email accounts. #### Input [#input-46] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------------- | | `apiKey` | string | Yes | Smartlead API key | #### Output [#output-46] | Parameter | Type | Description | | ----------------------------- | ------- | ------------------------------------------------------------------ | | `campaigns` | array | List of campaigns | | `leads` | array | List of leads | | `sequences` | array | Email sequence steps | | `categories` | array | Lead categories | | `webhooks` | array | Campaign webhooks | | `stats` | array | Per-email statistics rows | | `history` | array | Lead message history | | `count` | number | Number of records returned | | `total_leads` | number | Total leads in the campaign, or leads newly added when importing | | `total_stats` | number | Total statistics rows matching the filters | | `id` | number | Record ID | | `name` | string | Record name | | `status` | string | Campaign status | | `email` | string | Lead email address | | `webhook_url` | string | Webhook destination URL | | `event_types` | array | Webhook event types | | `sent_count` | number | Emails sent | | `open_count` | number | Email opens | | `click_count` | number | Link clicks | | `reply_count` | number | Replies | | `bounce_count` | number | Bounces | | `campaign_lead_stats` | json | Lead counts by state | | `upload_count` | number | Leads submitted in the request | | `success` | boolean | Whether the action succeeded | | `items` | array | Records returned by Smartlead | | `rows` | array | Rows returned by Smartlead | | `lists` | array | Lead lists | | `summary` | array | Webhook delivery summary rows | | `csv` | string | Exported leads as CSV | | `row_count` | number | Rows in the exported CSV | | `has_more` | boolean | Whether more rows are available | | `list_name` | string | Lead list name | | `positive_reply_count` | number | Replies categorized as positive | | `offset` | number | Pagination offset used | | `limit` | number | Pagination limit used | | `total_count` | number | Total records matching the request | | `from` | string | Start of the reported window | | `to` | string | End of the reported window | | `start_date` | string | Start of the reported range | | `end_date` | string | End of the reported range | | `skipped_count` | number | Emails skipped | | `failed_count` | number | Failed sends | | `stopped_count` | number | Stopped leads | | `unsubscribed_count` | number | Unsubscribes | | `unique_sent_count` | number | Unique leads emailed | | `unique_open_count` | number | Unique opens | | `unique_click_count` | number | Unique clicks | | `block_count` | number | Blocked sends, or leads skipped by the block list | | `drafted_count` | number | Drafted emails | | `sequence_count` | number | Sequence steps in the campaign | | `duplicate_count` | number | Duplicate leads skipped on import | | `invalid_email_count` | number | Leads skipped for an invalid email | | `invalid_emails` | array | Emails rejected as invalid | | `already_added_to_campaign` | number | Leads already in the campaign | | `unsubscribed_leads` | array | Leads skipped because they unsubscribed | | `lead_import_stopped_count` | number | Leads whose import was stopped | | `is_lead_limit_exhausted` | boolean | Whether the plan lead limit was hit | | `is_last_sequence` | boolean | Whether the lead was on the final step | | `next_sequence_id` | number | ID of the next sequence step | | `next_sequence_delay_in_days` | number | Days before the next step | | `first_name` | string | Lead first name | | `last_name` | string | Lead last name | | `phone_number` | string | Lead phone number | | `company_name` | string | Lead company name | | `website` | string | Lead website | | `location` | string | Lead location | | `linkedin_profile` | string | Lead LinkedIn profile URL | | `company_url` | string | Lead company URL | | `custom_fields` | json | Lead custom fields | | `is_unsubscribed` | boolean | Whether the lead is unsubscribed | | `lead_campaign_data` | array | Campaigns the lead belongs to | | `created_at` | string | Creation timestamp | | `updated_at` | string | Last update timestamp | | `leads_count` | number | Leads in the list | | `active_leads_count` | number | Active leads in the list | | `track_settings` | array | Disabled tracking settings | | `scheduler_cron_value` | json | Campaign sending schedule | | `accounts` | array | Sending email accounts, excluding their stored mailbox credentials | | `user_id` | number | Owning Smartlead user ID | | `min_time_btwn_emails` | number | Minimum minutes between emails | | `max_leads_per_day` | number | Maximum new leads per day | | `stop_lead_settings` | string | Activity that stops a lead sequence | | `schedule_start_time` | string | Scheduled start time | | `enable_ai_esp_matching` | boolean | Whether AI ESP matching is enabled | | `send_as_plain_text` | boolean | Whether emails send as plain text | | `follow_up_percentage` | number | Follow-up percentage | | `unsubscribe_text` | string | Unsubscribe text | | `parent_campaign_id` | number | Parent campaign ID | | `client_id` | number | Client ID for agency accounts | | `client_name` | string | Client name | | `client_email` | string | Client email | | `client_company_name` | string | Client company name | | `tags` | array | Tags on the record | | `email_campaign_id` | number | Campaign the webhook belongs to | --- # Gmail (/en/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 | --- # AWS IAM (/en/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 | --- # Speech-to-Text (/en/integrations/stt) ## Usage Instructions [#usage-instructions] Transcribe audio and video files to text using leading AI providers. Supports multiple languages, timestamps, and speaker diarization. ## Actions [#actions] ### OpenAI Whisper STT [#openai-whisper-stt] Transcribe audio to text using OpenAI Whisper #### Input [#input] | Parameter | Type | Required | Description | | -------------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------- | | `provider` | string | Yes | STT provider (whisper) | | `apiKey` | string | Yes | OpenAI API key | | `model` | string | No | Whisper model to use (default: whisper-1) | | `audioFile` | file | No | Audio or video file to transcribe (e.g., MP3, WAV, M4A, WEBM) | | `audioFileReference` | file | No | Reference to audio/video file from previous blocks | | `language` | string | No | Language code (e.g., "en", "es", "fr") or "auto" for auto-detection | | `timestamps` | string | No | Timestamp granularity: none, sentence, or word | | `translateToEnglish` | boolean | No | Translate audio to English | | `prompt` | string | No | Optional text to guide the model's style or continue a previous audio segment. Helps with proper nouns and context. | | `temperature` | number | No | Sampling temperature between 0 and 1. Higher values make output more random, lower values more focused and deterministic. | | `responseFormat` | string | No | Output format for the transcription (e.g., "json", "text", "srt", "verbose\_json", "vtt") | #### Output [#output] | Parameter | Type | Description | | -------------- | ------ | ------------------------------------------- | | `transcript` | string | Full transcribed text | | `segments` | array | Timestamped segments | | ↳ `text` | string | Transcribed text for this segment | | ↳ `start` | number | Start time in seconds | | ↳ `end` | number | End time in seconds | | ↳ `speaker` | string | Speaker identifier (if diarization enabled) | | ↳ `confidence` | number | Confidence score (0-1) | | `language` | string | Detected or specified language | | `duration` | number | Audio duration in seconds | ### Deepgram STT [#deepgram-stt] Transcribe audio to text using Deepgram #### Input [#input-1] | Parameter | Type | Required | Description | | -------------------- | ------- | -------- | ------------------------------------------------------------------- | | `provider` | string | Yes | STT provider (deepgram) | | `apiKey` | string | Yes | Deepgram API key | | `model` | string | No | Deepgram model to use (nova-3, nova-2, whisper-large, etc.) | | `audioFile` | file | No | Audio or video file to transcribe (e.g., MP3, WAV, M4A, WEBM) | | `audioFileReference` | file | No | Reference to audio/video file from previous blocks | | `language` | string | No | Language code (e.g., "en", "es", "fr") or "auto" for auto-detection | | `timestamps` | string | No | Timestamp granularity: none, sentence, or word | | `diarization` | boolean | No | Enable speaker diarization | #### Output [#output-1] | Parameter | Type | Description | | -------------- | ------ | ------------------------------------------- | | `transcript` | string | Full transcribed text | | `segments` | array | Timestamped segments with speaker labels | | ↳ `text` | string | Transcribed text for this segment | | ↳ `start` | number | Start time in seconds | | ↳ `end` | number | End time in seconds | | ↳ `speaker` | string | Speaker identifier (if diarization enabled) | | ↳ `confidence` | number | Confidence score (0-1) | | `language` | string | Detected or specified language | | `duration` | number | Audio duration in seconds | | `confidence` | number | Overall confidence score | ### ElevenLabs STT [#elevenlabs-stt] Transcribe audio to text using ElevenLabs #### Input [#input-2] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | ------------------------------------------------------------------- | | `provider` | string | Yes | STT provider (elevenlabs) | | `apiKey` | string | Yes | ElevenLabs API key | | `model` | string | No | ElevenLabs model to use (scribe\_v2) | | `audioFile` | file | No | Audio or video file to transcribe (e.g., MP3, WAV, M4A, WEBM) | | `audioFileReference` | file | No | Reference to audio/video file from previous blocks | | `language` | string | No | Language code (e.g., "en", "es", "fr") or "auto" for auto-detection | | `timestamps` | string | No | Timestamp granularity: none, sentence, or word | #### Output [#output-2] | Parameter | Type | Description | | ------------ | ------ | ------------------------------ | | `transcript` | string | Full transcribed text | | `segments` | array | Timestamped segments | | `language` | string | Detected or specified language | | `duration` | number | Audio duration in seconds | | `confidence` | number | Overall confidence score | ### AssemblyAI STT [#assemblyai-stt] Transcribe audio to text using AssemblyAI with advanced NLP features #### Input [#input-3] | Parameter | Type | Required | Description | | -------------------- | ------- | -------- | ------------------------------------------------------------------- | | `provider` | string | Yes | STT provider (assemblyai) | | `apiKey` | string | Yes | AssemblyAI API key | | `model` | string | No | AssemblyAI model to use (default: best) | | `audioFile` | file | No | Audio or video file to transcribe (e.g., MP3, WAV, M4A, WEBM) | | `audioFileReference` | file | No | Reference to audio/video file from previous blocks | | `language` | string | No | Language code (e.g., "en", "es", "fr") or "auto" for auto-detection | | `timestamps` | string | No | Timestamp granularity: none, sentence, or word | | `diarization` | boolean | No | Enable speaker diarization | | `sentiment` | boolean | No | Enable sentiment analysis | | `entityDetection` | boolean | No | Enable entity detection | | `piiRedaction` | boolean | No | Enable PII redaction | | `summarization` | boolean | No | Enable automatic summarization | #### Output [#output-3] | Parameter | Type | Description | | --------------- | ------ | -------------------------------------------------------- | | `transcript` | string | Full transcribed text | | `segments` | array | Timestamped segments with speaker labels | | ↳ `text` | string | Transcribed text for this segment | | ↳ `start` | number | Start time in seconds | | ↳ `end` | number | End time in seconds | | ↳ `speaker` | string | Speaker identifier (if diarization enabled) | | ↳ `confidence` | number | Confidence score (0-1) | | `language` | string | Detected or specified language | | `duration` | number | Audio duration in seconds | | `confidence` | number | Overall confidence score | | `sentiment` | array | Sentiment analysis results | | ↳ `text` | string | Text that was analyzed | | ↳ `sentiment` | string | Sentiment (POSITIVE, NEGATIVE, NEUTRAL) | | ↳ `confidence` | number | Confidence score | | ↳ `start` | number | Start time in milliseconds | | ↳ `end` | number | End time in milliseconds | | `entities` | array | Detected entities | | ↳ `entity_type` | string | Entity type (e.g., person\_name, location, organization) | | ↳ `text` | string | Entity text | | ↳ `start` | number | Start time in milliseconds | | ↳ `end` | number | End time in milliseconds | | `summary` | string | Auto-generated summary | ### Gemini STT [#gemini-stt] Transcribe audio to text using Google Gemini with multimodal capabilities #### Input [#input-4] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | ------------------------------------------------------------------- | | `provider` | string | Yes | STT provider (gemini) | | `apiKey` | string | Yes | Google API key | | `model` | string | No | Gemini model to use (default: gemini-2.5-flash) | | `audioFile` | file | No | Audio or video file to transcribe (e.g., MP3, WAV, M4A, WEBM) | | `audioFileReference` | file | No | Reference to audio/video file from previous blocks | | `language` | string | No | Language code (e.g., "en", "es", "fr") or "auto" for auto-detection | | `timestamps` | string | No | Timestamp granularity: none, sentence, or word | #### Output [#output-4] | Parameter | Type | Description | | ------------ | ------ | ------------------------------ | | `transcript` | string | Full transcribed text | | `segments` | array | Timestamped segments | | `language` | string | Detected or specified language | | `duration` | number | Audio duration in seconds | | `confidence` | number | Overall confidence score | --- # Profound (/en/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 Studio, 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 | --- # Mistral Parser (/en/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"; Studio 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); Studio 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); Studio 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) | --- # Tailscale (/en/integrations/tailscale) {/* MANUAL-CONTENT-START:intro */} Use [Tailscale](https://tailscale.com) to manage devices, DNS, ACLs, auth keys, users, and routes in a tailnet. ## Authentication [#authentication] The Tailscale block uses API key authentication. To get an API key: 1. Go to the [Tailscale admin console](https://login.tailscale.com/admin/settings/keys) 2. Navigate to **Settings > Keys** 3. Click **Generate API key** 4. Set an expiry (1-90 days) and copy the key (starts with `tskey-api-`) You must have an **Owner**, **Admin**, **IT admin**, or **Network admin** role to generate API keys. ## Tailnet Identifier [#tailnet-identifier] Every operation requires a **tailnet** parameter. This is typically your organization's domain name (e.g., `example.com`). You can also use `"-"` to refer to your default tailnet. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Interact with the Tailscale API to manage devices, DNS, ACLs, auth keys, users, and routes across your tailnet. ## Actions [#actions] ### Tailscale List Devices [#tailscale-list-devices] List all devices in the tailnet #### Input [#input] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------------------------------------------- | | `apiKey` | string | Yes | Tailscale API key | | `tailnet` | string | Yes | Tailnet name (e.g., example.com) or "-" for default | #### Output [#output] | Parameter | Type | Description | | ----------------------------- | ------- | ---------------------------------------------- | | `devices` | array | List of devices in the tailnet | | ↳ `id` | string | Legacy device ID | | ↳ `nodeId` | string | Preferred device ID | | ↳ `name` | string | Device name | | ↳ `hostname` | string | Device hostname | | ↳ `user` | string | Associated user | | ↳ `os` | string | Operating system | | ↳ `clientVersion` | string | Tailscale client version | | ↳ `addresses` | array | Tailscale IP addresses | | ↳ `tags` | array | Device tags | | ↳ `authorized` | boolean | Whether the device is authorized | | ↳ `blocksIncomingConnections` | boolean | Whether the device blocks incoming connections | | ↳ `keyExpiryDisabled` | boolean | Whether the device key is exempt from expiring | | ↳ `expires` | string | The device's auth key expiration timestamp | | ↳ `lastSeen` | string | Last seen timestamp | | ↳ `created` | string | Creation timestamp | | `count` | number | Total number of devices | ### Tailscale Get Device [#tailscale-get-device] Get details of a specific device by ID #### Input [#input-1] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | --------------------------------------------------- | | `apiKey` | string | Yes | Tailscale API key | | `tailnet` | string | Yes | Tailnet name (e.g., example.com) or "-" for default | | `deviceId` | string | Yes | Device ID | #### Output [#output-1] | Parameter | Type | Description | | --------------------------- | ------- | ---------------------------------------------- | | `id` | string | Legacy device ID | | `nodeId` | string | Preferred device ID | | `name` | string | Device name | | `hostname` | string | Device hostname | | `user` | string | Associated user | | `os` | string | Operating system | | `clientVersion` | string | Tailscale client version | | `addresses` | array | Tailscale IP addresses | | `tags` | array | Device tags | | `authorized` | boolean | Whether the device is authorized | | `blocksIncomingConnections` | boolean | Whether the device blocks incoming connections | | `keyExpiryDisabled` | boolean | Whether the device key is exempt from expiring | | `expires` | string | The device's auth key expiration timestamp | | `lastSeen` | string | Last seen timestamp | | `created` | string | Creation timestamp | | `isExternal` | boolean | Whether the device is external | | `updateAvailable` | boolean | Whether an update is available | | `machineKey` | string | Machine key | | `nodeKey` | string | Node key | ### Tailscale Delete Device [#tailscale-delete-device] Remove a device from the tailnet #### Input [#input-2] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | --------------------------------------------------- | | `apiKey` | string | Yes | Tailscale API key | | `tailnet` | string | Yes | Tailnet name (e.g., example.com) or "-" for default | | `deviceId` | string | Yes | Device ID to delete | #### Output [#output-2] | Parameter | Type | Description | | ---------- | ------- | ------------------------------------------- | | `success` | boolean | Whether the device was successfully deleted | | `deviceId` | string | ID of the deleted device | ### Tailscale Authorize Device [#tailscale-authorize-device] Authorize or deauthorize a device on the tailnet #### Input [#input-3] | Parameter | Type | Required | Description | | ------------ | ------- | -------- | ------------------------------------------------------------- | | `apiKey` | string | Yes | Tailscale API key | | `tailnet` | string | Yes | Tailnet name (e.g., example.com) or "-" for default | | `deviceId` | string | Yes | Device ID to authorize | | `authorized` | boolean | Yes | Whether to authorize (true) or deauthorize (false) the device | #### Output [#output-3] | Parameter | Type | Description | | ------------ | ------- | ---------------------------------------- | | `success` | boolean | Whether the operation succeeded | | `deviceId` | string | Device ID | | `authorized` | boolean | Authorization status after the operation | ### Tailscale Set Device Tags [#tailscale-set-device-tags] Set tags on a device in the tailnet #### Input [#input-4] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ---------------------------------------------------------------- | | `apiKey` | string | Yes | Tailscale API key | | `tailnet` | string | Yes | Tailnet name (e.g., example.com) or "-" for default | | `deviceId` | string | Yes | Device ID | | `tags` | string | Yes | Comma-separated list of tags (e.g., "tag:server,tag:production") | #### Output [#output-4] | Parameter | Type | Description | | ---------- | ------- | -------------------------------------- | | `success` | boolean | Whether the tags were successfully set | | `deviceId` | string | Device ID | | `tags` | array | Tags set on the device | ### Tailscale Get Device Routes [#tailscale-get-device-routes] Get the subnet routes for a device #### Input [#input-5] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | --------------------------------------------------- | | `apiKey` | string | Yes | Tailscale API key | | `tailnet` | string | Yes | Tailnet name (e.g., example.com) or "-" for default | | `deviceId` | string | Yes | Device ID | #### Output [#output-5] | Parameter | Type | Description | | ------------------ | ----- | --------------------------------------- | | `advertisedRoutes` | array | Subnet routes the device is advertising | | `enabledRoutes` | array | Subnet routes that are approved/enabled | ### Tailscale Set Device Routes [#tailscale-set-device-routes] Set the enabled subnet routes for a device #### Input [#input-6] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ------------------------------------------------------------------------------------ | | `apiKey` | string | Yes | Tailscale API key | | `tailnet` | string | Yes | Tailnet name (e.g., example.com) or "-" for default | | `deviceId` | string | Yes | Device ID | | `routes` | string | Yes | Comma-separated list of subnet routes to enable (e.g., "10.0.0.0/24,192.168.1.0/24") | #### Output [#output-6] | Parameter | Type | Description | | ------------------ | ----- | --------------------------------------- | | `advertisedRoutes` | array | Subnet routes the device is advertising | | `enabledRoutes` | array | Subnet routes that are now enabled | ### Tailscale Update Device Key [#tailscale-update-device-key] Enable or disable key expiry on a device #### Input [#input-7] | Parameter | Type | Required | Description | | ------------------- | ------- | -------- | --------------------------------------------------------- | | `apiKey` | string | Yes | Tailscale API key | | `tailnet` | string | Yes | Tailnet name (e.g., example.com) or "-" for default | | `deviceId` | string | Yes | Device ID | | `keyExpiryDisabled` | boolean | Yes | Whether to disable key expiry (true) or enable it (false) | #### Output [#output-7] | Parameter | Type | Description | | ------------------- | ------- | ---------------------------------- | | `success` | boolean | Whether the operation succeeded | | `deviceId` | string | Device ID | | `keyExpiryDisabled` | boolean | Whether key expiry is now disabled | ### Tailscale Expire Device Key [#tailscale-expire-device-key] Immediately expire a device's node key, requiring it to re-authenticate before it can reconnect to the tailnet #### Input [#input-8] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | --------------------------------------------------- | | `apiKey` | string | Yes | Tailscale API key | | `tailnet` | string | Yes | Tailnet name (e.g., example.com) or "-" for default | | `deviceId` | string | Yes | Device ID to expire the key for | #### Output [#output-8] | Parameter | Type | Description | | ---------- | ------- | ------------------------------------------------- | | `success` | boolean | Whether the device's key was successfully expired | | `deviceId` | string | Device ID | ### Tailscale List DNS Nameservers [#tailscale-list-dns-nameservers] Get the DNS nameservers configured for the tailnet #### Input [#input-9] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------------------------------------------- | | `apiKey` | string | Yes | Tailscale API key | | `tailnet` | string | Yes | Tailnet name (e.g., example.com) or "-" for default | #### Output [#output-9] | Parameter | Type | Description | | --------- | ----- | -------------------------------- | | `dns` | array | List of DNS nameserver addresses | ### Tailscale Set DNS Nameservers [#tailscale-set-dns-nameservers] Set the DNS nameservers for the tailnet #### Input [#input-10] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------------------------------------------------------------------------- | | `apiKey` | string | Yes | Tailscale API key | | `tailnet` | string | Yes | Tailnet name (e.g., example.com) or "-" for default | | `dns` | string | Yes | Comma-separated list of DNS nameserver IP addresses (e.g., "8.8.8.8,8.8.4.4") | #### Output [#output-10] | Parameter | Type | Description | | ---------- | ------- | ---------------------------------------- | | `dns` | array | Updated list of DNS nameserver addresses | | `magicDNS` | boolean | Whether MagicDNS is enabled | ### Tailscale Get DNS Preferences [#tailscale-get-dns-preferences] Get the DNS preferences for the tailnet including MagicDNS status #### Input [#input-11] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------------------------------------------- | | `apiKey` | string | Yes | Tailscale API key | | `tailnet` | string | Yes | Tailnet name (e.g., example.com) or "-" for default | #### Output [#output-11] | Parameter | Type | Description | | ---------- | ------- | --------------------------- | | `magicDNS` | boolean | Whether MagicDNS is enabled | ### Tailscale Set DNS Preferences [#tailscale-set-dns-preferences] Set DNS preferences for the tailnet (enable/disable MagicDNS) #### Input [#input-12] | Parameter | Type | Required | Description | | ---------- | ------- | -------- | ---------------------------------------------------- | | `apiKey` | string | Yes | Tailscale API key | | `tailnet` | string | Yes | Tailnet name (e.g., example.com) or "-" for default | | `magicDNS` | boolean | Yes | Whether to enable (true) or disable (false) MagicDNS | #### Output [#output-12] | Parameter | Type | Description | | ---------- | ------- | ----------------------- | | `magicDNS` | boolean | Updated MagicDNS status | ### Tailscale Get DNS Search Paths [#tailscale-get-dns-search-paths] Get the DNS search paths configured for the tailnet #### Input [#input-13] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------------------------------------------- | | `apiKey` | string | Yes | Tailscale API key | | `tailnet` | string | Yes | Tailnet name (e.g., example.com) or "-" for default | #### Output [#output-13] | Parameter | Type | Description | | ------------- | ----- | ------------------------------- | | `searchPaths` | array | List of DNS search path domains | ### Tailscale Set DNS Search Paths [#tailscale-set-dns-search-paths] Set the DNS search paths for the tailnet #### Input [#input-14] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ----------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Tailscale API key | | `tailnet` | string | Yes | Tailnet name (e.g., example.com) or "-" for default | | `searchPaths` | string | Yes | Comma-separated list of DNS search path domains (e.g., "corp.example.com,internal.example.com") | #### Output [#output-14] | Parameter | Type | Description | | ------------- | ----- | --------------------------------------- | | `searchPaths` | array | Updated list of DNS search path domains | ### Tailscale List Users [#tailscale-list-users] List all users in the tailnet #### Input [#input-15] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------------------------------------------- | | `apiKey` | string | Yes | Tailscale API key | | `tailnet` | string | Yes | Tailnet name (e.g., example.com) or "-" for default | #### Output [#output-15] | Parameter | Type | Description | | ----------------- | ------ | -------------------------------------- | | `users` | array | List of users in the tailnet | | ↳ `id` | string | User ID | | ↳ `displayName` | string | Display name | | ↳ `loginName` | string | Login name / email | | ↳ `profilePicURL` | string | Profile picture URL | | ↳ `role` | string | User role (owner, admin, member, etc.) | | ↳ `status` | string | User status (active, suspended, etc.) | | ↳ `type` | string | User type (member, shared, tagged) | | ↳ `created` | string | Creation timestamp | | ↳ `lastSeen` | string | Last seen timestamp | | ↳ `deviceCount` | number | Number of devices owned by user | | `count` | number | Total number of users | ### Tailscale Suspend User [#tailscale-suspend-user] Suspend a user's access to the tailnet #### Input [#input-16] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------------------------------------------- | | `apiKey` | string | Yes | Tailscale API key | | `tailnet` | string | Yes | Tailnet name (e.g., example.com) or "-" for default | | `userId` | string | Yes | User ID to suspend | #### Output [#output-16] | Parameter | Type | Description | | --------- | ------- | ------------------------------------------- | | `success` | boolean | Whether the user was successfully suspended | | `userId` | string | ID of the suspended user | ### Tailscale Delete User [#tailscale-delete-user] Delete a user from the tailnet #### Input [#input-17] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------------------------------------------- | | `apiKey` | string | Yes | Tailscale API key | | `tailnet` | string | Yes | Tailnet name (e.g., example.com) or "-" for default | | `userId` | string | Yes | User ID to delete | #### Output [#output-17] | Parameter | Type | Description | | --------- | ------- | ----------------------------------------- | | `success` | boolean | Whether the user was successfully deleted | | `userId` | string | ID of the deleted user | ### Tailscale Create Auth Key [#tailscale-create-auth-key] Create a new auth key for the tailnet to pre-authorize devices #### Input [#input-18] | Parameter | Type | Required | Description | | --------------- | ------- | -------- | ------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Tailscale API key | | `tailnet` | string | Yes | Tailnet name (e.g., example.com) or "-" for default | | `reusable` | boolean | No | Whether the key can be used more than once | | `ephemeral` | boolean | No | Whether devices authenticated with this key are ephemeral | | `preauthorized` | boolean | No | Whether devices are pre-authorized (skip manual approval) | | `tags` | string | No | Comma-separated list of tags for devices using this key (e.g., "tag:server,tag:prod") | | `description` | string | No | Description for the auth key | | `expirySeconds` | number | No | Key expiry time in seconds (default: 90 days) | #### Output [#output-18] | Parameter | Type | Description | | ----------------- | ------- | ------------------------------------------------ | | `id` | string | Auth key ID | | `key` | string | The auth key value (only shown once at creation) | | `description` | string | Key description | | `created` | string | Creation timestamp | | `expires` | string | Expiration timestamp | | `revoked` | string | Revocation timestamp (empty if not revoked) | | `capabilities` | object | Key capabilities | | ↳ `reusable` | boolean | Whether the key is reusable | | ↳ `ephemeral` | boolean | Whether devices are ephemeral | | ↳ `preauthorized` | boolean | Whether devices are pre-authorized | | ↳ `tags` | array | Tags applied to devices using this key | ### Tailscale List Auth Keys [#tailscale-list-auth-keys] List all auth keys in the tailnet #### Input [#input-19] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------------------------------------------- | | `apiKey` | string | Yes | Tailscale API key | | `tailnet` | string | Yes | Tailnet name (e.g., example.com) or "-" for default | #### Output [#output-19] | Parameter | Type | Description | | ----------------- | ------- | ---------------------------------- | | `keys` | array | List of auth keys | | ↳ `id` | string | Auth key ID | | ↳ `description` | string | Key description | | ↳ `created` | string | Creation timestamp | | ↳ `expires` | string | Expiration timestamp | | ↳ `revoked` | string | Revocation timestamp | | ↳ `capabilities` | object | Key capabilities | | ↳ `reusable` | boolean | Whether the key is reusable | | ↳ `ephemeral` | boolean | Whether devices are ephemeral | | ↳ `preauthorized` | boolean | Whether devices are pre-authorized | | ↳ `tags` | array | Tags applied to devices | | `count` | number | Total number of auth keys | ### Tailscale Get Auth Key [#tailscale-get-auth-key] Get details of a specific auth key #### Input [#input-20] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------------------------------------------- | | `apiKey` | string | Yes | Tailscale API key | | `tailnet` | string | Yes | Tailnet name (e.g., example.com) or "-" for default | | `keyId` | string | Yes | Auth key ID | #### Output [#output-20] | Parameter | Type | Description | | ----------------- | ------- | -------------------------------------- | | `id` | string | Auth key ID | | `description` | string | Key description | | `created` | string | Creation timestamp | | `expires` | string | Expiration timestamp | | `revoked` | string | Revocation timestamp | | `capabilities` | object | Key capabilities | | ↳ `reusable` | boolean | Whether the key is reusable | | ↳ `ephemeral` | boolean | Whether devices are ephemeral | | ↳ `preauthorized` | boolean | Whether devices are pre-authorized | | ↳ `tags` | array | Tags applied to devices using this key | ### Tailscale Delete Auth Key [#tailscale-delete-auth-key] Revoke and delete an auth key #### Input [#input-21] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------------------------------------------- | | `apiKey` | string | Yes | Tailscale API key | | `tailnet` | string | Yes | Tailnet name (e.g., example.com) or "-" for default | | `keyId` | string | Yes | Auth key ID to delete | #### Output [#output-21] | Parameter | Type | Description | | --------- | ------- | --------------------------------------------- | | `success` | boolean | Whether the auth key was successfully deleted | | `keyId` | string | ID of the deleted auth key | ### Tailscale Get ACL [#tailscale-get-acl] Get the current ACL policy for the tailnet #### Input [#input-22] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------------------------------------------- | | `apiKey` | string | Yes | Tailscale API key | | `tailnet` | string | Yes | Tailnet name (e.g., example.com) or "-" for default | #### Output [#output-22] | Parameter | Type | Description | | --------- | ------ | ----------------------------------------------------------------------- | | `acl` | string | ACL policy as JSON string | | `etag` | string | ETag for the current ACL version (use with If-Match header for updates) | ### Tailscale Set ACL [#tailscale-set-acl] Replace the ACL policy file for the tailnet #### Input [#input-23] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------ | | `apiKey` | string | Yes | Tailscale API key | | `tailnet` | string | Yes | Tailnet name (e.g., example.com) or "-" for default | | `acl` | string | Yes | The new ACL policy file, as a JSON string | | `ifMatch` | string | No | ETag from a prior Get ACL call to avoid overwriting concurrent updates. Use "ts-default" to only replace an untouched default policy file. | #### Output [#output-23] | Parameter | Type | Description | | --------- | ------ | -------------------------------------------------------------------------- | | `acl` | string | Updated ACL policy as JSON string | | `etag` | string | ETag for the new ACL version (use with If-Match header for future updates) | --- # Jina (/en/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 | --- # Google Docs (/en/integrations/google_docs) {/* MANUAL-CONTENT-START:intro */} Use [Google Docs](https://docs.google.com) in Studio 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 | --- # Linear (/en/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 Seeyu Agent Studio, 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 Seeyu Agent Studio, 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) | --- # Box (/en/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 | | `modifiedBy` | object | User who last modified the file | | `ownedBy` | object | User who owns the file | | `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 | | `modifiedBy` | object | User who last modified the file | | `ownedBy` | object | User who owns the file | | `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 | | `sourceFiles` | array | Source files for signing | | `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 | | `sourceFiles` | array | Source files for signing | | `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 | | ↳ `sourceFiles` | array | Source files for signing | | ↳ `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 | | `sourceFiles` | array | Source files for signing | | `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 | --- # AWS Secrets Manager (/en/integrations/secrets_manager) {/* MANUAL-CONTENT-START:intro */} [AWS Secrets Manager](https://aws.amazon.com/secrets-manager/) is a secrets management service that helps you protect access to your applications, services, and IT resources. It enables you to rotate, manage, and retrieve database credentials, API keys, and other secrets throughout their lifecycle. With AWS Secrets Manager, you can: * **Securely store secrets**: Encrypt secrets at rest using AWS KMS encryption keys * **Retrieve secrets programmatically**: Access secrets from your applications and workflows without hardcoding credentials * **Rotate secrets automatically**: Configure automatic rotation for supported services like RDS, Redshift, and DocumentDB * **Audit access**: Track secret access and changes through AWS CloudTrail integration * **Control access with IAM**: Use fine-grained IAM policies to manage who can access which secrets * **Replicate across regions**: Automatically replicate secrets to multiple AWS regions for disaster recovery In Studio, the AWS Secrets Manager integration allows your workflows to securely retrieve credentials and configuration values at runtime, create and manage secrets as part of automation pipelines, and maintain a centralized secrets store that your agents can access. This is particularly useful for workflows that need to authenticate with external services, rotate credentials, or manage sensitive configuration across environments — all without exposing secrets in your workflow definitions. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate AWS Secrets Manager into the workflow. Can retrieve, create, update, list, delete, describe, tag, untag, restore, and rotate secrets. ## Actions [#actions] ### Secrets Manager Get Secret [#secrets-manager-get-secret] Retrieve a secret value from AWS Secrets Manager #### 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 | | `secretId` | string | Yes | The name or ARN of the secret to retrieve | | `versionId` | string | No | The unique identifier of the version to retrieve | | `versionStage` | string | No | The staging label of the version to retrieve (e.g., AWSCURRENT, AWSPREVIOUS) | #### Output [#output] | Parameter | Type | Description | | --------------- | ------ | --------------------------------------- | | `name` | string | Name of the secret | | `secretValue` | string | The decrypted secret value | | `arn` | string | ARN of the secret | | `versionId` | string | Version ID of the secret | | `versionStages` | array | Staging labels attached to this version | | `createdDate` | string | Date the secret was created | ### Secrets Manager List Secrets [#secrets-manager-list-secrets] List secrets stored in AWS Secrets Manager #### 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 secrets to return (1-100, default 100) | | `nextToken` | string | No | Pagination token from a previous request | #### Output [#output-1] | Parameter | Type | Description | | ----------- | ------ | -------------------------------------------------------------------------------------------------------- | | `secrets` | json | List of secrets with name, ARN, description, dates, rotation rules/window, and version-to-stage mappings | | `nextToken` | string | Pagination token for the next page of results | | `count` | number | Number of secrets returned | ### Secrets Manager Create Secret [#secrets-manager-create-secret] Create a new secret in AWS Secrets Manager #### 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 secret to create | | `secretValue` | string | Yes | The secret value (plain text or JSON string) | | `description` | string | No | Description of the secret | #### Output [#output-2] | Parameter | Type | Description | | ----------- | ------ | -------------------------------- | | `message` | string | Operation status message | | `name` | string | Name of the created secret | | `arn` | string | ARN of the created secret | | `versionId` | string | Version ID of the created secret | ### Secrets Manager Update Secret [#secrets-manager-update-secret] Update the value of an existing secret in AWS Secrets Manager #### 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 | | `secretId` | string | Yes | The name or ARN of the secret to update | | `secretValue` | string | Yes | The new secret value (plain text or JSON string) | | `description` | string | No | Updated description of the secret | #### Output [#output-3] | Parameter | Type | Description | | ----------- | ------ | -------------------------------- | | `message` | string | Operation status message | | `name` | string | Name of the updated secret | | `arn` | string | ARN of the updated secret | | `versionId` | string | Version ID of the updated secret | ### Secrets Manager Delete Secret [#secrets-manager-delete-secret] Delete a secret from AWS Secrets Manager #### 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 | | `secretId` | string | Yes | The name or ARN of the secret to delete | | `recoveryWindowInDays` | number | No | Number of days before permanent deletion (7-30, default 30) | | `forceDelete` | boolean | No | If true, immediately delete without recovery window | #### Output [#output-4] | Parameter | Type | Description | | -------------- | ------ | -------------------------- | | `message` | string | Operation status message | | `name` | string | Name of the deleted secret | | `arn` | string | ARN of the deleted secret | | `deletionDate` | string | Scheduled deletion date | ### Secrets Manager Describe Secret [#secrets-manager-describe-secret] Retrieve full metadata for a secret in AWS Secrets Manager, including rotation configuration and replication status, without exposing the secret value #### 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 | | `secretId` | string | Yes | The name or ARN of the secret to describe | #### Output [#output-5] | Parameter | Type | Description | | -------------------- | ------- | -------------------------------------------------------------- | | `name` | string | Name of the secret | | `arn` | string | ARN of the secret | | `description` | string | Description of the secret | | `kmsKeyId` | string | KMS key ID used to encrypt the secret | | `rotationEnabled` | boolean | Whether automatic rotation is enabled | | `rotationLambdaARN` | string | ARN of the Lambda function used for rotation | | `rotationRules` | json | Rotation schedule configuration | | `lastRotatedDate` | string | Date the secret was last rotated | | `lastChangedDate` | string | Date the secret was last changed | | `lastAccessedDate` | string | Date the secret was last accessed | | `deletedDate` | string | Scheduled deletion date | | `nextRotationDate` | string | Date the secret is next scheduled to rotate | | `tags` | array | Tags attached to the secret | | `versionIdsToStages` | json | Map of version IDs to their staging labels | | `owningService` | string | ID of the AWS service that manages this secret, if any | | `createdDate` | string | Date the secret was created | | `primaryRegion` | string | The primary region of the secret, if replicated | | `replicationStatus` | array | Replication status for each region the secret is replicated to | ### Secrets Manager Tag Resource [#secrets-manager-tag-resource] Attach tags to a secret in AWS Secrets Manager #### 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 | | `secretId` | string | Yes | The name or ARN of the secret to tag | | `tags` | json | Yes | Tags to attach, as an array of \{key, value} pairs (max 50) | #### Output [#output-6] | Parameter | Type | Description | | --------- | ------ | -------------------------------- | | `message` | string | Operation status message | | `name` | string | Name or ARN of the tagged secret | ### Secrets Manager Untag Resource [#secrets-manager-untag-resource] Remove tags from a secret in AWS Secrets Manager #### 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 | | `secretId` | string | Yes | The name or ARN of the secret to untag | | `tagKeys` | json | Yes | Tag keys to remove, as an array of strings (max 50) | #### Output [#output-7] | Parameter | Type | Description | | --------- | ------ | ---------------------------------- | | `message` | string | Operation status message | | `name` | string | Name or ARN of the untagged secret | ### Secrets Manager Restore Secret [#secrets-manager-restore-secret] Cancel a scheduled deletion for a secret in AWS Secrets Manager, restoring access to it #### 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 | | `secretId` | string | Yes | The name or ARN of the secret to restore | #### Output [#output-8] | Parameter | Type | Description | | --------- | ------ | --------------------------- | | `message` | string | Operation status message | | `name` | string | Name of the restored secret | | `arn` | string | ARN of the restored secret | ### Secrets Manager Rotate Secret [#secrets-manager-rotate-secret] Start or reconfigure rotation for a secret in AWS Secrets Manager #### 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 | | `secretId` | string | Yes | The name or ARN of the secret to rotate | | `clientRequestToken` | string | No | Idempotency token for the new secret version (32-64 characters) | | `rotationLambdaARN` | string | No | ARN of the Lambda function that performs rotation (omit for managed rotation) | | `automaticallyAfterDays` | number | No | Number of days between rotations (1-1000). Mutually exclusive with schedule expression | | `duration` | string | No | Length of the rotation window in hours, e.g. "3h" | | `scheduleExpression` | string | No | A cron() or rate() expression defining the rotation schedule | | `rotateImmediately` | boolean | No | Whether to rotate immediately (default true) or wait for the next scheduled window | #### Output [#output-9] | Parameter | Type | Description | | ----------- | ------ | ------------------------------------------------ | | `message` | string | Operation status message | | `name` | string | Name of the secret | | `arn` | string | ARN of the secret | | `versionId` | string | ID of the new secret version created by rotation | --- # Meta (/en/integrations/meta) ## Triggers [#triggers] A **Trigger** is a block that starts a workflow when an event happens in this service. ### Facebook Comment Webhook [#facebook-comment-webhook] Trigger workflow when a comment is added, edited, or removed on a Facebook Page post #### Configuration [#configuration] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | ----------------------------------------------------------------- | | `triggerCredentials` | string | Yes | Connect your Facebook Pages account. | | `pageIdFilter` | string | No | Only trigger for events on these pages. Leave empty to match all. | | `eventTypeFilter` | string | No | Only trigger for specific event types. Defaults to all events. | #### Output [#output] | Parameter | Type | Description | | -------------------- | ------- | ---------------------------------------------------------- | | `pageId` | string | Facebook Page ID that received the comment | | `post` | object | post output from the tool | | ↳ `id` | string | Internal post record ID | | ↳ `sourceId` | string | Facebook post ID | | ↳ `sourceType` | string | Source platform type | | ↳ `message` | string | Post message text | | ↳ `mediaProductType` | string | Media product type (FEED, AD) | | ↳ `files` | file\[] | Post media files (images or videos) as S3 URL references | | `comment` | object | comment output from the tool | | ↳ `id` | string | Internal comment record ID | | ↳ `sourceId` | string | Facebook comment source ID | | ↳ `postId` | string | Parent post ID | | ↳ `fromId` | string | Facebook user ID of the commenter | | ↳ `fromName` | string | Name of the commenter | | ↳ `message` | string | Comment text content | | ↳ `commentId` | string | Facebook comment ID (use this for replies) | | `channelType` | string | Channel type identifier (facebook) | | `eventType` | string | Event type (comment) | | `inboxId` | string | Inbox identifier associated with the Facebook Page channel | *** ### Instagram Comment Webhook [#instagram-comment-webhook] Trigger workflow when a comment is added on an Instagram post #### Configuration [#configuration-1] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | ----------------------------------------------------------------- | | `triggerCredentials` | string | Yes | Connect your Facebook Pages account. | | `pageIdFilter` | string | No | Only trigger for events on these pages. Leave empty to match all. | | `eventTypeFilter` | string | No | Only trigger for specific event types. Defaults to all events. | #### Output [#output-1] | Parameter | Type | Description | | -------------------- | ------- | -------------------------------------------------------- | | `pageId` | string | Facebook Page ID that received the comment | | `post` | object | post output from the tool | | ↳ `id` | string | Internal post record ID | | ↳ `sourceId` | string | Instagram media ID | | ↳ `sourceType` | string | Source platform type | | ↳ `message` | string | Post caption or message text | | ↳ `mediaProductType` | string | Instagram media product type (FEED, REELS, STORIES, AD) | | ↳ `files` | file\[] | Post media files (images or videos) as S3 URL references | | `comment` | object | comment output from the tool | | ↳ `id` | string | Internal comment record ID | | ↳ `sourceId` | string | Instagram comment source ID | | ↳ `postId` | string | Parent post ID | | ↳ `fromId` | string | Instagram user ID of the commenter | | ↳ `fromName` | string | Instagram username of the commenter | | ↳ `message` | string | Comment text content | | ↳ `commentId` | string | Instagram comment ID (use this for replies) | | `channelType` | string | Channel type identifier (instagram) | | `eventType` | string | Event type (comment or mention) | | `inboxId` | string | Inbox identifier associated with the Instagram channel | --- # Harmonic (/en/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 Studio 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. Studio 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 Studio 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 Studio'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; Studio 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; Studio 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; Studio 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 | --- # Seeyu (/en/integrations/seeyu) ## Triggers [#triggers] A **Trigger** is a block that starts a workflow when an event happens in this service. ### Conversation Created [#conversation-created] Triggers when a new conversation is created in Seeyu Chat. #### Output [#output] | Parameter | Type | Description | | ---------------- | ------ | ------------------------------------------------------ | | `conversationId` | string | The ID of the newly created conversation | | `inboxId` | string | The inbox ID where the conversation was created | | `contactId` | string | The ID of the contact who started the conversation | | `contactName` | string | The name of the contact | | `contactEmail` | string | The email of the contact | | `channel` | string | The communication channel (e.g., web, whatsapp, email) | | `initialMessage` | string | The first message in the conversation | *** ### Message Received [#message-received] Triggers when a new message is received in a Seeyu Chat conversation. #### Output [#output-1] | Parameter | Type | Description | | ------------------------------ | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `conversationId` | string | The ID of the conversation | | `messageId` | string | The ID of the received message | | `content` | string | The text content of the message | | `contentType` | string | The content type of the message (e.g., text, input\_email, input\_csat, input\_select, cards, form, article) | | `attachments` | file\[] | Media attachments on the message as files. Each file has: id, name, url, type (MIME type), size, key | | `contactId` | string | The ID of the contact who sent the message | | `contactName` | string | The name of the contact who sent the message | | `contactEmail` | string | The email address of the contact who sent the message | | `contactPhone` | string | The phone number of the contact who sent the message | | `contactCustomAttributes` | json | Custom attributes defined on the contact record, as a key-value object | | `conversationCustomAttributes` | json | Custom attributes defined on the conversation record, as a key-value object | | `widgetParams` | json | Additional params the host page passed to the web widget SDK, as a key-value object. Empty on every other channel | | `inboxId` | string | The inbox ID of the conversation | | `channel` | string | The communication channel (e.g., web, whatsapp, email) | | `isResumed` | boolean | Whether this message resumed a previously snoozed or resolved conversation | | `conversationStatus` | string | Conversation status: open, pending, snoozed, resolved or waiting\_csat | | `conversationPriority` | string | Conversation priority: none, low, medium, high or urgent | | `labels` | array | Labels attached to the conversation | | `messageCreatedAt` | string | When the newest message in this batch was created, ISO 8601. Capture it before a wait and compare it against timings.lastInboundAt afterwards to tell whether the contact replied in the meantime | | `serverTime` | string | The server clock at the moment this trigger fired. Anchor every relative time calculation to this instead of assuming the current time | | `timings` | json | serverTime, conversationCreatedAt, lastActivityAt, lastInboundAt (newest contact message), lastOutboundAt (newest agent or AI reply), waitingSince, firstReplyAt, resolvedAt, snoozedUntil, aiAgentPausedAt, aiHandoffAt, plus minutesSinceCreated, minutesSinceLastActivity, minutesSinceLastInbound, minutesSinceLastOutbound and minutesWaiting. A null delta means the event has not happened, never zero minutes ago | | `replyWindow` | json | channel, gated, isOpen, expiresAt, minutesRemaining and requiresTemplate for the customer-care reply window. Only WhatsApp is gated; every other channel reports isOpen true | | `assignee` | json | id, name, availability (online, busy or offline), availabilityReason, availabilityReasonNote and availabilitySource for the assigned agent. availabilitySource is "live" when the realtime presence service answered and "stored" when it did not — a "stored" reading is unconfirmed, not proof the agent went offline | | `team` | json | id and name of the assigned team | --- # Google Calendar (/en/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 Free/Busy [#google-calendar-freebusy] Query free/busy information for one or more Google Calendars. Returns API-aligned fields only. #### Input [#input-10] | 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-10] | 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-11] | 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-11] | 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-12] | 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-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 Delete Calendar [#google-calendar-delete-calendar] Permanently delete a secondary calendar. Returns API-aligned fields only. #### Input [#input-13] | 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-13] | 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-14] | 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-14] | 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-15] | 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-15] | 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-16] | 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-16] | 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-17] | 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-17] | 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-18] | 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 | --- # Mem0 (/en/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 | --- # RB2B (/en/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 Studio, 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 | --- # Google Meet (/en/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 | --- # Fireflies (/en/integrations/fireflies) {/* MANUAL-CONTENT-START:intro */} [Fireflies.ai](https://fireflies.ai/) is a meeting transcription and intelligence platform that integrates with Seeyu Agent Studio, allowing your agents to work directly with meeting recordings, transcripts, and insights through no-code automations. The Fireflies integration in Seeyu Agent Studio 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 Seeyu Agent Studio 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) | --- # Flint (/en/integrations/flint) {/* MANUAL-CONTENT-START:intro */} Use [Flint](https://www.flint.com/) in Studio 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 | --- # Asana (/en/integrations/asana) {/* MANUAL-CONTENT-START:intro */} Use [Asana](https://asana.com/) in Studio 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) | --- # X (/en/integrations/x) {/* MANUAL-CONTENT-START:intro */} Use [X](https://x.com/) through an OAuth connection to manage posts and bookmarks, search content, inspect user relationships, and retrieve trends and account usage. The actions below document the available posting and account controls. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate X into the workflow. Search tweets, manage bookmarks, follow/block/mute users, like and retweet, view trends, and more. ## Actions [#actions] ### X Create Tweet [#x-create-tweet] Create a new tweet, reply, or quote tweet on X #### Input [#input] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | -------------------------------------------------------------------------- | | `text` | string | Yes | The text content of the tweet (max 280 characters) | | `replyToTweetId` | string | No | Tweet ID to reply to | | `quoteTweetId` | string | No | Tweet ID to quote | | `mediaIds` | string | No | Comma-separated media IDs to attach (up to 4) | | `replySettings` | string | No | Who can reply: "mentionedUsers", "following", "subscribers", or "verified" | #### Output [#output] | Parameter | Type | Description | | --------- | ------ | ----------------------------- | | `id` | string | The ID of the created tweet | | `text` | string | The text of the created tweet | ### X Delete Tweet [#x-delete-tweet] Delete a tweet authored by the authenticated user #### Input [#input-1] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------------------------- | | `tweetId` | string | Yes | The ID of the tweet to delete | #### Output [#output-1] | Parameter | Type | Description | | --------- | ------- | ------------------------------------------ | | `deleted` | boolean | Whether the tweet was successfully deleted | ### X Search Tweets [#x-search-tweets] Search for recent tweets using keywords, hashtags, or advanced query operators #### Input [#input-2] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------------------------------------------------------------------------------------------------ | | `query` | string | Yes | Search query (supports operators like "from:", "to:", "#hashtag", "has:images", "is:retweet", "lang:") | | `maxResults` | number | No | Maximum number of results (10-100, default 10) | | `startTime` | string | No | Oldest UTC timestamp in ISO 8601 format (e.g., 2024-01-01T00:00:00Z) | | `endTime` | string | No | Newest UTC timestamp in ISO 8601 format | | `sinceId` | string | No | Returns tweets with ID greater than this | | `untilId` | string | No | Returns tweets with ID less than this | | `sortOrder` | string | No | Sort order: "recency" or "relevancy" | | `nextToken` | string | No | Pagination token for next page of results | #### Output [#output-2] | Parameter | Type | Description | | ------------------- | ------- | ------------------------------------------------------------ | | `tweets` | array | Array of tweets matching the search query | | ↳ `id` | string | Tweet ID | | ↳ `text` | string | Tweet text content | | ↳ `createdAt` | string | Tweet creation timestamp | | ↳ `authorId` | string | Author user ID | | ↳ `conversationId` | string | Conversation thread ID | | ↳ `inReplyToUserId` | string | User ID being replied to | | ↳ `publicMetrics` | object | Engagement metrics | | ↳ `retweetCount` | number | Number of retweets | | ↳ `replyCount` | number | Number of replies | | ↳ `likeCount` | number | Number of likes | | ↳ `quoteCount` | number | Number of quotes | | `includes` | object | Additional data including user profiles | | ↳ `users` | array | Array of user objects referenced in tweets | | ↳ `id` | string | User ID | | ↳ `username` | string | Username without @ symbol | | ↳ `name` | string | Display name | | ↳ `description` | string | User bio | | ↳ `profileImageUrl` | string | Profile image URL | | ↳ `verified` | boolean | Whether the user is verified | | ↳ `metrics` | object | User statistics | | ↳ `followersCount` | number | Number of followers | | ↳ `followingCount` | number | Number of users following | | ↳ `tweetCount` | number | Total number of tweets | | `meta` | object | Search metadata including result count and pagination tokens | | ↳ `resultCount` | number | Number of results returned | | ↳ `newestId` | string | ID of the newest tweet | | ↳ `oldestId` | string | ID of the oldest tweet | | ↳ `nextToken` | string | Pagination token for next page | ### X Get Tweets By IDs [#x-get-tweets-by-ids] Look up multiple tweets by their IDs (up to 100) #### Input [#input-3] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------- | | `ids` | string | Yes | Comma-separated tweet IDs (up to 100) | #### Output [#output-3] | Parameter | Type | Description | | ------------------- | ------- | ------------------------------------------ | | `tweets` | array | Array of tweets matching the provided IDs | | ↳ `id` | string | Tweet ID | | ↳ `text` | string | Tweet text content | | ↳ `createdAt` | string | Tweet creation timestamp | | ↳ `authorId` | string | Author user ID | | ↳ `conversationId` | string | Conversation thread ID | | ↳ `inReplyToUserId` | string | User ID being replied to | | ↳ `publicMetrics` | object | Engagement metrics | | ↳ `retweetCount` | number | Number of retweets | | ↳ `replyCount` | number | Number of replies | | ↳ `likeCount` | number | Number of likes | | ↳ `quoteCount` | number | Number of quotes | | `includes` | object | Additional data including user profiles | | ↳ `users` | array | Array of user objects referenced in tweets | | ↳ `id` | string | User ID | | ↳ `username` | string | Username without @ symbol | | ↳ `name` | string | Display name | | ↳ `description` | string | User bio | | ↳ `profileImageUrl` | string | Profile image URL | | ↳ `verified` | boolean | Whether the user is verified | | ↳ `metrics` | object | User statistics | | ↳ `followersCount` | number | Number of followers | | ↳ `followingCount` | number | Number of users following | | ↳ `tweetCount` | number | Total number of tweets | ### X Get Quote Tweets [#x-get-quote-tweets] Get tweets that quote a specific tweet #### Input [#input-4] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ---------------------------------------------- | | `tweetId` | string | Yes | The tweet ID to get quote tweets for | | `maxResults` | number | No | Maximum number of results (10-100, default 10) | | `paginationToken` | string | No | Pagination token for next page | #### Output [#output-4] | Parameter | Type | Description | | ------------------- | ------ | -------------------------- | | `tweets` | array | Array of quote tweets | | ↳ `id` | string | Tweet ID | | ↳ `text` | string | Tweet text content | | ↳ `createdAt` | string | Tweet creation timestamp | | ↳ `authorId` | string | Author user ID | | ↳ `conversationId` | string | Conversation thread ID | | ↳ `inReplyToUserId` | string | User ID being replied to | | ↳ `publicMetrics` | object | Engagement metrics | | ↳ `retweetCount` | number | Number of retweets | | ↳ `replyCount` | number | Number of replies | | ↳ `likeCount` | number | Number of likes | | ↳ `quoteCount` | number | Number of quotes | | `meta` | object | Pagination metadata | | ↳ `resultCount` | number | Number of results returned | | ↳ `nextToken` | string | Token for next page | ### X Hide Reply [#x-hide-reply] Hide or unhide a reply to a tweet authored by the authenticated user #### Input [#input-5] | Parameter | Type | Required | Description | | --------- | ------- | -------- | ---------------------------------------------- | | `tweetId` | string | Yes | The reply tweet ID to hide or unhide | | `hidden` | boolean | Yes | Set to true to hide the reply, false to unhide | #### Output [#output-5] | Parameter | Type | Description | | --------- | ------- | ------------------------------- | | `hidden` | boolean | Whether the reply is now hidden | ### X Get User Tweets [#x-get-user-tweets] Get tweets authored by a specific user #### Input [#input-6] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ------------------------------------------------------- | | `userId` | string | Yes | The user ID whose tweets to retrieve | | `maxResults` | number | No | Maximum number of results (5-100, default 10) | | `paginationToken` | string | No | Pagination token for next page of results | | `startTime` | string | No | Oldest UTC timestamp in ISO 8601 format | | `endTime` | string | No | Newest UTC timestamp in ISO 8601 format | | `sinceId` | string | No | Returns tweets with ID greater than this | | `untilId` | string | No | Returns tweets with ID less than this | | `exclude` | string | No | Comma-separated types to exclude: "retweets", "replies" | #### Output [#output-6] | Parameter | Type | Description | | ------------------- | ------- | ------------------------------------------ | | `tweets` | array | Array of tweets by the user | | ↳ `id` | string | Tweet ID | | ↳ `text` | string | Tweet text content | | ↳ `createdAt` | string | Tweet creation timestamp | | ↳ `authorId` | string | Author user ID | | ↳ `conversationId` | string | Conversation thread ID | | ↳ `inReplyToUserId` | string | User ID being replied to | | ↳ `publicMetrics` | object | Engagement metrics | | ↳ `retweetCount` | number | Number of retweets | | ↳ `replyCount` | number | Number of replies | | ↳ `likeCount` | number | Number of likes | | ↳ `quoteCount` | number | Number of quotes | | `includes` | object | Additional data including user profiles | | ↳ `users` | array | Array of user objects referenced in tweets | | ↳ `id` | string | User ID | | ↳ `username` | string | Username without @ symbol | | ↳ `name` | string | Display name | | ↳ `description` | string | User bio | | ↳ `profileImageUrl` | string | Profile image URL | | ↳ `verified` | boolean | Whether the user is verified | | ↳ `metrics` | object | User statistics | | ↳ `followersCount` | number | Number of followers | | ↳ `followingCount` | number | Number of users following | | ↳ `tweetCount` | number | Total number of tweets | | `meta` | object | Pagination metadata | | ↳ `resultCount` | number | Number of results returned | | ↳ `newestId` | string | ID of the newest tweet | | ↳ `oldestId` | string | ID of the oldest tweet | | ↳ `nextToken` | string | Token for next page | | ↳ `previousToken` | string | Token for previous page | ### X Get User Mentions [#x-get-user-mentions] Get tweets that mention a specific user #### Input [#input-7] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | --------------------------------------------- | | `userId` | string | Yes | The user ID whose mentions to retrieve | | `maxResults` | number | No | Maximum number of results (5-100, default 10) | | `paginationToken` | string | No | Pagination token for next page of results | | `startTime` | string | No | Oldest UTC timestamp in ISO 8601 format | | `endTime` | string | No | Newest UTC timestamp in ISO 8601 format | | `sinceId` | string | No | Returns tweets with ID greater than this | | `untilId` | string | No | Returns tweets with ID less than this | #### Output [#output-7] | Parameter | Type | Description | | ------------------- | ------- | ------------------------------------------ | | `tweets` | array | Array of tweets mentioning the user | | ↳ `id` | string | Tweet ID | | ↳ `text` | string | Tweet text content | | ↳ `createdAt` | string | Tweet creation timestamp | | ↳ `authorId` | string | Author user ID | | ↳ `conversationId` | string | Conversation thread ID | | ↳ `inReplyToUserId` | string | User ID being replied to | | ↳ `publicMetrics` | object | Engagement metrics | | ↳ `retweetCount` | number | Number of retweets | | ↳ `replyCount` | number | Number of replies | | ↳ `likeCount` | number | Number of likes | | ↳ `quoteCount` | number | Number of quotes | | `includes` | object | Additional data including user profiles | | ↳ `users` | array | Array of user objects referenced in tweets | | ↳ `id` | string | User ID | | ↳ `username` | string | Username without @ symbol | | ↳ `name` | string | Display name | | ↳ `description` | string | User bio | | ↳ `profileImageUrl` | string | Profile image URL | | ↳ `verified` | boolean | Whether the user is verified | | ↳ `metrics` | object | User statistics | | ↳ `followersCount` | number | Number of followers | | ↳ `followingCount` | number | Number of users following | | ↳ `tweetCount` | number | Total number of tweets | | `meta` | object | Pagination metadata | | ↳ `resultCount` | number | Number of results returned | | ↳ `newestId` | string | ID of the newest tweet | | ↳ `oldestId` | string | ID of the oldest tweet | | ↳ `nextToken` | string | Token for next page | | ↳ `previousToken` | string | Token for previous page | ### X Get User Timeline [#x-get-user-timeline] Get the reverse chronological home timeline for the authenticated user #### Input [#input-8] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ------------------------------------------------------- | | `userId` | string | Yes | The authenticated user ID | | `maxResults` | number | No | Maximum number of results (1-100, default 10) | | `paginationToken` | string | No | Pagination token for next page of results | | `startTime` | string | No | Oldest UTC timestamp in ISO 8601 format | | `endTime` | string | No | Newest UTC timestamp in ISO 8601 format | | `sinceId` | string | No | Returns tweets with ID greater than this | | `untilId` | string | No | Returns tweets with ID less than this | | `exclude` | string | No | Comma-separated types to exclude: "retweets", "replies" | #### Output [#output-8] | Parameter | Type | Description | | ------------------- | ------- | ------------------------------------------ | | `tweets` | array | Array of timeline tweets | | ↳ `id` | string | Tweet ID | | ↳ `text` | string | Tweet text content | | ↳ `createdAt` | string | Tweet creation timestamp | | ↳ `authorId` | string | Author user ID | | ↳ `conversationId` | string | Conversation thread ID | | ↳ `inReplyToUserId` | string | User ID being replied to | | ↳ `publicMetrics` | object | Engagement metrics | | ↳ `retweetCount` | number | Number of retweets | | ↳ `replyCount` | number | Number of replies | | ↳ `likeCount` | number | Number of likes | | ↳ `quoteCount` | number | Number of quotes | | `includes` | object | Additional data including user profiles | | ↳ `users` | array | Array of user objects referenced in tweets | | ↳ `id` | string | User ID | | ↳ `username` | string | Username without @ symbol | | ↳ `name` | string | Display name | | ↳ `description` | string | User bio | | ↳ `profileImageUrl` | string | Profile image URL | | ↳ `verified` | boolean | Whether the user is verified | | ↳ `metrics` | object | User statistics | | ↳ `followersCount` | number | Number of followers | | ↳ `followingCount` | number | Number of users following | | ↳ `tweetCount` | number | Total number of tweets | | `meta` | object | Pagination metadata | | ↳ `resultCount` | number | Number of results returned | | ↳ `newestId` | string | ID of the newest tweet | | ↳ `oldestId` | string | ID of the oldest tweet | | ↳ `nextToken` | string | Token for next page | | ↳ `previousToken` | string | Token for previous page | ### X Manage Like [#x-manage-like] Like or unlike a tweet on X #### Input [#input-9] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------- | | `userId` | string | Yes | The authenticated user ID | | `tweetId` | string | Yes | The tweet ID to like or unlike | | `action` | string | Yes | Action to perform: "like" or "unlike" | #### Output [#output-9] | Parameter | Type | Description | | --------- | ------- | ------------------------------ | | `liked` | boolean | Whether the tweet is now liked | ### X Manage Retweet [#x-manage-retweet] Retweet or unretweet a tweet on X #### Input [#input-10] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------- | | `userId` | string | Yes | The authenticated user ID | | `tweetId` | string | Yes | The tweet ID to retweet or unretweet | | `action` | string | Yes | Action to perform: "retweet" or "unretweet" | #### Output [#output-10] | Parameter | Type | Description | | ----------- | ------- | ---------------------------------- | | `retweeted` | boolean | Whether the tweet is now retweeted | ### X Get Liked Tweets [#x-get-liked-tweets] Get tweets liked by a specific user #### Input [#input-11] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ------------------------------------------ | | `userId` | string | Yes | The user ID whose liked tweets to retrieve | | `maxResults` | number | No | Maximum number of results (5-100) | | `paginationToken` | string | No | Pagination token for next page | #### Output [#output-11] | Parameter | Type | Description | | --------------- | ------ | -------------------------- | | `tweets` | array | Array of liked tweets | | ↳ `id` | string | Tweet ID | | ↳ `text` | string | Tweet content | | ↳ `createdAt` | string | Creation timestamp | | ↳ `authorId` | string | Author user ID | | `meta` | object | Pagination metadata | | ↳ `resultCount` | number | Number of results returned | | ↳ `nextToken` | string | Token for next page | ### X Get Liking Users [#x-get-liking-users] Get the list of users who liked a specific tweet #### Input [#input-12] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ---------------------------------------------- | | `tweetId` | string | Yes | The tweet ID to get liking users for | | `maxResults` | number | No | Maximum number of results (1-100, default 100) | | `paginationToken` | string | No | Pagination token for next page | #### Output [#output-12] | Parameter | Type | Description | | ------------------- | ------- | ---------------------------------- | | `users` | array | Array of users who liked the tweet | | ↳ `id` | string | User ID | | ↳ `username` | string | Username without @ symbol | | ↳ `name` | string | Display name | | ↳ `description` | string | User bio | | ↳ `profileImageUrl` | string | Profile image URL | | ↳ `verified` | boolean | Whether the user is verified | | ↳ `metrics` | object | User statistics | | ↳ `followersCount` | number | Number of followers | | ↳ `followingCount` | number | Number of users following | | ↳ `tweetCount` | number | Total number of tweets | | `meta` | object | Pagination metadata | | ↳ `resultCount` | number | Number of results returned | | ↳ `nextToken` | string | Token for next page | ### X Get Retweeted By [#x-get-retweeted-by] Get the list of users who retweeted a specific tweet #### Input [#input-13] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ---------------------------------------------- | | `tweetId` | string | Yes | The tweet ID to get retweeters for | | `maxResults` | number | No | Maximum number of results (1-100, default 100) | | `paginationToken` | string | No | Pagination token for next page | #### Output [#output-13] | Parameter | Type | Description | | ------------------- | ------- | -------------------------------------- | | `users` | array | Array of users who retweeted the tweet | | ↳ `id` | string | User ID | | ↳ `username` | string | Username without @ symbol | | ↳ `name` | string | Display name | | ↳ `description` | string | User bio | | ↳ `profileImageUrl` | string | Profile image URL | | ↳ `verified` | boolean | Whether the user is verified | | ↳ `metrics` | object | User statistics | | ↳ `followersCount` | number | Number of followers | | ↳ `followingCount` | number | Number of users following | | ↳ `tweetCount` | number | Total number of tweets | | `meta` | object | Metadata | | ↳ `resultCount` | number | Number of results returned | | ↳ `nextToken` | string | Token for next page | ### X Get Bookmarks [#x-get-bookmarks] Get bookmarked tweets for the authenticated user #### Input [#input-14] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ----------------------------------------- | | `userId` | string | Yes | The authenticated user ID | | `maxResults` | number | No | Maximum number of results (1-100) | | `paginationToken` | string | No | Pagination token for next page of results | #### Output [#output-14] | Parameter | Type | Description | | ------------------- | ------- | ------------------------------------------ | | `tweets` | array | Array of bookmarked tweets | | ↳ `id` | string | Tweet ID | | ↳ `text` | string | Tweet text content | | ↳ `createdAt` | string | Tweet creation timestamp | | ↳ `authorId` | string | Author user ID | | ↳ `conversationId` | string | Conversation thread ID | | ↳ `inReplyToUserId` | string | User ID being replied to | | ↳ `publicMetrics` | object | Engagement metrics | | ↳ `retweetCount` | number | Number of retweets | | ↳ `replyCount` | number | Number of replies | | ↳ `likeCount` | number | Number of likes | | ↳ `quoteCount` | number | Number of quotes | | `includes` | object | Additional data including user profiles | | ↳ `users` | array | Array of user objects referenced in tweets | | ↳ `id` | string | User ID | | ↳ `username` | string | Username without @ symbol | | ↳ `name` | string | Display name | | ↳ `description` | string | User bio | | ↳ `profileImageUrl` | string | Profile image URL | | ↳ `verified` | boolean | Whether the user is verified | | ↳ `metrics` | object | User statistics | | ↳ `followersCount` | number | Number of followers | | ↳ `followingCount` | number | Number of users following | | ↳ `tweetCount` | number | Total number of tweets | | `meta` | object | Pagination metadata | | ↳ `resultCount` | number | Number of results returned | | ↳ `newestId` | string | ID of the newest tweet | | ↳ `oldestId` | string | ID of the oldest tweet | | ↳ `nextToken` | string | Token for next page | | ↳ `previousToken` | string | Token for previous page | ### X Create Bookmark [#x-create-bookmark] Bookmark a tweet for the authenticated user #### Input [#input-15] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------- | | `userId` | string | Yes | The authenticated user ID | | `tweetId` | string | Yes | The tweet ID to bookmark | #### Output [#output-15] | Parameter | Type | Description | | ------------ | ------- | --------------------------------------------- | | `bookmarked` | boolean | Whether the tweet was successfully bookmarked | ### X Delete Bookmark [#x-delete-bookmark] Remove a tweet from the authenticated user's bookmarks #### Input [#input-16] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------- | | `userId` | string | Yes | The authenticated user ID | | `tweetId` | string | Yes | The tweet ID to remove from bookmarks | #### Output [#output-16] | Parameter | Type | Description | | ------------ | ------- | ---------------------------------------------------------------------- | | `bookmarked` | boolean | Whether the tweet is still bookmarked (should be false after deletion) | ### X Get Me [#x-get-me] Get the authenticated user's profile information #### Input [#input-17] | Parameter | Type | Required | Description | | --------- | ---- | -------- | ----------- | #### Output [#output-17] | Parameter | Type | Description | | ------------------- | ------- | ---------------------------- | | `user` | object | Authenticated user profile | | ↳ `id` | string | User ID | | ↳ `username` | string | Username without @ symbol | | ↳ `name` | string | Display name | | ↳ `description` | string | User bio | | ↳ `profileImageUrl` | string | Profile image URL | | ↳ `verified` | boolean | Whether the user is verified | | ↳ `metrics` | object | User statistics | | ↳ `followersCount` | number | Number of followers | | ↳ `followingCount` | number | Number of users following | | ↳ `tweetCount` | number | Total number of tweets | ### X Search Users [#x-search-users] Search for X users by name, username, or bio #### Input [#input-18] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ----------------------------------------------------------- | | `query` | string | Yes | Search keyword (1-50 chars, matches name, username, or bio) | | `maxResults` | number | No | Maximum number of results (1-1000, default 100) | | `nextToken` | string | No | Pagination token for next page | #### Output [#output-18] | Parameter | Type | Description | | ------------------- | ------- | ---------------------------------------- | | `users` | array | Array of users matching the search query | | ↳ `id` | string | User ID | | ↳ `username` | string | Username without @ symbol | | ↳ `name` | string | Display name | | ↳ `description` | string | User bio | | ↳ `profileImageUrl` | string | Profile image URL | | ↳ `verified` | boolean | Whether the user is verified | | ↳ `metrics` | object | User statistics | | ↳ `followersCount` | number | Number of followers | | ↳ `followingCount` | number | Number of users following | | ↳ `tweetCount` | number | Total number of tweets | | `meta` | object | Search metadata | | ↳ `resultCount` | number | Number of results returned | | ↳ `nextToken` | string | Pagination token for next page | ### X Get Followers [#x-get-followers] Get the list of followers for a user #### Input [#input-19] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ----------------------------------------------- | | `userId` | string | Yes | The user ID whose followers to retrieve | | `maxResults` | number | No | Maximum number of results (1-1000, default 100) | | `paginationToken` | string | No | Pagination token for next page | #### Output [#output-19] | Parameter | Type | Description | | ------------------- | ------- | ------------------------------- | | `users` | array | Array of follower user profiles | | ↳ `id` | string | User ID | | ↳ `username` | string | Username without @ symbol | | ↳ `name` | string | Display name | | ↳ `description` | string | User bio | | ↳ `profileImageUrl` | string | Profile image URL | | ↳ `verified` | boolean | Whether the user is verified | | ↳ `metrics` | object | User statistics | | ↳ `followersCount` | number | Number of followers | | ↳ `followingCount` | number | Number of users following | | ↳ `tweetCount` | number | Total number of tweets | | `meta` | object | Pagination metadata | | ↳ `resultCount` | number | Number of results returned | | ↳ `nextToken` | string | Token for next page | ### X Get Following [#x-get-following] Get the list of users that a user is following #### Input [#input-20] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ----------------------------------------------- | | `userId` | string | Yes | The user ID whose following list to retrieve | | `maxResults` | number | No | Maximum number of results (1-1000, default 100) | | `paginationToken` | string | No | Pagination token for next page | #### Output [#output-20] | Parameter | Type | Description | | ------------------- | ------- | ----------------------------- | | `users` | array | Array of users being followed | | ↳ `id` | string | User ID | | ↳ `username` | string | Username without @ symbol | | ↳ `name` | string | Display name | | ↳ `description` | string | User bio | | ↳ `profileImageUrl` | string | Profile image URL | | ↳ `verified` | boolean | Whether the user is verified | | ↳ `metrics` | object | User statistics | | ↳ `followersCount` | number | Number of followers | | ↳ `followingCount` | number | Number of users following | | ↳ `tweetCount` | number | Total number of tweets | | `meta` | object | Pagination metadata | | ↳ `resultCount` | number | Number of results returned | | ↳ `nextToken` | string | Token for next page | ### X Manage Follow [#x-manage-follow] Follow or unfollow a user on X #### Input [#input-21] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ----------------------------------------- | | `userId` | string | Yes | The authenticated user ID | | `targetUserId` | string | Yes | The user ID to follow or unfollow | | `action` | string | Yes | Action to perform: "follow" or "unfollow" | #### Output [#output-21] | Parameter | Type | Description | | --------------- | ------- | -------------------------------------------------------------- | | `following` | boolean | Whether you are now following the user | | `pendingFollow` | boolean | Whether the follow request is pending (for protected accounts) | ### X Manage Block [#x-manage-block] Block or unblock a user on X #### Input [#input-22] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | --------------------------------------- | | `userId` | string | Yes | The authenticated user ID | | `targetUserId` | string | Yes | The user ID to block or unblock | | `action` | string | Yes | Action to perform: "block" or "unblock" | #### Output [#output-22] | Parameter | Type | Description | | ---------- | ------- | ------------------------------------- | | `blocking` | boolean | Whether you are now blocking the user | ### X Get Blocking [#x-get-blocking] Get the list of users blocked by the authenticated user #### Input [#input-23] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ---------------------------------- | | `userId` | string | Yes | The authenticated user ID | | `maxResults` | number | No | Maximum number of results (1-1000) | | `paginationToken` | string | No | Pagination token for next page | #### Output [#output-23] | Parameter | Type | Description | | ------------------- | ------- | ------------------------------ | | `users` | array | Array of blocked user profiles | | ↳ `id` | string | User ID | | ↳ `username` | string | Username without @ symbol | | ↳ `name` | string | Display name | | ↳ `description` | string | User bio | | ↳ `profileImageUrl` | string | Profile image URL | | ↳ `verified` | boolean | Whether the user is verified | | ↳ `metrics` | object | User statistics | | ↳ `followersCount` | number | Number of followers | | ↳ `followingCount` | number | Number of users following | | ↳ `tweetCount` | number | Total number of tweets | | `meta` | object | Pagination metadata | | ↳ `resultCount` | number | Number of results returned | | ↳ `nextToken` | string | Token for next page | ### X Manage Mute [#x-manage-mute] Mute or unmute a user on X #### Input [#input-24] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ------------------------------------- | | `userId` | string | Yes | The authenticated user ID | | `targetUserId` | string | Yes | The user ID to mute or unmute | | `action` | string | Yes | Action to perform: "mute" or "unmute" | #### Output [#output-24] | Parameter | Type | Description | | --------- | ------- | ----------------------------------- | | `muting` | boolean | Whether you are now muting the user | ### X Get Trends By WOEID [#x-get-trends-by-woeid] Get trending topics for a specific location by WOEID (e.g., 1 for worldwide, 23424977 for US) #### Input [#input-25] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | --------------------------------------------------------------------------------------- | | `woeid` | string | Yes | Yahoo Where On Earth ID (e.g., "1" for worldwide, "23424977" for US, "23424975" for UK) | | `maxTrends` | number | No | Maximum number of trends to return (1-50, default 20) | #### Output [#output-25] | Parameter | Type | Description | | -------------- | ------ | ------------------------------- | | `trends` | array | Array of trending topics | | ↳ `trendName` | string | Name of the trending topic | | ↳ `tweetCount` | number | Number of tweets for this trend | ### X Get Personalized Trends [#x-get-personalized-trends] Get personalized trending topics for the authenticated user #### Input [#input-26] | Parameter | Type | Required | Description | | --------- | ---- | -------- | ----------- | #### Output [#output-26] | Parameter | Type | Description | | ----------------- | ------ | ----------------------------------------------------- | | `trends` | array | Array of personalized trending topics | | ↳ `trendName` | string | Name of the trending topic | | ↳ `postCount` | number | Number of posts for this trend | | ↳ `category` | string | Category of the trend | | ↳ `trendingSince` | string | ISO 8601 timestamp of when the topic started trending | ### X Get Usage [#x-get-usage] Get the API usage data for your X project #### Input [#input-27] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------------------------------------- | | `days` | number | No | Number of days of usage data to return (1-90, default 7) | #### Output [#output-27] | Parameter | Type | Description | | --------------------- | ------ | --------------------------------------- | | `capResetDay` | number | Day of month when usage cap resets | | `projectId` | string | The project ID | | `projectCap` | number | The project tweet consumption cap | | `projectUsage` | number | Total tweets consumed in current period | | `dailyProjectUsage` | array | Daily project usage breakdown | | ↳ `date` | string | Usage date in ISO 8601 format | | ↳ `usage` | number | Number of tweets consumed | | `dailyClientAppUsage` | array | Daily per-app usage breakdown | | ↳ `clientAppId` | string | Client application ID | | ↳ `usage` | array | Daily usage entries for this app | | ↳ `date` | string | Usage date in ISO 8601 format | | ↳ `usage` | number | Number of tweets consumed | --- # Mintlify (/en/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 Studio, 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 | --- # LangSmith (/en/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) | --- # Sixtyfour AI (/en/integrations/sixtyfour) {/* MANUAL-CONTENT-START:intro */} Use [Sixtyfour AI](https://sixtyfour.ai/) in Studio to find email addresses and phone numbers and research people or companies. Enrichment actions return structured fields with source references and confidence scores; company research can include associated people and an organization chart. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Find emails, phone numbers, and enrich lead or company data with contact information, social profiles, and detailed research using Sixtyfour AI. ## Actions [#actions] ### Sixtyfour Find Phone [#sixtyfour-find-phone] Find phone numbers for a lead using Sixtyfour AI. #### Input [#input] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ----------------------- | | `apiKey` | string | Yes | Sixtyfour API key | | `name` | string | Yes | Full name of the person | | `company` | string | No | Company name | | `linkedinUrl` | string | No | LinkedIn profile URL | | `domain` | string | No | Company website domain | | `email` | string | No | Email address | #### Output [#output] | Parameter | Type | Description | | ------------- | ------ | --------------------- | | `name` | string | Name of the person | | `company` | string | Company name | | `phone` | string | Phone number(s) found | | `linkedinUrl` | string | LinkedIn profile URL | ### Sixtyfour Find Email [#sixtyfour-find-email] Find email addresses for a lead using Sixtyfour AI. #### Input [#input-1] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | -------------------------------------------------------- | | `apiKey` | string | Yes | Sixtyfour API key | | `name` | string | Yes | Full name of the person | | `company` | string | No | Company name | | `linkedinUrl` | string | No | LinkedIn profile URL | | `domain` | string | No | Company website domain | | `phone` | string | No | Phone number | | `title` | string | No | Job title | | `mode` | string | No | Email discovery mode: PROFESSIONAL (default) or PERSONAL | #### Output [#output-1] | Parameter | Type | Description | | ---------------- | ------ | ------------------------------------------------------ | | `name` | string | Name of the person | | `company` | string | Company name | | `title` | string | Job title | | `phone` | string | Phone number | | `linkedinUrl` | string | LinkedIn profile URL | | `emails` | json | Professional email addresses found | | ↳ `address` | string | Email address | | ↳ `status` | string | Validation status (OK or UNKNOWN) | | ↳ `type` | string | Email type (COMPANY or PERSONAL) | | `personalEmails` | json | Personal email addresses found (only in PERSONAL mode) | | ↳ `address` | string | Email address | | ↳ `status` | string | Validation status (OK or UNKNOWN) | | ↳ `type` | string | Email type (COMPANY or PERSONAL) | ### Sixtyfour Enrich Lead [#sixtyfour-enrich-lead] Enrich lead information with contact details, social profiles, and company data using Sixtyfour AI. #### Input [#input-2] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `apiKey` | string | Yes | Sixtyfour API key | | `leadInfo` | string | Yes | Lead information as JSON object with key-value pairs (e.g. name, company, title, linkedin) | | `struct` | string | Yes | Fields to collect as JSON object. Keys are field names, values are descriptions (e.g. \{"email": "The individual's email address", "phone": "Phone number"}) | | `researchPlan` | string | No | Optional research plan to guide enrichment strategy | #### Output [#output-2] | Parameter | Type | Description | | ----------------- | ------ | ------------------------------------------------------- | | `notes` | string | Research notes about the lead | | `structuredData` | json | Enriched lead data matching the requested struct fields | | `references` | json | Source URLs and descriptions used for enrichment | | `confidenceScore` | number | Quality score for the returned data (0-10) | ### Sixtyfour Enrich Company [#sixtyfour-enrich-company] Enrich company data with additional information and find associated people using Sixtyfour AI. #### Input [#input-3] | Parameter | Type | Required | Description | | ------------------- | ------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Sixtyfour API key | | `targetCompany` | string | Yes | Company data as JSON object (e.g. \{"name": "Acme Inc", "domain": "acme.com"}) | | `struct` | string | Yes | Fields to collect as JSON object. Keys are field names, values are descriptions (e.g. \{"website": "Company website URL", "num\_employees": "Employee count"}) | | `findPeople` | boolean | No | Whether to find people associated with the company | | `fullOrgChart` | boolean | No | Whether to retrieve the full organizational chart | | `researchPlan` | string | No | Optional strategy describing how the agent should search for information | | `peopleFocusPrompt` | string | No | Description of people to find (roles, responsibilities) | | `leadStruct` | string | No | Custom schema for returned lead data as JSON object | #### Output [#output-3] | Parameter | Type | Description | | ----------------- | ------ | ---------------------------------------------------------- | | `notes` | string | Research notes about the company | | `structuredData` | json | Enriched company data matching the requested struct fields | | `references` | json | Source URLs and descriptions used for enrichment | | `confidenceScore` | number | Quality score for the returned data (0-10) | | `orgChart` | json | Org chart returned when fullOrgChart is enabled | --- # Zep (/en/integrations/zep) {/* MANUAL-CONTENT-START:intro */} Use [Zep](https://getzep.com) to manage users, conversation threads, messages, and retrieved context across workflow runs. Add messages after an interaction, then retrieve user context for a later agent step. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate Zep for long-term memory management. Create threads, add messages, retrieve context with AI-powered summaries and facts extraction. ## Actions [#actions] ### Create Thread [#create-thread] Start a new conversation thread in Zep #### Input [#input] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | --------------------------------------------------------- | | `threadId` | string | Yes | Unique identifier for the thread (e.g., "thread\_abc123") | | `userId` | string | Yes | User ID associated with the thread (e.g., "user\_123") | | `apiKey` | string | Yes | Your Zep API key | #### Output [#output] | Parameter | Type | Description | | ------------- | ------ | ----------------------------- | | `threadId` | string | Thread identifier | | `userId` | string | Associated user ID | | `uuid` | string | Internal UUID | | `createdAt` | string | Creation timestamp (ISO 8601) | | `projectUuid` | string | Project UUID | ### Get Threads [#get-threads] List all conversation threads #### Input [#input-1] | Parameter | Type | Required | Description | | ------------ | ------- | -------- | -------------------------------------------------------------------------- | | `pageSize` | number | No | Number of threads to retrieve per page (e.g., 10, 25, 50) | | `pageNumber` | number | No | Page number for pagination (e.g., 1, 2, 3) | | `orderBy` | string | No | Field to order results by (created\_at, updated\_at, user\_id, thread\_id) | | `asc` | boolean | No | Order direction: true for ascending, false for descending | | `apiKey` | string | Yes | Your Zep API key | #### Output [#output-1] | Parameter | Type | Description | | --------------- | ------ | ----------------------------------------- | | `threads` | array | Array of thread objects | | ↳ `threadId` | string | Thread identifier | | ↳ `userId` | string | Associated user ID | | ↳ `uuid` | string | Internal UUID | | ↳ `createdAt` | string | Creation timestamp (ISO 8601) | | ↳ `updatedAt` | string | Last update timestamp (ISO 8601) | | ↳ `projectUuid` | string | Project UUID | | ↳ `metadata` | object | Custom metadata (dynamic key-value pairs) | | `responseCount` | number | Number of items in this response | | `totalCount` | number | Total number of items available | ### Delete Thread [#delete-thread] Delete a conversation thread from Zep #### Input [#input-2] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | -------------------------------------------- | | `threadId` | string | Yes | Thread ID to delete (e.g., "thread\_abc123") | | `apiKey` | string | Yes | Your Zep API key | #### Output [#output-2] | Parameter | Type | Description | | --------- | ------- | ------------------------------ | | `deleted` | boolean | Whether the thread was deleted | ### Get User Context [#get-user-context] Retrieve user context from a thread with summary or basic mode #### Input [#input-3] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ----------------------------------------------------------------- | | `threadId` | string | Yes | Thread ID to get context from (e.g., "thread\_abc123") | | `mode` | string | No | Context mode: "summary" (natural language) or "basic" (raw facts) | | `minRating` | number | No | Minimum rating by which to filter relevant facts | | `apiKey` | string | Yes | Your Zep API key | #### Output [#output-3] | Parameter | Type | Description | | --------- | ------ | ------------------------------------------ | | `context` | string | The context string (summary or basic mode) | ### Get Messages [#get-messages] Retrieve messages from a thread #### Input [#input-4] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | --------------------------------------------------------------------- | | `threadId` | string | Yes | Thread ID to get messages from (e.g., "thread\_abc123") | | `limit` | number | No | Maximum number of messages to return (e.g., 10, 50, 100) | | `cursor` | string | No | Cursor for pagination | | `lastn` | number | No | Number of most recent messages to return (overrides limit and cursor) | | `apiKey` | string | Yes | Your Zep API key | #### Output [#output-4] | Parameter | Type | Description | | ------------- | ------- | -------------------------------------------- | | `messages` | array | Array of message objects | | ↳ `uuid` | string | Message UUID | | ↳ `role` | string | Message role (user, assistant, system, tool) | | ↳ `roleType` | string | Role type (AI, human, tool) | | ↳ `content` | string | Message content | | ↳ `name` | string | Sender name | | ↳ `createdAt` | string | Timestamp (RFC3339 format) | | ↳ `metadata` | object | Message metadata (dynamic key-value pairs) | | ↳ `processed` | boolean | Whether message has been processed | | `rowCount` | number | Number of rows returned | | `totalCount` | number | Total number of items available | ### Add Messages [#add-messages] Add messages to an existing thread #### Input [#input-5] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ----------------------------------------------------------------------------------------------- | | `threadId` | string | Yes | Thread ID to add messages to (e.g., "thread\_abc123") | | `messages` | json | Yes | Array of message objects with role and content (e.g., \[\{"role": "user", "content": "Hello"}]) | | `apiKey` | string | Yes | Your Zep API key | #### Output [#output-5] | Parameter | Type | Description | | ------------ | ------- | ---------------------------------------- | | `threadId` | string | Thread identifier | | `added` | boolean | Whether messages were added successfully | | `messageIds` | array | Array of added message UUIDs | ### Add User [#add-user] Create a new user in Zep #### Input [#input-6] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------------------------------------------ | | `userId` | string | Yes | Unique identifier for the user (e.g., "user\_123") | | `email` | string | No | User email address | | `firstName` | string | No | User first name | | `lastName` | string | No | User last name | | `metadata` | json | No | Additional metadata as JSON object (e.g., \{"key": "value"}) | | `apiKey` | string | Yes | Your Zep API key | #### Output [#output-6] | Parameter | Type | Description | | ----------- | ------ | --------------------------------------- | | `userId` | string | User identifier | | `email` | string | User email address | | `firstName` | string | User first name | | `lastName` | string | User last name | | `uuid` | string | Internal UUID | | `createdAt` | string | Creation timestamp (ISO 8601) | | `metadata` | object | User metadata (dynamic key-value pairs) | ### Get User [#get-user] Retrieve user information from Zep #### Input [#input-7] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------------------------------- | | `userId` | string | Yes | User ID to retrieve (e.g., "user\_123") | | `apiKey` | string | Yes | Your Zep API key | #### Output [#output-7] | Parameter | Type | Description | | ----------- | ------ | --------------------------------------- | | `userId` | string | User identifier | | `email` | string | User email address | | `firstName` | string | User first name | | `lastName` | string | User last name | | `uuid` | string | Internal UUID | | `createdAt` | string | Creation timestamp (ISO 8601) | | `updatedAt` | string | Last update timestamp (ISO 8601) | | `metadata` | object | User metadata (dynamic key-value pairs) | ### Get User Threads [#get-user-threads] List all conversation threads for a specific user #### Input [#input-8] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------ | | `userId` | string | Yes | User ID to get threads for (e.g., "user\_123") | | `limit` | number | No | Maximum number of threads to return (e.g., 10, 25, 50) | | `apiKey` | string | Yes | Your Zep API key | #### Output [#output-8] | Parameter | Type | Description | | --------------- | ------ | ----------------------------------------- | | `threads` | array | Array of thread objects | | ↳ `threadId` | string | Thread identifier | | ↳ `userId` | string | Associated user ID | | ↳ `uuid` | string | Internal UUID | | ↳ `createdAt` | string | Creation timestamp (ISO 8601) | | ↳ `updatedAt` | string | Last update timestamp (ISO 8601) | | ↳ `projectUuid` | string | Project UUID | | ↳ `metadata` | object | Custom metadata (dynamic key-value pairs) | | `totalCount` | number | Total number of items available | --- # MongoDB (/en/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 | --- # ClickUp API Tokens (/en/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. `studio-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. Studio encrypts the token at rest. ## Adding the API Token to Studio [#adding-the-api-token-to-studio] Open **Integrations** from your workspace sidebar Search for "ClickUp" and open it, then click **Add to Studio** 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**. Studio 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. --- # LeadMagic (/en/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 | --- # Brex (/en/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 Studio, 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 | --- # Microsoft Dynamics 365 CRM (/en/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 | --- # Claude Managed Agents (/en/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 a Studio 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 Studio, 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. | --- # GitLab (/en/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 Studio, 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 Studio’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 | --- # Cal.com (/en/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) | --- # Google Service Accounts (/en/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 Studio. 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 Studio, 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 Studio, 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 Studio [#adding-the-service-account-to-studio] Once Google Cloud and Workspace are configured, add the service account as a credential in Studio. Open **Integrations** from your workspace sidebar Search for "Google Drive" and open it — any Google integration works, since they share one service account — then click **Add to Studio** and choose **Add service account**
Google Drive integration page with the service-account connect option
Paste the full contents into **JSON key**, or use **Or upload a file** to select the JSON key file.
Add Google Service Account dialog
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.
Gmail block in a workflow showing the Impersonated Account field with a service account credential
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. --- # Reducto (/en/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 | --- # Yampi (/en/integrations/yampi) ## Triggers [#triggers] A **Trigger** is a block that starts a workflow when an event happens in this service. ### Yampi Webhook [#yampi-webhook] Trigger a workflow when a Yampi store event is received #### Configuration [#configuration] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ------------------------------------------------------------------------------------------------- | | `webhookSecret` | string | Yes | The webhook secret from Yampi. Used to verify the X-Yampi-Hmac-SHA256 signature on every request. | | `eventType` | string | No | Only run this workflow for the selected Yampi event. | #### Output [#output] | Parameter | Type | Description | | ------------ | ------ | -------------------------------------------- | | `event` | string | The Yampi event type (e.g. order.paid) | | `time` | string | Timestamp of the event | | `resourceId` | string | ID of the affected resource | | `resource` | json | Full resource payload for the event | | `raw` | json | Complete original webhook payload from Yampi | --- # Datagma (/en/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 Studio, 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 Studio. {/* 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 | --- # Microsoft Dataverse (/en/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 | --- # Fathom (/en/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 Studio:** 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 | --- # AgentPhone (/en/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 | --- # Microsoft Teams (/en/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 Studio, 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 Studio 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 | --- # Gamma (/en/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 | --- # People Data Labs (/en/integrations/peopledatalabs) {/* MANUAL-CONTENT-START:intro */} [People Data Labs](https://www.peopledatalabs.com/) provides person and company data. The Studio 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 | --- # Google Maps (/en/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 | --- # Grafana (/en/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 Studio 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 | --- # Cloudflare (/en/integrations/cloudflare) {/* MANUAL-CONTENT-START:intro */} Use [Cloudflare](https://cloudflare.com/) in Studio 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 zones (domains), DNS records, SSL/TLS certificates, zone settings, DNS analytics, and cache purging. Configure WAF rulesets, managed rule overrides, and rate limiting rules through the current Rulesets engine. Administer Cloudflare Access (Zero Trust) applications, policies, groups, identity providers, and service tokens, and inspect R2 buckets, Workers scripts and routes, and Cloudflare Tunnels. ## Actions [#actions] ### Cloudflare List Zones [#cloudflare-list-zones] Lists all zones (domains) in the Cloudflare account. #### Input [#input] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ---------------------------------------------------------------------- | | `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] | Parameter | Type | Description | | ---------------------------- | ------- | -------------------------------------------------- | | `zones` | array | List of zones/domains | | ↳ `id` | string | Zone ID | | ↳ `name` | string | Domain name | | ↳ `status` | string | Zone status (initializing, pending, active, moved) | | ↳ `paused` | boolean | Whether the zone is paused | | ↳ `type` | string | Zone type (full, partial, secondary, or internal) | | ↳ `name_servers` | array | Assigned Cloudflare name servers | | ↳ `original_name_servers` | array | Original name servers before moving to Cloudflare | | ↳ `created_on` | string | ISO 8601 date when the zone was created | | ↳ `modified_on` | string | ISO 8601 date when the zone was last modified | | ↳ `activated_on` | string | ISO 8601 date when the zone was activated | | ↳ `development_mode` | number | Seconds remaining in development mode (0 = off) | | ↳ `plan` | object | Zone plan information | | ↳ `id` | string | Plan identifier | | ↳ `name` | string | Plan name | | ↳ `price` | number | Plan price | | ↳ `is_subscribed` | boolean | Whether the zone is subscribed to the plan | | ↳ `frequency` | string | Plan billing frequency | | ↳ `currency` | string | Plan currency | | ↳ `legacy_id` | string | Legacy plan identifier | | ↳ `account` | object | Account the zone belongs to | | ↳ `id` | string | Account identifier | | ↳ `name` | string | Account name | | ↳ `owner` | object | Zone owner information | | ↳ `id` | string | Owner identifier | | ↳ `name` | string | Owner name | | ↳ `type` | string | Owner type | | ↳ `meta` | object | Zone metadata | | ↳ `cdn_only` | boolean | Whether the zone is CDN only | | ↳ `custom_certificate_quota` | number | Custom certificate quota | | ↳ `dns_only` | boolean | Whether the zone is DNS only | | ↳ `foundation_dns` | boolean | Whether foundation DNS is enabled | | ↳ `page_rule_quota` | number | Page rule quota | | ↳ `phishing_detected` | boolean | Whether phishing was detected | | ↳ `step` | number | Current setup step | | ↳ `vanity_name_servers` | array | Custom vanity name servers | | ↳ `permissions` | array | User permissions for the zone | | `total_count` | number | Total number of zones matching the query | ### Cloudflare Get Zone [#cloudflare-get-zone] Gets details for a specific zone (domain) by its ID. #### Input [#input-1] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------------------------------- | | `zoneId` | string | Yes | The zone ID to retrieve details for | | `apiKey` | string | Yes | Cloudflare API Token | #### Output [#output-1] | Parameter | Type | Description | | ---------------------------- | ------- | -------------------------------------------------- | | `id` | string | Zone ID | | `name` | string | Domain name | | `status` | string | Zone status (initializing, pending, active, moved) | | `paused` | boolean | Whether the zone is paused | | `type` | string | Zone type (full, partial, secondary, or internal) | | `name_servers` | array | Assigned Cloudflare name servers | | `original_name_servers` | array | Original name servers before moving to Cloudflare | | `created_on` | string | ISO 8601 date when the zone was created | | `modified_on` | string | ISO 8601 date when the zone was last modified | | `activated_on` | string | ISO 8601 date when the zone was activated | | `development_mode` | number | Seconds remaining in development mode (0 = off) | | `plan` | object | Zone plan information | | ↳ `id` | string | Plan identifier | | ↳ `name` | string | Plan name | | ↳ `price` | number | Plan price | | ↳ `is_subscribed` | boolean | Whether the zone is subscribed to the plan | | ↳ `frequency` | string | Plan billing frequency | | ↳ `currency` | string | Plan currency | | ↳ `legacy_id` | string | Legacy plan identifier | | `account` | object | Account the zone belongs to | | ↳ `id` | string | Account identifier | | ↳ `name` | string | Account name | | `owner` | object | Zone owner information | | ↳ `id` | string | Owner identifier | | ↳ `name` | string | Owner name | | ↳ `type` | string | Owner type | | `meta` | object | Zone metadata | | ↳ `cdn_only` | boolean | Whether the zone is CDN only | | ↳ `custom_certificate_quota` | number | Custom certificate quota | | ↳ `dns_only` | boolean | Whether the zone is DNS only | | ↳ `foundation_dns` | boolean | Whether foundation DNS is enabled | | ↳ `page_rule_quota` | number | Page rule quota | | ↳ `phishing_detected` | boolean | Whether phishing was detected | | ↳ `step` | number | Current setup step | | `vanity_name_servers` | array | Custom vanity name servers | | `permissions` | array | User permissions for the zone | ### Cloudflare Create Zone [#cloudflare-create-zone] Adds a new zone (domain) to the Cloudflare account. #### Input [#input-2] | 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), or "secondary" (secondary DNS). Cloudflare also defines "internal", which is not creatable through this tool | | `apiKey` | string | Yes | Cloudflare API Token | #### Output [#output-2] | Parameter | Type | Description | | ---------------------------- | ------- | -------------------------------------------------- | | `id` | string | Created zone ID | | `name` | string | Domain name | | `status` | string | Zone status (initializing, pending, active, moved) | | `paused` | boolean | Whether the zone is paused | | `type` | string | Zone type (full, partial, secondary, or internal) | | `name_servers` | array | Assigned Cloudflare name servers | | `original_name_servers` | array | Original name servers before moving to Cloudflare | | `created_on` | string | ISO 8601 date when the zone was created | | `modified_on` | string | ISO 8601 date when the zone was last modified | | `activated_on` | string | ISO 8601 date when the zone was activated | | `development_mode` | number | Seconds remaining in development mode (0 = off) | | `plan` | object | Zone plan information | | ↳ `id` | string | Plan identifier | | ↳ `name` | string | Plan name | | ↳ `price` | number | Plan price | | ↳ `is_subscribed` | boolean | Whether the zone is subscribed to the plan | | ↳ `frequency` | string | Plan billing frequency | | ↳ `currency` | string | Plan currency | | ↳ `legacy_id` | string | Legacy plan identifier | | `account` | object | Account the zone belongs to | | ↳ `id` | string | Account identifier | | ↳ `name` | string | Account name | | `owner` | object | Zone owner information | | ↳ `id` | string | Owner identifier | | ↳ `name` | string | Owner name | | ↳ `type` | string | Owner type | | `meta` | object | Zone metadata | | ↳ `cdn_only` | boolean | Whether the zone is CDN only | | ↳ `custom_certificate_quota` | number | Custom certificate quota | | ↳ `dns_only` | boolean | Whether the zone is DNS only | | ↳ `foundation_dns` | boolean | Whether foundation DNS is enabled | | ↳ `page_rule_quota` | number | Page rule quota | | ↳ `phishing_detected` | boolean | Whether phishing was detected | | ↳ `step` | number | Current setup step | | `vanity_name_servers` | array | Custom vanity name servers | | `permissions` | array | User permissions for the zone | ### Cloudflare Delete Zone [#cloudflare-delete-zone] Deletes a zone (domain) from the Cloudflare account. #### Input [#input-3] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------------- | | `zoneId` | string | Yes | The zone ID to delete | | `apiKey` | string | Yes | Cloudflare API Token | #### Output [#output-3] | Parameter | Type | Description | | --------- | ------ | --------------- | | `id` | string | Deleted zone ID | ### Cloudflare List DNS Records [#cloudflare-list-dns-records] Lists DNS records for a specific zone. #### Input [#input-4] | Parameter | Type | Required | Description | | --------------- | ------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `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 an exact tag name | | `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-4] | Parameter | Type | Description | | ----------------------- | ------- | ----------------------------------------------------- | | `records` | array | List of DNS records | | ↳ `id` | string | Unique identifier for the DNS record | | ↳ `zone_id` | string | The ID of the zone the record belongs to | | ↳ `zone_name` | string | The name of the zone | | ↳ `type` | string | Record type (A, AAAA, CNAME, MX, TXT, etc.) | | ↳ `name` | string | Record name (e.g., example.com) | | ↳ `content` | string | Record content (e.g., IP address) | | ↳ `proxiable` | boolean | Whether the record can be proxied | | ↳ `proxied` | boolean | Whether Cloudflare proxy is enabled | | ↳ `ttl` | number | TTL in seconds (1 = automatic) | | ↳ `locked` | boolean | Whether the record is locked | | ↳ `priority` | number | Record priority, returned for MX and URI records | | ↳ `comment` | string | Comment associated with the record | | ↳ `tags` | array | Tags associated with the record | | ↳ `comment_modified_on` | string | ISO 8601 timestamp when the comment was last modified | | ↳ `tags_modified_on` | string | ISO 8601 timestamp when tags were last modified | | ↳ `meta` | object | Record metadata | | ↳ `source` | string | Source of the DNS record | | ↳ `created_on` | string | ISO 8601 timestamp when the record was created | | ↳ `modified_on` | string | ISO 8601 timestamp when the record was last modified | | `total_count` | number | Total number of DNS records matching the query | ### Cloudflare Create DNS Record [#cloudflare-create-dns-record] Creates a new DNS record for a zone. #### Input [#input-5] | Parameter | Type | Required | Description | | ---------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `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 | Yes | 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; an SRV record carries its priority, weight, port, and target inside the record content instead | | `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-5] | Parameter | Type | Description | | --------------------- | ------- | ----------------------------------------------------- | | `id` | string | Unique identifier for the created DNS record | | `zone_id` | string | The ID of the zone the record belongs to | | `zone_name` | string | The name of the zone | | `type` | string | DNS record type (A, AAAA, CNAME, MX, TXT, etc.) | | `name` | string | DNS record hostname | | `content` | string | DNS record value (e.g., IP address, target hostname) | | `proxiable` | boolean | Whether the record can be proxied through Cloudflare | | `proxied` | boolean | Whether Cloudflare proxy is enabled | | `ttl` | number | Time to live in seconds (1 = automatic) | | `locked` | boolean | Whether the record is locked | | `priority` | number | Record priority, returned for MX and URI records | | `comment` | string | Comment associated with the record | | `tags` | array | Tags associated with the record | | `comment_modified_on` | string | ISO 8601 timestamp when the comment was last modified | | `tags_modified_on` | string | ISO 8601 timestamp when tags were last modified | | `meta` | object | Record metadata | | ↳ `source` | string | Source of the DNS record | | `created_on` | string | ISO 8601 timestamp when the record was created | | `modified_on` | string | ISO 8601 timestamp when the record was last modified | ### Cloudflare Update DNS Record [#cloudflare-update-dns-record] Updates an existing DNS record for a zone. #### Input [#input-6] | Parameter | Type | Required | Description | | ---------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `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; an SRV record carries its priority, weight, port, and target inside the record content instead | | `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-6] | Parameter | Type | Description | | --------------------- | ------- | ----------------------------------------------------- | | `id` | string | Unique identifier for the updated DNS record | | `zone_id` | string | The ID of the zone the record belongs to | | `zone_name` | string | The name of the zone | | `type` | string | DNS record type (A, AAAA, CNAME, MX, TXT, etc.) | | `name` | string | DNS record hostname | | `content` | string | DNS record value (e.g., IP address, target hostname) | | `proxiable` | boolean | Whether the record can be proxied through Cloudflare | | `proxied` | boolean | Whether Cloudflare proxy is enabled | | `ttl` | number | Time to live in seconds (1 = automatic) | | `locked` | boolean | Whether the record is locked | | `priority` | number | Record priority, returned for MX and URI records | | `comment` | string | Comment associated with the record | | `tags` | array | Tags associated with the record | | `comment_modified_on` | string | ISO 8601 timestamp when the comment was last modified | | `tags_modified_on` | string | ISO 8601 timestamp when tags were last modified | | `meta` | object | Record metadata | | ↳ `source` | string | Source of the DNS record | | `created_on` | string | ISO 8601 timestamp when the record was created | | `modified_on` | string | ISO 8601 timestamp when the record was last modified | ### Cloudflare Delete DNS Record [#cloudflare-delete-dns-record] Deletes a DNS record from a zone. #### Input [#input-7] | 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-7] | Parameter | Type | Description | | --------- | ------ | ----------------- | | `id` | string | Deleted record ID | ### Cloudflare List Certificates [#cloudflare-list-certificates] Lists SSL/TLS certificate packs for a zone. #### Input [#input-8] | 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-8] | Parameter | Type | Description | | -------------------------- | ------- | --------------------------------------------------------- | | `certificates` | array | List of SSL/TLS certificate packs | | ↳ `id` | string | Certificate pack ID | | ↳ `type` | string | Certificate type (e.g., "universal", "advanced") | | ↳ `hosts` | array | Hostnames covered by this certificate pack | | ↳ `primary_certificate` | string | ID of the primary certificate in the pack | | ↳ `status` | string | Certificate pack status (e.g., "active", "pending") | | ↳ `certificates` | array | Individual certificates within the pack | | ↳ `id` | string | Certificate ID | | ↳ `hosts` | array | Hostnames covered by this certificate | | ↳ `issuer` | string | Certificate issuer | | ↳ `signature` | string | Signature algorithm (e.g., "ECDSAWithSHA256") | | ↳ `status` | string | Certificate status | | ↳ `bundle_method` | string | Bundle method (e.g., "ubiquitous") | | ↳ `zone_id` | string | Zone ID the certificate belongs to | | ↳ `uploaded_on` | string | Upload date (ISO 8601) | | ↳ `modified_on` | string | Last modified date (ISO 8601) | | ↳ `expires_on` | string | Expiration date (ISO 8601) | | ↳ `priority` | number | Certificate priority order | | ↳ `geo_restrictions` | object | Geographic restrictions for the certificate | | ↳ `label` | string | Geographic restriction label | | ↳ `cloudflare_branding` | boolean | Whether Cloudflare branding is enabled on the certificate | | ↳ `validation_method` | string | Validation method (e.g., "txt", "http", "cname") | | ↳ `validity_days` | number | Validity period in days | | ↳ `certificate_authority` | string | Certificate authority (e.g., "lets\_encrypt", "google") | | ↳ `validation_errors` | array | Validation issues for the certificate pack | | ↳ `message` | string | Validation error message | | ↳ `validation_records` | array | Validation records for the certificate pack | | ↳ `cname` | string | CNAME record name | | ↳ `cname_target` | string | CNAME record target | | ↳ `emails` | array | Email addresses for validation | | ↳ `http_body` | string | HTTP validation body content | | ↳ `http_url` | string | HTTP validation URL | | ↳ `status` | string | Validation record status | | ↳ `txt_name` | string | TXT record name | | ↳ `txt_value` | string | TXT record value | | ↳ `dcv_delegation_records` | array | Domain control validation delegation records | | ↳ `cname` | string | CNAME record name | | ↳ `cname_target` | string | CNAME record target | | ↳ `emails` | array | Email addresses for validation | | ↳ `http_body` | string | HTTP validation body content | | ↳ `http_url` | string | HTTP validation URL | | ↳ `status` | string | Delegation record status | | ↳ `txt_name` | string | TXT record name | | ↳ `txt_value` | string | TXT record value | | `total_count` | number | Total number of certificate packs | ### 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-9] | 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-9] | 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"). 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 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-10] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `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 | Yes | New value for the setting 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-10] | 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"). 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) | ### Cloudflare DNS Analytics [#cloudflare-dns-analytics] Gets DNS analytics report for a zone including query counts and trends. #### Input [#input-11] | 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-11] | 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 Purge Cache [#cloudflare-purge-cache] Purges cached content for a zone. Can purge everything or specific files/tags/hosts/prefixes. #### Input [#input-12] | 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 list of URLs to purge from cache | | `tags` | string | No | Comma-separated list of cache tags to purge (Enterprise only) | | `hosts` | string | No | Comma-separated list of hostnames to purge (Enterprise only) | | `prefixes` | string | No | Comma-separated list of URL prefixes to purge (Enterprise only) | | `apiKey` | string | Yes | Cloudflare API Token | #### Output [#output-12] | Parameter | Type | Description | | --------- | ------ | ----------------------------------------------- | | `id` | string | Purge request identifier returned by Cloudflare | ### 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-13] | 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-13] | Parameter | Type | Description | | ---------------- | ------ | -------------------------------------------------------------------------------------------------------------------- | | `rulesets` | array | Rulesets defined on the zone | | ↳ `id` | string | Ruleset identifier | | ↳ `name` | string | Ruleset name | | ↳ `description` | string | Ruleset description | | ↳ `kind` | string | Ruleset kind (managed, custom, root, or zone) | | ↳ `phase` | string | Phase the ruleset runs in (e.g., http\_request\_firewall\_custom, http\_request\_firewall\_managed, http\_ratelimit) | | ↳ `version` | string | Ruleset version | | ↳ `last_updated` | string | RFC 3339 timestamp of the last change | | `total_count` | number | Number of rulesets returned on this page | | `cursor` | string | Cursor to pass to the next call to read the following page, when more remain | ### 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-14] | 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-14] | Parameter | Type | Description | | --------------------- | ------- | -------------------------------------------------------------------------------- | | `id` | string | Ruleset identifier | | `name` | string | Ruleset name | | `description` | string | Ruleset description | | `kind` | string | Ruleset kind (managed, custom, root, or zone) | | `phase` | string | Phase the ruleset runs in | | `version` | string | Ruleset version | | `last_updated` | string | RFC 3339 timestamp of the last change | | `rules` | array | Rules contained in the ruleset, in evaluation order | | ↳ `id` | string | Rule identifier | | ↳ `version` | string | Rule version | | ↳ `action` | string | Action the rule performs (e.g., block, challenge, log, skip, execute) | | ↳ `action_parameters` | json | Action-specific parameters, including managed-ruleset overrides on execute rules | | ↳ `expression` | string | Filter expression selecting matching requests. Empty on managed-ruleset rules | | ↳ `description` | string | Rule description | | ↳ `enabled` | boolean | Whether the rule is enabled | | ↳ `ref` | string | Rule reference tag that survives rule updates | | ↳ `last_updated` | string | RFC 3339 timestamp of the last change | | ↳ `categories` | array | Managed-rule categories | | ↳ `logging` | json | Logging configuration | | ↳ `ratelimit` | json | Rate limiting configuration for rules in the http\_ratelimit phase | ### 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-15] | 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-15] | Parameter | Type | Description | | --------------------- | ------- | -------------------------------------------------------------------------------- | | `id` | string | Entry point ruleset identifier | | `name` | string | Ruleset name | | `description` | string | Ruleset description | | `kind` | string | Ruleset kind (managed, custom, root, or zone) | | `phase` | string | Phase the ruleset runs in | | `version` | string | Ruleset version | | `last_updated` | string | RFC 3339 timestamp of the last change | | `rules` | array | Rules contained in the ruleset, in evaluation order | | ↳ `id` | string | Rule identifier | | ↳ `version` | string | Rule version | | ↳ `action` | string | Action the rule performs (e.g., block, challenge, log, skip, execute) | | ↳ `action_parameters` | json | Action-specific parameters, including managed-ruleset overrides on execute rules | | ↳ `expression` | string | Filter expression selecting matching requests. Empty on managed-ruleset rules | | ↳ `description` | string | Rule description | | ↳ `enabled` | boolean | Whether the rule is enabled | | ↳ `ref` | string | Rule reference tag that survives rule updates | | ↳ `last_updated` | string | RFC 3339 timestamp of the last change | | ↳ `categories` | array | Managed-rule categories | | ↳ `logging` | json | Logging configuration | | ↳ `ratelimit` | json | Rate limiting configuration for rules in the http\_ratelimit phase | ### 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-16] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `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-16] | Parameter | Type | Description | | --------------------- | ------- | -------------------------------------------------------------------------------- | | `id` | string | Ruleset identifier | | `name` | string | Ruleset name | | `description` | string | Ruleset description | | `kind` | string | Ruleset kind (managed, custom, root, or zone) | | `phase` | string | Phase the ruleset runs in | | `version` | string | Ruleset version | | `last_updated` | string | RFC 3339 timestamp of the last change | | `rules` | array | Rules contained in the ruleset, in evaluation order | | ↳ `id` | string | Rule identifier | | ↳ `version` | string | Rule version | | ↳ `action` | string | Action the rule performs (e.g., block, challenge, log, skip, execute) | | ↳ `action_parameters` | json | Action-specific parameters, including managed-ruleset overrides on execute rules | | ↳ `expression` | string | Filter expression selecting matching requests. Empty on managed-ruleset rules | | ↳ `description` | string | Rule description | | ↳ `enabled` | boolean | Whether the rule is enabled | | ↳ `ref` | string | Rule reference tag that survives rule updates | | ↳ `last_updated` | string | RFC 3339 timestamp of the last change | | ↳ `categories` | array | Managed-rule categories | | ↳ `logging` | json | Logging configuration | | ↳ `ratelimit` | json | Rate limiting configuration for rules in the http\_ratelimit phase | ### 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-17] | Parameter | Type | Required | Description | | ------------------ | ------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `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-17] | Parameter | Type | Description | | --------------------- | ------- | ---------------------------------------------------------- | | `id` | string | Ruleset identifier | | `name` | string | Ruleset name | | `description` | string | Ruleset description | | `kind` | string | Ruleset kind (managed, custom, root, or zone) | | `phase` | string | Phase the ruleset runs in | | `version` | string | Ruleset version after the change | | `last_updated` | string | RFC 3339 timestamp of the last change | | `rules` | array | Rules in the ruleset after the change, in evaluation order | | ↳ `id` | string | Rule identifier | | ↳ `version` | string | Rule version | | ↳ `action` | string | Action the rule performs | | ↳ `action_parameters` | json | Action-specific parameters | | ↳ `expression` | string | Filter expression | | ↳ `description` | string | Rule description | | ↳ `enabled` | boolean | Whether the rule is enabled | | ↳ `ref` | string | Rule reference tag | | ↳ `last_updated` | string | RFC 3339 timestamp of the last change | | ↳ `categories` | array | Managed-rule categories | | ↳ `logging` | json | Logging configuration | | ↳ `ratelimit` | json | Rate limiting configuration | ### 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-18] | Parameter | Type | Required | Description | | ------------------ | ------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `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-18] | Parameter | Type | Description | | --------------------- | ------- | ---------------------------------------------------------- | | `id` | string | Ruleset identifier | | `name` | string | Ruleset name | | `description` | string | Ruleset description | | `kind` | string | Ruleset kind (managed, custom, root, or zone) | | `phase` | string | Phase the ruleset runs in | | `version` | string | Ruleset version after the change | | `last_updated` | string | RFC 3339 timestamp of the last change | | `rules` | array | Rules in the ruleset after the change, in evaluation order | | ↳ `id` | string | Rule identifier | | ↳ `version` | string | Rule version | | ↳ `action` | string | Action the rule performs | | ↳ `action_parameters` | json | Action-specific parameters | | ↳ `expression` | string | Filter expression | | ↳ `description` | string | Rule description | | ↳ `enabled` | boolean | Whether the rule is enabled | | ↳ `ref` | string | Rule reference tag | | ↳ `last_updated` | string | RFC 3339 timestamp of the last change | | ↳ `categories` | array | Managed-rule categories | | ↳ `logging` | json | Logging configuration | | ↳ `ratelimit` | json | Rate limiting configuration | ### 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 | | ----------- | ------ | -------- | ---------------------------------- | | `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 | | --------------------- | ------- | --------------------------------------------------- | | `id` | string | Ruleset identifier | | `name` | string | Ruleset name | | `description` | string | Ruleset description | | `kind` | string | Ruleset kind (managed, custom, root, or zone) | | `phase` | string | Phase the ruleset runs in | | `version` | string | Ruleset version after the change | | `last_updated` | string | RFC 3339 timestamp of the last change | | `rules` | array | Rules remaining in the ruleset, in evaluation order | | ↳ `id` | string | Rule identifier | | ↳ `version` | string | Rule version | | ↳ `action` | string | Action the rule performs | | ↳ `action_parameters` | json | Action-specific parameters | | ↳ `expression` | string | Filter expression | | ↳ `description` | string | Rule description | | ↳ `enabled` | boolean | Whether the rule is enabled | | ↳ `ref` | string | Rule reference tag | | ↳ `last_updated` | string | RFC 3339 timestamp of the last change | | ↳ `categories` | array | Managed-rule categories | | ↳ `logging` | json | Logging configuration | | ↳ `ratelimit` | json | Rate limiting configuration | ### 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-20] | 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-20] | 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 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-21] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------- | | `zoneId` | string | Yes | The zone ID to list rate limiting rules for | | `apiKey` | string | Yes | Cloudflare API Token | #### Output [#output-21] | Parameter | Type | Description | | --------------------- | ------- | --------------------------------------------------------------------------------------------------------------------------------------------- | | `id` | string | Ruleset ID of the http\_ratelimit entry point, needed to create or edit rules | | `name` | string | Ruleset name | | `description` | string | Ruleset description | | `kind` | string | Ruleset kind | | `phase` | string | Phase the ruleset runs in (http\_ratelimit) | | `version` | string | Ruleset version | | `last_updated` | string | RFC 3339 timestamp of the last change | | `rules` | array | Rate limiting rules, in evaluation order | | ↳ `id` | string | Rule identifier | | ↳ `version` | string | Rule version | | ↳ `action` | string | Action applied once the rate limit is exceeded | | ↳ `action_parameters` | json | Action-specific parameters, such as a custom block response | | ↳ `expression` | string | Filter expression selecting the requests the rule applies to | | ↳ `description` | string | Rule description | | ↳ `enabled` | boolean | Whether the rule is enabled | | ↳ `ref` | string | Rule reference tag | | ↳ `last_updated` | string | RFC 3339 timestamp of the last change | | ↳ `categories` | array | Managed-rule categories | | ↳ `logging` | json | Logging configuration | | ↳ `ratelimit` | json | Rate limiting configuration (characteristics, period, requests\_per\_period, mitigation\_timeout, counting\_expression, requests\_to\_origin) | ### 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-22] | Parameter | Type | Required | Description | | --------------------- | ------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `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-22] | Parameter | Type | Description | | --------------------- | ------- | --------------------------------------------------------- | | `id` | string | Ruleset ID of the http\_ratelimit entry point | | `name` | string | Ruleset name | | `description` | string | Ruleset description | | `kind` | string | Ruleset kind | | `phase` | string | Phase the ruleset runs in (http\_ratelimit) | | `version` | string | Ruleset version after the change | | `last_updated` | string | RFC 3339 timestamp of the last change | | `rules` | array | Rate limiting rules after the change, in evaluation order | | ↳ `id` | string | Rule identifier | | ↳ `version` | string | Rule version | | ↳ `action` | string | Action applied once the limit is exceeded | | ↳ `action_parameters` | json | Action-specific parameters | | ↳ `expression` | string | Filter expression | | ↳ `description` | string | Rule description | | ↳ `enabled` | boolean | Whether the rule is enabled | | ↳ `ref` | string | Rule reference tag | | ↳ `last_updated` | string | RFC 3339 timestamp of the last change | | ↳ `categories` | array | Managed-rule categories | | ↳ `logging` | json | Logging configuration | | ↳ `ratelimit` | json | Rate limiting configuration applied to the rule | ### 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-23] | Parameter | Type | Required | Description | | --------------------- | ------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `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-23] | Parameter | Type | Description | | --------------------- | ------- | --------------------------------------------------------- | | `id` | string | Ruleset ID of the http\_ratelimit entry point | | `name` | string | Ruleset name | | `description` | string | Ruleset description | | `kind` | string | Ruleset kind | | `phase` | string | Phase the ruleset runs in (http\_ratelimit) | | `version` | string | Ruleset version after the change | | `last_updated` | string | RFC 3339 timestamp of the last change | | `rules` | array | Rate limiting rules after the change, in evaluation order | | ↳ `id` | string | Rule identifier | | ↳ `version` | string | Rule version | | ↳ `action` | string | Action applied once the limit is exceeded | | ↳ `action_parameters` | json | Action-specific parameters | | ↳ `expression` | string | Filter expression | | ↳ `description` | string | Rule description | | ↳ `enabled` | boolean | Whether the rule is enabled | | ↳ `ref` | string | Rule reference tag | | ↳ `last_updated` | string | RFC 3339 timestamp of the last change | | ↳ `categories` | array | Managed-rule categories | | ↳ `logging` | json | Logging configuration | | ↳ `ratelimit` | json | Rate limiting configuration applied to the rule | ### 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-24] | Parameter | Type | Required | Description | | ----------- | ------- | -------- | ----------------------------------------------------------------- | | `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-24] | Parameter | Type | Description | | ----------------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `applications` | array | Access applications in the account | | ↳ `id` | string | Access application identifier | | ↳ `name` | string | Application name | | ↳ `domain` | string | Primary hostname and path secured by Access | | ↳ `type` | string | Application type (e.g., self\_hosted, saas, ssh, app\_launcher, bookmark) | | ↳ `aud` | string | Audience tag used to verify Access JWTs | | ↳ `session_duration` | string | How long an Access session stays valid (e.g., 24h) | | ↳ `allowed_idps` | array | Identity provider IDs users may authenticate with | | ↳ `app_launcher_visible` | boolean | Whether the app appears in the App Launcher | | ↳ `auto_redirect_to_identity` | boolean | Whether users skip the identity provider picker | | ↳ `custom_deny_message` | string | Message shown when access is denied | | ↳ `custom_deny_url` | string | URL users are redirected to when access is denied | | ↳ `logo_url` | string | Logo image URL | | ↳ `self_hosted_domains` | array | Additional hostnames and paths secured by the application. Cloudflare deprecated this field in favour of destinations, which is the one to read on a current application | | ↳ `destinations` | json | Public and private destinations secured by the application | | ↳ `tags` | array | Tags categorizing the application | | ↳ `policies` | json | Access policies attached to the application | | `total_count` | number | Total number of Access applications | ### 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 | | --------------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `id` | string | Access application identifier | | `name` | string | Application name | | `domain` | string | Primary hostname and path secured by Access | | `type` | string | Application type (e.g., self\_hosted, saas, ssh, app\_launcher, bookmark) | | `aud` | string | Audience tag used to verify Access JWTs | | `session_duration` | string | How long an Access session stays valid (e.g., 24h) | | `allowed_idps` | array | Identity provider IDs users may authenticate with | | `app_launcher_visible` | boolean | Whether the app appears in the App Launcher | | `auto_redirect_to_identity` | boolean | Whether users skip the identity provider picker | | `custom_deny_message` | string | Message shown when access is denied | | `custom_deny_url` | string | URL users are redirected to when access is denied | | `logo_url` | string | Logo image URL | | `self_hosted_domains` | array | Additional hostnames and paths secured by the application. Cloudflare deprecated this field in favour of destinations, which is the one to read on a current application | | `destinations` | json | Public and private destinations secured by the application | | `tags` | array | Tags categorizing the application | | `policies` | json | Access policies attached to the application | ### 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-26] | Parameter | Type | Required | Description | | ------------------------ | ------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `accountId` | string | Yes | The Cloudflare account ID. Access applications are account-scoped | | `type` | string | Yes | Application type: self\_hosted, 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-26] | Parameter | Type | Description | | --------------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `id` | string | Created Access application identifier | | `name` | string | Application name | | `domain` | string | Primary hostname and path secured by Access | | `type` | string | Application type | | `aud` | string | Audience tag used to verify Access JWTs | | `session_duration` | string | How long an Access session stays valid | | `allowed_idps` | array | Identity provider IDs users may authenticate with | | `app_launcher_visible` | boolean | Whether the app appears in the App Launcher | | `auto_redirect_to_identity` | boolean | Whether users skip the identity provider picker | | `custom_deny_message` | string | Message shown when access is denied | | `custom_deny_url` | string | URL users are redirected to when access is denied | | `logo_url` | string | Logo image URL | | `self_hosted_domains` | array | Additional hostnames and paths secured by the application. Cloudflare deprecated this field in favour of destinations, which is the one to read on a current application | | `destinations` | json | Public and private destinations secured by the application | | `tags` | array | Tags categorizing the application | | `policies` | json | Access policies attached to the application | ### 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-27] | Parameter | Type | Required | Description | | ------------------------ | ------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `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, 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-27] | Parameter | Type | Description | | --------------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `id` | string | Access application identifier | | `name` | string | Application name | | `domain` | string | Primary hostname and path secured by Access | | `type` | string | Application type | | `aud` | string | Audience tag used to verify Access JWTs | | `session_duration` | string | How long an Access session stays valid | | `allowed_idps` | array | Identity provider IDs users may authenticate with | | `app_launcher_visible` | boolean | Whether the app appears in the App Launcher | | `auto_redirect_to_identity` | boolean | Whether users skip the identity provider picker | | `custom_deny_message` | string | Message shown when access is denied | | `custom_deny_url` | string | URL users are redirected to when access is denied | | `logo_url` | string | Logo image URL | | `self_hosted_domains` | array | Additional hostnames and paths secured by the application. Cloudflare deprecated this field in favour of destinations, which is the one to read on a current application | | `destinations` | json | Public and private destinations secured by the application | | `tags` | array | Tags categorizing the application | | `policies` | json | Access policies attached to the application | ### 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-28] | 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-28] | Parameter | Type | Description | | --------- | ------ | -------------------------------------------- | | `id` | string | Identifier of the deleted Access application | ### 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-29] | 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-29] | Parameter | Type | Description | | ---------------------------------- | ------- | --------------------------------------------------------------------- | | `policies` | array | Access policies attached to the application | | ↳ `id` | string | Policy identifier | | ↳ `name` | string | Policy name | | ↳ `decision` | string | Decision the policy applies: allow, deny, non\_identity, or bypass | | ↳ `precedence` | number | Evaluation order of the policy within the application | | ↳ `include` | json | Rules evaluated with OR logic — matching any one selects the policy | | ↳ `exclude` | json | Rules evaluated with NOT logic — matching any one rejects the request | | ↳ `require` | json | Rules evaluated with AND logic — all must match | | ↳ `session_duration` | string | How long a session granted by this policy stays valid | | ↳ `approval_required` | boolean | Whether an approver must grant each access request | | ↳ `isolation_required` | boolean | Whether the session must run in a remote browser | | ↳ `purpose_justification_required` | boolean | Whether users must state a reason for access | | ↳ `purpose_justification_prompt` | string | Prompt shown when a justification is required | | ↳ `created_at` | string | Creation timestamp | | ↳ `updated_at` | string | Last update timestamp | | `total_count` | number | Total number of policies | ### 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-30] | Parameter | Type | Required | Description | | ------------------------------ | ------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `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-30] | Parameter | Type | Description | | -------------------------------- | ------- | ------------------------------------------------------------------ | | `id` | string | Created policy identifier | | `name` | string | Policy name | | `decision` | string | Decision the policy applies: allow, deny, non\_identity, or bypass | | `precedence` | number | Evaluation order of the policy within the application | | `include` | json | Rules evaluated with OR logic | | `exclude` | json | Rules evaluated with NOT logic | | `require` | json | Rules evaluated with AND logic | | `session_duration` | string | How long a session granted by this policy stays valid | | `approval_required` | boolean | Whether an approver must grant each access request | | `isolation_required` | boolean | Whether the session must run in a remote browser | | `purpose_justification_required` | boolean | Whether users must state a reason for access | | `purpose_justification_prompt` | string | Prompt shown when a justification is required | | `created_at` | string | Creation timestamp | | `updated_at` | string | Last update timestamp | ### 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: send every rule the policy should keep, because an omitted exclude or require rule may be dropped and widen who gets in. 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-31] | 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 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-31] | Parameter | Type | Description | | -------------------------------- | ------- | ------------------------------------------------------------------ | | `id` | string | Policy identifier | | `name` | string | Policy name | | `decision` | string | Decision the policy applies: allow, deny, non\_identity, or bypass | | `precedence` | number | Evaluation order of the policy within the application | | `include` | json | Rules evaluated with OR logic | | `exclude` | json | Rules evaluated with NOT logic | | `require` | json | Rules evaluated with AND logic | | `session_duration` | string | How long a session granted by this policy stays valid | | `approval_required` | boolean | Whether an approver must grant each access request | | `isolation_required` | boolean | Whether the session must run in a remote browser | | `purpose_justification_required` | boolean | Whether users must state a reason for access | | `purpose_justification_prompt` | string | Prompt shown when a justification is required | | `created_at` | string | Creation timestamp | | `updated_at` | string | Last update timestamp | ### 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-32] | 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-32] | Parameter | Type | Description | | --------- | ------ | --------------------------------------- | | `id` | string | Identifier of the deleted Access policy | ### 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-33] | 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-33] | Parameter | Type | Description | | -------------- | ------ | ----------------------------------------------------------------------------------------------------------------------------------- | | `groups` | array | Access groups in the account | | ↳ `id` | string | Access group identifier | | ↳ `name` | string | Group name | | ↳ `is_default` | json | Rules that place this group in every Access application by default. Cloudflare returns an array of rule objects here, not a boolean | | ↳ `include` | json | Rules evaluated with OR logic | | ↳ `exclude` | json | Rules evaluated with NOT logic | | ↳ `require` | json | Rules evaluated with AND logic | | ↳ `created_at` | string | Creation timestamp | | ↳ `updated_at` | string | Last update timestamp | | `total_count` | number | Total number of Access groups | ### 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-34] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ---------------------------------------------------------------- | | `accountId` | string | Yes | The Cloudflare account ID. Identity providers are account-scoped | | `apiKey` | string | Yes | Cloudflare API Token | #### Output [#output-34] | Parameter | Type | Description | | -------------------- | ------- | -------------------------------------------------------------------- | | `identity_providers` | array | Identity providers configured for Access | | ↳ `id` | string | Identity provider identifier | | ↳ `name` | string | Display name shown to users on the login page | | ↳ `type` | string | Provider type, e.g. azureAD, okta, google, saml, oidc, or onetimepin | | ↳ `read_only` | boolean | Whether the provider is immutable through the API | | ↳ `config` | json | Provider-specific configuration parameters | | ↳ `scim_config` | json | SCIM user and group provisioning configuration | | `total_count` | number | Total number of identity providers | ### 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-35] | 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-35] | Parameter | Type | Description | | ---------------- | ------- | ------------------------------------------------ | | `service_tokens` | array | Access service tokens in the account | | ↳ `id` | string | Service token identifier | | ↳ `name` | string | Service token name | | ↳ `client_id` | string | Client ID sent in the CF-Access-Client-Id header | | ↳ `duration` | string | How long the token stays valid before it expires | | ↳ `enabled` | boolean | Whether the token is active | | ↳ `expires_at` | string | Expiry timestamp | | ↳ `last_seen_at` | string | When the token was last used | | ↳ `created_at` | string | Creation timestamp | | ↳ `updated_at` | string | Last update timestamp | | `total_count` | number | Total number of service tokens | ### 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-36] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | -------------------------------------------------------------------------------------------------------- | | `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-36] | Parameter | Type | Description | | --------------- | ------- | ----------------------------------------------------------------------------------------- | | `id` | string | Created service token identifier | | `name` | string | Service token name | | `client_id` | string | Client ID sent in the CF-Access-Client-Id header | | `client_secret` | string | Client secret sent in the CF-Access-Client-Secret header. Returned only once, at creation | | `duration` | string | How long the token stays valid before it expires | | `enabled` | boolean | Whether the token is active | | `expires_at` | string | Expiry timestamp | | `last_seen_at` | string | When the token was last used | | `created_at` | string | Creation timestamp | | `updated_at` | string | Last update timestamp | ### 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-37] | 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-37] | Parameter | Type | Description | | -------------- | ------- | --------------------------------------- | | `id` | string | Identifier of the revoked service token | | `name` | string | Service token name | | `client_id` | string | Client ID that is no longer accepted | | `duration` | string | Configured token lifetime | | `enabled` | boolean | Whether the token was active | | `expires_at` | string | Expiry timestamp | | `last_seen_at` | string | When the token was last used | | `created_at` | string | Creation timestamp | | `updated_at` | string | Last update timestamp | ### 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-38] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ------------------------------------------------------------------- | | `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-38] | Parameter | Type | Description | | ----------------- | ------ | ------------------------------------------------------------------------------- | | `buckets` | array | R2 buckets in the account | | ↳ `name` | string | Bucket name | | ↳ `creation_date` | string | Creation timestamp | | ↳ `location` | string | Location hint the bucket was created with (apac, eeur, enam, weur, wnam, or oc) | | ↳ `storage_class` | string | Default storage class (Standard or InfrequentAccess) | | ↳ `jurisdiction` | string | Data-residency jurisdiction (default, eu, or fedramp) | | `cursor` | string | Pagination cursor to pass to the next call | ### 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-39] | 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-39] | Parameter | Type | Description | | --------------- | ------ | ------------------------------------------------------------------------------- | | `name` | string | Bucket name | | `creation_date` | string | Creation timestamp | | `location` | string | Location hint the bucket was created with (apac, eeur, enam, weur, wnam, or oc) | | `storage_class` | string | Default storage class (Standard or InfrequentAccess) | | `jurisdiction` | string | Data-residency jurisdiction (default, eu, or fedramp) | ### 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-40] | 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-40] | Parameter | Type | Description | | --------------- | ------ | ----------------------------------------------------- | | `name` | string | Created bucket name | | `creation_date` | string | Creation timestamp | | `location` | string | Location the bucket was created in | | `storage_class` | string | Default storage class (Standard or InfrequentAccess) | | `jurisdiction` | string | Data-residency jurisdiction (default, eu, or fedramp) | ### 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-41] | 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-41] | 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 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-42] | 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-42] | Parameter | Type | Description | | ----------------------- | ------- | ---------------------------------------------------------- | | `scripts` | array | Workers scripts in the account | | ↳ `id` | string | Script name | | ↳ `tag` | string | Immutable script identifier, distinct from the script name | | ↳ `etag` | string | Hash of the script content | | ↳ `created_on` | string | Creation timestamp | | ↳ `modified_on` | string | Last deployment timestamp | | ↳ `usage_model` | string | Billing usage model (standard, bundled, or unbound) | | ↳ `placement_mode` | string | Smart placement mode (smart or targeted) | | ↳ `logpush` | boolean | Whether Workers Logpush is enabled | | ↳ `has_assets` | boolean | Whether the script ships static assets | | ↳ `has_modules` | boolean | Whether the script uses ES modules | | ↳ `compatibility_date` | string | Workers runtime compatibility date | | ↳ `compatibility_flags` | array | Workers runtime compatibility flags | | ↳ `routes` | json | Routes the script is bound to | | ↳ `tail_consumers` | json | Workers that consume this script's tail events | | `total_count` | number | Number of scripts returned | ### 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-43] | 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-43] | Parameter | Type | Description | | --------------------- | ------- | ------------------------------------------------------------------------- | | `bindings` | json | Resource bindings available to the script (KV, R2, D1, secrets, and more) | | `compatibility_date` | string | Workers runtime compatibility date | | `compatibility_flags` | array | Workers runtime compatibility flags | | `limits` | json | CPU and other execution limits | | `logpush` | boolean | Whether Workers Logpush is enabled | | `migrations` | json | Durable Object migrations | | `observability` | json | Observability and log-sampling configuration | | `placement` | json | Smart placement configuration | | `tags` | array | Tags attached to the script | | `tail_consumers` | json | Workers that consume this script's tail events | | `usage_model` | string | Billing usage model | ### 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-44] | 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-44] | Parameter | Type | Description | | ------------- | ------ | -------------------------------------------------- | | `routes` | array | Workers routes on the zone | | ↳ `id` | string | Route identifier | | ↳ `pattern` | string | URL pattern the route matches, e.g. example.com/\* | | ↳ `script` | string | Name of the Workers script handling the route | | `total_count` | number | Number of routes returned | ### 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-45] | 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-45] | Parameter | Type | Description | | --------------------- | ------- | --------------------------------------------------------- | | `tunnels` | array | Cloudflare Tunnels in the account | | ↳ `id` | string | Tunnel identifier | | ↳ `name` | string | Tunnel name | | ↳ `account_tag` | string | Account the tunnel belongs to | | ↳ `config_src` | string | Where the tunnel configuration lives: local or cloudflare | | ↳ `status` | string | Tunnel health: inactive, degraded, healthy, or down | | ↳ `tun_type` | string | Tunnel type, e.g. cfd\_tunnel, warp\_connector, or warp | | ↳ `remote_config` | boolean | Whether the tunnel is remotely managed | | ↳ `metadata` | json | Metadata associated with the tunnel | | ↳ `created_at` | string | Creation timestamp | | ↳ `deleted_at` | string | Deletion timestamp | | ↳ `conns_active_at` | string | When the tunnel last had active connections | | ↳ `conns_inactive_at` | string | When the tunnel last lost all connections | | ↳ `connections` | json | Active connector connections for the tunnel | | `total_count` | number | Total number of tunnels | ### 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-46] | 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-46] | Parameter | Type | Description | | ------------------- | ------- | --------------------------------------------------------- | | `id` | string | Tunnel identifier | | `name` | string | Tunnel name | | `account_tag` | string | Account the tunnel belongs to | | `config_src` | string | Where the tunnel configuration lives: local or cloudflare | | `status` | string | Tunnel health: inactive, degraded, healthy, or down | | `tun_type` | string | Tunnel type, e.g. cfd\_tunnel, warp\_connector, or warp | | `remote_config` | boolean | Whether the tunnel is remotely managed | | `metadata` | json | Metadata associated with the tunnel | | `created_at` | string | Creation timestamp | | `deleted_at` | string | Deletion timestamp | | `conns_active_at` | string | When the tunnel last had active connections | | `conns_inactive_at` | string | When the tunnel last lost all connections | | `connections` | json | Active connector connections for the tunnel | ### 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-47] | 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-47] | Parameter | Type | Description | | ------------ | ------ | ------------------------------------------------------------------------------------------ | | `tunnel_id` | string | Tunnel the configuration belongs to | | `account_id` | string | Account the tunnel belongs to | | `version` | number | Configuration version, incremented on every change | | `source` | string | Where the configuration is managed: local or cloudflare | | `created_at` | string | Creation timestamp | | `config` | json | Tunnel configuration with ingress rules, originRequest defaults, and warp-routing settings | --- # UptimeRobot (/en/integrations/uptimerobot) {/* MANUAL-CONTENT-START:intro */} [UptimeRobot](https://uptimerobot.com/) is a website and API monitoring service that tracks the availability of servers, endpoints, and heartbeat checks, alerting you when something goes down. It supports HTTP, keyword, ping, port, heartbeat, DNS, API, and UDP monitors, and can publish public status pages to keep users informed during incidents. With UptimeRobot, you can: * **Monitor uptime**: Create, update, pause, resume, and delete monitors across multiple check types * **Track incidents**: List and inspect incidents, including root cause details like HTTP response codes * **Schedule maintenance windows**: Suppress alerts during planned downtime, with one-time or recurring schedules * **Manage alert contacts**: Create, retrieve, and delete email alert contacts for notifications * **Publish status pages**: Create and update public status pages, optionally with a custom domain, logo, and icon In Studio, the UptimeRobot integration allows your agents to check monitor status, list and investigate incidents, create or update monitors and maintenance windows, manage alert contacts, and publish status pages—all through the UptimeRobot v3 API. This enables workflows that react to downtime, automate incident triage, schedule maintenance around deployments, and keep public status pages current without manual intervention. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate UptimeRobot into your workflow. Create and manage monitors, inspect incidents, schedule maintenance windows, manage alert contacts, and publish public status pages using the UptimeRobot v3 API. ## Actions [#actions] ### UptimeRobot List Monitors [#uptimerobot-list-monitors] List monitors in your UptimeRobot account, with optional filters and pagination #### Input [#input] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------------------------------ | | `apiKey` | string | Yes | UptimeRobot API key | | `limit` | number | No | Number of monitors per page (1-200, default 50) | | `status` | string | No | Comma-separated statuses to filter by (PAUSED, STARTED, UP, LOOKS\_DOWN, DOWN) | | `name` | string | No | Partial friendly-name filter | | `url` | string | No | Partial URL filter | | `tags` | string | No | Comma-separated tags to filter by (case-sensitive, OR logic) | | `groupId` | number | No | Monitor group ID to filter by | | `cursor` | number | No | Pagination cursor returned by a previous request | #### Output [#output] | Parameter | Type | Description | | ---------------------------- | ------- | ------------------------------------------------------------------ | | `monitors` | array | List of monitors | | ↳ `id` | number | Monitor ID | | ↳ `friendlyName` | string | Friendly name of the monitor | | ↳ `url` | string | Monitored URL or host | | ↳ `type` | string | Monitor type (HTTP, KEYWORD, PING, PORT, HEARTBEAT, DNS, API, UDP) | | ↳ `status` | string | Current status (UP, DOWN, PAUSED, etc.) | | ↳ `interval` | number | Check interval in seconds | | ↳ `timeout` | number | Check timeout in seconds | | ↳ `port` | number | Port for Port/UDP monitors | | ↳ `keywordType` | string | Keyword match type for Keyword monitors | | ↳ `keywordValue` | string | Keyword to match for Keyword monitors | | ↳ `httpMethodType` | string | HTTP method used for the check | | ↳ `authType` | string | HTTP authentication method | | ↳ `successHttpResponseCodes` | array | HTTP response codes treated as success | | ↳ `checkSSLErrors` | boolean | Whether SSL/domain expiration errors are checked | | ↳ `followRedirections` | boolean | Whether redirects are followed | | ↳ `sslExpirationReminder` | boolean | Whether SSL expiration reminders are enabled | | ↳ `domainExpirationReminder` | boolean | Whether domain expiration reminders are enabled | | ↳ `responseTimeThreshold` | number | Response time threshold in milliseconds | | ↳ `currentStateDuration` | number | Seconds spent in the current state | | ↳ `lastIncidentId` | string | ID of the most recent incident | | ↳ `groupId` | number | Monitor group ID (0 if ungrouped) | | ↳ `createDateTime` | string | When the monitor was created | | ↳ `tags` | array | Tags assigned to the monitor | | ↳ `id` | number | Tag ID | | ↳ `name` | string | Tag name | | ↳ `color` | string | Tag color | | ↳ `assignedAlertContacts` | array | Alert contacts assigned to the monitor | | ↳ `alertContactId` | number | Alert contact ID | | ↳ `threshold` | number | Notification delay threshold in minutes | | ↳ `recurrence` | number | Repeat notification interval in minutes | | ↳ `lastIncident` | object | Details of the most recent incident | | ↳ `id` | string | Incident ID | | ↳ `status` | string | Incident status | | ↳ `cause` | number | Incident cause code | | ↳ `reason` | string | Incident reason | | ↳ `startedAt` | string | When the incident started | | ↳ `duration` | number | Incident duration in seconds | | `nextLink` | string | URL for the next page of results, or null on the last page | ### UptimeRobot Get Monitor [#uptimerobot-get-monitor] Get the details of a single UptimeRobot monitor by ID #### Input [#input-1] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ----------------------------- | | `apiKey` | string | Yes | UptimeRobot API key | | `monitorId` | number | Yes | ID of the monitor to retrieve | #### Output [#output-1] | Parameter | Type | Description | | ---------------------------- | ------- | ------------------------------------------------------------------ | | `monitor` | object | The monitor details | | ↳ `id` | number | Monitor ID | | ↳ `friendlyName` | string | Friendly name of the monitor | | ↳ `url` | string | Monitored URL or host | | ↳ `type` | string | Monitor type (HTTP, KEYWORD, PING, PORT, HEARTBEAT, DNS, API, UDP) | | ↳ `status` | string | Current status (UP, DOWN, PAUSED, etc.) | | ↳ `interval` | number | Check interval in seconds | | ↳ `timeout` | number | Check timeout in seconds | | ↳ `port` | number | Port for Port/UDP monitors | | ↳ `keywordType` | string | Keyword match type for Keyword monitors | | ↳ `keywordValue` | string | Keyword to match for Keyword monitors | | ↳ `httpMethodType` | string | HTTP method used for the check | | ↳ `authType` | string | HTTP authentication method | | ↳ `successHttpResponseCodes` | array | HTTP response codes treated as success | | ↳ `checkSSLErrors` | boolean | Whether SSL/domain expiration errors are checked | | ↳ `followRedirections` | boolean | Whether redirects are followed | | ↳ `sslExpirationReminder` | boolean | Whether SSL expiration reminders are enabled | | ↳ `domainExpirationReminder` | boolean | Whether domain expiration reminders are enabled | | ↳ `responseTimeThreshold` | number | Response time threshold in milliseconds | | ↳ `currentStateDuration` | number | Seconds spent in the current state | | ↳ `lastIncidentId` | string | ID of the most recent incident | | ↳ `groupId` | number | Monitor group ID (0 if ungrouped) | | ↳ `createDateTime` | string | When the monitor was created | | ↳ `tags` | array | Tags assigned to the monitor | | ↳ `id` | number | Tag ID | | ↳ `name` | string | Tag name | | ↳ `color` | string | Tag color | | ↳ `assignedAlertContacts` | array | Alert contacts assigned to the monitor | | ↳ `alertContactId` | number | Alert contact ID | | ↳ `threshold` | number | Notification delay threshold in minutes | | ↳ `recurrence` | number | Repeat notification interval in minutes | | ↳ `lastIncident` | object | Details of the most recent incident | | ↳ `id` | string | Incident ID | | ↳ `status` | string | Incident status | | ↳ `cause` | number | Incident cause code | | ↳ `reason` | string | Incident reason | | ↳ `startedAt` | string | When the incident started | | ↳ `duration` | number | Incident duration in seconds | ### UptimeRobot Create Monitor [#uptimerobot-create-monitor] Create a new monitor in UptimeRobot #### Input [#input-2] | Parameter | Type | Required | Description | | -------------------------- | ------- | -------- | ----------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | UptimeRobot API key | | `friendlyName` | string | Yes | Friendly name of the monitor | | `type` | string | Yes | Monitor type: HTTP, KEYWORD, PING, PORT, HEARTBEAT, DNS, API, or UDP | | `url` | string | No | URL or host to monitor (not required for Heartbeat monitors) | | `interval` | number | Yes | Check interval in seconds (minimum 30) | | `checkTimeout` | number | No | Check timeout in seconds, 0-60 (HTTP, Keyword and Port monitors only) | | `port` | number | No | Port to check, 1-65535 (required for Port and UDP monitors) | | `keywordType` | string | No | Keyword match type for Keyword monitors: ALERT\_EXISTS or ALERT\_NOT\_EXISTS | | `keywordValue` | string | No | Keyword to look for (Keyword monitors only) | | `keywordCaseType` | number | No | Keyword case sensitivity: 0 (case-sensitive) or 1 (case-insensitive) | | `httpMethodType` | string | No | HTTP method: HEAD, GET, POST, PUT, PATCH, DELETE, or OPTIONS (defaults to HEAD) | | `authType` | string | No | HTTP authentication: NONE, HTTP\_BASIC, DIGEST, or BEARER | | `httpUsername` | string | No | Username for HTTP authentication | | `httpPassword` | string | No | Password for HTTP authentication | | `gracePeriod` | number | No | Grace period in seconds, 0-86400 (Heartbeat monitors only) | | `successHttpResponseCodes` | string | No | Comma-separated success HTTP response codes (e.g. "2xx,3xx") | | `checkSSLErrors` | boolean | No | Whether to check for SSL and domain expiration errors | | `followRedirections` | boolean | No | Whether to follow redirects | | `sslExpirationReminder` | boolean | No | Whether to send SSL certificate expiration reminders | | `domainExpirationReminder` | boolean | No | Whether to send domain expiration reminders | | `responseTimeThreshold` | number | No | Response time threshold in milliseconds, 0-60000 | | `tagNames` | string | No | Comma-separated tag names to assign to the monitor | | `assignedAlertContacts` | string | No | JSON array of alert-contact assignments, e.g. \[\{"alertContactId":123,"threshold":0,"recurrence":0}] | | `customHttpHeaders` | string | No | JSON object of custom HTTP headers to send with the request | | `groupId` | number | No | Monitor group ID to assign the monitor to (0 for no group) | #### Output [#output-2] | Parameter | Type | Description | | ---------------------------- | ------- | ------------------------------------------------------------------ | | `monitor` | object | The created monitor | | ↳ `id` | number | Monitor ID | | ↳ `friendlyName` | string | Friendly name of the monitor | | ↳ `url` | string | Monitored URL or host | | ↳ `type` | string | Monitor type (HTTP, KEYWORD, PING, PORT, HEARTBEAT, DNS, API, UDP) | | ↳ `status` | string | Current status (UP, DOWN, PAUSED, etc.) | | ↳ `interval` | number | Check interval in seconds | | ↳ `timeout` | number | Check timeout in seconds | | ↳ `port` | number | Port for Port/UDP monitors | | ↳ `keywordType` | string | Keyword match type for Keyword monitors | | ↳ `keywordValue` | string | Keyword to match for Keyword monitors | | ↳ `httpMethodType` | string | HTTP method used for the check | | ↳ `authType` | string | HTTP authentication method | | ↳ `successHttpResponseCodes` | array | HTTP response codes treated as success | | ↳ `checkSSLErrors` | boolean | Whether SSL/domain expiration errors are checked | | ↳ `followRedirections` | boolean | Whether redirects are followed | | ↳ `sslExpirationReminder` | boolean | Whether SSL expiration reminders are enabled | | ↳ `domainExpirationReminder` | boolean | Whether domain expiration reminders are enabled | | ↳ `responseTimeThreshold` | number | Response time threshold in milliseconds | | ↳ `currentStateDuration` | number | Seconds spent in the current state | | ↳ `lastIncidentId` | string | ID of the most recent incident | | ↳ `groupId` | number | Monitor group ID (0 if ungrouped) | | ↳ `createDateTime` | string | When the monitor was created | | ↳ `tags` | array | Tags assigned to the monitor | | ↳ `id` | number | Tag ID | | ↳ `name` | string | Tag name | | ↳ `color` | string | Tag color | | ↳ `assignedAlertContacts` | array | Alert contacts assigned to the monitor | | ↳ `alertContactId` | number | Alert contact ID | | ↳ `threshold` | number | Notification delay threshold in minutes | | ↳ `recurrence` | number | Repeat notification interval in minutes | | ↳ `lastIncident` | object | Details of the most recent incident | | ↳ `id` | string | Incident ID | | ↳ `status` | string | Incident status | | ↳ `cause` | number | Incident cause code | | ↳ `reason` | string | Incident reason | | ↳ `startedAt` | string | When the incident started | | ↳ `duration` | number | Incident duration in seconds | ### UptimeRobot Update Monitor [#uptimerobot-update-monitor] Update an existing UptimeRobot monitor. Only the provided fields are changed. #### Input [#input-3] | Parameter | Type | Required | Description | | -------------------------- | ------- | -------- | ----------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | UptimeRobot API key | | `monitorId` | number | Yes | ID of the monitor to update | | `friendlyName` | string | No | New friendly name | | `url` | string | No | New URL or host to monitor | | `interval` | number | No | New check interval in seconds (minimum 30) | | `checkTimeout` | number | No | New check timeout in seconds, 0-60 | | `port` | number | No | New port, 1-65535 (Port and UDP monitors) | | `keywordType` | string | No | Keyword match type: ALERT\_EXISTS or ALERT\_NOT\_EXISTS | | `keywordValue` | string | No | New keyword to look for | | `httpMethodType` | string | No | HTTP method: HEAD, GET, POST, PUT, PATCH, DELETE, or OPTIONS | | `authType` | string | No | HTTP authentication: NONE, HTTP\_BASIC, DIGEST, or BEARER | | `httpUsername` | string | No | Username for HTTP authentication | | `httpPassword` | string | No | Password for HTTP authentication | | `successHttpResponseCodes` | string | No | Comma-separated success HTTP response codes (e.g. "2xx,3xx") | | `checkSSLErrors` | boolean | No | Whether to check for SSL and domain expiration errors | | `followRedirections` | boolean | No | Whether to follow redirects | | `sslExpirationReminder` | boolean | No | Whether to send SSL certificate expiration reminders | | `domainExpirationReminder` | boolean | No | Whether to send domain expiration reminders | | `responseTimeThreshold` | number | No | Response time threshold in milliseconds, 0-60000 | | `tagNames` | string | No | Comma-separated tag names to assign to the monitor | | `assignedAlertContacts` | string | No | JSON array of alert-contact assignments, e.g. \[\{"alertContactId":123,"threshold":0,"recurrence":0}] | | `customHttpHeaders` | string | No | JSON object of custom HTTP headers to send with the request | | `groupId` | number | No | Monitor group ID to assign the monitor to (0 for no group) | #### Output [#output-3] | Parameter | Type | Description | | ---------------------------- | ------- | ------------------------------------------------------------------ | | `monitor` | object | The updated monitor | | ↳ `id` | number | Monitor ID | | ↳ `friendlyName` | string | Friendly name of the monitor | | ↳ `url` | string | Monitored URL or host | | ↳ `type` | string | Monitor type (HTTP, KEYWORD, PING, PORT, HEARTBEAT, DNS, API, UDP) | | ↳ `status` | string | Current status (UP, DOWN, PAUSED, etc.) | | ↳ `interval` | number | Check interval in seconds | | ↳ `timeout` | number | Check timeout in seconds | | ↳ `port` | number | Port for Port/UDP monitors | | ↳ `keywordType` | string | Keyword match type for Keyword monitors | | ↳ `keywordValue` | string | Keyword to match for Keyword monitors | | ↳ `httpMethodType` | string | HTTP method used for the check | | ↳ `authType` | string | HTTP authentication method | | ↳ `successHttpResponseCodes` | array | HTTP response codes treated as success | | ↳ `checkSSLErrors` | boolean | Whether SSL/domain expiration errors are checked | | ↳ `followRedirections` | boolean | Whether redirects are followed | | ↳ `sslExpirationReminder` | boolean | Whether SSL expiration reminders are enabled | | ↳ `domainExpirationReminder` | boolean | Whether domain expiration reminders are enabled | | ↳ `responseTimeThreshold` | number | Response time threshold in milliseconds | | ↳ `currentStateDuration` | number | Seconds spent in the current state | | ↳ `lastIncidentId` | string | ID of the most recent incident | | ↳ `groupId` | number | Monitor group ID (0 if ungrouped) | | ↳ `createDateTime` | string | When the monitor was created | | ↳ `tags` | array | Tags assigned to the monitor | | ↳ `id` | number | Tag ID | | ↳ `name` | string | Tag name | | ↳ `color` | string | Tag color | | ↳ `assignedAlertContacts` | array | Alert contacts assigned to the monitor | | ↳ `alertContactId` | number | Alert contact ID | | ↳ `threshold` | number | Notification delay threshold in minutes | | ↳ `recurrence` | number | Repeat notification interval in minutes | | ↳ `lastIncident` | object | Details of the most recent incident | | ↳ `id` | string | Incident ID | | ↳ `status` | string | Incident status | | ↳ `cause` | number | Incident cause code | | ↳ `reason` | string | Incident reason | | ↳ `startedAt` | string | When the incident started | | ↳ `duration` | number | Incident duration in seconds | ### UptimeRobot Delete Monitor [#uptimerobot-delete-monitor] Permanently delete an UptimeRobot monitor by ID #### Input [#input-4] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | --------------------------- | | `apiKey` | string | Yes | UptimeRobot API key | | `monitorId` | number | Yes | ID of the monitor to delete | #### Output [#output-4] | Parameter | Type | Description | | --------- | ------- | ------------------------------- | | `deleted` | boolean | Whether the monitor was deleted | | `id` | number | ID of the deleted monitor | ### UptimeRobot Pause Monitor [#uptimerobot-pause-monitor] Pause an UptimeRobot monitor so it stops running checks #### Input [#input-5] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | -------------------------- | | `apiKey` | string | Yes | UptimeRobot API key | | `monitorId` | number | Yes | ID of the monitor to pause | #### Output [#output-5] | Parameter | Type | Description | | ---------------------------- | ------- | ------------------------------------------------------------------ | | `monitor` | object | The paused monitor | | ↳ `id` | number | Monitor ID | | ↳ `friendlyName` | string | Friendly name of the monitor | | ↳ `url` | string | Monitored URL or host | | ↳ `type` | string | Monitor type (HTTP, KEYWORD, PING, PORT, HEARTBEAT, DNS, API, UDP) | | ↳ `status` | string | Current status (UP, DOWN, PAUSED, etc.) | | ↳ `interval` | number | Check interval in seconds | | ↳ `timeout` | number | Check timeout in seconds | | ↳ `port` | number | Port for Port/UDP monitors | | ↳ `keywordType` | string | Keyword match type for Keyword monitors | | ↳ `keywordValue` | string | Keyword to match for Keyword monitors | | ↳ `httpMethodType` | string | HTTP method used for the check | | ↳ `authType` | string | HTTP authentication method | | ↳ `successHttpResponseCodes` | array | HTTP response codes treated as success | | ↳ `checkSSLErrors` | boolean | Whether SSL/domain expiration errors are checked | | ↳ `followRedirections` | boolean | Whether redirects are followed | | ↳ `sslExpirationReminder` | boolean | Whether SSL expiration reminders are enabled | | ↳ `domainExpirationReminder` | boolean | Whether domain expiration reminders are enabled | | ↳ `responseTimeThreshold` | number | Response time threshold in milliseconds | | ↳ `currentStateDuration` | number | Seconds spent in the current state | | ↳ `lastIncidentId` | string | ID of the most recent incident | | ↳ `groupId` | number | Monitor group ID (0 if ungrouped) | | ↳ `createDateTime` | string | When the monitor was created | | ↳ `tags` | array | Tags assigned to the monitor | | ↳ `id` | number | Tag ID | | ↳ `name` | string | Tag name | | ↳ `color` | string | Tag color | | ↳ `assignedAlertContacts` | array | Alert contacts assigned to the monitor | | ↳ `alertContactId` | number | Alert contact ID | | ↳ `threshold` | number | Notification delay threshold in minutes | | ↳ `recurrence` | number | Repeat notification interval in minutes | | ↳ `lastIncident` | object | Details of the most recent incident | | ↳ `id` | string | Incident ID | | ↳ `status` | string | Incident status | | ↳ `cause` | number | Incident cause code | | ↳ `reason` | string | Incident reason | | ↳ `startedAt` | string | When the incident started | | ↳ `duration` | number | Incident duration in seconds | ### UptimeRobot Start Monitor [#uptimerobot-start-monitor] Resume a paused UptimeRobot monitor so it starts running checks again #### Input [#input-6] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | -------------------------- | | `apiKey` | string | Yes | UptimeRobot API key | | `monitorId` | number | Yes | ID of the monitor to start | #### Output [#output-6] | Parameter | Type | Description | | ---------------------------- | ------- | ------------------------------------------------------------------ | | `monitor` | object | The started monitor | | ↳ `id` | number | Monitor ID | | ↳ `friendlyName` | string | Friendly name of the monitor | | ↳ `url` | string | Monitored URL or host | | ↳ `type` | string | Monitor type (HTTP, KEYWORD, PING, PORT, HEARTBEAT, DNS, API, UDP) | | ↳ `status` | string | Current status (UP, DOWN, PAUSED, etc.) | | ↳ `interval` | number | Check interval in seconds | | ↳ `timeout` | number | Check timeout in seconds | | ↳ `port` | number | Port for Port/UDP monitors | | ↳ `keywordType` | string | Keyword match type for Keyword monitors | | ↳ `keywordValue` | string | Keyword to match for Keyword monitors | | ↳ `httpMethodType` | string | HTTP method used for the check | | ↳ `authType` | string | HTTP authentication method | | ↳ `successHttpResponseCodes` | array | HTTP response codes treated as success | | ↳ `checkSSLErrors` | boolean | Whether SSL/domain expiration errors are checked | | ↳ `followRedirections` | boolean | Whether redirects are followed | | ↳ `sslExpirationReminder` | boolean | Whether SSL expiration reminders are enabled | | ↳ `domainExpirationReminder` | boolean | Whether domain expiration reminders are enabled | | ↳ `responseTimeThreshold` | number | Response time threshold in milliseconds | | ↳ `currentStateDuration` | number | Seconds spent in the current state | | ↳ `lastIncidentId` | string | ID of the most recent incident | | ↳ `groupId` | number | Monitor group ID (0 if ungrouped) | | ↳ `createDateTime` | string | When the monitor was created | | ↳ `tags` | array | Tags assigned to the monitor | | ↳ `id` | number | Tag ID | | ↳ `name` | string | Tag name | | ↳ `color` | string | Tag color | | ↳ `assignedAlertContacts` | array | Alert contacts assigned to the monitor | | ↳ `alertContactId` | number | Alert contact ID | | ↳ `threshold` | number | Notification delay threshold in minutes | | ↳ `recurrence` | number | Repeat notification interval in minutes | | ↳ `lastIncident` | object | Details of the most recent incident | | ↳ `id` | string | Incident ID | | ↳ `status` | string | Incident status | | ↳ `cause` | number | Incident cause code | | ↳ `reason` | string | Incident reason | | ↳ `startedAt` | string | When the incident started | | ↳ `duration` | number | Incident duration in seconds | ### UptimeRobot List Incidents [#uptimerobot-list-incidents] List incidents across your UptimeRobot account (last 24 hours by default), with optional filters #### Input [#input-7] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | -------------------------------------------------------------- | | `apiKey` | string | Yes | UptimeRobot API key | | `monitorId` | number | No | Filter incidents by monitor ID | | `monitorName` | string | No | Filter incidents by monitor name | | `startedAfter` | string | No | Only include incidents started after this ISO 8601 timestamp | | `startedBefore` | string | No | Only include incidents started before this ISO 8601 timestamp | | `cursor` | string | No | Pagination cursor (incident ID) returned by a previous request | #### Output [#output-7] | Parameter | Type | Description | | -------------------- | ------- | ---------------------------------------------------------- | | `incidents` | array | List of incidents | | ↳ `id` | string | Incident ID | | ↳ `status` | string | Incident status | | ↳ `type` | string | Incident type | | ↳ `cause` | number | Incident cause code | | ↳ `reason` | string | Incident reason | | ↳ `monitorId` | number | Affected monitor ID | | ↳ `monitorName` | string | Affected monitor name | | ↳ `commentsCount` | number | Number of comments | | ↳ `startedAt` | string | When the incident started | | ↳ `resolvedAt` | string | When the incident resolved | | ↳ `duration` | number | Incident duration in seconds | | ↳ `includeInReports` | boolean | Whether the incident is included in reports | | `nextLink` | string | URL for the next page of results, or null on the last page | ### UptimeRobot Get Incident [#uptimerobot-get-incident] Get the details of a single UptimeRobot incident by ID #### Input [#input-8] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------------------------ | | `apiKey` | string | Yes | UptimeRobot API key | | `incidentId` | string | Yes | ID of the incident to retrieve | #### Output [#output-8] | Parameter | Type | Description | | ----------------------- | ------ | ------------------------------------------ | | `incident` | object | The incident details | | ↳ `id` | string | Incident ID | | ↳ `status` | string | Incident status | | ↳ `cause` | number | Incident cause code | | ↳ `reason` | string | Incident reason | | ↳ `duration` | number | Incident duration in seconds | | ↳ `startedAt` | string | When the incident started | | ↳ `resolvedAt` | string | When the incident resolved | | ↳ `rootCause` | object | Root cause details for the incident | | ↳ `url` | string | Checked URL | | ↳ `httpResponseCode` | number | HTTP response code observed | | ↳ `responseDownloadUrl` | string | URL to download the captured response body | ### UptimeRobot List Maintenance Windows [#uptimerobot-list-maintenance-windows] List maintenance windows in your UptimeRobot account #### Input [#input-9] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------ | | `apiKey` | string | Yes | UptimeRobot API key | | `cursor` | string | No | Pagination cursor returned by a previous request | #### Output [#output-9] | Parameter | Type | Description | | -------------------- | ------- | ---------------------------------------------------------- | | `maintenanceWindows` | array | List of maintenance windows | | ↳ `id` | number | Maintenance window ID | | ↳ `userId` | number | Owner user ID | | ↳ `name` | string | Maintenance window name | | ↳ `interval` | string | Recurrence interval (once, daily, weekly, monthly) | | ↳ `date` | string | Start date (YYYY-MM-DD) | | ↳ `time` | string | Start time (HH:mm:ss) | | ↳ `duration` | number | Duration in minutes | | ↳ `autoAddMonitors` | boolean | Whether all monitors are auto-added | | ↳ `monitorIds` | array | Assigned monitor IDs | | ↳ `days` | array | Days for weekly/monthly recurrence | | ↳ `status` | string | Status (active or paused) | | ↳ `created` | string | When the maintenance window was created | | `nextLink` | string | URL for the next page of results, or null on the last page | ### UptimeRobot Get Maintenance Window [#uptimerobot-get-maintenance-window] Get the details of a single UptimeRobot maintenance window by ID #### Input [#input-10] | Parameter | Type | Required | Description | | --------------------- | ------ | -------- | ---------------------------------------- | | `apiKey` | string | Yes | UptimeRobot API key | | `maintenanceWindowId` | number | Yes | ID of the maintenance window to retrieve | #### Output [#output-10] | Parameter | Type | Description | | ------------------- | ------- | -------------------------------------------------- | | `maintenanceWindow` | object | The maintenance window details | | ↳ `id` | number | Maintenance window ID | | ↳ `userId` | number | Owner user ID | | ↳ `name` | string | Maintenance window name | | ↳ `interval` | string | Recurrence interval (once, daily, weekly, monthly) | | ↳ `date` | string | Start date (YYYY-MM-DD) | | ↳ `time` | string | Start time (HH:mm:ss) | | ↳ `duration` | number | Duration in minutes | | ↳ `autoAddMonitors` | boolean | Whether all monitors are auto-added | | ↳ `monitorIds` | array | Assigned monitor IDs | | ↳ `days` | array | Days for weekly/monthly recurrence | | ↳ `status` | string | Status (active or paused) | | ↳ `created` | string | When the maintenance window was created | ### UptimeRobot Create Maintenance Window [#uptimerobot-create-maintenance-window] Create a new maintenance window to suppress alerts during planned downtime #### Input [#input-11] | Parameter | Type | Required | Description | | ----------------- | ------- | -------- | ---------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | UptimeRobot API key | | `name` | string | Yes | Name of the maintenance window | | `interval` | string | Yes | Recurrence interval: once, daily, weekly, or monthly | | `date` | string | Yes | Start date in YYYY-MM-DD format | | `time` | string | Yes | Start time in HH:mm:ss format | | `duration` | number | Yes | Duration in minutes (minimum 1) | | `autoAddMonitors` | boolean | No | Whether to automatically add all monitors to this window | | `days` | string | No | Comma-separated days for weekly (1-7) or monthly (day-of-month, -1 for last day) windows | | `monitorIds` | string | No | Comma-separated monitor IDs to assign to the window | #### Output [#output-11] | Parameter | Type | Description | | ------------------- | ------- | -------------------------------------------------- | | `maintenanceWindow` | object | The created maintenance window | | ↳ `id` | number | Maintenance window ID | | ↳ `userId` | number | Owner user ID | | ↳ `name` | string | Maintenance window name | | ↳ `interval` | string | Recurrence interval (once, daily, weekly, monthly) | | ↳ `date` | string | Start date (YYYY-MM-DD) | | ↳ `time` | string | Start time (HH:mm:ss) | | ↳ `duration` | number | Duration in minutes | | ↳ `autoAddMonitors` | boolean | Whether all monitors are auto-added | | ↳ `monitorIds` | array | Assigned monitor IDs | | ↳ `days` | array | Days for weekly/monthly recurrence | | ↳ `status` | string | Status (active or paused) | | ↳ `created` | string | When the maintenance window was created | ### UptimeRobot Update Maintenance Window [#uptimerobot-update-maintenance-window] Update an existing maintenance window. Only the provided fields are changed. #### Input [#input-12] | Parameter | Type | Required | Description | | --------------------- | ------ | -------- | ---------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | UptimeRobot API key | | `maintenanceWindowId` | number | Yes | ID of the maintenance window to update | | `name` | string | No | New name of the maintenance window | | `interval` | string | No | Recurrence interval: once, daily, weekly, or monthly | | `date` | string | No | Start date in YYYY-MM-DD format | | `time` | string | No | Start time in HH:mm:ss format | | `duration` | number | No | Duration in minutes (minimum 1) | | `days` | string | No | Comma-separated days for weekly (1-7) or monthly (day-of-month, -1 for last day) windows | | `monitorIds` | string | No | Comma-separated monitor IDs to assign to the window | | `status` | string | No | Set to "active" to enable or "paused" to disable the maintenance window | #### Output [#output-12] | Parameter | Type | Description | | ------------------- | ------- | -------------------------------------------------- | | `maintenanceWindow` | object | The updated maintenance window | | ↳ `id` | number | Maintenance window ID | | ↳ `userId` | number | Owner user ID | | ↳ `name` | string | Maintenance window name | | ↳ `interval` | string | Recurrence interval (once, daily, weekly, monthly) | | ↳ `date` | string | Start date (YYYY-MM-DD) | | ↳ `time` | string | Start time (HH:mm:ss) | | ↳ `duration` | number | Duration in minutes | | ↳ `autoAddMonitors` | boolean | Whether all monitors are auto-added | | ↳ `monitorIds` | array | Assigned monitor IDs | | ↳ `days` | array | Days for weekly/monthly recurrence | | ↳ `status` | string | Status (active or paused) | | ↳ `created` | string | When the maintenance window was created | ### UptimeRobot Delete Maintenance Window [#uptimerobot-delete-maintenance-window] Permanently delete an UptimeRobot maintenance window by ID #### Input [#input-13] | Parameter | Type | Required | Description | | --------------------- | ------ | -------- | -------------------------------------- | | `apiKey` | string | Yes | UptimeRobot API key | | `maintenanceWindowId` | number | Yes | ID of the maintenance window to delete | #### Output [#output-13] | Parameter | Type | Description | | --------- | ------- | ------------------------------------------ | | `deleted` | boolean | Whether the maintenance window was deleted | | `id` | number | ID of the deleted maintenance window | ### UptimeRobot List Alert Contacts [#uptimerobot-list-alert-contacts] List the personal alert contacts in your UptimeRobot account #### Input [#input-14] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------ | | `apiKey` | string | Yes | UptimeRobot API key | | `cursor` | number | No | Pagination cursor returned by a previous request | #### Output [#output-14] | Parameter | Type | Description | | -------------------------- | ------- | ---------------------------------------------------------- | | `alertContacts` | array | List of alert contacts | | ↳ `id` | number | Alert contact ID | | ↳ `friendlyName` | string | Display name | | ↳ `type` | string | Alert contact type | | ↳ `value` | string | Contact value (e.g. email address) | | ↳ `customValue` | string | Custom value for webhook-style contacts | | ↳ `status` | string | Activation status | | ↳ `enableNotificationsFor` | string | Which monitor events trigger notifications | | ↳ `sslExpirationReminder` | boolean | Whether SSL expiration reminders are enabled | | `nextLink` | string | URL for the next page of results, or null on the last page | ### UptimeRobot Get Alert Contact [#uptimerobot-get-alert-contact] Get the details of a single UptimeRobot alert contact by ID #### Input [#input-15] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ----------------------------------- | | `apiKey` | string | Yes | UptimeRobot API key | | `alertContactId` | number | Yes | ID of the alert contact to retrieve | #### Output [#output-15] | Parameter | Type | Description | | -------------------------- | ------- | -------------------------------------------- | | `alertContact` | object | The alert contact details | | ↳ `id` | number | Alert contact ID | | ↳ `friendlyName` | string | Display name | | ↳ `type` | string | Alert contact type | | ↳ `value` | string | Contact value (e.g. email address) | | ↳ `customValue` | string | Custom value for webhook-style contacts | | ↳ `status` | string | Activation status | | ↳ `enableNotificationsFor` | string | Which monitor events trigger notifications | | ↳ `sslExpirationReminder` | boolean | Whether SSL expiration reminders are enabled | ### UptimeRobot Create Alert Contact [#uptimerobot-create-alert-contact] Create an email alert contact in UptimeRobot. The contact must be confirmed via email before it can receive alerts. #### Input [#input-16] | Parameter | Type | Required | Description | | ------------------------ | ------ | -------- | ------------------------------------------------- | | `apiKey` | string | Yes | UptimeRobot API key | | `value` | string | Yes | Email address for the alert contact | | `friendlyName` | string | No | Display name for the alert contact | | `enableNotificationsFor` | number | No | Which monitor events to notify for: 0, 1, 2, or 3 | #### Output [#output-16] | Parameter | Type | Description | | -------------------------- | ------- | -------------------------------------------- | | `alertContact` | object | The created alert contact | | ↳ `id` | number | Alert contact ID | | ↳ `friendlyName` | string | Display name | | ↳ `type` | string | Alert contact type | | ↳ `value` | string | Contact value (e.g. email address) | | ↳ `customValue` | string | Custom value for webhook-style contacts | | ↳ `status` | string | Activation status | | ↳ `enableNotificationsFor` | string | Which monitor events trigger notifications | | ↳ `sslExpirationReminder` | boolean | Whether SSL expiration reminders are enabled | ### UptimeRobot Delete Alert Contact [#uptimerobot-delete-alert-contact] Permanently delete an UptimeRobot alert contact by ID #### Input [#input-17] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | --------------------------------- | | `apiKey` | string | Yes | UptimeRobot API key | | `alertContactId` | number | Yes | ID of the alert contact to delete | #### Output [#output-17] | Parameter | Type | Description | | --------- | ------- | ------------------------------------- | | `deleted` | boolean | Whether the alert contact was deleted | | `id` | number | ID of the deleted alert contact | ### UptimeRobot List Status Pages [#uptimerobot-list-status-pages] List the public status pages in your UptimeRobot account #### Input [#input-18] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------ | | `apiKey` | string | Yes | UptimeRobot API key | | `cursor` | number | No | Pagination cursor returned by a previous request | #### Output [#output-18] | Parameter | Type | Description | | ----------------- | ------- | ---------------------------------------------------------- | | `psps` | array | List of public status pages | | ↳ `id` | number | Public status page ID | | ↳ `friendlyName` | string | Status page name | | ↳ `customDomain` | string | Custom domain | | ↳ `isPasswordSet` | boolean | Whether the page is password protected | | ↳ `monitorIds` | array | Monitor IDs shown on the page | | ↳ `tagIds` | array | Tag IDs shown on the page | | ↳ `monitorsCount` | number | Number of monitors on the page | | ↳ `status` | string | Status (ENABLED or PAUSED) | | ↳ `urlKey` | string | Public URL key | | ↳ `homepageLink` | string | Homepage link target | | ↳ `gaCode` | string | Google Analytics code | | ↳ `icon` | string | Icon URL | | ↳ `logo` | string | Logo URL | | ↳ `noIndex` | boolean | Whether search engine indexing is disabled | | ↳ `hideUrlLinks` | boolean | Whether the "Powered by" footer link is hidden | | ↳ `subscription` | boolean | Whether the subscribe feature is enabled | | `nextLink` | string | URL for the next page of results, or null on the last page | ### UptimeRobot Get Status Page [#uptimerobot-get-status-page] Get the details of a single UptimeRobot public status page by ID #### Input [#input-19] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------------------------- | | `apiKey` | string | Yes | UptimeRobot API key | | `pspId` | number | Yes | ID of the status page to retrieve | #### Output [#output-19] | Parameter | Type | Description | | ----------------- | ------- | ---------------------------------------------- | | `psp` | object | The status page details | | ↳ `id` | number | Public status page ID | | ↳ `friendlyName` | string | Status page name | | ↳ `customDomain` | string | Custom domain | | ↳ `isPasswordSet` | boolean | Whether the page is password protected | | ↳ `monitorIds` | array | Monitor IDs shown on the page | | ↳ `tagIds` | array | Tag IDs shown on the page | | ↳ `monitorsCount` | number | Number of monitors on the page | | ↳ `status` | string | Status (ENABLED or PAUSED) | | ↳ `urlKey` | string | Public URL key | | ↳ `homepageLink` | string | Homepage link target | | ↳ `gaCode` | string | Google Analytics code | | ↳ `icon` | string | Icon URL | | ↳ `logo` | string | Logo URL | | ↳ `noIndex` | boolean | Whether search engine indexing is disabled | | ↳ `hideUrlLinks` | boolean | Whether the "Powered by" footer link is hidden | | ↳ `subscription` | boolean | Whether the subscribe feature is enabled | ### UptimeRobot Create Status Page [#uptimerobot-create-status-page] Create a public status page in UptimeRobot, optionally with a logo and icon image #### Input [#input-20] | Parameter | Type | Required | Description | | -------------- | ------- | -------- | --------------------------------------------------------------- | | `apiKey` | string | Yes | UptimeRobot API key | | `friendlyName` | string | Yes | Name of the public status page | | `monitorIds` | string | No | Comma-separated monitor IDs to display on the page | | `status` | string | No | Status of the page: ENABLED (published) or PAUSED (unpublished) | | `password` | string | No | Optional password protection for the page | | `customDomain` | string | No | Custom domain for the page (e.g. status.your-domain.com) | | `hideUrlLinks` | boolean | No | Whether to hide the "Powered by UptimeRobot" footer link | | `noIndex` | boolean | No | Whether to prevent search engines from indexing the page | | `logo` | file | No | Logo image (JPG/JPEG/PNG, max 150 KB) | | `icon` | file | No | Icon image (JPG/JPEG/PNG, max 150 KB) | #### Output [#output-20] | Parameter | Type | Description | | ----------------- | ------- | ---------------------------------------------- | | `psp` | object | The created status page | | ↳ `id` | number | Public status page ID | | ↳ `friendlyName` | string | Status page name | | ↳ `customDomain` | string | Custom domain | | ↳ `isPasswordSet` | boolean | Whether the page is password protected | | ↳ `monitorIds` | array | Monitor IDs shown on the page | | ↳ `tagIds` | array | Tag IDs shown on the page | | ↳ `monitorsCount` | number | Number of monitors on the page | | ↳ `status` | string | Status (ENABLED or PAUSED) | | ↳ `urlKey` | string | Public URL key | | ↳ `homepageLink` | string | Homepage link target | | ↳ `gaCode` | string | Google Analytics code | | ↳ `icon` | string | Icon URL | | ↳ `logo` | string | Logo URL | | ↳ `noIndex` | boolean | Whether search engine indexing is disabled | | ↳ `hideUrlLinks` | boolean | Whether the "Powered by" footer link is hidden | | ↳ `subscription` | boolean | Whether the subscribe feature is enabled | ### UptimeRobot Update Status Page [#uptimerobot-update-status-page] Update a public status page in UptimeRobot. Only the provided fields are changed; logo and icon images can be replaced. #### Input [#input-21] | Parameter | Type | Required | Description | | -------------- | ------- | -------- | --------------------------------------------------------------- | | `apiKey` | string | Yes | UptimeRobot API key | | `pspId` | number | Yes | ID of the status page to update | | `friendlyName` | string | No | New name of the public status page | | `monitorIds` | string | No | Comma-separated monitor IDs to display on the page | | `status` | string | No | Status of the page: ENABLED (published) or PAUSED (unpublished) | | `password` | string | No | Optional password protection for the page | | `customDomain` | string | No | Custom domain for the page (e.g. status.your-domain.com) | | `hideUrlLinks` | boolean | No | Whether to hide the "Powered by UptimeRobot" footer link | | `noIndex` | boolean | No | Whether to prevent search engines from indexing the page | | `logo` | file | No | Logo image (JPG/JPEG/PNG, max 150 KB) | | `icon` | file | No | Icon image (JPG/JPEG/PNG, max 150 KB) | #### Output [#output-21] | Parameter | Type | Description | | ----------------- | ------- | ---------------------------------------------- | | `psp` | object | The updated status page | | ↳ `id` | number | Public status page ID | | ↳ `friendlyName` | string | Status page name | | ↳ `customDomain` | string | Custom domain | | ↳ `isPasswordSet` | boolean | Whether the page is password protected | | ↳ `monitorIds` | array | Monitor IDs shown on the page | | ↳ `tagIds` | array | Tag IDs shown on the page | | ↳ `monitorsCount` | number | Number of monitors on the page | | ↳ `status` | string | Status (ENABLED or PAUSED) | | ↳ `urlKey` | string | Public URL key | | ↳ `homepageLink` | string | Homepage link target | | ↳ `gaCode` | string | Google Analytics code | | ↳ `icon` | string | Icon URL | | ↳ `logo` | string | Logo URL | | ↳ `noIndex` | boolean | Whether search engine indexing is disabled | | ↳ `hideUrlLinks` | boolean | Whether the "Powered by" footer link is hidden | | ↳ `subscription` | boolean | Whether the subscribe feature is enabled | ### UptimeRobot Delete Status Page [#uptimerobot-delete-status-page] Permanently delete an UptimeRobot public status page by ID #### Input [#input-22] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------- | | `apiKey` | string | Yes | UptimeRobot API key | | `pspId` | number | Yes | ID of the status page to delete | #### Output [#output-22] | Parameter | Type | Description | | --------- | ------- | ----------------------------------- | | `deleted` | boolean | Whether the status page was deleted | | `id` | number | ID of the deleted status page | ### UptimeRobot Get Account [#uptimerobot-get-account] Get details about the authenticated UptimeRobot account, including plan and limits #### Input [#input-23] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------- | | `apiKey` | string | Yes | UptimeRobot API key | #### Output [#output-23] | Parameter | Type | Description | | ------------------------- | ------ | ---------------------------------- | | `account` | object | The account details | | ↳ `email` | string | Account email | | ↳ `fullName` | string | Account holder name | | ↳ `monitorsCount` | number | Number of monitors in the account | | ↳ `monitorLimit` | number | Maximum number of monitors allowed | | ↳ `smsCredits` | number | Remaining SMS credits | | ↳ `plan` | string | Subscription plan name | | ↳ `subscriptionStatus` | string | Subscription status | | ↳ `subscriptionExpiresAt` | string | Subscription expiration date | --- # Cursor (/en/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 | --- # Circleback (/en/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 Studio:**\ 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 | --- # Notion (/en/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) | | ↳ `url` | string | Authenticated URL valid for one hour | | ↳ `expiry_time` | string | ISO 8601 timestamp when URL 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 | --- # A2A (/en/integrations/a2a) {/* MANUAL-CONTENT-START:intro */} The A2A (Agent-to-Agent) protocol lets Studio 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 Studio. 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. --- # Text-to-Speech (/en/integrations/tts) ## Usage Instructions [#usage-instructions] Generate natural-sounding speech from text using state-of-the-art AI voices from OpenAI, Deepgram, ElevenLabs, Cartesia, Google Cloud, Azure, and PlayHT. Supports multiple voices, languages, and audio formats. ## Actions [#actions] ### OpenAI TTS [#openai-tts] Convert text to speech using OpenAI TTS models #### Input [#input] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ----------------------------------------------------------------------------------------------- | | `text` | string | Yes | The text content to convert to speech (e.g., "Hello, welcome to our service!") | | `apiKey` | string | Yes | OpenAI API key | | `model` | string | No | OpenAI TTS model identifier (e.g., "tts-1", "tts-1-hd", "gpt-4o-mini-tts") | | `voice` | string | No | OpenAI voice identifier (e.g., "alloy", "ash", "ballad", "coral", "echo", "sage", "shimmer") | | `responseFormat` | string | No | Audio format (mp3, opus, aac, flac, wav, pcm) | | `speed` | number | No | Speech speed multiplier from 0.25 to 4.0 (e.g., 0.5 for slower, 1.0 for normal, 2.0 for faster) | #### Output [#output] | Parameter | Type | Description | | ---------------- | ------ | ------------------------------- | | `audioUrl` | string | URL to the generated audio file | | `audioFile` | file | Generated audio file object | | `duration` | number | Audio duration in seconds | | `characterCount` | number | Number of characters processed | | `format` | string | Audio format | | `provider` | string | TTS provider used | ### Deepgram TTS [#deepgram-tts] Convert text to speech using Deepgram Aura #### Input [#input-1] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------------------------------------------------------------------------------------------ | | `text` | string | Yes | The text content to convert to speech (e.g., "Hello, welcome to our service!") | | `apiKey` | string | Yes | Deepgram API key | | `model` | string | No | Deepgram model/voice identifier (e.g., "aura-asteria-en", "aura-luna-en", "aura-2-luna-en") | | `voice` | string | No | Deepgram voice identifier, alternative to model param (e.g., "aura-asteria-en", "aura-orion-en") | | `encoding` | string | No | Audio encoding (linear16, mp3, opus, aac, flac) | | `sampleRate` | number | No | Sample rate (8000, 16000, 24000, 48000) | | `bitRate` | number | No | Bit rate for compressed formats | | `container` | string | No | Container format (none, wav, ogg) | #### Output [#output-1] | Parameter | Type | Description | | ---------------- | ------ | ------------------------------- | | `audioUrl` | string | URL to the generated audio file | | `audioFile` | file | Generated audio file object | | `duration` | number | Audio duration in seconds | | `characterCount` | number | Number of characters processed | | `format` | string | Audio format | | `provider` | string | TTS provider used | ### ElevenLabs TTS [#elevenlabs-tts] Convert text to speech using ElevenLabs voices #### Input [#input-2] | Parameter | Type | Required | Description | | ----------------- | ------- | -------- | -------------------------------------------------------------------------------------------------------------- | | `text` | string | Yes | The text content to convert to speech (e.g., "Hello, welcome to our service!") | | `voiceId` | string | Yes | ElevenLabs voice identifier (e.g., "21m00Tcm4TlvDq8ikWAM", "AZnzlk1XvdvUeBnXmlld") | | `apiKey` | string | Yes | ElevenLabs API key | | `modelId` | string | No | ElevenLabs model identifier (e.g., "eleven\_turbo\_v2\_5", "eleven\_flash\_v2\_5", "eleven\_multilingual\_v2") | | `stability` | number | No | Voice stability (0.0 to 1.0, default: 0.5) | | `similarityBoost` | number | No | Similarity boost (0.0 to 1.0, default: 0.8) | | `style` | number | No | Style exaggeration (0.0 to 1.0) | | `useSpeakerBoost` | boolean | No | Use speaker boost (default: true) | #### Output [#output-2] | Parameter | Type | Description | | ---------------- | ------ | ------------------------------- | | `audioUrl` | string | URL to the generated audio file | | `audioFile` | file | Generated audio file object | | `duration` | number | Audio duration in seconds | | `characterCount` | number | Number of characters processed | | `format` | string | Audio format | | `provider` | string | TTS provider used | ### Cartesia TTS [#cartesia-tts] Convert text to speech using Cartesia Sonic (ultra-low latency) #### Input [#input-3] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ------------------------------------------------------------------------------------- | | `text` | string | Yes | The text content to convert to speech (e.g., "Hello, welcome to our service!") | | `apiKey` | string | Yes | Cartesia API key | | `modelId` | string | No | Cartesia model identifier (e.g., "sonic", "sonic-2", "sonic-3", "sonic-multilingual") | | `voice` | string | No | Cartesia voice identifier or embedding (e.g., "a0e99841-438c-4a64-b679-ae501e7d6091") | | `language` | string | No | Language code for speech synthesis (e.g., "en", "es", "fr", "de", "it", "pt") | | `outputFormat` | json | No | Output format configuration (container, encoding, sampleRate) | | `speed` | number | No | Speech speed multiplier (e.g., 0.5 for slower, 1.0 for normal, 2.0 for faster) | | `emotion` | array | No | Emotion tags for Sonic-3 (e.g., \['positivity:high']) | #### Output [#output-3] | Parameter | Type | Description | | ---------------- | ------ | ------------------------------- | | `audioUrl` | string | URL to the generated audio file | | `audioFile` | file | Generated audio file object | | `duration` | number | Audio duration in seconds | | `characterCount` | number | Number of characters processed | | `format` | string | Audio format | | `provider` | string | TTS provider used | ### Google Cloud TTS [#google-cloud-tts] Convert text to speech using Google Cloud Text-to-Speech #### Input [#input-4] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | ------------------------------------------------------------------------------------------------ | | `text` | string | Yes | The text content to convert to speech (e.g., "Hello, welcome to our service!") | | `apiKey` | string | Yes | Google Cloud API key | | `voiceId` | string | No | Google Cloud voice identifier (e.g., "en-US-Neural2-A", "en-US-Wavenet-D", "en-GB-Neural2-B") | | `languageCode` | string | Yes | BCP-47 language code for speech synthesis (e.g., "en-US", "es-ES", "fr-FR", "de-DE") | | `gender` | string | No | Voice gender (MALE, FEMALE, NEUTRAL) | | `audioEncoding` | string | No | Audio encoding (LINEAR16, MP3, OGG\_OPUS, MULAW, ALAW) | | `speakingRate` | number | No | Speaking rate multiplier from 0.25 to 2.0 (e.g., 0.5 for slower, 1.0 for normal, 1.5 for faster) | | `pitch` | number | No | Voice pitch (-20.0 to 20.0, default: 0.0) | | `volumeGainDb` | number | No | Volume gain in dB (-96.0 to 16.0) | | `sampleRateHertz` | number | No | Sample rate in Hz | | `effectsProfileId` | array | No | Effects profile (e.g., \['headphone-class-device']) | #### Output [#output-4] | Parameter | Type | Description | | ---------------- | ------ | ------------------------------- | | `audioUrl` | string | URL to the generated audio file | | `audioFile` | file | Generated audio file object | | `duration` | number | Audio duration in seconds | | `characterCount` | number | Number of characters processed | | `format` | string | Audio format | | `provider` | string | TTS provider used | ### Azure TTS [#azure-tts] Convert text to speech using Azure Cognitive Services #### Input [#input-5] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ------------------------------------------------------------------------------------------ | | `text` | string | Yes | The text content to convert to speech (e.g., "Hello, welcome to our service!") | | `apiKey` | string | Yes | Azure Speech Services API key | | `voiceId` | string | No | Azure voice identifier (e.g., "en-US-JennyNeural", "en-US-GuyNeural", "en-GB-SoniaNeural") | | `region` | string | No | Azure region (e.g., eastus, westus, westeurope) | | `outputFormat` | string | No | Output audio format | | `rate` | string | No | Speaking rate (e.g., +10%, -20%, 1.5) | | `pitch` | string | No | Voice pitch (e.g., +5Hz, -2st, low) | | `style` | string | No | Speaking style (e.g., cheerful, sad, angry - neural voices only) | | `styleDegree` | number | No | Style intensity (0.01 to 2.0) | | `role` | string | No | Role (e.g., Girl, Boy, YoungAdultFemale) | #### Output [#output-5] | Parameter | Type | Description | | ---------------- | ------ | ------------------------------- | | `audioUrl` | string | URL to the generated audio file | | `audioFile` | file | Generated audio file object | | `duration` | number | Audio duration in seconds | | `characterCount` | number | Number of characters processed | | `format` | string | Audio format | | `provider` | string | TTS provider used | ### PlayHT TTS [#playht-tts] Convert text to speech using PlayHT (voice cloning) #### Input [#input-6] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ---------------------------------------------------------------------------------------------- | | `text` | string | Yes | The text content to convert to speech (e.g., "Hello, welcome to our service!") | | `apiKey` | string | Yes | PlayHT API key (AUTHORIZATION header) | | `userId` | string | Yes | PlayHT user ID (X-USER-ID header) | | `voice` | string | No | PlayHT voice identifier or manifest URL (e.g., "s3://voice-cloning-zero-shot/...") | | `quality` | string | No | Quality level (draft, standard, premium) | | `outputFormat` | string | No | Output format (mp3, wav, ogg, flac, mulaw) | | `speed` | number | No | Speech speed multiplier from 0.5 to 2.0 (e.g., 0.5 for slower, 1.0 for normal, 1.5 for faster) | | `temperature` | number | No | Creativity/randomness (0.0 to 2.0) | | `voiceGuidance` | number | No | Voice stability (1.0 to 6.0) | | `textGuidance` | number | No | Text adherence (1.0 to 6.0) | | `sampleRate` | number | No | Sample rate (8000, 16000, 22050, 24000, 44100, 48000) | #### Output [#output-6] | Parameter | Type | Description | | ---------------- | ------ | ------------------------------- | | `audioUrl` | string | URL to the generated audio file | | `audioFile` | file | Generated audio file object | | `duration` | number | Audio duration in seconds | | `characterCount` | number | Number of characters processed | | `format` | string | Audio format | | `provider` | string | TTS provider used | --- # LaunchDarkly (/en/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 Studio, 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 Studio, 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 | --- # ElevenLabs (/en/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 | --- # Facebook (/en/integrations/facebook) ## Usage Instructions [#usage-instructions] Integrate Facebook Pages into the workflow. Reply to comments on posts, send direct messages to users via Messenger, hide or unhide comments, and fetch post details including media, caption, and engagement metrics. Uses the Facebook Page access token linked to your workspace. Can be used in trigger mode to trigger a workflow when a comment is added on a Facebook Page post. ## Actions [#actions] ### Facebook Reply Comment [#facebook-reply-comment] Reply to a comment on a Facebook Page post. #### Input [#input] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | -------------------------------------- | | `commentId` | string | Yes | ID of the Facebook comment to reply to | | `message` | string | Yes | Reply message text | | `pageId` | string | Yes | Facebook Page ID that owns the post | #### Output [#output] | Parameter | Type | Description | | ----------- | ------ | ------------------------------------- | | `commentId` | string | ID of the newly created reply comment | ### Facebook Send DM [#facebook-send-dm] Send a message to a user via Facebook Messenger API. #### Input [#input-1] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ----------------------------------- | | `recipientId` | string | Yes | Facebook user ID of the recipient | | `message` | string | Yes | Message text to send | | `pageId` | string | Yes | Facebook Page ID that owns the post | #### Output [#output-1] | Parameter | Type | Description | | ------------- | ------ | --------------------------------- | | `messageId` | string | ID of the sent message | | `recipientId` | string | Facebook user ID of the recipient | ### Facebook Hide Comment [#facebook-hide-comment] Hide or unhide a comment on a Facebook Page post. #### Input [#input-2] | Parameter | Type | Required | Description | | ----------- | ------- | -------- | ---------------------------------------------------- | | `commentId` | string | Yes | ID of the Facebook comment to hide or unhide | | `isHidden` | boolean | No | Whether to hide (true) or unhide (false) the comment | | `pageId` | string | Yes | Facebook Page ID that owns the post | #### Output [#output-2] | Parameter | Type | Description | | --------- | ------- | --------------------------------- | | `hidden` | boolean | Whether the comment is now hidden | ### Facebook Get Post [#facebook-get-post] Fetch a single Facebook Page post by ID. Returns media URL, caption, type, timestamps, engagement metrics, and sub-attachments when applicable. #### Input [#input-3] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------------------------------- | | `postId` | string | Yes | ID of the Facebook post to fetch | | `pageId` | string | Yes | Facebook Page ID that owns the post | #### Output [#output-3] | Parameter | Type | Description | | ------------------ | ------ | ------------------------------------------------------------------------ | | `mediaUrl` | string | URL of the post image (full\_picture) | | `caption` | string | Post message text | | `mediaProductType` | string | Always null for Facebook posts (Instagram-only field) | | `mediaType` | string | Post type (photo, video, link, status, etc.) | | `timestamp` | string | ISO 8601 timestamp when the post was created | | `permalink` | string | Permanent URL of the post | | `likeCount` | number | Number of likes/reactions on the post | | `commentsCount` | number | Number of comments on the post | | `children` | json | Array of sub-attachment media items (only present for multi-photo posts) | | ↳ `mediaUrl` | string | Sub-attachment media URL | | ↳ `mediaType` | string | Sub-attachment type | | ↳ `description` | string | Sub-attachment description | --- # Airtable (/en/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 | --- # Jira Service Management (/en/integrations/jira_service_management) {/* MANUAL-CONTENT-START:intro */} Use [Jira Service Management](https://www.atlassian.com/software/jira/service-management) in Studio 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) | --- # Logfire (/en/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. Studio'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. | --- # Shopify Admin API Tokens (/en/integrations/shopify-service-account) Connect a Shopify store with a **non-expiring offline Admin API access token** and its `.myshopify.com` domain. Studio stores the pasted token; this connection does not renew expiring tokens. ## Prerequisites [#prerequisites] You need store owner or staff permissions that allow managing apps on the store. You'll also need your store's permanent domain (`your-store.myshopify.com`) — Studio asks for it alongside the token. Shopify no longer allows creating new custom apps from the store admin — that path is legacy. New custom apps are created from the **Dev Dashboard** ([dev.shopify.com](https://dev.shopify.com/)) or the Shopify CLI. If you already have an admin-created custom app, its `shpat_` token still works and can be pasted into Studio directly. ## Setting Up the Custom App [#setting-up-the-custom-app] ### 1. Create the App and Grant Scopes [#1-create-the-app-and-grant-scopes] Open the [Dev Dashboard](https://dev.shopify.com/), create a new app (e.g. `studio-workflows`), and connect it to your store {/* TODO(screenshot): Shopify Dev Dashboard with a new custom app created */} Configure the app's **Admin API access scopes**. The set Studio's Shopify tools use is: ``` write_products write_orders write_customers write_inventory read_locations write_merchant_managed_fulfillment_orders ``` In Shopify, `write_X` includes `read_X`, so these six cover product, collection, order, fulfillment, customer, inventory, and location operations. Grant fewer if your workflows only read — e.g. `read_products` alone is enough for product and collection lookups {/* TODO(screenshot): Admin API access scopes picker with the six scopes selected */} Install the app on your store, then obtain the `shpat_` token as described in the next section — the flow differs by app type ### 2. Get the Admin API Access Token [#2-get-the-admin-api-access-token] How you obtain the `shpat_` token depends on how the app was created: * **Legacy admin-created custom apps** (created from the store admin before Shopify removed that path) show the **Admin API access token** — it starts with `shpat_` — once on the app's API credentials page. Reveal it, copy it immediately, and paste it into Studio. For legacy admin-created custom apps, Shopify shows the token only once, at creation — if you lose it, you have to reinstall or recreate the app to get a new one. * **New Dev Dashboard apps** do **not** display a permanent `shpat_` token in any UI. Complete an [authorization code grant](https://shopify.dev/docs/apps/build/authentication-authorization/authenticate-standalone-apps) install and obtain a **non-expiring offline** access token. Check the token response and access mode: the `shpat_` prefix is also used by expiring tokens. The Dev Dashboard's client-credentials tokens are different — they expire after 24 hours and cannot be stored in Studio. {/* TODO(screenshot): legacy custom app's API credentials page with the shpat_ token revealed */} Don't confuse the token types: `shpat_` is the Admin API access token Studio needs. `shpss_` is the app's client secret and `shpca_` is a custom app access token from older Partner-created custom apps — neither will work. If your Dev Dashboard app only shows a client ID and secret, that is expected: Dev Dashboard apps issue tokens via OAuth, not a UI reveal (see the setup steps above). ### 3. Find Your Store Domain [#3-find-your-store-domain] Use the permanent `.myshopify.com` domain — for example, `your-store.myshopify.com` — not your custom storefront domain. You can find it in your Shopify admin URL or under **Settings** → **Domains**. ## Adding the Admin API Token to Studio [#adding-the-admin-api-token-to-studio] Open **Integrations** from your workspace sidebar Search for "Shopify" and open it, then click **Add to Studio** and choose **Add admin API token** {/* TODO(screenshot): Shopify integration page with the service-account connect option */} Paste the Admin API access token, enter the store domain (e.g. `your-store.myshopify.com`), and optionally set a display name and description {/* TODO(screenshot): Add Shopify admin API token dialog with token and store domain filled in */} Click **Add admin API token**. Studio verifies the token by querying your store's `shop` endpoint — if it fails, you'll see a specific error explaining what went wrong. The token and store domain are encrypted before being stored. ## Using the Credential in Workflows [#using-the-credential-in-workflows] Add a Shopify block to your workflow. In the credential dropdown, select the saved Shopify Admin API token. Select it and configure the block as you normally would — the store domain stored with the credential is used automatically. {/* TODO(screenshot): Shopify block in a workflow with the service account selected as the credential */} The block calls your store's Admin API (`your-store.myshopify.com/admin/api/...`) using the token, with exactly the scopes you granted the app. --- # Vercel (/en/integrations/vercel) {/* MANUAL-CONTENT-START:intro */} Use [Vercel](https://vercel.com/) to manage deployments, projects, domains, DNS records, environment variables, aliases, and Edge Config from a workflow. Deployment, project, and domain events can trigger workflows. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate with Vercel to manage deployments, projects, domains, DNS records, environment variables, aliases, edge configs, teams, and more. ## Actions [#actions] ### Vercel List Deployments [#vercel-list-deployments] List deployments for a Vercel project or team #### Input [#input] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | -------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Vercel Access Token | | `projectId` | string | No | Filter deployments by project ID or name | | `target` | string | No | Filter by environment: production or staging | | `state` | string | No | Filter by state: BUILDING, ERROR, INITIALIZING, QUEUED, READY, CANCELED, BLOCKED | | `app` | string | No | Filter by deployment name | | `since` | number | No | Get deployments created after this JavaScript timestamp | | `until` | number | No | Get deployments created before this JavaScript timestamp | | `limit` | number | No | Maximum number of deployments to return per request | | `teamId` | string | No | Team ID to scope the request | | `slug` | string | No | Team slug to scope the request (alternative to teamId) | #### Output [#output] | Parameter | Type | Description | | -------------------- | ------- | ------------------------------------------------------------------------------------------------------ | | `deployments` | array | List of deployments | | ↳ `uid` | string | Unique deployment identifier | | ↳ `name` | string | Deployment name | | ↳ `url` | string | Deployment URL | | ↳ `state` | string | Deployment state: BUILDING, ERROR, INITIALIZING, QUEUED, READY, CANCELED, DELETED, BLOCKED | | ↳ `target` | string | Target environment | | ↳ `created` | number | Creation timestamp | | ↳ `projectId` | string | Associated project ID | | ↳ `source` | string | Deployment source: api-trigger-git-deploy, cli, clone/repo, git, import, import/repo, redeploy, v0-web | | ↳ `inspectorUrl` | string | Vercel inspector URL | | ↳ `checksState` | string | Checks state: completed, registered, running | | ↳ `checksConclusion` | string | Checks conclusion: succeeded, failed, skipped, canceled | | ↳ `errorMessage` | string | Deployment error message | | ↳ `creator` | object | Creator information | | ↳ `uid` | string | Creator user ID | | ↳ `email` | string | Creator email | | ↳ `username` | string | Creator username | | ↳ `meta` | object | Git provider metadata (key-value strings) | | `count` | number | Number of deployments returned | | `hasMore` | boolean | Whether more deployments are available | ### Vercel Get Deployment [#vercel-get-deployment] Get details of a specific Vercel deployment #### Input [#input-1] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ------------------------------------------------------ | | `apiKey` | string | Yes | Vercel Access Token | | `deploymentId` | string | Yes | The unique deployment identifier or hostname | | `withGitRepoInfo` | string | No | Whether to add in gitRepo information (true/false) | | `teamId` | string | No | Team ID to scope the request | | `slug` | string | No | Team slug to scope the request (alternative to teamId) | #### Output [#output-1] | Parameter | Type | Description | | -------------------------- | ------- | ------------------------------------------------------------------------------ | | `id` | string | Deployment ID | | `name` | string | Deployment name | | `url` | string | Unique deployment URL | | `readyState` | string | Deployment ready state: QUEUED, BUILDING, ERROR, INITIALIZING, READY, CANCELED | | `status` | string | Deployment status | | `target` | string | Target environment | | `createdAt` | number | Creation timestamp in milliseconds | | `buildingAt` | number | Build start timestamp | | `ready` | number | Ready timestamp | | `source` | string | Deployment source: cli, git, redeploy, import, v0-web, etc. | | `alias` | array | Assigned aliases | | `regions` | array | Deployment regions | | `inspectorUrl` | string | Vercel inspector URL | | `projectId` | string | Associated project ID | | `creator` | object | Creator information | | ↳ `uid` | string | Creator user ID | | ↳ `username` | string | Creator username | | `project` | object | Associated project | | ↳ `id` | string | Project ID | | ↳ `name` | string | Project name | | ↳ `framework` | string | Project framework | | `meta` | object | Deployment metadata (key-value strings) | | ↳ `githubCommitSha` | string | GitHub commit SHA | | ↳ `githubCommitMessage` | string | GitHub commit message | | ↳ `githubCommitRef` | string | GitHub branch/ref | | ↳ `githubRepo` | string | GitHub repository | | ↳ `githubOrg` | string | GitHub organization | | ↳ `githubCommitAuthorName` | string | Commit author name | | `gitSource` | object | Git source information | | ↳ `type` | string | Git provider type (e.g., github, gitlab, bitbucket) | | ↳ `ref` | string | Git ref (branch or tag) | | ↳ `sha` | string | Git commit SHA | | ↳ `repoId` | string | Repository ID | | `errorCode` | string | Deployment error code | | `errorMessage` | string | Deployment error message | | `aliasAssigned` | boolean | Whether the alias has been assigned | ### Vercel Create Deployment [#vercel-create-deployment] Create a new deployment or redeploy an existing one #### Input [#input-2] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Vercel Access Token | | `name` | string | Yes | Project name for the deployment | | `project` | string | No | Project ID (overrides name for project lookup) | | `deploymentId` | string | No | Existing deployment ID to redeploy | | `target` | string | No | Target environment: production, staging, or a custom environment identifier | | `gitSource` | string | No | JSON string defining the Git Repository source to deploy (e.g. \{"type":"github","repo":"owner/repo","ref":"main"}) | | `forceNew` | string | No | Forces a new deployment even if there is a previous similar deployment (0 or 1) | | `teamId` | string | No | Team ID to scope the request | | `slug` | string | No | Team slug to scope the request (alternative to teamId) | #### Output [#output-2] | Parameter | Type | Description | | --------------- | ------- | ------------------------------------------------------------------------------ | | `id` | string | Deployment ID | | `name` | string | Deployment name | | `url` | string | Unique deployment URL | | `readyState` | string | Deployment ready state: QUEUED, BUILDING, ERROR, INITIALIZING, READY, CANCELED | | `projectId` | string | Associated project ID | | `createdAt` | number | Creation timestamp in milliseconds | | `alias` | array | Assigned aliases | | `target` | string | Target environment | | `inspectorUrl` | string | Vercel inspector URL | | `errorCode` | string | Deployment error code | | `errorMessage` | string | Deployment error message | | `aliasAssigned` | boolean | Whether the alias has been assigned | ### Vercel Cancel Deployment [#vercel-cancel-deployment] Cancel a running Vercel deployment #### Input [#input-3] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ------------------------------------------------------ | | `apiKey` | string | Yes | Vercel Access Token | | `deploymentId` | string | Yes | The deployment ID to cancel | | `teamId` | string | No | Team ID to scope the request | | `slug` | string | No | Team slug to scope the request (alternative to teamId) | #### Output [#output-3] | Parameter | Type | Description | | -------------- | ------ | ----------------------------------- | | `id` | string | Deployment ID | | `name` | string | Deployment name | | `state` | string | Deployment state after cancellation | | `url` | string | Deployment URL | | `status` | string | Deployment status | | `projectId` | string | Associated project ID | | `inspectorUrl` | string | Vercel inspector URL | ### Vercel Delete Deployment [#vercel-delete-deployment] Delete a Vercel deployment #### Input [#input-4] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ------------------------------------------------------ | | `apiKey` | string | Yes | Vercel Access Token | | `deploymentId` | string | Yes | The deployment ID or URL to delete | | `teamId` | string | No | Team ID to scope the request | | `slug` | string | No | Team slug to scope the request (alternative to teamId) | #### Output [#output-4] | Parameter | Type | Description | | --------- | ------ | ----------------------------------------- | | `uid` | string | The removed deployment ID | | `state` | string | Deployment state after deletion (DELETED) | ### Vercel Get Deployment Events [#vercel-get-deployment-events] Get build and runtime events for a Vercel deployment #### Input [#input-5] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | -------------------------------------------------------------------- | | `apiKey` | string | Yes | Vercel Access Token | | `deploymentId` | string | Yes | The unique deployment identifier or hostname | | `direction` | string | No | Order of events by timestamp: backward or forward (default: forward) | | `follow` | number | No | When set to 1, returns live events as they happen | | `limit` | number | No | Maximum number of events to return (-1 for all) | | `since` | number | No | Timestamp to start pulling build logs from | | `until` | number | No | Timestamp to stop pulling build logs at | | `teamId` | string | No | Team ID to scope the request | | `slug` | string | No | Team slug to scope the request (alternative to teamId) | #### Output [#output-5] | Parameter | Type | Description | | ---------------- | ------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | | `events` | array | List of deployment events | | ↳ `type` | string | Event type: delimiter, command, stdout, stderr, exit, deployment-state, middleware, middleware-invocation, edge-function-invocation, metric, report, fatal | | ↳ `created` | number | Event creation timestamp | | ↳ `date` | number | Event date timestamp | | ↳ `text` | string | Event text content | | ↳ `serial` | string | Event serial identifier | | ↳ `deploymentId` | string | Associated deployment ID | | ↳ `id` | string | Event unique identifier | | ↳ `level` | string | Event level: error or warning | | ↳ `info` | object | Build step info (type, name, entrypoint, path, step, readyState) | | `count` | number | Number of events returned | ### Vercel List Deployment Files [#vercel-list-deployment-files] List files in a Vercel deployment #### Input [#input-6] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ------------------------------------------------------ | | `apiKey` | string | Yes | Vercel Access Token | | `deploymentId` | string | Yes | The deployment ID to list files for | | `teamId` | string | No | Team ID to scope the request | | `slug` | string | No | Team slug to scope the request (alternative to teamId) | #### Output [#output-6] | Parameter | Type | Description | | --------------- | ------ | ------------------------------------------------------------------- | | `files` | array | List of deployment files | | ↳ `name` | string | The name of the file tree entry | | ↳ `type` | string | File type: directory, file, symlink, lambda, middleware, or invalid | | ↳ `uid` | string | Unique file identifier (only valid for file type) | | ↳ `mode` | number | File mode indicating file type and permissions | | ↳ `contentType` | string | Content-type of the file (only valid for file type) | | ↳ `children` | array | Child files of the directory (only valid for directory type) | | ↳ `name` | string | File name | | ↳ `type` | string | Entry type | | ↳ `uid` | string | File identifier | | `count` | number | Number of files returned | ### Vercel Promote Deployment [#vercel-promote-deployment] Promote a deployment by pointing the production deployment to the given deployment #### Input [#input-7] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ------------------------------------------------------ | | `apiKey` | string | Yes | Vercel Access Token | | `projectId` | string | Yes | Project ID or name | | `deploymentId` | string | Yes | The ID of the deployment to promote to production | | `teamId` | string | No | Team ID to scope the request | | `slug` | string | No | Team slug to scope the request (alternative to teamId) | #### Output [#output-7] | Parameter | Type | Description | | ---------- | ------- | ------------------------------------------------- | | `promoted` | boolean | Whether the deployment was promoted to production | ### Vercel List Projects [#vercel-list-projects] List all projects in a Vercel team or account #### Input [#input-8] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Vercel Access Token | | `search` | string | No | Search projects by name | | `limit` | number | No | Maximum number of projects to return | | `from` | string | No | Continuation token for pagination, taken from the previous response's pagination.next value. Query only projects updated after this timestamp or continuation token. | | `teamId` | string | No | Team ID to scope the request | | `slug` | string | No | Team slug to scope the request (alternative to teamId) | #### Output [#output-8] | Parameter | Type | Description | | ----------------- | ------- | ----------------------------------------------------------- | | `projects` | array | List of projects | | ↳ `id` | string | Project ID | | ↳ `name` | string | Project name | | ↳ `framework` | string | Framework | | ↳ `rootDirectory` | string | Root directory of the project | | ↳ `nodeVersion` | string | Node.js version | | ↳ `createdAt` | number | Creation timestamp | | ↳ `updatedAt` | number | Last updated timestamp | | `count` | number | Number of projects returned | | `hasMore` | boolean | Whether more projects are available | | `nextFrom` | string | Continuation token to pass as `from` to fetch the next page | ### Vercel Get Project [#vercel-get-project] Get details of a specific Vercel project #### Input [#input-9] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------------------------------------ | | `apiKey` | string | Yes | Vercel Access Token | | `projectId` | string | Yes | Project ID or name | | `teamId` | string | No | Team ID to scope the request | | `slug` | string | No | Team slug to scope the request (alternative to teamId) | #### Output [#output-9] | Parameter | Type | Description | | --------------- | ------ | ------------------------------------------- | | `id` | string | Project ID | | `name` | string | Project name | | `framework` | string | Project framework | | `rootDirectory` | string | Root directory of the project | | `nodeVersion` | string | Node.js version | | `createdAt` | number | Creation timestamp | | `updatedAt` | number | Last updated timestamp | | `link` | object | Git repository connection | | ↳ `type` | string | Repository type (github, gitlab, bitbucket) | | ↳ `repo` | string | Repository name | | ↳ `org` | string | Organization or owner | ### Vercel Create Project [#vercel-create-project] Create a new Vercel project #### Input [#input-10] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ------------------------------------------------------------------- | | `apiKey` | string | Yes | Vercel Access Token | | `name` | string | Yes | Project name | | `framework` | string | No | Project framework (e.g. nextjs, remix, vite) | | `gitRepository` | json | No | Git repository connection object with type and repo | | `buildCommand` | string | No | Custom build command | | `outputDirectory` | string | No | Custom output directory | | `installCommand` | string | No | Custom install command | | `rootDirectory` | string | No | Subdirectory of the repository the project lives in (for monorepos) | | `nodeVersion` | string | No | Node.js version to use (e.g. 22.x, 20.x, 18.x) | | `devCommand` | string | No | Custom dev server command | | `teamId` | string | No | Team ID to scope the request | | `slug` | string | No | Team slug to scope the request (alternative to teamId) | #### Output [#output-10] | Parameter | Type | Description | | ----------- | ------ | ---------------------- | | `id` | string | Project ID | | `name` | string | Project name | | `framework` | string | Project framework | | `createdAt` | number | Creation timestamp | | `updatedAt` | number | Last updated timestamp | ### Vercel Update Project [#vercel-update-project] Update an existing Vercel project #### Input [#input-11] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ------------------------------------------------------------------- | | `apiKey` | string | Yes | Vercel Access Token | | `projectId` | string | Yes | Project ID or name | | `name` | string | No | New project name | | `framework` | string | No | Project framework (e.g. nextjs, remix, vite) | | `buildCommand` | string | No | Custom build command | | `outputDirectory` | string | No | Custom output directory | | `installCommand` | string | No | Custom install command | | `rootDirectory` | string | No | Subdirectory of the repository the project lives in (for monorepos) | | `nodeVersion` | string | No | Node.js version to use (e.g. 22.x, 20.x, 18.x) | | `devCommand` | string | No | Custom dev server command | | `teamId` | string | No | Team ID to scope the request | | `slug` | string | No | Team slug to scope the request (alternative to teamId) | #### Output [#output-11] | Parameter | Type | Description | | ----------- | ------ | ---------------------- | | `id` | string | Project ID | | `name` | string | Project name | | `framework` | string | Project framework | | `updatedAt` | number | Last updated timestamp | ### Vercel Delete Project [#vercel-delete-project] Delete a Vercel project #### Input [#input-12] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------------------------------------ | | `apiKey` | string | Yes | Vercel Access Token | | `projectId` | string | Yes | Project ID or name | | `teamId` | string | No | Team ID to scope the request | | `slug` | string | No | Team slug to scope the request (alternative to teamId) | #### Output [#output-12] | Parameter | Type | Description | | --------- | ------- | -------------------------------------------- | | `deleted` | boolean | Whether the project was successfully deleted | ### Vercel Pause Project [#vercel-pause-project] Pause a Vercel project #### Input [#input-13] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------------------------------------ | | `apiKey` | string | Yes | Vercel Access Token | | `projectId` | string | Yes | Project ID or name | | `teamId` | string | No | Team ID to scope the request | | `slug` | string | No | Team slug to scope the request (alternative to teamId) | #### Output [#output-13] | Parameter | Type | Description | | --------- | ------- | ----------------------------- | | `id` | string | Project ID | | `name` | string | Project name | | `paused` | boolean | Whether the project is paused | ### Vercel Unpause Project [#vercel-unpause-project] Unpause a Vercel project #### Input [#input-14] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------------------------------------ | | `apiKey` | string | Yes | Vercel Access Token | | `projectId` | string | Yes | Project ID or name | | `teamId` | string | No | Team ID to scope the request | | `slug` | string | No | Team slug to scope the request (alternative to teamId) | #### Output [#output-14] | Parameter | Type | Description | | --------- | ------- | ----------------------------- | | `id` | string | Project ID | | `name` | string | Project name | | `paused` | boolean | Whether the project is paused | ### Vercel List Project Domains [#vercel-list-project-domains] List all domains for a Vercel project #### Input [#input-15] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------------------------------------ | | `apiKey` | string | Yes | Vercel Access Token | | `projectId` | string | Yes | Project ID or name | | `teamId` | string | No | Team ID to scope the request | | `slug` | string | No | Team slug to scope the request (alternative to teamId) | | `limit` | number | No | Maximum number of domains to return | #### Output [#output-15] | Parameter | Type | Description | | ---------------------- | ------- | ------------------------------------------------------------ | | `domains` | array | List of project domains | | ↳ `name` | string | Domain name | | ↳ `apexName` | string | Apex domain name | | ↳ `projectId` | string | Project ID the domain belongs to | | ↳ `redirect` | string | Redirect target | | ↳ `redirectStatusCode` | number | Redirect status code | | ↳ `verified` | boolean | Whether the domain is verified | | ↳ `gitBranch` | string | Git branch for the domain | | ↳ `verification` | array | Domain verification challenges (type, domain, value, reason) | | ↳ `type` | string | Challenge type | | ↳ `domain` | string | Domain to add the record to | | ↳ `value` | string | Expected record value | | ↳ `reason` | string | Why verification is needed | | ↳ `createdAt` | number | Creation timestamp | | ↳ `updatedAt` | number | Last updated timestamp | | `count` | number | Number of domains returned | | `hasMore` | boolean | Whether more domains are available | ### Vercel Add Project Domain [#vercel-add-project-domain] Add a domain to a Vercel project #### Input [#input-16] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | ------------------------------------------------------ | | `apiKey` | string | Yes | Vercel Access Token | | `projectId` | string | Yes | Project ID or name | | `domain` | string | Yes | Domain name to add | | `redirect` | string | No | Target domain for redirect | | `redirectStatusCode` | number | No | HTTP status code for redirect (301, 302, 307, 308) | | `gitBranch` | string | No | Git branch to link the domain to | | `teamId` | string | No | Team ID to scope the request | | `slug` | string | No | Team slug to scope the request (alternative to teamId) | #### Output [#output-16] | Parameter | Type | Description | | -------------------- | ------- | ------------------------------------------------------------ | | `name` | string | Domain name | | `apexName` | string | Apex domain name | | `projectId` | string | Project ID the domain belongs to | | `verified` | boolean | Whether the domain is verified | | `gitBranch` | string | Git branch for the domain | | `redirect` | string | Redirect target domain | | `redirectStatusCode` | number | HTTP status code for redirect (301, 302, 307, 308) | | `verification` | array | Domain verification challenges (type, domain, value, reason) | | ↳ `type` | string | Challenge type | | ↳ `domain` | string | Domain to add the record to | | ↳ `value` | string | Expected record value | | ↳ `reason` | string | Why verification is needed | | `createdAt` | number | Creation timestamp | | `updatedAt` | number | Last updated timestamp | ### Vercel Remove Project Domain [#vercel-remove-project-domain] Remove a domain from a Vercel project #### Input [#input-17] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------------------------------------ | | `apiKey` | string | Yes | Vercel Access Token | | `projectId` | string | Yes | Project ID or name | | `domain` | string | Yes | Domain name to remove | | `teamId` | string | No | Team ID to scope the request | | `slug` | string | No | Team slug to scope the request (alternative to teamId) | #### Output [#output-17] | Parameter | Type | Description | | --------- | ------- | ------------------------------------------- | | `deleted` | boolean | Whether the domain was successfully removed | ### Vercel Update Project Domain [#vercel-update-project-domain] Update a project domain's configuration on Vercel #### Input [#input-18] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | ------------------------------------------------------ | | `apiKey` | string | Yes | Vercel Access Token | | `projectId` | string | Yes | Project ID or name | | `domain` | string | Yes | Domain name to update | | `redirect` | string | No | Target destination domain for redirect | | `redirectStatusCode` | number | No | HTTP status code for redirect (301, 302, 307, 308) | | `gitBranch` | string | No | Git branch to link the domain to | | `teamId` | string | No | Team ID to scope the request | | `slug` | string | No | Team slug to scope the request (alternative to teamId) | #### Output [#output-18] | Parameter | Type | Description | | -------------------- | ------- | ------------------------------------------------------------ | | `name` | string | Domain name | | `apexName` | string | Apex domain name | | `projectId` | string | Project ID the domain belongs to | | `verified` | boolean | Whether the domain is verified | | `redirect` | string | Redirect target domain | | `redirectStatusCode` | number | HTTP status code for redirect (301, 302, 307, 308) | | `gitBranch` | string | Git branch for the domain | | `verification` | array | Domain verification challenges (type, domain, value, reason) | | ↳ `type` | string | Challenge type | | ↳ `domain` | string | Domain to add the record to | | ↳ `value` | string | Expected record value | | ↳ `reason` | string | Why verification is needed | | `createdAt` | number | Creation timestamp | | `updatedAt` | number | Last updated timestamp | ### Vercel Verify Project Domain [#vercel-verify-project-domain] Verify a Vercel project domain by checking its verification challenge #### Input [#input-19] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------------------------------------ | | `apiKey` | string | Yes | Vercel Access Token | | `projectId` | string | Yes | Project ID or name | | `domain` | string | Yes | Domain name to verify | | `teamId` | string | No | Team ID to scope the request | | `slug` | string | No | Team slug to scope the request (alternative to teamId) | #### Output [#output-19] | Parameter | Type | Description | | -------------------- | ------- | ----------------------------------------- | | `name` | string | Domain name | | `apexName` | string | Apex domain name | | `projectId` | string | Project ID | | `verified` | boolean | Whether the domain is verified | | `redirect` | string | Redirect target domain | | `redirectStatusCode` | number | Redirect status code (301, 302, 307, 308) | | `gitBranch` | string | Git branch linked to the domain | | `createdAt` | number | Creation timestamp | | `updatedAt` | number | Last update timestamp | ### Vercel Get Environment Variables [#vercel-get-environment-variables] Retrieve environment variables for a Vercel project #### Input [#input-20] | Parameter | Type | Required | Description | | ----------- | ------- | -------- | ------------------------------------------------------------------------------------------ | | `apiKey` | string | Yes | Vercel Access Token | | `projectId` | string | Yes | Project ID or name | | `decrypt` | boolean | No | If true, decrypted variable values are returned instead of ciphertext | | `gitBranch` | string | No | Filter results to the environment variables for this git branch (must have target=preview) | | `teamId` | string | No | Team ID to scope the request | | `slug` | string | No | Team slug to scope the request (alternative to teamId) | #### Output [#output-20] | Parameter | Type | Description | | ------------- | ------ | ----------------------------------------------------------- | | `envs` | array | List of environment variables | | ↳ `id` | string | Environment variable ID | | ↳ `key` | string | Variable name | | ↳ `value` | string | Variable value | | ↳ `type` | string | Variable type (secret, system, encrypted, plain, sensitive) | | ↳ `target` | array | Target environments | | ↳ `gitBranch` | string | Git branch filter | | ↳ `comment` | string | Comment providing context for the variable | | ↳ `createdAt` | number | Creation timestamp | | ↳ `updatedAt` | number | Last update timestamp | | `count` | number | Number of environment variables returned | ### Vercel Create Environment Variable [#vercel-create-environment-variable] Create an environment variable for a Vercel project #### Input [#input-21] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------------------------------------------------------------ | | `apiKey` | string | Yes | Vercel Access Token | | `projectId` | string | Yes | Project ID or name | | `key` | string | Yes | Environment variable name | | `value` | string | Yes | Environment variable value | | `target` | string | Yes | Comma-separated list of target environments (production, preview, development) | | `type` | string | No | Variable type: system, encrypted, plain, or sensitive (default: plain) | | `gitBranch` | string | No | Git branch to associate with the variable (requires target to include preview) | | `comment` | string | No | Comment to add context to the variable (max 500 characters) | | `teamId` | string | No | Team ID to scope the request | | `slug` | string | No | Team slug to scope the request (alternative to teamId) | #### Output [#output-21] | Parameter | Type | Description | | ----------- | ------ | ----------------------------------------------------------- | | `id` | string | Environment variable ID | | `key` | string | Variable name | | `value` | string | Variable value | | `type` | string | Variable type (secret, system, encrypted, plain, sensitive) | | `target` | array | Target environments | | `gitBranch` | string | Git branch filter | | `comment` | string | Comment providing context for the variable | | `createdAt` | number | Creation timestamp | | `updatedAt` | number | Last update timestamp | ### Vercel Update Environment Variable [#vercel-update-environment-variable] Update an environment variable for a Vercel project #### Input [#input-22] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------------------------------------------------------------ | | `apiKey` | string | Yes | Vercel Access Token | | `projectId` | string | Yes | Project ID or name | | `envId` | string | Yes | Environment variable ID to update | | `key` | string | No | New variable name | | `value` | string | No | New variable value | | `target` | string | No | Comma-separated list of target environments (production, preview, development) | | `type` | string | No | Variable type: system, encrypted, plain, or sensitive | | `gitBranch` | string | No | Git branch to associate with the variable (requires target to include preview) | | `comment` | string | No | Comment to add context to the variable (max 500 characters) | | `teamId` | string | No | Team ID to scope the request | | `slug` | string | No | Team slug to scope the request (alternative to teamId) | #### Output [#output-22] | Parameter | Type | Description | | ----------- | ------ | ----------------------------------------------------------- | | `id` | string | Environment variable ID | | `key` | string | Variable name | | `value` | string | Variable value | | `type` | string | Variable type (secret, system, encrypted, plain, sensitive) | | `target` | array | Target environments | | `gitBranch` | string | Git branch filter | | `comment` | string | Comment providing context for the variable | | `createdAt` | number | Creation timestamp | | `updatedAt` | number | Last update timestamp | ### Vercel Delete Environment Variable [#vercel-delete-environment-variable] Delete an environment variable from a Vercel project #### Input [#input-23] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------------------------------------ | | `apiKey` | string | Yes | Vercel Access Token | | `projectId` | string | Yes | Project ID or name | | `envId` | string | Yes | Environment variable ID to delete | | `teamId` | string | No | Team ID to scope the request | | `slug` | string | No | Team slug to scope the request (alternative to teamId) | #### Output [#output-23] | Parameter | Type | Description | | --------- | ------- | --------------------------------------------------------- | | `deleted` | boolean | Whether the environment variable was successfully deleted | ### Vercel List Domains [#vercel-list-domains] List all domains in a Vercel account or team #### Input [#input-24] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------ | | `apiKey` | string | Yes | Vercel Access Token | | `limit` | number | No | Maximum number of domains to return (default 20) | | `teamId` | string | No | Team ID to scope the request | | `slug` | string | No | Team slug to scope the request (alternative to teamId) | #### Output [#output-24] | Parameter | Type | Description | | ----------------------- | ------- | --------------------------------------- | | `domains` | array | List of domains | | ↳ `id` | string | Domain ID | | ↳ `name` | string | Domain name | | ↳ `verified` | boolean | Whether domain is verified | | ↳ `createdAt` | number | Creation timestamp | | ↳ `expiresAt` | number | Expiration timestamp | | ↳ `serviceType` | string | Service type (zeit.world, external, na) | | ↳ `nameservers` | array | Current nameservers | | ↳ `intendedNameservers` | array | Intended nameservers | | ↳ `renew` | boolean | Whether auto-renewal is enabled | | ↳ `boughtAt` | number | Purchase timestamp | | ↳ `transferredAt` | number | Transfer completion timestamp | | ↳ `creator` | object | Domain creator (id, username, email) | | ↳ `id` | string | Creator ID | | ↳ `username` | string | Creator username | | ↳ `email` | string | Creator email | | ↳ `customNameservers` | array | Custom nameservers | | ↳ `userId` | string | Owner user ID | | ↳ `teamId` | string | Owner team ID | | ↳ `transferStartedAt` | number | Transfer start timestamp | | `count` | number | Number of domains returned | | `hasMore` | boolean | Whether more domains are available | ### Vercel Get Domain [#vercel-get-domain] Get information about a specific domain in a Vercel account #### Input [#input-25] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------ | | `apiKey` | string | Yes | Vercel Access Token | | `domain` | string | Yes | The domain name to retrieve | | `teamId` | string | No | Team ID to scope the request | | `slug` | string | No | Team slug to scope the request (alternative to teamId) | #### Output [#output-25] | Parameter | Type | Description | | --------------------- | ------- | --------------------------------------- | | `id` | string | Domain ID | | `name` | string | Domain name | | `verified` | boolean | Whether domain is verified | | `createdAt` | number | Creation timestamp | | `expiresAt` | number | Expiration timestamp | | `serviceType` | string | Service type (zeit.world, external, na) | | `nameservers` | array | Current nameservers | | `intendedNameservers` | array | Intended nameservers | | `customNameservers` | array | Custom nameservers | | `renew` | boolean | Whether auto-renewal is enabled | | `boughtAt` | number | Purchase timestamp | | `transferredAt` | number | Transfer completion timestamp | | `creator` | object | Domain creator (id, username, email) | | ↳ `id` | string | Creator ID | | ↳ `username` | string | Creator username | | ↳ `email` | string | Creator email | | `userId` | string | Owner user ID | | `teamId` | string | Owner team ID | | `transferStartedAt` | number | Transfer start timestamp | ### Vercel Add Domain [#vercel-add-domain] Add a new domain to a Vercel account or team #### Input [#input-26] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------ | | `apiKey` | string | Yes | Vercel Access Token | | `name` | string | Yes | The domain name to add | | `teamId` | string | No | Team ID to scope the request | | `slug` | string | No | Team slug to scope the request (alternative to teamId) | #### Output [#output-26] | Parameter | Type | Description | | --------------------- | ------- | --------------------------------------- | | `id` | string | Domain ID | | `name` | string | Domain name | | `verified` | boolean | Whether domain is verified | | `createdAt` | number | Creation timestamp | | `serviceType` | string | Service type (zeit.world, external, na) | | `nameservers` | array | Current nameservers | | `intendedNameservers` | array | Intended nameservers | | `expiresAt` | number | Expiration timestamp | | `customNameservers` | array | Custom nameservers | | `renew` | boolean | Whether auto-renewal is enabled | | `boughtAt` | number | Purchase timestamp | | `transferredAt` | number | Transfer completion timestamp | | `creator` | object | Domain creator (id, username, email) | | ↳ `id` | string | Creator ID | | ↳ `username` | string | Creator username | | ↳ `email` | string | Creator email | ### Vercel Delete Domain [#vercel-delete-domain] Delete a domain from a Vercel account or team #### Input [#input-27] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------ | | `apiKey` | string | Yes | Vercel Access Token | | `domain` | string | Yes | The domain name to delete | | `teamId` | string | No | Team ID to scope the request | | `slug` | string | No | Team slug to scope the request (alternative to teamId) | #### Output [#output-27] | Parameter | Type | Description | | --------- | ------- | ------------------------------ | | `uid` | string | The ID of the deleted domain | | `deleted` | boolean | Whether the domain was deleted | ### Vercel Get Domain Config [#vercel-get-domain-config] Get the configuration for a domain in a Vercel account #### Input [#input-28] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------ | | `apiKey` | string | Yes | Vercel Access Token | | `domain` | string | Yes | The domain name to get configuration for | | `teamId` | string | No | Team ID to scope the request | | `slug` | string | No | Team slug to scope the request (alternative to teamId) | #### Output [#output-28] | Parameter | Type | Description | | -------------------- | ------- | ------------------------------------------------------------------- | | `configuredBy` | string | How the domain is configured (CNAME, A, http, dns-01, or null) | | `acceptedChallenges` | array | Accepted challenge types for certificate issuance (dns-01, http-01) | | `misconfigured` | boolean | Whether the domain is misconfigured for TLS certificate generation | | `recommendedIPv4` | array | Recommended IPv4 addresses with rank values | | ↳ `rank` | number | Priority rank (1 is preferred) | | ↳ `value` | array | IPv4 addresses | | `recommendedCNAME` | array | Recommended CNAME records with rank values | | ↳ `rank` | number | Priority rank (1 is preferred) | | ↳ `value` | string | CNAME value | ### Vercel List DNS Records [#vercel-list-dns-records] List all DNS records for a domain in a Vercel account #### Input [#input-29] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------ | | `apiKey` | string | Yes | Vercel Access Token | | `domain` | string | Yes | The domain name to list records for | | `limit` | number | No | Maximum number of records to return | | `teamId` | string | No | Team ID to scope the request | | `slug` | string | No | Team slug to scope the request (alternative to teamId) | #### Output [#output-29] | Parameter | Type | Description | | -------------- | ------- | ----------------------------------------------------------------- | | `records` | array | List of DNS records | | ↳ `id` | string | Record ID | | ↳ `slug` | string | Record slug | | ↳ `name` | string | Record name | | ↳ `type` | string | Record type (A, AAAA, ALIAS, CAA, CNAME, HTTPS, MX, SRV, TXT, NS) | | ↳ `value` | string | Record value | | ↳ `ttl` | number | Time to live in seconds | | ↳ `mxPriority` | number | MX record priority | | ↳ `priority` | number | Record priority | | ↳ `creator` | string | Creator identifier | | ↳ `createdAt` | number | Creation timestamp | | ↳ `updatedAt` | number | Last update timestamp | | ↳ `comment` | string | Record comment | | `count` | number | Number of records returned | | `hasMore` | boolean | Whether more records are available | ### Vercel Create DNS Record [#vercel-create-dns-record] Create a DNS record for a domain in a Vercel account #### Input [#input-30] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ---------------------------------------------------------------------------- | | `apiKey` | string | Yes | Vercel Access Token | | `domain` | string | Yes | The domain name to create the record for | | `recordName` | string | Yes | The subdomain or record name | | `recordType` | string | Yes | DNS record type (A, AAAA, ALIAS, CAA, CNAME, HTTPS, MX, SRV, TXT, NS) | | `value` | string | No | The value of the DNS record (not used for SRV/HTTPS records) | | `ttl` | number | No | Time to live in seconds | | `mxPriority` | number | No | Priority for MX records | | `srvTarget` | string | No | Target hostname for SRV records (required when recordType is SRV) | | `srvWeight` | number | No | Weight for SRV records (required when recordType is SRV) | | `srvPort` | number | No | Port for SRV records (required when recordType is SRV) | | `srvPriority` | number | No | Priority for SRV records (required when recordType is SRV) | | `httpsTarget` | string | No | Target hostname for HTTPS records (required when recordType is HTTPS) | | `httpsPriority` | number | No | Priority for HTTPS records (required when recordType is HTTPS) | | `httpsParams` | string | No | Optional service parameters for HTTPS records (e.g. "alpn=h2,h3") | | `comment` | string | No | A comment to add context on what this DNS record is for (max 500 characters) | | `teamId` | string | No | Team ID to scope the request | | `slug` | string | No | Team slug to scope the request (alternative to teamId) | #### Output [#output-30] | Parameter | Type | Description | | --------- | ------ | ----------------------- | | `uid` | string | The DNS record ID | | `updated` | number | Timestamp of the update | ### Vercel Update DNS Record [#vercel-update-dns-record] Update an existing DNS record for a domain in a Vercel account #### Input [#input-31] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ------------------------------------------------------------------------------ | | `apiKey` | string | Yes | Vercel Access Token | | `recordId` | string | Yes | The ID of the DNS record to update | | `name` | string | No | The name of the DNS record | | `value` | string | No | The value of the DNS record | | `type` | string | No | DNS record type (A, AAAA, ALIAS, CAA, CNAME, HTTPS, MX, SRV, TXT, NS) | | `ttl` | number | No | Time to live in seconds (60 to 2147483647) | | `mxPriority` | number | No | Priority for MX records | | `srvTarget` | string | No | Target hostname for SRV records (required together when updating SRV data) | | `srvWeight` | number | No | Weight for SRV records (required together when updating SRV data) | | `srvPort` | number | No | Port for SRV records (required together when updating SRV data) | | `srvPriority` | number | No | Priority for SRV records (required together when updating SRV data) | | `httpsTarget` | string | No | Target hostname for HTTPS records (required together when updating HTTPS data) | | `httpsPriority` | number | No | Priority for HTTPS records (required together when updating HTTPS data) | | `httpsParams` | string | No | Optional service parameters for HTTPS records (e.g. "alpn=h2,h3") | | `comment` | string | No | A comment to add context on what this DNS record is for (max 500 characters) | | `teamId` | string | No | Team ID to scope the request | | `slug` | string | No | Team slug to scope the request (alternative to teamId) | #### Output [#output-31] | Parameter | Type | Description | | ------------ | ------ | --------------------------------------------------------------------- | | `id` | string | The DNS record ID | | `name` | string | The name of the DNS record | | `type` | string | The record class (record or record-sys) | | `value` | string | The value of the DNS record | | `creator` | string | The creator of the DNS record | | `domain` | string | The domain the record belongs to | | `ttl` | number | Time to live in seconds | | `comment` | string | Comment providing context for the record | | `recordType` | string | DNS record type (A, AAAA, ALIAS, CAA, CNAME, HTTPS, MX, NS, SRV, TXT) | | `createdAt` | number | Timestamp of record creation | ### Vercel Delete DNS Record [#vercel-delete-dns-record] Delete a DNS record for a domain in a Vercel account #### Input [#input-32] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ------------------------------------------------------ | | `apiKey` | string | Yes | Vercel Access Token | | `domain` | string | Yes | The domain name the record belongs to | | `recordId` | string | Yes | The ID of the DNS record to delete | | `teamId` | string | No | Team ID to scope the request | | `slug` | string | No | Team slug to scope the request (alternative to teamId) | #### Output [#output-32] | Parameter | Type | Description | | --------- | ------- | ------------------------------ | | `deleted` | boolean | Whether the record was deleted | ### Vercel List Aliases [#vercel-list-aliases] List aliases for a Vercel project or team #### Input [#input-33] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------------------------------------ | | `apiKey` | string | Yes | Vercel Access Token | | `projectId` | string | No | Filter aliases by project ID | | `domain` | string | No | Filter aliases by domain | | `limit` | number | No | Maximum number of aliases to return | | `teamId` | string | No | Team ID to scope the request | | `slug` | string | No | Team slug to scope the request (alternative to teamId) | #### Output [#output-33] | Parameter | Type | Description | | ---------------------- | ------- | ----------------------------------------------------- | | `aliases` | array | List of aliases | | ↳ `uid` | string | Alias ID | | ↳ `alias` | string | Alias hostname | | ↳ `deploymentId` | string | Associated deployment ID | | ↳ `projectId` | string | Associated project ID | | ↳ `createdAt` | number | Creation timestamp in milliseconds | | ↳ `updatedAt` | number | Last update timestamp in milliseconds | | ↳ `deployment` | object | Associated deployment (id, url) | | ↳ `id` | string | Deployment ID | | ↳ `url` | string | Deployment URL | | ↳ `redirect` | string | Target domain for redirect aliases | | ↳ `redirectStatusCode` | number | HTTP status code for redirect (301, 302, 307, or 308) | | `count` | number | Number of aliases returned | | `hasMore` | boolean | Whether more aliases are available | ### Vercel Get Alias [#vercel-get-alias] Get details about a specific alias by ID or hostname #### Input [#input-34] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------ | | `apiKey` | string | Yes | Vercel Access Token | | `aliasId` | string | Yes | Alias ID or hostname to look up | | `teamId` | string | No | Team ID to scope the request | | `slug` | string | No | Team slug to scope the request (alternative to teamId) | #### Output [#output-34] | Parameter | Type | Description | | -------------------- | ------ | ----------------------------------------------------- | | `uid` | string | Alias ID | | `alias` | string | Alias hostname | | `deploymentId` | string | Associated deployment ID | | `projectId` | string | Associated project ID | | `createdAt` | number | Creation timestamp in milliseconds | | `updatedAt` | number | Last update timestamp in milliseconds | | `redirect` | string | Target domain for redirect aliases | | `redirectStatusCode` | number | HTTP status code for redirect (301, 302, 307, or 308) | | `deployment` | object | Associated deployment (id, url) | | ↳ `id` | string | Deployment ID | | ↳ `url` | string | Deployment URL | ### Vercel Create Alias [#vercel-create-alias] Assign an alias (domain/subdomain) to a deployment #### Input [#input-35] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | -------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Vercel Access Token | | `deploymentId` | string | Yes | Deployment ID to assign the alias to | | `alias` | string | Yes | The domain or subdomain to assign as an alias | | `redirect` | string | No | Hostname to 307-redirect the alias to instead of serving the deployment directly | | `teamId` | string | No | Team ID to scope the request | | `slug` | string | No | Team slug to scope the request (alternative to teamId) | #### Output [#output-35] | Parameter | Type | Description | | ----------------- | ------ | -------------------------------------------------------------------- | | `uid` | string | Alias ID | | `alias` | string | Alias hostname | | `created` | string | Creation timestamp as ISO 8601 date-time string | | `oldDeploymentId` | string | ID of the previously aliased deployment, if the alias was reassigned | ### Vercel Delete Alias [#vercel-delete-alias] Delete an alias by its ID #### Input [#input-36] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------ | | `apiKey` | string | Yes | Vercel Access Token | | `aliasId` | string | Yes | Alias ID to delete | | `teamId` | string | No | Team ID to scope the request | | `slug` | string | No | Team slug to scope the request (alternative to teamId) | #### Output [#output-36] | Parameter | Type | Description | | --------- | ------ | ------------------------- | | `status` | string | Deletion status (SUCCESS) | ### Vercel List Edge Configs [#vercel-list-edge-configs] List all Edge Config stores for a team #### Input [#input-37] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------- | | `apiKey` | string | Yes | Vercel Access Token | | `teamId` | string | No | Team ID to scope the request | #### Output [#output-37] | Parameter | Type | Description | | --------------- | ------ | ------------------------------- | | `edgeConfigs` | array | List of Edge Config stores | | ↳ `id` | string | Edge Config ID | | ↳ `slug` | string | Edge Config slug | | ↳ `ownerId` | string | Owner ID | | ↳ `digest` | string | Content digest hash | | ↳ `createdAt` | number | Creation timestamp | | ↳ `updatedAt` | number | Last update timestamp | | ↳ `itemCount` | number | Number of items | | ↳ `sizeInBytes` | number | Size in bytes | | `count` | number | Number of Edge Configs returned | ### Vercel Get Edge Config [#vercel-get-edge-config] Get details about a specific Edge Config store #### Input [#input-38] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ---------------------------- | | `apiKey` | string | Yes | Vercel Access Token | | `edgeConfigId` | string | Yes | Edge Config ID to look up | | `teamId` | string | No | Team ID to scope the request | #### Output [#output-38] | Parameter | Type | Description | | ------------- | ------ | --------------------- | | `id` | string | Edge Config ID | | `slug` | string | Edge Config slug | | `ownerId` | string | Owner ID | | `digest` | string | Content digest hash | | `createdAt` | number | Creation timestamp | | `updatedAt` | number | Last update timestamp | | `itemCount` | number | Number of items | | `sizeInBytes` | number | Size in bytes | ### Vercel Create Edge Config [#vercel-create-edge-config] Create a new Edge Config store #### Input [#input-39] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------- | | `apiKey` | string | Yes | Vercel Access Token | | `slug` | string | Yes | The name/slug for the new Edge Config | | `teamId` | string | No | Team ID to scope the request | #### Output [#output-39] | Parameter | Type | Description | | ------------- | ------ | --------------------- | | `id` | string | Edge Config ID | | `slug` | string | Edge Config slug | | `ownerId` | string | Owner ID | | `digest` | string | Content digest hash | | `createdAt` | number | Creation timestamp | | `updatedAt` | number | Last update timestamp | | `itemCount` | number | Number of items | | `sizeInBytes` | number | Size in bytes | ### Vercel Get Edge Config Items [#vercel-get-edge-config-items] Get all items in an Edge Config store #### Input [#input-40] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | -------------------------------- | | `apiKey` | string | Yes | Vercel Access Token | | `edgeConfigId` | string | Yes | Edge Config ID to get items from | | `teamId` | string | No | Team ID to scope the request | #### Output [#output-40] | Parameter | Type | Description | | ---------------- | ------ | ------------------------- | | `items` | array | List of Edge Config items | | ↳ `key` | string | Item key | | ↳ `value` | json | Item value | | ↳ `description` | string | Item description | | ↳ `edgeConfigId` | string | Parent Edge Config ID | | ↳ `createdAt` | number | Creation timestamp | | ↳ `updatedAt` | number | Last update timestamp | | `count` | number | Number of items returned | ### Vercel Update Edge Config Items [#vercel-update-edge-config-items] Create, update, upsert, or delete items in an Edge Config store #### Input [#input-41] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------ | | `apiKey` | string | Yes | Vercel Access Token | | `edgeConfigId` | string | Yes | Edge Config ID to update items in | | `items` | json | Yes | Array of operations: \[\{operation: "create"\|"update"\|"upsert"\|"delete", key: string, value?: any}] | | `teamId` | string | No | Team ID to scope the request | #### Output [#output-41] | Parameter | Type | Description | | --------- | ------ | ---------------- | | `status` | string | Operation status | ### Vercel Delete Edge Config [#vercel-delete-edge-config] Delete an Edge Config store by ID #### Input [#input-42] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ---------------------------- | | `apiKey` | string | Yes | Vercel Access Token | | `edgeConfigId` | string | Yes | Edge Config ID to delete | | `teamId` | string | No | Team ID to scope the request | #### Output [#output-42] | Parameter | Type | Description | | --------- | ------- | ------------------------------------------------ | | `deleted` | boolean | Whether the Edge Config was successfully deleted | ### Vercel List Webhooks [#vercel-list-webhooks] List webhooks for a Vercel project or team #### Input [#input-43] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ----------------------------- | | `apiKey` | string | Yes | Vercel Access Token | | `projectId` | string | No | Filter webhooks by project ID | | `teamId` | string | No | Team ID to scope the request | #### Output [#output-43] | Parameter | Type | Description | | -------------------- | ------ | -------------------------------------------------------- | | `webhooks` | array | List of webhooks | | ↳ `id` | string | Webhook ID | | ↳ `url` | string | Webhook URL | | ↳ `events` | array | Events the webhook listens to | | ↳ `ownerId` | string | Owner ID | | ↳ `projectIds` | array | Associated project IDs | | ↳ `projectsMetadata` | array | Metadata for the projects the webhook is associated with | | ↳ `createdAt` | number | Creation timestamp | | ↳ `updatedAt` | number | Last updated timestamp | | `count` | number | Number of webhooks returned | ### Vercel Get Webhook [#vercel-get-webhook] Get details about a specific Vercel webhook #### Input [#input-44] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ---------------------------- | | `apiKey` | string | Yes | Vercel Access Token | | `webhookId` | string | Yes | Webhook ID to look up | | `teamId` | string | No | Team ID to scope the request | #### Output [#output-44] | Parameter | Type | Description | | ------------ | ------ | ----------------------------- | | `id` | string | Webhook ID | | `url` | string | Webhook URL | | `events` | array | Events the webhook listens to | | `ownerId` | string | Owner ID | | `projectIds` | array | Associated project IDs | | `createdAt` | number | Creation timestamp | | `updatedAt` | number | Last updated timestamp | ### Vercel Create Webhook [#vercel-create-webhook] Create a new webhook for a Vercel team #### Input [#input-45] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | --------------------------------------------------------------------- | | `apiKey` | string | Yes | Vercel Access Token | | `url` | string | Yes | Webhook URL (must be https) | | `events` | string | Yes | Comma-separated event names to subscribe to | | `projectIds` | string | No | Comma-separated project IDs to scope the webhook to | | `teamId` | string | No | Team ID to scope the webhook to (optional; omit for personal account) | #### Output [#output-45] | Parameter | Type | Description | | ------------ | ------ | ----------------------------- | | `id` | string | Webhook ID | | `url` | string | Webhook URL | | `secret` | string | Webhook signing secret | | `events` | array | Events the webhook listens to | | `ownerId` | string | Owner ID | | `projectIds` | array | Associated project IDs | | `createdAt` | number | Creation timestamp | | `updatedAt` | number | Last updated timestamp | ### Vercel Delete Webhook [#vercel-delete-webhook] Delete a webhook from a Vercel team #### Input [#input-46] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ---------------------------- | | `apiKey` | string | Yes | Vercel Access Token | | `webhookId` | string | Yes | The webhook ID to delete | | `teamId` | string | No | Team ID to scope the request | #### Output [#output-46] | Parameter | Type | Description | | --------- | ------- | -------------------------------------------- | | `deleted` | boolean | Whether the webhook was successfully deleted | ### Vercel Create Check [#vercel-create-check] Create a new deployment check #### Input [#input-47] | Parameter | Type | Required | Description | | --------------- | ------- | -------- | ------------------------------------------------------ | | `apiKey` | string | Yes | Vercel Access Token | | `deploymentId` | string | Yes | Deployment ID to create the check for | | `name` | string | Yes | Name of the check (max 100 characters) | | `blocking` | boolean | Yes | Whether the check blocks the deployment | | `path` | string | No | Page path being checked | | `detailsUrl` | string | No | URL with details about the check | | `externalId` | string | No | External identifier for the check | | `rerequestable` | boolean | No | Whether the check can be rerequested | | `teamId` | string | No | Team ID to scope the request | | `slug` | string | No | Team slug to scope the request (alternative to teamId) | #### Output [#output-47] | Parameter | Type | Description | | --------------- | ------- | ---------------------------------------------------------------------------------- | | `id` | string | Check ID | | `name` | string | Check name | | `status` | string | Check status: registered, running, or completed | | `conclusion` | string | Check conclusion: canceled, failed, neutral, succeeded, skipped, or stale | | `blocking` | boolean | Whether the check blocks the deployment | | `deploymentId` | string | Associated deployment ID | | `integrationId` | string | Associated integration ID | | `externalId` | string | External identifier | | `detailsUrl` | string | URL with details about the check | | `path` | string | Page path being checked | | `rerequestable` | boolean | Whether the check can be rerequested | | `createdAt` | number | Creation timestamp in milliseconds | | `updatedAt` | number | Last update timestamp in milliseconds | | `startedAt` | number | Start timestamp in milliseconds | | `completedAt` | number | Completion timestamp in milliseconds | | `output` | json | Check result output including metrics (FCP, LCP, CLS, TBT, virtualExperienceScore) | ### Vercel Get Check [#vercel-get-check] Get details of a specific deployment check #### Input [#input-48] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ------------------------------------------------------ | | `apiKey` | string | Yes | Vercel Access Token | | `deploymentId` | string | Yes | Deployment ID the check belongs to | | `checkId` | string | Yes | Check ID to retrieve | | `teamId` | string | No | Team ID to scope the request | | `slug` | string | No | Team slug to scope the request (alternative to teamId) | #### Output [#output-48] | Parameter | Type | Description | | --------------- | ------- | ---------------------------------------------------------------------------------- | | `id` | string | Check ID | | `name` | string | Check name | | `status` | string | Check status: registered, running, or completed | | `conclusion` | string | Check conclusion: canceled, failed, neutral, succeeded, skipped, or stale | | `blocking` | boolean | Whether the check blocks the deployment | | `deploymentId` | string | Associated deployment ID | | `integrationId` | string | Associated integration ID | | `externalId` | string | External identifier | | `detailsUrl` | string | URL with details about the check | | `path` | string | Page path being checked | | `rerequestable` | boolean | Whether the check can be rerequested | | `createdAt` | number | Creation timestamp in milliseconds | | `updatedAt` | number | Last update timestamp in milliseconds | | `startedAt` | number | Start timestamp in milliseconds | | `completedAt` | number | Completion timestamp in milliseconds | | `output` | json | Check result output including metrics (FCP, LCP, CLS, TBT, virtualExperienceScore) | ### Vercel List Checks [#vercel-list-checks] List all checks for a deployment #### Input [#input-49] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ------------------------------------------------------ | | `apiKey` | string | Yes | Vercel Access Token | | `deploymentId` | string | Yes | Deployment ID to list checks for | | `teamId` | string | No | Team ID to scope the request | | `slug` | string | No | Team slug to scope the request (alternative to teamId) | #### Output [#output-49] | Parameter | Type | Description | | ----------------- | ------- | --------------------------------------- | | `checks` | array | List of deployment checks | | ↳ `id` | string | Check ID | | ↳ `name` | string | Check name | | ↳ `status` | string | Check status | | ↳ `conclusion` | string | Check conclusion | | ↳ `blocking` | boolean | Whether the check blocks the deployment | | ↳ `deploymentId` | string | Associated deployment ID | | ↳ `integrationId` | string | Associated integration ID | | ↳ `externalId` | string | External identifier | | ↳ `detailsUrl` | string | URL with details about the check | | ↳ `path` | string | Page path being checked | | ↳ `rerequestable` | boolean | Whether the check can be rerequested | | ↳ `createdAt` | number | Creation timestamp | | ↳ `updatedAt` | number | Last update timestamp | | ↳ `startedAt` | number | Start timestamp | | ↳ `completedAt` | number | Completion timestamp | | ↳ `output` | json | Check result output including metrics | | `count` | number | Total number of checks | ### Vercel Update Check [#vercel-update-check] Update an existing deployment check #### Input [#input-50] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ------------------------------------------------------------------ | | `apiKey` | string | Yes | Vercel Access Token | | `deploymentId` | string | Yes | Deployment ID the check belongs to | | `checkId` | string | Yes | Check ID to update | | `name` | string | No | Updated name of the check | | `status` | string | No | Updated status: running or completed | | `conclusion` | string | No | Check conclusion: canceled, failed, neutral, succeeded, or skipped | | `detailsUrl` | string | No | URL with details about the check | | `externalId` | string | No | External identifier for the check | | `path` | string | No | Page path being checked | | `output` | string | No | JSON string with check output metrics | | `teamId` | string | No | Team ID to scope the request | | `slug` | string | No | Team slug to scope the request (alternative to teamId) | #### Output [#output-50] | Parameter | Type | Description | | --------------- | ------- | ---------------------------------------------------------------------------------- | | `id` | string | Check ID | | `name` | string | Check name | | `status` | string | Check status: registered, running, or completed | | `conclusion` | string | Check conclusion: canceled, failed, neutral, succeeded, skipped, or stale | | `blocking` | boolean | Whether the check blocks the deployment | | `deploymentId` | string | Associated deployment ID | | `integrationId` | string | Associated integration ID | | `externalId` | string | External identifier | | `detailsUrl` | string | URL with details about the check | | `path` | string | Page path being checked | | `rerequestable` | boolean | Whether the check can be rerequested | | `createdAt` | number | Creation timestamp in milliseconds | | `updatedAt` | number | Last update timestamp in milliseconds | | `startedAt` | number | Start timestamp in milliseconds | | `completedAt` | number | Completion timestamp in milliseconds | | `output` | json | Check result output including metrics (FCP, LCP, CLS, TBT, virtualExperienceScore) | ### Vercel Rerequest Check [#vercel-rerequest-check] Rerequest a deployment check #### Input [#input-51] | Parameter | Type | Required | Description | | -------------- | ------- | -------- | ------------------------------------------------------------- | | `apiKey` | string | Yes | Vercel Access Token | | `deploymentId` | string | Yes | Deployment ID the check belongs to | | `checkId` | string | Yes | Check ID to rerequest | | `teamId` | string | No | Team ID to scope the request | | `slug` | string | No | Team slug to scope the request (alternative to teamId) | | `autoUpdate` | boolean | No | Whether to mark the check as running immediately on rerequest | #### Output [#output-51] | Parameter | Type | Description | | ------------- | ------- | ---------------------------------------------- | | `rerequested` | boolean | Whether the check was successfully rerequested | ### Vercel List Teams [#vercel-list-teams] List all teams in a Vercel account #### Input [#input-52] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------------------ | | `apiKey` | string | Yes | Vercel Access Token | | `limit` | number | No | Maximum number of teams to return | | `since` | number | No | Timestamp in milliseconds to only include teams created since then | | `until` | number | No | Timestamp in milliseconds to only include teams created until then | #### Output [#output-52] | Parameter | Type | Description | | ----------------- | ------- | ------------------------------------- | | `teams` | array | List of teams | | ↳ `id` | string | Team ID | | ↳ `slug` | string | Team slug | | ↳ `name` | string | Team name | | ↳ `avatar` | string | Avatar file ID | | ↳ `description` | string | Short team description | | ↳ `stagingPrefix` | string | Prefix used for staging deployments | | ↳ `createdAt` | number | Creation timestamp in milliseconds | | ↳ `updatedAt` | number | Last update timestamp in milliseconds | | ↳ `creatorId` | string | User ID of team creator | | ↳ `membership` | object | Current user membership details | | ↳ `role` | string | Membership role | | ↳ `confirmed` | boolean | Whether membership is confirmed | | ↳ `created` | number | Membership creation timestamp | | ↳ `uid` | string | User ID of the member | | ↳ `teamId` | string | Team ID | | `count` | number | Number of teams returned | | `pagination` | object | Pagination information | | ↳ `count` | number | Items in current page | | ↳ `next` | number | Timestamp for next page request | | ↳ `prev` | number | Timestamp for previous page request | ### Vercel Get Team [#vercel-get-team] Get information about a specific Vercel team #### Input [#input-53] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------------------- | | `apiKey` | string | Yes | Vercel Access Token | | `teamId` | string | Yes | The team ID to retrieve | #### Output [#output-53] | Parameter | Type | Description | | --------------------- | ------- | -------------------------------------------- | | `id` | string | Team ID | | `slug` | string | Team slug | | `name` | string | Team name | | `avatar` | string | Avatar file ID | | `description` | string | Short team description | | `stagingPrefix` | string | Prefix used for staging deployments | | `createdAt` | number | Creation timestamp in milliseconds | | `updatedAt` | number | Last update timestamp in milliseconds | | `creatorId` | string | User ID of team creator | | `membership` | object | Current user membership details | | ↳ `uid` | string | User ID of the member | | ↳ `teamId` | string | Team ID | | ↳ `role` | string | Membership role | | ↳ `confirmed` | boolean | Whether membership is confirmed | | ↳ `created` | number | Membership creation timestamp | | ↳ `createdAt` | number | Membership creation timestamp (milliseconds) | | ↳ `accessRequestedAt` | number | When access was requested | | ↳ `teamRoles` | array | Team role assignments | | ↳ `teamPermissions` | array | Team permission assignments | ### Vercel List Team Members [#vercel-list-team-members] List all members of a Vercel team #### Input [#input-54] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Vercel Access Token | | `teamId` | string | Yes | The team ID to list members for | | `limit` | number | No | Maximum number of members to return | | `role` | string | No | Filter by role (OWNER, MEMBER, DEVELOPER, SECURITY, BILLING, VIEWER, VIEWER\_FOR\_PLUS, CONTRIBUTOR) | | `since` | number | No | Timestamp in milliseconds to only include members added since then | | `until` | number | No | Timestamp in milliseconds to only include members added until then | | `search` | string | No | Search team members by their name, username, and email | #### Output [#output-54] | Parameter | Type | Description | | ----------------------- | ------- | ----------------------------------------- | | `members` | array | List of team members | | ↳ `uid` | string | Member user ID | | ↳ `email` | string | Member email | | ↳ `username` | string | Member username | | ↳ `name` | string | Member full name | | ↳ `avatar` | string | Avatar file ID | | ↳ `role` | string | Member role | | ↳ `confirmed` | boolean | Whether membership is confirmed | | ↳ `createdAt` | number | Join timestamp in milliseconds | | ↳ `accessRequestedAt` | number | When access was requested in milliseconds | | ↳ `isEnterpriseManaged` | boolean | Whether the member is enterprise managed | | ↳ `joinedFrom` | object | Origin of how the member joined | | ↳ `origin` | string | Join origin identifier | | `count` | number | Number of members returned | | `pagination` | object | Pagination information | | ↳ `hasNext` | boolean | Whether there are more pages | | ↳ `count` | number | Items in current page | | ↳ `next` | number | Timestamp to request the next page | | ↳ `prev` | number | Timestamp to request the previous page | ### Vercel Get User [#vercel-get-user] Get information about the authenticated Vercel user #### Input [#input-55] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------- | | `apiKey` | string | Yes | Vercel Access Token | #### Output [#output-55] | Parameter | Type | Description | | ------------------- | ------- | ------------------------------------------ | | `id` | string | User ID | | `email` | string | User email | | `username` | string | Username | | `name` | string | Display name | | `avatar` | string | SHA1 hash of the avatar | | `defaultTeamId` | string | Default team ID | | `createdAt` | number | Account creation timestamp in milliseconds | | `stagingPrefix` | string | Prefix for preview deployment URLs | | `softBlock` | object | Account restriction details if blocked | | ↳ `blockedAt` | number | When the account was blocked | | ↳ `reason` | string | Reason for the block | | `hasTrialAvailable` | boolean | Whether a trial is available | ## Triggers [#triggers] A **Trigger** is a block that starts a workflow when an event happens in this service. ### Vercel Deployment Canceled [#vercel-deployment-canceled] Trigger workflow when a deployment is canceled #### Configuration [#configuration] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | ----------------------------------------- | | `apiKey` | string | Yes | Required to create the webhook in Vercel. | | `teamId` | string | No | Scope webhook to a specific team | | `filterProjectIds` | string | No | Limit webhook to specific projects | #### Output [#output-56] | Parameter | Type | Description | | -------------- | ------- | ----------------------------------------------------------------------- | | `type` | string | Event type (e.g., deployment.created) | | `id` | string | Unique webhook delivery ID (string) | | `createdAt` | number | Event timestamp in milliseconds | | `region` | string | Region where the event occurred | | `payload` | json | Raw event payload from Vercel | | `links` | object | links output from the tool | | ↳ `deployment` | string | Vercel Dashboard URL for the deployment | | ↳ `project` | string | Vercel Dashboard URL for the project | | `regions` | json | Regions associated with the deployment (array), when provided by Vercel | | `deployment` | object | deployment output from the tool | | ↳ `id` | string | Deployment ID | | ↳ `url` | string | Deployment URL | | ↳ `name` | string | Deployment name | | ↳ `meta` | json | Deployment metadata map (e.g. Git metadata), per Vercel Webhooks API | | `project` | object | project output from the tool | | ↳ `id` | string | Project ID | | ↳ `name` | string | Project name | | `team` | object | team output from the tool | | ↳ `id` | string | Team ID | | `user` | object | user output from the tool | | ↳ `id` | string | User ID | | `target` | string | Deployment target (production, staging, or preview) | | `plan` | string | Account plan type | | `domain` | object | domain output from the tool | | ↳ `name` | string | Domain name | | ↳ `delegated` | boolean | Whether the domain was delegated/shared when present on the payload | *** ### Vercel Deployment Created [#vercel-deployment-created] Trigger workflow when a new deployment is created #### Configuration [#configuration-1] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | ----------------------------------------- | | `apiKey` | string | Yes | Required to create the webhook in Vercel. | | `teamId` | string | No | Scope webhook to a specific team | | `filterProjectIds` | string | No | Limit webhook to specific projects | #### Output [#output-57] | Parameter | Type | Description | | -------------- | ------- | ----------------------------------------------------------------------- | | `type` | string | Event type (e.g., deployment.created) | | `id` | string | Unique webhook delivery ID (string) | | `createdAt` | number | Event timestamp in milliseconds | | `region` | string | Region where the event occurred | | `payload` | json | Raw event payload from Vercel | | `links` | object | links output from the tool | | ↳ `deployment` | string | Vercel Dashboard URL for the deployment | | ↳ `project` | string | Vercel Dashboard URL for the project | | `regions` | json | Regions associated with the deployment (array), when provided by Vercel | | `deployment` | object | deployment output from the tool | | ↳ `id` | string | Deployment ID | | ↳ `url` | string | Deployment URL | | ↳ `name` | string | Deployment name | | ↳ `meta` | json | Deployment metadata map (e.g. Git metadata), per Vercel Webhooks API | | `project` | object | project output from the tool | | ↳ `id` | string | Project ID | | ↳ `name` | string | Project name | | `team` | object | team output from the tool | | ↳ `id` | string | Team ID | | `user` | object | user output from the tool | | ↳ `id` | string | User ID | | `target` | string | Deployment target (production, staging, or preview) | | `plan` | string | Account plan type | | `domain` | object | domain output from the tool | | ↳ `name` | string | Domain name | | ↳ `delegated` | boolean | Whether the domain was delegated/shared when present on the payload | *** ### Vercel Deployment Error [#vercel-deployment-error] Trigger workflow when a deployment fails #### Configuration [#configuration-2] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | ----------------------------------------- | | `apiKey` | string | Yes | Required to create the webhook in Vercel. | | `teamId` | string | No | Scope webhook to a specific team | | `filterProjectIds` | string | No | Limit webhook to specific projects | #### Output [#output-58] | Parameter | Type | Description | | -------------- | ------- | ----------------------------------------------------------------------- | | `type` | string | Event type (e.g., deployment.created) | | `id` | string | Unique webhook delivery ID (string) | | `createdAt` | number | Event timestamp in milliseconds | | `region` | string | Region where the event occurred | | `payload` | json | Raw event payload from Vercel | | `links` | object | links output from the tool | | ↳ `deployment` | string | Vercel Dashboard URL for the deployment | | ↳ `project` | string | Vercel Dashboard URL for the project | | `regions` | json | Regions associated with the deployment (array), when provided by Vercel | | `deployment` | object | deployment output from the tool | | ↳ `id` | string | Deployment ID | | ↳ `url` | string | Deployment URL | | ↳ `name` | string | Deployment name | | ↳ `meta` | json | Deployment metadata map (e.g. Git metadata), per Vercel Webhooks API | | `project` | object | project output from the tool | | ↳ `id` | string | Project ID | | ↳ `name` | string | Project name | | `team` | object | team output from the tool | | ↳ `id` | string | Team ID | | `user` | object | user output from the tool | | ↳ `id` | string | User ID | | `target` | string | Deployment target (production, staging, or preview) | | `plan` | string | Account plan type | | `domain` | object | domain output from the tool | | ↳ `name` | string | Domain name | | ↳ `delegated` | boolean | Whether the domain was delegated/shared when present on the payload | *** ### Vercel Deployment Ready [#vercel-deployment-ready] Trigger workflow when a deployment is ready to serve traffic #### Configuration [#configuration-3] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | ----------------------------------------- | | `apiKey` | string | Yes | Required to create the webhook in Vercel. | | `teamId` | string | No | Scope webhook to a specific team | | `filterProjectIds` | string | No | Limit webhook to specific projects | #### Output [#output-59] | Parameter | Type | Description | | -------------- | ------- | ----------------------------------------------------------------------- | | `type` | string | Event type (e.g., deployment.created) | | `id` | string | Unique webhook delivery ID (string) | | `createdAt` | number | Event timestamp in milliseconds | | `region` | string | Region where the event occurred | | `payload` | json | Raw event payload from Vercel | | `links` | object | links output from the tool | | ↳ `deployment` | string | Vercel Dashboard URL for the deployment | | ↳ `project` | string | Vercel Dashboard URL for the project | | `regions` | json | Regions associated with the deployment (array), when provided by Vercel | | `deployment` | object | deployment output from the tool | | ↳ `id` | string | Deployment ID | | ↳ `url` | string | Deployment URL | | ↳ `name` | string | Deployment name | | ↳ `meta` | json | Deployment metadata map (e.g. Git metadata), per Vercel Webhooks API | | `project` | object | project output from the tool | | ↳ `id` | string | Project ID | | ↳ `name` | string | Project name | | `team` | object | team output from the tool | | ↳ `id` | string | Team ID | | `user` | object | user output from the tool | | ↳ `id` | string | User ID | | `target` | string | Deployment target (production, staging, or preview) | | `plan` | string | Account plan type | | `domain` | object | domain output from the tool | | ↳ `name` | string | Domain name | | ↳ `delegated` | boolean | Whether the domain was delegated/shared when present on the payload | *** ### Vercel Domain Created [#vercel-domain-created] Trigger workflow when a domain is created #### Configuration [#configuration-4] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | ----------------------------------------- | | `apiKey` | string | Yes | Required to create the webhook in Vercel. | | `teamId` | string | No | Scope webhook to a specific team | | `filterProjectIds` | string | No | Limit webhook to specific projects | #### Output [#output-60] | Parameter | Type | Description | | -------------- | ------- | --------------------------------------------------------------------------------- | | `type` | string | Event type (e.g., deployment.created) | | `id` | string | Unique webhook delivery ID (string) | | `createdAt` | number | Event timestamp in milliseconds | | `region` | string | Region where the event occurred | | `payload` | json | Raw event payload from Vercel | | `links` | object | links output from the tool | | ↳ `deployment` | string | Vercel Dashboard URL for the deployment | | ↳ `project` | string | Vercel Dashboard URL for the project | | `regions` | json | Regions associated with the deployment (array), when provided by Vercel | | `deployment` | object | deployment output from the tool | | ↳ `id` | string | Deployment ID | | ↳ `url` | string | Deployment URL | | ↳ `name` | string | Deployment name | | ↳ `meta` | json | Deployment metadata map (e.g. Git metadata), per Vercel Webhooks API | | `target` | string | Deployment target (production, staging, or preview) | | `plan` | string | Account plan type | | `domain` | object | domain output from the tool | | ↳ `name` | string | Domain name | | ↳ `delegated` | boolean | Whether the domain was delegated/shared (domain.created), per Vercel Webhooks API | | `project` | object | project output from the tool | | ↳ `id` | string | Project ID | | `team` | object | team output from the tool | | ↳ `id` | string | Team ID | | `user` | object | user output from the tool | | ↳ `id` | string | User ID | *** ### Vercel Project Created [#vercel-project-created] Trigger workflow when a new project is created #### Configuration [#configuration-5] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | ----------------------------------------- | | `apiKey` | string | Yes | Required to create the webhook in Vercel. | | `teamId` | string | No | Scope webhook to a specific team | | `filterProjectIds` | string | No | Limit webhook to specific projects | #### Output [#output-61] | Parameter | Type | Description | | -------------- | ------- | ----------------------------------------------------------------------- | | `type` | string | Event type (e.g., deployment.created) | | `id` | string | Unique webhook delivery ID (string) | | `createdAt` | number | Event timestamp in milliseconds | | `region` | string | Region where the event occurred | | `payload` | json | Raw event payload from Vercel | | `links` | object | links output from the tool | | ↳ `deployment` | string | Vercel Dashboard URL for the deployment | | ↳ `project` | string | Vercel Dashboard URL for the project | | `regions` | json | Regions associated with the deployment (array), when provided by Vercel | | `deployment` | object | deployment output from the tool | | ↳ `id` | string | Deployment ID | | ↳ `url` | string | Deployment URL | | ↳ `name` | string | Deployment name | | ↳ `meta` | json | Deployment metadata map (e.g. Git metadata), per Vercel Webhooks API | | `project` | object | project output from the tool | | ↳ `id` | string | Project ID | | ↳ `name` | string | Project name | | `team` | object | team output from the tool | | ↳ `id` | string | Team ID | | `user` | object | user output from the tool | | ↳ `id` | string | User ID | | `target` | string | Deployment target (production, staging, or preview) | | `plan` | string | Account plan type | | `domain` | object | domain output from the tool | | ↳ `name` | string | Domain name | | ↳ `delegated` | boolean | Whether the domain was delegated/shared when present on the payload | *** ### Vercel Project Removed [#vercel-project-removed] Trigger workflow when a project is removed #### Configuration [#configuration-6] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | ----------------------------------------- | | `apiKey` | string | Yes | Required to create the webhook in Vercel. | | `teamId` | string | No | Scope webhook to a specific team | | `filterProjectIds` | string | No | Limit webhook to specific projects | #### Output [#output-62] | Parameter | Type | Description | | -------------- | ------- | ----------------------------------------------------------------------- | | `type` | string | Event type (e.g., deployment.created) | | `id` | string | Unique webhook delivery ID (string) | | `createdAt` | number | Event timestamp in milliseconds | | `region` | string | Region where the event occurred | | `payload` | json | Raw event payload from Vercel | | `links` | object | links output from the tool | | ↳ `deployment` | string | Vercel Dashboard URL for the deployment | | ↳ `project` | string | Vercel Dashboard URL for the project | | `regions` | json | Regions associated with the deployment (array), when provided by Vercel | | `deployment` | object | deployment output from the tool | | ↳ `id` | string | Deployment ID | | ↳ `url` | string | Deployment URL | | ↳ `name` | string | Deployment name | | ↳ `meta` | json | Deployment metadata map (e.g. Git metadata), per Vercel Webhooks API | | `project` | object | project output from the tool | | ↳ `id` | string | Project ID | | ↳ `name` | string | Project name | | `team` | object | team output from the tool | | ↳ `id` | string | Team ID | | `user` | object | user output from the tool | | ↳ `id` | string | User ID | | `target` | string | Deployment target (production, staging, or preview) | | `plan` | string | Account plan type | | `domain` | object | domain output from the tool | | ↳ `name` | string | Domain name | | ↳ `delegated` | boolean | Whether the domain was delegated/shared when present on the payload | *** ### Vercel Webhook (Common Events) [#vercel-webhook-common-events] Trigger on a curated set of common Vercel events (deployments, projects, domains, edge config). Pick a specific trigger to listen to one event type only. #### Configuration [#configuration-7] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | ----------------------------------------- | | `apiKey` | string | Yes | Required to create the webhook in Vercel. | | `teamId` | string | No | Scope webhook to a specific team | | `filterProjectIds` | string | No | Limit webhook to specific projects | #### Output [#output-63] | Parameter | Type | Description | | -------------- | ------- | ----------------------------------------------------------------------- | | `type` | string | Event type (e.g., deployment.created) | | `id` | string | Unique webhook delivery ID (string) | | `createdAt` | number | Event timestamp in milliseconds | | `region` | string | Region where the event occurred | | `payload` | json | Full event payload | | `links` | object | links output from the tool | | ↳ `deployment` | string | Vercel Dashboard URL for the deployment | | ↳ `project` | string | Vercel Dashboard URL for the project | | `regions` | json | Regions associated with the deployment (array), when provided by Vercel | | `deployment` | object | deployment output from the tool | | ↳ `id` | string | Deployment ID | | ↳ `url` | string | Deployment URL | | ↳ `name` | string | Deployment name | | ↳ `meta` | json | Deployment metadata map (e.g. Git metadata), per Vercel Webhooks API | | `project` | object | project output from the tool | | ↳ `id` | string | Project ID | | ↳ `name` | string | Project name | | `team` | object | team output from the tool | | ↳ `id` | string | Team ID | | `user` | object | user output from the tool | | ↳ `id` | string | User ID | | `target` | string | Deployment target (production, staging, or preview) | | `plan` | string | Account plan type | | `domain` | object | domain output from the tool | | ↳ `name` | string | Domain name | | ↳ `delegated` | boolean | Whether the domain was delegated/shared when present on the payload | --- # Similarweb (/en/integrations/similarweb) {/* MANUAL-CONTENT-START:intro */} [Similarweb](https://www.similarweb.com/) is a leading platform for web analytics that provides in-depth traffic and engagement data for millions of websites. Similarweb gives you insights into website visits, traffic sources, audience behavior, and competitive benchmarks. With Similarweb in Studio, your agents can: * **Analyze website traffic**: Retrieve key metrics such as monthly visits, average duration, bounce rates, and top countries. * **Understand audience engagement**: Gain insights into how users interact with websites, including pages per visit and engagement duration. * **Track rankings and performance**: Access global, country, and category ranks to benchmark sites against competitors. * **Discover traffic sources**: Break down traffic by channels like direct, search, social, referrals, and more. Use Studio's Similarweb integration to automate the monitoring of competitors, track your site’s performance, or surface actionable market research—all integrated directly into your workflows and automations. Empower your agents to access and utilize reliable web analytics data easily and programmatically. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Access comprehensive website analytics including traffic estimates, engagement metrics, rankings, and traffic sources using the Similarweb API. ## Actions [#actions] ### SimilarWeb Website Overview [#similarweb-website-overview] Get comprehensive website analytics including traffic, rankings, engagement, and traffic sources #### Input [#input] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------------------------------------------------------------------- | | `apiKey` | string | Yes | SimilarWeb API key | | `domain` | string | Yes | Website domain to analyze (e.g., "example.com" without www or protocol) | #### Output [#output] | Parameter | Type | Description | | ------------------------- | ------ | --------------------------------- | | `siteName` | string | Website name | | `description` | string | Website description | | `globalRank` | number | Global traffic rank | | `countryRank` | number | Country traffic rank | | `categoryRank` | number | Category traffic rank | | `category` | string | Website category | | `monthlyVisits` | number | Estimated monthly visits | | `engagementVisitDuration` | number | Average visit duration in seconds | | `engagementPagesPerVisit` | number | Average pages per visit | | `engagementBounceRate` | number | Bounce rate (0-1) | | `topCountries` | array | Top countries by traffic share | | ↳ `country` | string | Country code | | ↳ `share` | number | Traffic share (0-1) | | `trafficSources` | json | Traffic source breakdown | | ↳ `direct` | number | Direct traffic share | | ↳ `referrals` | number | Referral traffic share | | ↳ `search` | number | Search traffic share | | ↳ `social` | number | Social traffic share | | ↳ `mail` | number | Email traffic share | | ↳ `paidReferrals` | number | Paid referral traffic share | ### SimilarWeb Traffic Visits [#similarweb-traffic-visits] Get total website visits over time (desktop and mobile combined) #### Input [#input-1] | Parameter | Type | Required | Description | | ---------------- | ------- | -------- | -------------------------------------------------------------------------------- | | `apiKey` | string | Yes | SimilarWeb API key | | `domain` | string | Yes | Website domain to analyze (e.g., "example.com" without www or protocol) | | `country` | string | Yes | 2-letter ISO country code (e.g., "us", "gb", "de") or "world" for worldwide data | | `granularity` | string | Yes | Data granularity: daily, weekly, or monthly | | `startDate` | string | No | Start date in YYYY-MM format (e.g., "2024-01") | | `endDate` | string | No | End date in YYYY-MM format (e.g., "2024-12") | | `mainDomainOnly` | boolean | No | Exclude subdomains from results | #### Output [#output-1] | Parameter | Type | Description | | ------------- | ------ | --------------------------- | | `domain` | string | Analyzed domain | | `country` | string | Country filter applied | | `granularity` | string | Data granularity | | `lastUpdated` | string | Data last updated timestamp | | `visits` | array | Visit data over time | | ↳ `date` | string | Date (YYYY-MM-DD) | | ↳ `visits` | number | Number of visits | ### SimilarWeb Bounce Rate [#similarweb-bounce-rate] Get website bounce rate over time (desktop and mobile combined) #### Input [#input-2] | Parameter | Type | Required | Description | | ---------------- | ------- | -------- | -------------------------------------------------------------------------------- | | `apiKey` | string | Yes | SimilarWeb API key | | `domain` | string | Yes | Website domain to analyze (e.g., "example.com" without www or protocol) | | `country` | string | Yes | 2-letter ISO country code (e.g., "us", "gb", "de") or "world" for worldwide data | | `granularity` | string | Yes | Data granularity: daily, weekly, or monthly | | `startDate` | string | No | Start date in YYYY-MM format (e.g., "2024-01") | | `endDate` | string | No | End date in YYYY-MM format (e.g., "2024-12") | | `mainDomainOnly` | boolean | No | Exclude subdomains from results | #### Output [#output-2] | Parameter | Type | Description | | -------------- | ------ | --------------------------- | | `domain` | string | Analyzed domain | | `country` | string | Country filter applied | | `granularity` | string | Data granularity | | `lastUpdated` | string | Data last updated timestamp | | `bounceRate` | array | Bounce rate data over time | | ↳ `date` | string | Date (YYYY-MM-DD) | | ↳ `bounceRate` | number | Bounce rate (0-1) | ### SimilarWeb Pages Per Visit [#similarweb-pages-per-visit] Get average pages per visit over time (desktop and mobile combined) #### Input [#input-3] | Parameter | Type | Required | Description | | ---------------- | ------- | -------- | -------------------------------------------------------------------------------- | | `apiKey` | string | Yes | SimilarWeb API key | | `domain` | string | Yes | Website domain to analyze (e.g., "example.com" without www or protocol) | | `country` | string | Yes | 2-letter ISO country code (e.g., "us", "gb", "de") or "world" for worldwide data | | `granularity` | string | Yes | Data granularity: daily, weekly, or monthly | | `startDate` | string | No | Start date in YYYY-MM format (e.g., "2024-01") | | `endDate` | string | No | End date in YYYY-MM format (e.g., "2024-12") | | `mainDomainOnly` | boolean | No | Exclude subdomains from results | #### Output [#output-3] | Parameter | Type | Description | | ----------------- | ------ | ------------------------------ | | `domain` | string | Analyzed domain | | `country` | string | Country filter applied | | `granularity` | string | Data granularity | | `lastUpdated` | string | Data last updated timestamp | | `pagesPerVisit` | array | Pages per visit data over time | | ↳ `date` | string | Date (YYYY-MM-DD) | | ↳ `pagesPerVisit` | number | Average pages per visit | ### SimilarWeb Visit Duration [#similarweb-visit-duration] Get average desktop visit duration over time (in seconds) #### Input [#input-4] | Parameter | Type | Required | Description | | ---------------- | ------- | -------- | -------------------------------------------------------------------------------- | | `apiKey` | string | Yes | SimilarWeb API key | | `domain` | string | Yes | Website domain to analyze (e.g., "example.com" without www or protocol) | | `country` | string | Yes | 2-letter ISO country code (e.g., "us", "gb", "de") or "world" for worldwide data | | `granularity` | string | Yes | Data granularity: daily, weekly, or monthly | | `startDate` | string | No | Start date in YYYY-MM format (e.g., "2024-01") | | `endDate` | string | No | End date in YYYY-MM format (e.g., "2024-12") | | `mainDomainOnly` | boolean | No | Exclude subdomains from results | #### Output [#output-4] | Parameter | Type | Description | | ---------------------- | ------ | ------------------------------------- | | `domain` | string | Analyzed domain | | `country` | string | Country filter applied | | `granularity` | string | Data granularity | | `lastUpdated` | string | Data last updated timestamp | | `averageVisitDuration` | array | Desktop visit duration data over time | | ↳ `date` | string | Date (YYYY-MM-DD) | | ↳ `durationSeconds` | number | Average visit duration in seconds | ### SimilarWeb Page Views [#similarweb-page-views] Get total page views over time (desktop and mobile combined) #### Input [#input-5] | Parameter | Type | Required | Description | | ---------------- | ------- | -------- | -------------------------------------------------------------------------------- | | `apiKey` | string | Yes | SimilarWeb API key | | `domain` | string | Yes | Website domain to analyze (e.g., "example.com" without www or protocol) | | `country` | string | Yes | 2-letter ISO country code (e.g., "us", "gb", "de") or "world" for worldwide data | | `granularity` | string | Yes | Data granularity: daily, weekly, or monthly | | `startDate` | string | No | Start date in YYYY-MM format (e.g., "2024-01") | | `endDate` | string | No | End date in YYYY-MM format (e.g., "2024-12") | | `mainDomainOnly` | boolean | No | Exclude subdomains from results | #### Output [#output-5] | Parameter | Type | Description | | ------------- | ------ | --------------------------- | | `domain` | string | Analyzed domain | | `country` | string | Country filter applied | | `granularity` | string | Data granularity | | `lastUpdated` | string | Data last updated timestamp | | `pageViews` | array | Page view data over time | | ↳ `date` | string | Date (YYYY-MM-DD) | | ↳ `pageViews` | number | Total page views | --- # Stripe (/en/integrations/stripe) {/* MANUAL-CONTENT-START:intro */} Use [Stripe](https://stripe.com/) in Studio to manage payment intents, customers, subscriptions, invoices, charges, products, and prices. Stripe event triggers can start workflows when payment or other supported events occur. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrates Stripe into the workflow. Manage payment intents, customers, subscriptions, invoices, charges, products, prices, and events. Can be used in trigger mode to trigger a workflow when a Stripe event occurs. ## Actions [#actions] ### Stripe Create Payment Intent [#stripe-create-payment-intent] Create a new Payment Intent to process a payment #### Input [#input] | Parameter | Type | Required | Description | | --------------------------- | ------ | -------- | ----------------------------------------------------------- | | `apiKey` | string | Yes | Stripe API key (secret key) | | `amount` | number | Yes | Amount in cents (e.g., 2000 for $20.00) | | `currency` | string | Yes | Three-letter ISO currency code (e.g., usd, eur) | | `customer` | string | No | Customer ID to associate with this payment | | `payment_method` | string | No | Payment method ID | | `description` | string | No | Description of the payment | | `receipt_email` | string | No | Email address to send receipt to | | `metadata` | json | No | Set of key-value pairs for storing additional information | | `automatic_payment_methods` | json | No | Enable automatic payment methods (e.g., \{"enabled": true}) | #### Output [#output] | Parameter | Type | Description | | ------------------------------- | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | | `payment_intent` | object | The created Payment Intent object | | ↳ `id` | string | Unique identifier for the Payment Intent | | ↳ `object` | string | String representing the object type (payment\_intent) | | ↳ `amount` | number | Amount intended to be collected in smallest currency unit | | ↳ `amount_capturable` | number | Amount that can be captured | | ↳ `amount_received` | number | Amount that was collected | | ↳ `application` | string | ID of the Connect application that created the PaymentIntent | | ↳ `application_fee_amount` | number | Application fee amount (if any) | | ↳ `automatic_payment_methods` | json | Settings for automatic payment methods | | ↳ `canceled_at` | number | Unix timestamp of cancellation | | ↳ `cancellation_reason` | string | Reason for cancellation | | ↳ `capture_method` | string | Controls when funds will be captured (automatic or manual) | | ↳ `client_secret` | string | Client secret for confirming the PaymentIntent | | ↳ `confirmation_method` | string | How the PaymentIntent can be confirmed (automatic or manual) | | ↳ `created` | number | Unix timestamp when the PaymentIntent was created | | ↳ `currency` | string | Three-letter ISO currency code (lowercase) | | ↳ `customer` | string | ID of the Customer this PaymentIntent belongs to | | ↳ `description` | string | Description of the payment | | ↳ `invoice` | string | ID of the invoice that created this PaymentIntent | | ↳ `last_payment_error` | json | The payment error encountered in the previous PaymentIntent confirmation | | ↳ `latest_charge` | string | ID of the latest charge created by this PaymentIntent | | ↳ `livemode` | boolean | Whether object exists in live mode or test mode | | ↳ `metadata` | json | Set of key-value pairs for storing additional information | | ↳ `next_action` | json | Actions required before the PaymentIntent can be confirmed | | ↳ `on_behalf_of` | string | The account on behalf of which to charge | | ↳ `payment_method` | string | ID of the payment method used | | ↳ `payment_method_options` | json | Payment-method-specific configuration | | ↳ `payment_method_types` | array | Payment method types that can be used | | ↳ `processing` | json | Processing status if payment is being processed asynchronously | | ↳ `receipt_email` | string | Email address to send the receipt to | | ↳ `review` | string | ID of the review associated with this PaymentIntent | | ↳ `setup_future_usage` | string | Indicates intent to make future payments | | ↳ `shipping` | object | Shipping information | | ↳ `name` | string | Recipient name | | ↳ `phone` | string | Recipient phone number | | ↳ `address` | object | Address object | | ↳ `line1` | string | Address line 1 (street address) | | ↳ `line2` | string | Address line 2 (apartment, suite, etc.) | | ↳ `city` | string | City name | | ↳ `state` | string | State, county, province, or region | | ↳ `postal_code` | string | ZIP or postal code | | ↳ `country` | string | Two-letter country code (ISO 3166-1 alpha-2) | | ↳ `statement_descriptor` | string | Statement descriptor for charges | | ↳ `statement_descriptor_suffix` | string | Statement descriptor suffix | | ↳ `status` | string | Status of the PaymentIntent (requires\_payment\_method, requires\_confirmation, requires\_action, processing, requires\_capture, canceled, succeeded) | | ↳ `transfer_data` | json | The data for creating a transfer after the payment succeeds | | ↳ `transfer_group` | string | Transfer group for transfers associated with the payment | | `metadata` | json | Payment Intent metadata including ID, status, amount, and currency | | ↳ `id` | string | Stripe unique identifier | | ↳ `status` | string | Current state of the resource | | ↳ `amount` | number | Amount in smallest currency unit (e.g., cents) | | ↳ `currency` | string | Three-letter ISO currency code (lowercase) | ### Stripe Retrieve Payment Intent [#stripe-retrieve-payment-intent] Retrieve an existing Payment Intent by ID #### Input [#input-1] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------------------- | | `apiKey` | string | Yes | Stripe API key (secret key) | | `id` | string | Yes | Payment Intent ID (e.g., pi\_1234567890) | #### Output [#output-1] | Parameter | Type | Description | | ------------------------------- | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | | `payment_intent` | object | The retrieved Payment Intent object | | ↳ `id` | string | Unique identifier for the Payment Intent | | ↳ `object` | string | String representing the object type (payment\_intent) | | ↳ `amount` | number | Amount intended to be collected in smallest currency unit | | ↳ `amount_capturable` | number | Amount that can be captured | | ↳ `amount_received` | number | Amount that was collected | | ↳ `application` | string | ID of the Connect application that created the PaymentIntent | | ↳ `application_fee_amount` | number | Application fee amount (if any) | | ↳ `automatic_payment_methods` | json | Settings for automatic payment methods | | ↳ `canceled_at` | number | Unix timestamp of cancellation | | ↳ `cancellation_reason` | string | Reason for cancellation | | ↳ `capture_method` | string | Controls when funds will be captured (automatic or manual) | | ↳ `client_secret` | string | Client secret for confirming the PaymentIntent | | ↳ `confirmation_method` | string | How the PaymentIntent can be confirmed (automatic or manual) | | ↳ `created` | number | Unix timestamp when the PaymentIntent was created | | ↳ `currency` | string | Three-letter ISO currency code (lowercase) | | ↳ `customer` | string | ID of the Customer this PaymentIntent belongs to | | ↳ `description` | string | Description of the payment | | ↳ `invoice` | string | ID of the invoice that created this PaymentIntent | | ↳ `last_payment_error` | json | The payment error encountered in the previous PaymentIntent confirmation | | ↳ `latest_charge` | string | ID of the latest charge created by this PaymentIntent | | ↳ `livemode` | boolean | Whether object exists in live mode or test mode | | ↳ `metadata` | json | Set of key-value pairs for storing additional information | | ↳ `next_action` | json | Actions required before the PaymentIntent can be confirmed | | ↳ `on_behalf_of` | string | The account on behalf of which to charge | | ↳ `payment_method` | string | ID of the payment method used | | ↳ `payment_method_options` | json | Payment-method-specific configuration | | ↳ `payment_method_types` | array | Payment method types that can be used | | ↳ `processing` | json | Processing status if payment is being processed asynchronously | | ↳ `receipt_email` | string | Email address to send the receipt to | | ↳ `review` | string | ID of the review associated with this PaymentIntent | | ↳ `setup_future_usage` | string | Indicates intent to make future payments | | ↳ `shipping` | object | Shipping information | | ↳ `name` | string | Recipient name | | ↳ `phone` | string | Recipient phone number | | ↳ `address` | object | Address object | | ↳ `line1` | string | Address line 1 (street address) | | ↳ `line2` | string | Address line 2 (apartment, suite, etc.) | | ↳ `city` | string | City name | | ↳ `state` | string | State, county, province, or region | | ↳ `postal_code` | string | ZIP or postal code | | ↳ `country` | string | Two-letter country code (ISO 3166-1 alpha-2) | | ↳ `statement_descriptor` | string | Statement descriptor for charges | | ↳ `statement_descriptor_suffix` | string | Statement descriptor suffix | | ↳ `status` | string | Status of the PaymentIntent (requires\_payment\_method, requires\_confirmation, requires\_action, processing, requires\_capture, canceled, succeeded) | | ↳ `transfer_data` | json | The data for creating a transfer after the payment succeeds | | ↳ `transfer_group` | string | Transfer group for transfers associated with the payment | | `metadata` | json | Payment Intent metadata including ID, status, amount, and currency | | ↳ `id` | string | Stripe unique identifier | | ↳ `status` | string | Current state of the resource | | ↳ `amount` | number | Amount in smallest currency unit (e.g., cents) | | ↳ `currency` | string | Three-letter ISO currency code (lowercase) | ### Stripe Update Payment Intent [#stripe-update-payment-intent] Update an existing Payment Intent #### Input [#input-2] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ---------------------------------------- | | `apiKey` | string | Yes | Stripe API key (secret key) | | `id` | string | Yes | Payment Intent ID (e.g., pi\_1234567890) | | `amount` | number | No | Updated amount in cents | | `currency` | string | No | Three-letter ISO currency code | | `customer` | string | No | Customer ID | | `description` | string | No | Updated description | | `metadata` | json | No | Updated metadata | #### Output [#output-2] | Parameter | Type | Description | | ------------------------------- | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | | `payment_intent` | object | The updated Payment Intent object | | ↳ `id` | string | Unique identifier for the Payment Intent | | ↳ `object` | string | String representing the object type (payment\_intent) | | ↳ `amount` | number | Amount intended to be collected in smallest currency unit | | ↳ `amount_capturable` | number | Amount that can be captured | | ↳ `amount_received` | number | Amount that was collected | | ↳ `application` | string | ID of the Connect application that created the PaymentIntent | | ↳ `application_fee_amount` | number | Application fee amount (if any) | | ↳ `automatic_payment_methods` | json | Settings for automatic payment methods | | ↳ `canceled_at` | number | Unix timestamp of cancellation | | ↳ `cancellation_reason` | string | Reason for cancellation | | ↳ `capture_method` | string | Controls when funds will be captured (automatic or manual) | | ↳ `client_secret` | string | Client secret for confirming the PaymentIntent | | ↳ `confirmation_method` | string | How the PaymentIntent can be confirmed (automatic or manual) | | ↳ `created` | number | Unix timestamp when the PaymentIntent was created | | ↳ `currency` | string | Three-letter ISO currency code (lowercase) | | ↳ `customer` | string | ID of the Customer this PaymentIntent belongs to | | ↳ `description` | string | Description of the payment | | ↳ `invoice` | string | ID of the invoice that created this PaymentIntent | | ↳ `last_payment_error` | json | The payment error encountered in the previous PaymentIntent confirmation | | ↳ `latest_charge` | string | ID of the latest charge created by this PaymentIntent | | ↳ `livemode` | boolean | Whether object exists in live mode or test mode | | ↳ `metadata` | json | Set of key-value pairs for storing additional information | | ↳ `next_action` | json | Actions required before the PaymentIntent can be confirmed | | ↳ `on_behalf_of` | string | The account on behalf of which to charge | | ↳ `payment_method` | string | ID of the payment method used | | ↳ `payment_method_options` | json | Payment-method-specific configuration | | ↳ `payment_method_types` | array | Payment method types that can be used | | ↳ `processing` | json | Processing status if payment is being processed asynchronously | | ↳ `receipt_email` | string | Email address to send the receipt to | | ↳ `review` | string | ID of the review associated with this PaymentIntent | | ↳ `setup_future_usage` | string | Indicates intent to make future payments | | ↳ `shipping` | object | Shipping information | | ↳ `name` | string | Recipient name | | ↳ `phone` | string | Recipient phone number | | ↳ `address` | object | Address object | | ↳ `line1` | string | Address line 1 (street address) | | ↳ `line2` | string | Address line 2 (apartment, suite, etc.) | | ↳ `city` | string | City name | | ↳ `state` | string | State, county, province, or region | | ↳ `postal_code` | string | ZIP or postal code | | ↳ `country` | string | Two-letter country code (ISO 3166-1 alpha-2) | | ↳ `statement_descriptor` | string | Statement descriptor for charges | | ↳ `statement_descriptor_suffix` | string | Statement descriptor suffix | | ↳ `status` | string | Status of the PaymentIntent (requires\_payment\_method, requires\_confirmation, requires\_action, processing, requires\_capture, canceled, succeeded) | | ↳ `transfer_data` | json | The data for creating a transfer after the payment succeeds | | ↳ `transfer_group` | string | Transfer group for transfers associated with the payment | | `metadata` | json | Payment Intent metadata including ID, status, amount, and currency | | ↳ `id` | string | Stripe unique identifier | | ↳ `status` | string | Current state of the resource | | ↳ `amount` | number | Amount in smallest currency unit (e.g., cents) | | ↳ `currency` | string | Three-letter ISO currency code (lowercase) | ### Stripe Confirm Payment Intent [#stripe-confirm-payment-intent] Confirm a Payment Intent to complete the payment #### Input [#input-3] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ---------------------------------------- | | `apiKey` | string | Yes | Stripe API key (secret key) | | `id` | string | Yes | Payment Intent ID (e.g., pi\_1234567890) | | `payment_method` | string | No | Payment method ID to confirm with | #### Output [#output-3] | Parameter | Type | Description | | ------------------------------- | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | | `payment_intent` | object | The confirmed Payment Intent object | | ↳ `id` | string | Unique identifier for the Payment Intent | | ↳ `object` | string | String representing the object type (payment\_intent) | | ↳ `amount` | number | Amount intended to be collected in smallest currency unit | | ↳ `amount_capturable` | number | Amount that can be captured | | ↳ `amount_received` | number | Amount that was collected | | ↳ `application` | string | ID of the Connect application that created the PaymentIntent | | ↳ `application_fee_amount` | number | Application fee amount (if any) | | ↳ `automatic_payment_methods` | json | Settings for automatic payment methods | | ↳ `canceled_at` | number | Unix timestamp of cancellation | | ↳ `cancellation_reason` | string | Reason for cancellation | | ↳ `capture_method` | string | Controls when funds will be captured (automatic or manual) | | ↳ `client_secret` | string | Client secret for confirming the PaymentIntent | | ↳ `confirmation_method` | string | How the PaymentIntent can be confirmed (automatic or manual) | | ↳ `created` | number | Unix timestamp when the PaymentIntent was created | | ↳ `currency` | string | Three-letter ISO currency code (lowercase) | | ↳ `customer` | string | ID of the Customer this PaymentIntent belongs to | | ↳ `description` | string | Description of the payment | | ↳ `invoice` | string | ID of the invoice that created this PaymentIntent | | ↳ `last_payment_error` | json | The payment error encountered in the previous PaymentIntent confirmation | | ↳ `latest_charge` | string | ID of the latest charge created by this PaymentIntent | | ↳ `livemode` | boolean | Whether object exists in live mode or test mode | | ↳ `metadata` | json | Set of key-value pairs for storing additional information | | ↳ `next_action` | json | Actions required before the PaymentIntent can be confirmed | | ↳ `on_behalf_of` | string | The account on behalf of which to charge | | ↳ `payment_method` | string | ID of the payment method used | | ↳ `payment_method_options` | json | Payment-method-specific configuration | | ↳ `payment_method_types` | array | Payment method types that can be used | | ↳ `processing` | json | Processing status if payment is being processed asynchronously | | ↳ `receipt_email` | string | Email address to send the receipt to | | ↳ `review` | string | ID of the review associated with this PaymentIntent | | ↳ `setup_future_usage` | string | Indicates intent to make future payments | | ↳ `shipping` | object | Shipping information | | ↳ `name` | string | Recipient name | | ↳ `phone` | string | Recipient phone number | | ↳ `address` | object | Address object | | ↳ `line1` | string | Address line 1 (street address) | | ↳ `line2` | string | Address line 2 (apartment, suite, etc.) | | ↳ `city` | string | City name | | ↳ `state` | string | State, county, province, or region | | ↳ `postal_code` | string | ZIP or postal code | | ↳ `country` | string | Two-letter country code (ISO 3166-1 alpha-2) | | ↳ `statement_descriptor` | string | Statement descriptor for charges | | ↳ `statement_descriptor_suffix` | string | Statement descriptor suffix | | ↳ `status` | string | Status of the PaymentIntent (requires\_payment\_method, requires\_confirmation, requires\_action, processing, requires\_capture, canceled, succeeded) | | ↳ `transfer_data` | json | The data for creating a transfer after the payment succeeds | | ↳ `transfer_group` | string | Transfer group for transfers associated with the payment | | `metadata` | json | Payment Intent metadata including ID, status, amount, and currency | | ↳ `id` | string | Stripe unique identifier | | ↳ `status` | string | Current state of the resource | | ↳ `amount` | number | Amount in smallest currency unit (e.g., cents) | | ↳ `currency` | string | Three-letter ISO currency code (lowercase) | ### Stripe Capture Payment Intent [#stripe-capture-payment-intent] Capture an authorized Payment Intent #### Input [#input-4] | Parameter | Type | Required | Description | | ------------------- | ------ | -------- | ---------------------------------------------------- | | `apiKey` | string | Yes | Stripe API key (secret key) | | `id` | string | Yes | Payment Intent ID (e.g., pi\_1234567890) | | `amount_to_capture` | number | No | Amount to capture in cents (defaults to full amount) | #### Output [#output-4] | Parameter | Type | Description | | ------------------------------- | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | | `payment_intent` | object | The captured Payment Intent object | | ↳ `id` | string | Unique identifier for the Payment Intent | | ↳ `object` | string | String representing the object type (payment\_intent) | | ↳ `amount` | number | Amount intended to be collected in smallest currency unit | | ↳ `amount_capturable` | number | Amount that can be captured | | ↳ `amount_received` | number | Amount that was collected | | ↳ `application` | string | ID of the Connect application that created the PaymentIntent | | ↳ `application_fee_amount` | number | Application fee amount (if any) | | ↳ `automatic_payment_methods` | json | Settings for automatic payment methods | | ↳ `canceled_at` | number | Unix timestamp of cancellation | | ↳ `cancellation_reason` | string | Reason for cancellation | | ↳ `capture_method` | string | Controls when funds will be captured (automatic or manual) | | ↳ `client_secret` | string | Client secret for confirming the PaymentIntent | | ↳ `confirmation_method` | string | How the PaymentIntent can be confirmed (automatic or manual) | | ↳ `created` | number | Unix timestamp when the PaymentIntent was created | | ↳ `currency` | string | Three-letter ISO currency code (lowercase) | | ↳ `customer` | string | ID of the Customer this PaymentIntent belongs to | | ↳ `description` | string | Description of the payment | | ↳ `invoice` | string | ID of the invoice that created this PaymentIntent | | ↳ `last_payment_error` | json | The payment error encountered in the previous PaymentIntent confirmation | | ↳ `latest_charge` | string | ID of the latest charge created by this PaymentIntent | | ↳ `livemode` | boolean | Whether object exists in live mode or test mode | | ↳ `metadata` | json | Set of key-value pairs for storing additional information | | ↳ `next_action` | json | Actions required before the PaymentIntent can be confirmed | | ↳ `on_behalf_of` | string | The account on behalf of which to charge | | ↳ `payment_method` | string | ID of the payment method used | | ↳ `payment_method_options` | json | Payment-method-specific configuration | | ↳ `payment_method_types` | array | Payment method types that can be used | | ↳ `processing` | json | Processing status if payment is being processed asynchronously | | ↳ `receipt_email` | string | Email address to send the receipt to | | ↳ `review` | string | ID of the review associated with this PaymentIntent | | ↳ `setup_future_usage` | string | Indicates intent to make future payments | | ↳ `shipping` | object | Shipping information | | ↳ `name` | string | Recipient name | | ↳ `phone` | string | Recipient phone number | | ↳ `address` | object | Address object | | ↳ `line1` | string | Address line 1 (street address) | | ↳ `line2` | string | Address line 2 (apartment, suite, etc.) | | ↳ `city` | string | City name | | ↳ `state` | string | State, county, province, or region | | ↳ `postal_code` | string | ZIP or postal code | | ↳ `country` | string | Two-letter country code (ISO 3166-1 alpha-2) | | ↳ `statement_descriptor` | string | Statement descriptor for charges | | ↳ `statement_descriptor_suffix` | string | Statement descriptor suffix | | ↳ `status` | string | Status of the PaymentIntent (requires\_payment\_method, requires\_confirmation, requires\_action, processing, requires\_capture, canceled, succeeded) | | ↳ `transfer_data` | json | The data for creating a transfer after the payment succeeds | | ↳ `transfer_group` | string | Transfer group for transfers associated with the payment | | `metadata` | json | Payment Intent metadata including ID, status, amount, and currency | | ↳ `id` | string | Stripe unique identifier | | ↳ `status` | string | Current state of the resource | | ↳ `amount` | number | Amount in smallest currency unit (e.g., cents) | | ↳ `currency` | string | Three-letter ISO currency code (lowercase) | ### Stripe Cancel Payment Intent [#stripe-cancel-payment-intent] Cancel a Payment Intent #### Input [#input-5] | Parameter | Type | Required | Description | | --------------------- | ------ | -------- | ----------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Stripe API key (secret key) | | `id` | string | Yes | Payment Intent ID (e.g., pi\_1234567890) | | `cancellation_reason` | string | No | Reason for cancellation (duplicate, fraudulent, requested\_by\_customer, abandoned) | #### Output [#output-5] | Parameter | Type | Description | | ------------------------------- | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | | `payment_intent` | object | The canceled Payment Intent object | | ↳ `id` | string | Unique identifier for the Payment Intent | | ↳ `object` | string | String representing the object type (payment\_intent) | | ↳ `amount` | number | Amount intended to be collected in smallest currency unit | | ↳ `amount_capturable` | number | Amount that can be captured | | ↳ `amount_received` | number | Amount that was collected | | ↳ `application` | string | ID of the Connect application that created the PaymentIntent | | ↳ `application_fee_amount` | number | Application fee amount (if any) | | ↳ `automatic_payment_methods` | json | Settings for automatic payment methods | | ↳ `canceled_at` | number | Unix timestamp of cancellation | | ↳ `cancellation_reason` | string | Reason for cancellation | | ↳ `capture_method` | string | Controls when funds will be captured (automatic or manual) | | ↳ `client_secret` | string | Client secret for confirming the PaymentIntent | | ↳ `confirmation_method` | string | How the PaymentIntent can be confirmed (automatic or manual) | | ↳ `created` | number | Unix timestamp when the PaymentIntent was created | | ↳ `currency` | string | Three-letter ISO currency code (lowercase) | | ↳ `customer` | string | ID of the Customer this PaymentIntent belongs to | | ↳ `description` | string | Description of the payment | | ↳ `invoice` | string | ID of the invoice that created this PaymentIntent | | ↳ `last_payment_error` | json | The payment error encountered in the previous PaymentIntent confirmation | | ↳ `latest_charge` | string | ID of the latest charge created by this PaymentIntent | | ↳ `livemode` | boolean | Whether object exists in live mode or test mode | | ↳ `metadata` | json | Set of key-value pairs for storing additional information | | ↳ `next_action` | json | Actions required before the PaymentIntent can be confirmed | | ↳ `on_behalf_of` | string | The account on behalf of which to charge | | ↳ `payment_method` | string | ID of the payment method used | | ↳ `payment_method_options` | json | Payment-method-specific configuration | | ↳ `payment_method_types` | array | Payment method types that can be used | | ↳ `processing` | json | Processing status if payment is being processed asynchronously | | ↳ `receipt_email` | string | Email address to send the receipt to | | ↳ `review` | string | ID of the review associated with this PaymentIntent | | ↳ `setup_future_usage` | string | Indicates intent to make future payments | | ↳ `shipping` | object | Shipping information | | ↳ `name` | string | Recipient name | | ↳ `phone` | string | Recipient phone number | | ↳ `address` | object | Address object | | ↳ `line1` | string | Address line 1 (street address) | | ↳ `line2` | string | Address line 2 (apartment, suite, etc.) | | ↳ `city` | string | City name | | ↳ `state` | string | State, county, province, or region | | ↳ `postal_code` | string | ZIP or postal code | | ↳ `country` | string | Two-letter country code (ISO 3166-1 alpha-2) | | ↳ `statement_descriptor` | string | Statement descriptor for charges | | ↳ `statement_descriptor_suffix` | string | Statement descriptor suffix | | ↳ `status` | string | Status of the PaymentIntent (requires\_payment\_method, requires\_confirmation, requires\_action, processing, requires\_capture, canceled, succeeded) | | ↳ `transfer_data` | json | The data for creating a transfer after the payment succeeds | | ↳ `transfer_group` | string | Transfer group for transfers associated with the payment | | `metadata` | json | Payment Intent metadata including ID, status, amount, and currency | | ↳ `id` | string | Stripe unique identifier | | ↳ `status` | string | Current state of the resource | | ↳ `amount` | number | Amount in smallest currency unit (e.g., cents) | | ↳ `currency` | string | Three-letter ISO currency code (lowercase) | ### Stripe List Payment Intents [#stripe-list-payment-intents] List all Payment Intents #### Input [#input-6] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | --------------------------------------------------- | | `apiKey` | string | Yes | Stripe API key (secret key) | | `limit` | number | No | Number of results to return (default 10, max 100) | | `customer` | string | No | Filter by customer ID | | `created` | json | No | Filter by creation date (e.g., \{"gt": 1633024800}) | #### Output [#output-6] | Parameter | Type | Description | | ------------------------------- | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | | `payment_intents` | array | Array of Payment Intent objects | | ↳ `id` | string | Unique identifier for the Payment Intent | | ↳ `object` | string | String representing the object type (payment\_intent) | | ↳ `amount` | number | Amount intended to be collected in smallest currency unit | | ↳ `amount_capturable` | number | Amount that can be captured | | ↳ `amount_received` | number | Amount that was collected | | ↳ `application` | string | ID of the Connect application that created the PaymentIntent | | ↳ `application_fee_amount` | number | Application fee amount (if any) | | ↳ `automatic_payment_methods` | json | Settings for automatic payment methods | | ↳ `canceled_at` | number | Unix timestamp of cancellation | | ↳ `cancellation_reason` | string | Reason for cancellation | | ↳ `capture_method` | string | Controls when funds will be captured (automatic or manual) | | ↳ `client_secret` | string | Client secret for confirming the PaymentIntent | | ↳ `confirmation_method` | string | How the PaymentIntent can be confirmed (automatic or manual) | | ↳ `created` | number | Unix timestamp when the PaymentIntent was created | | ↳ `currency` | string | Three-letter ISO currency code (lowercase) | | ↳ `customer` | string | ID of the Customer this PaymentIntent belongs to | | ↳ `description` | string | Description of the payment | | ↳ `invoice` | string | ID of the invoice that created this PaymentIntent | | ↳ `last_payment_error` | json | The payment error encountered in the previous PaymentIntent confirmation | | ↳ `latest_charge` | string | ID of the latest charge created by this PaymentIntent | | ↳ `livemode` | boolean | Whether object exists in live mode or test mode | | ↳ `metadata` | json | Set of key-value pairs for storing additional information | | ↳ `next_action` | json | Actions required before the PaymentIntent can be confirmed | | ↳ `on_behalf_of` | string | The account on behalf of which to charge | | ↳ `payment_method` | string | ID of the payment method used | | ↳ `payment_method_options` | json | Payment-method-specific configuration | | ↳ `payment_method_types` | array | Payment method types that can be used | | ↳ `processing` | json | Processing status if payment is being processed asynchronously | | ↳ `receipt_email` | string | Email address to send the receipt to | | ↳ `review` | string | ID of the review associated with this PaymentIntent | | ↳ `setup_future_usage` | string | Indicates intent to make future payments | | ↳ `shipping` | object | Shipping information | | ↳ `name` | string | Recipient name | | ↳ `phone` | string | Recipient phone number | | ↳ `address` | object | Address object | | ↳ `line1` | string | Address line 1 (street address) | | ↳ `line2` | string | Address line 2 (apartment, suite, etc.) | | ↳ `city` | string | City name | | ↳ `state` | string | State, county, province, or region | | ↳ `postal_code` | string | ZIP or postal code | | ↳ `country` | string | Two-letter country code (ISO 3166-1 alpha-2) | | ↳ `statement_descriptor` | string | Statement descriptor for charges | | ↳ `statement_descriptor_suffix` | string | Statement descriptor suffix | | ↳ `status` | string | Status of the PaymentIntent (requires\_payment\_method, requires\_confirmation, requires\_action, processing, requires\_capture, canceled, succeeded) | | ↳ `transfer_data` | json | The data for creating a transfer after the payment succeeds | | ↳ `transfer_group` | string | Transfer group for transfers associated with the payment | | `metadata` | json | List metadata including count and has\_more | | ↳ `count` | number | Number of items returned | | ↳ `has_more` | boolean | Whether more items exist beyond this page | ### Stripe Search Payment Intents [#stripe-search-payment-intents] Search for Payment Intents using query syntax #### Input [#input-7] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------------ | | `apiKey` | string | Yes | Stripe API key (secret key) | | `query` | string | Yes | Search query (e.g., "status:'succeeded' AND currency:'usd'") | | `limit` | number | No | Number of results to return (default 10, max 100) | #### Output [#output-7] | Parameter | Type | Description | | ------------------------------- | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | | `payment_intents` | array | Array of matching Payment Intent objects | | ↳ `id` | string | Unique identifier for the Payment Intent | | ↳ `object` | string | String representing the object type (payment\_intent) | | ↳ `amount` | number | Amount intended to be collected in smallest currency unit | | ↳ `amount_capturable` | number | Amount that can be captured | | ↳ `amount_received` | number | Amount that was collected | | ↳ `application` | string | ID of the Connect application that created the PaymentIntent | | ↳ `application_fee_amount` | number | Application fee amount (if any) | | ↳ `automatic_payment_methods` | json | Settings for automatic payment methods | | ↳ `canceled_at` | number | Unix timestamp of cancellation | | ↳ `cancellation_reason` | string | Reason for cancellation | | ↳ `capture_method` | string | Controls when funds will be captured (automatic or manual) | | ↳ `client_secret` | string | Client secret for confirming the PaymentIntent | | ↳ `confirmation_method` | string | How the PaymentIntent can be confirmed (automatic or manual) | | ↳ `created` | number | Unix timestamp when the PaymentIntent was created | | ↳ `currency` | string | Three-letter ISO currency code (lowercase) | | ↳ `customer` | string | ID of the Customer this PaymentIntent belongs to | | ↳ `description` | string | Description of the payment | | ↳ `invoice` | string | ID of the invoice that created this PaymentIntent | | ↳ `last_payment_error` | json | The payment error encountered in the previous PaymentIntent confirmation | | ↳ `latest_charge` | string | ID of the latest charge created by this PaymentIntent | | ↳ `livemode` | boolean | Whether object exists in live mode or test mode | | ↳ `metadata` | json | Set of key-value pairs for storing additional information | | ↳ `next_action` | json | Actions required before the PaymentIntent can be confirmed | | ↳ `on_behalf_of` | string | The account on behalf of which to charge | | ↳ `payment_method` | string | ID of the payment method used | | ↳ `payment_method_options` | json | Payment-method-specific configuration | | ↳ `payment_method_types` | array | Payment method types that can be used | | ↳ `processing` | json | Processing status if payment is being processed asynchronously | | ↳ `receipt_email` | string | Email address to send the receipt to | | ↳ `review` | string | ID of the review associated with this PaymentIntent | | ↳ `setup_future_usage` | string | Indicates intent to make future payments | | ↳ `shipping` | object | Shipping information | | ↳ `name` | string | Recipient name | | ↳ `phone` | string | Recipient phone number | | ↳ `address` | object | Address object | | ↳ `line1` | string | Address line 1 (street address) | | ↳ `line2` | string | Address line 2 (apartment, suite, etc.) | | ↳ `city` | string | City name | | ↳ `state` | string | State, county, province, or region | | ↳ `postal_code` | string | ZIP or postal code | | ↳ `country` | string | Two-letter country code (ISO 3166-1 alpha-2) | | ↳ `statement_descriptor` | string | Statement descriptor for charges | | ↳ `statement_descriptor_suffix` | string | Statement descriptor suffix | | ↳ `status` | string | Status of the PaymentIntent (requires\_payment\_method, requires\_confirmation, requires\_action, processing, requires\_capture, canceled, succeeded) | | ↳ `transfer_data` | json | The data for creating a transfer after the payment succeeds | | ↳ `transfer_group` | string | Transfer group for transfers associated with the payment | | `metadata` | json | Search metadata including count and has\_more | | ↳ `count` | number | Number of items returned | | ↳ `has_more` | boolean | Whether more items exist beyond this page | ### Stripe Create Customer [#stripe-create-customer] Create a new customer object #### Input [#input-8] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | --------------------------- | | `apiKey` | string | Yes | Stripe API key (secret key) | | `email` | string | No | Customer email address | | `name` | string | No | Customer full name | | `phone` | string | No | Customer phone number | | `description` | string | No | Description of the customer | | `address` | json | No | Customer address object | | `metadata` | json | No | Set of key-value pairs | | `payment_method` | string | No | Payment method ID to attach | #### Output [#output-8] | Parameter | Type | Description | | ------------------------- | ------- | --------------------------------------------------------- | | `customer` | object | The created customer object | | ↳ `id` | string | Unique identifier for the customer | | ↳ `object` | string | String representing the object type (customer) | | ↳ `address` | object | Address object | | ↳ `line1` | string | Address line 1 (street address) | | ↳ `line2` | string | Address line 2 (apartment, suite, etc.) | | ↳ `city` | string | City name | | ↳ `state` | string | State, county, province, or region | | ↳ `postal_code` | string | ZIP or postal code | | ↳ `country` | string | Two-letter country code (ISO 3166-1 alpha-2) | | ↳ `balance` | number | Current balance in smallest currency unit | | ↳ `created` | number | Unix timestamp when the customer was created | | ↳ `currency` | string | Three-letter ISO currency code (lowercase) | | ↳ `default_source` | string | ID of the default payment source | | ↳ `delinquent` | boolean | Whether the customer has unpaid invoices | | ↳ `description` | string | Description of the customer | | ↳ `discount` | json | Discount that applies to all recurring charges | | ↳ `email` | string | Customer email address (max 512 characters) | | ↳ `invoice_prefix` | string | Prefix for generating unique invoice numbers | | ↳ `invoice_settings` | json | Default invoice settings | | ↳ `livemode` | boolean | Whether object exists in live mode or test mode | | ↳ `metadata` | json | Set of key-value pairs for storing additional information | | ↳ `name` | string | Customer full name or business name (max 256 characters) | | ↳ `next_invoice_sequence` | number | Next invoice sequence number | | ↳ `phone` | string | Customer phone number (max 20 characters) | | ↳ `preferred_locales` | array | Customer preferred locales | | ↳ `shipping` | object | Shipping information | | ↳ `name` | string | Recipient name | | ↳ `phone` | string | Recipient phone number | | ↳ `address` | object | Address object | | ↳ `line1` | string | Address line 1 (street address) | | ↳ `line2` | string | Address line 2 (apartment, suite, etc.) | | ↳ `city` | string | City name | | ↳ `state` | string | State, county, province, or region | | ↳ `postal_code` | string | ZIP or postal code | | ↳ `country` | string | Two-letter country code (ISO 3166-1 alpha-2) | | ↳ `tax_exempt` | string | Tax exemption status (none, exempt, reverse) | | ↳ `test_clock` | string | ID of the test clock | | `metadata` | json | Customer metadata | | ↳ `id` | string | Stripe unique identifier | | ↳ `email` | string | Customer email address | | ↳ `name` | string | Display name | ### Stripe Retrieve Customer [#stripe-retrieve-customer] Retrieve an existing customer by ID #### Input [#input-9] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------------------------------- | | `apiKey` | string | Yes | Stripe API key (secret key) | | `id` | string | Yes | Customer ID (e.g., cus\_1234567890) | #### Output [#output-9] | Parameter | Type | Description | | ------------------------- | ------- | --------------------------------------------------------- | | `customer` | object | The retrieved customer object | | ↳ `id` | string | Unique identifier for the customer | | ↳ `object` | string | String representing the object type (customer) | | ↳ `address` | object | Address object | | ↳ `line1` | string | Address line 1 (street address) | | ↳ `line2` | string | Address line 2 (apartment, suite, etc.) | | ↳ `city` | string | City name | | ↳ `state` | string | State, county, province, or region | | ↳ `postal_code` | string | ZIP or postal code | | ↳ `country` | string | Two-letter country code (ISO 3166-1 alpha-2) | | ↳ `balance` | number | Current balance in smallest currency unit | | ↳ `created` | number | Unix timestamp when the customer was created | | ↳ `currency` | string | Three-letter ISO currency code (lowercase) | | ↳ `default_source` | string | ID of the default payment source | | ↳ `delinquent` | boolean | Whether the customer has unpaid invoices | | ↳ `description` | string | Description of the customer | | ↳ `discount` | json | Discount that applies to all recurring charges | | ↳ `email` | string | Customer email address (max 512 characters) | | ↳ `invoice_prefix` | string | Prefix for generating unique invoice numbers | | ↳ `invoice_settings` | json | Default invoice settings | | ↳ `livemode` | boolean | Whether object exists in live mode or test mode | | ↳ `metadata` | json | Set of key-value pairs for storing additional information | | ↳ `name` | string | Customer full name or business name (max 256 characters) | | ↳ `next_invoice_sequence` | number | Next invoice sequence number | | ↳ `phone` | string | Customer phone number (max 20 characters) | | ↳ `preferred_locales` | array | Customer preferred locales | | ↳ `shipping` | object | Shipping information | | ↳ `name` | string | Recipient name | | ↳ `phone` | string | Recipient phone number | | ↳ `address` | object | Address object | | ↳ `line1` | string | Address line 1 (street address) | | ↳ `line2` | string | Address line 2 (apartment, suite, etc.) | | ↳ `city` | string | City name | | ↳ `state` | string | State, county, province, or region | | ↳ `postal_code` | string | ZIP or postal code | | ↳ `country` | string | Two-letter country code (ISO 3166-1 alpha-2) | | ↳ `tax_exempt` | string | Tax exemption status (none, exempt, reverse) | | ↳ `test_clock` | string | ID of the test clock | | `metadata` | json | Customer metadata | | ↳ `id` | string | Stripe unique identifier | | ↳ `email` | string | Customer email address | | ↳ `name` | string | Display name | ### Stripe Update Customer [#stripe-update-customer] Update an existing customer #### Input [#input-10] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ----------------------------------- | | `apiKey` | string | Yes | Stripe API key (secret key) | | `id` | string | Yes | Customer ID (e.g., cus\_1234567890) | | `email` | string | No | Updated email address | | `name` | string | No | Updated name | | `phone` | string | No | Updated phone number | | `description` | string | No | Updated description | | `address` | json | No | Updated address object | | `metadata` | json | No | Updated metadata | #### Output [#output-10] | Parameter | Type | Description | | ------------------------- | ------- | --------------------------------------------------------- | | `customer` | object | The updated customer object | | ↳ `id` | string | Unique identifier for the customer | | ↳ `object` | string | String representing the object type (customer) | | ↳ `address` | object | Address object | | ↳ `line1` | string | Address line 1 (street address) | | ↳ `line2` | string | Address line 2 (apartment, suite, etc.) | | ↳ `city` | string | City name | | ↳ `state` | string | State, county, province, or region | | ↳ `postal_code` | string | ZIP or postal code | | ↳ `country` | string | Two-letter country code (ISO 3166-1 alpha-2) | | ↳ `balance` | number | Current balance in smallest currency unit | | ↳ `created` | number | Unix timestamp when the customer was created | | ↳ `currency` | string | Three-letter ISO currency code (lowercase) | | ↳ `default_source` | string | ID of the default payment source | | ↳ `delinquent` | boolean | Whether the customer has unpaid invoices | | ↳ `description` | string | Description of the customer | | ↳ `discount` | json | Discount that applies to all recurring charges | | ↳ `email` | string | Customer email address (max 512 characters) | | ↳ `invoice_prefix` | string | Prefix for generating unique invoice numbers | | ↳ `invoice_settings` | json | Default invoice settings | | ↳ `livemode` | boolean | Whether object exists in live mode or test mode | | ↳ `metadata` | json | Set of key-value pairs for storing additional information | | ↳ `name` | string | Customer full name or business name (max 256 characters) | | ↳ `next_invoice_sequence` | number | Next invoice sequence number | | ↳ `phone` | string | Customer phone number (max 20 characters) | | ↳ `preferred_locales` | array | Customer preferred locales | | ↳ `shipping` | object | Shipping information | | ↳ `name` | string | Recipient name | | ↳ `phone` | string | Recipient phone number | | ↳ `address` | object | Address object | | ↳ `line1` | string | Address line 1 (street address) | | ↳ `line2` | string | Address line 2 (apartment, suite, etc.) | | ↳ `city` | string | City name | | ↳ `state` | string | State, county, province, or region | | ↳ `postal_code` | string | ZIP or postal code | | ↳ `country` | string | Two-letter country code (ISO 3166-1 alpha-2) | | ↳ `tax_exempt` | string | Tax exemption status (none, exempt, reverse) | | ↳ `test_clock` | string | ID of the test clock | | `metadata` | json | Customer metadata | | ↳ `id` | string | Stripe unique identifier | | ↳ `email` | string | Customer email address | | ↳ `name` | string | Display name | ### Stripe Delete Customer [#stripe-delete-customer] Permanently delete a customer #### Input [#input-11] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------------------------------- | | `apiKey` | string | Yes | Stripe API key (secret key) | | `id` | string | Yes | Customer ID (e.g., cus\_1234567890) | #### Output [#output-11] | Parameter | Type | Description | | --------- | ------- | -------------------------------- | | `deleted` | boolean | Whether the resource was deleted | | `id` | string | ID of the deleted resource | ### Stripe List Customers [#stripe-list-customers] List all customers #### Input [#input-12] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------- | | `apiKey` | string | Yes | Stripe API key (secret key) | | `limit` | number | No | Number of results to return (default 10, max 100) | | `email` | string | No | Filter by email address | | `created` | json | No | Filter by creation date | #### Output [#output-12] | Parameter | Type | Description | | ------------------------- | ------- | --------------------------------------------------------- | | `customers` | array | Array of customer objects | | ↳ `id` | string | Unique identifier for the customer | | ↳ `object` | string | String representing the object type (customer) | | ↳ `address` | object | Address object | | ↳ `line1` | string | Address line 1 (street address) | | ↳ `line2` | string | Address line 2 (apartment, suite, etc.) | | ↳ `city` | string | City name | | ↳ `state` | string | State, county, province, or region | | ↳ `postal_code` | string | ZIP or postal code | | ↳ `country` | string | Two-letter country code (ISO 3166-1 alpha-2) | | ↳ `balance` | number | Current balance in smallest currency unit | | ↳ `created` | number | Unix timestamp when the customer was created | | ↳ `currency` | string | Three-letter ISO currency code (lowercase) | | ↳ `default_source` | string | ID of the default payment source | | ↳ `delinquent` | boolean | Whether the customer has unpaid invoices | | ↳ `description` | string | Description of the customer | | ↳ `discount` | json | Discount that applies to all recurring charges | | ↳ `email` | string | Customer email address (max 512 characters) | | ↳ `invoice_prefix` | string | Prefix for generating unique invoice numbers | | ↳ `invoice_settings` | json | Default invoice settings | | ↳ `livemode` | boolean | Whether object exists in live mode or test mode | | ↳ `metadata` | json | Set of key-value pairs for storing additional information | | ↳ `name` | string | Customer full name or business name (max 256 characters) | | ↳ `next_invoice_sequence` | number | Next invoice sequence number | | ↳ `phone` | string | Customer phone number (max 20 characters) | | ↳ `preferred_locales` | array | Customer preferred locales | | ↳ `shipping` | object | Shipping information | | ↳ `name` | string | Recipient name | | ↳ `phone` | string | Recipient phone number | | ↳ `address` | object | Address object | | ↳ `line1` | string | Address line 1 (street address) | | ↳ `line2` | string | Address line 2 (apartment, suite, etc.) | | ↳ `city` | string | City name | | ↳ `state` | string | State, county, province, or region | | ↳ `postal_code` | string | ZIP or postal code | | ↳ `country` | string | Two-letter country code (ISO 3166-1 alpha-2) | | ↳ `tax_exempt` | string | Tax exemption status (none, exempt, reverse) | | ↳ `test_clock` | string | ID of the test clock | | `metadata` | json | List metadata | | ↳ `count` | number | Number of items returned | | ↳ `has_more` | boolean | Whether more items exist beyond this page | ### Stripe Search Customers [#stripe-search-customers] Search for customers using query syntax #### Input [#input-13] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Stripe API key (secret key) | | `query` | string | Yes | Search query (e.g., "email:'[customer@example.com](mailto:customer@example.com)'") | | `limit` | number | No | Number of results to return (default 10, max 100) | #### Output [#output-13] | Parameter | Type | Description | | ------------------------- | ------- | --------------------------------------------------------- | | `customers` | array | Array of matching customer objects | | ↳ `id` | string | Unique identifier for the customer | | ↳ `object` | string | String representing the object type (customer) | | ↳ `address` | object | Address object | | ↳ `line1` | string | Address line 1 (street address) | | ↳ `line2` | string | Address line 2 (apartment, suite, etc.) | | ↳ `city` | string | City name | | ↳ `state` | string | State, county, province, or region | | ↳ `postal_code` | string | ZIP or postal code | | ↳ `country` | string | Two-letter country code (ISO 3166-1 alpha-2) | | ↳ `balance` | number | Current balance in smallest currency unit | | ↳ `created` | number | Unix timestamp when the customer was created | | ↳ `currency` | string | Three-letter ISO currency code (lowercase) | | ↳ `default_source` | string | ID of the default payment source | | ↳ `delinquent` | boolean | Whether the customer has unpaid invoices | | ↳ `description` | string | Description of the customer | | ↳ `discount` | json | Discount that applies to all recurring charges | | ↳ `email` | string | Customer email address (max 512 characters) | | ↳ `invoice_prefix` | string | Prefix for generating unique invoice numbers | | ↳ `invoice_settings` | json | Default invoice settings | | ↳ `livemode` | boolean | Whether object exists in live mode or test mode | | ↳ `metadata` | json | Set of key-value pairs for storing additional information | | ↳ `name` | string | Customer full name or business name (max 256 characters) | | ↳ `next_invoice_sequence` | number | Next invoice sequence number | | ↳ `phone` | string | Customer phone number (max 20 characters) | | ↳ `preferred_locales` | array | Customer preferred locales | | ↳ `shipping` | object | Shipping information | | ↳ `name` | string | Recipient name | | ↳ `phone` | string | Recipient phone number | | ↳ `address` | object | Address object | | ↳ `line1` | string | Address line 1 (street address) | | ↳ `line2` | string | Address line 2 (apartment, suite, etc.) | | ↳ `city` | string | City name | | ↳ `state` | string | State, county, province, or region | | ↳ `postal_code` | string | ZIP or postal code | | ↳ `country` | string | Two-letter country code (ISO 3166-1 alpha-2) | | ↳ `tax_exempt` | string | Tax exemption status (none, exempt, reverse) | | ↳ `test_clock` | string | ID of the test clock | | `metadata` | json | Search metadata | | ↳ `count` | number | Number of items returned | | ↳ `has_more` | boolean | Whether more items exist beyond this page | ### Stripe Create Subscription [#stripe-create-subscription] Create a new subscription for a customer #### Input [#input-14] | Parameter | Type | Required | Description | | ------------------------ | ------- | -------- | -------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Stripe API key (secret key) | | `customer` | string | Yes | Customer ID to subscribe | | `items` | json | Yes | Array of items with price IDs (e.g., \[\{"price": "price\_xxx", "quantity": 1}]) | | `trial_period_days` | number | No | Number of trial days | | `default_payment_method` | string | No | Payment method ID | | `cancel_at_period_end` | boolean | No | Cancel subscription at period end | | `metadata` | json | No | Set of key-value pairs for storing additional information | #### Output [#output-14] | Parameter | Type | Description | | ------------------------------------- | ------- | ------------------------------------------------------------------------------------------------------------------- | | `subscription` | object | The created subscription object | | ↳ `id` | string | Unique identifier for the subscription | | ↳ `object` | string | String representing the object type (subscription) | | ↳ `application` | string | ID of the Connect application that created the subscription | | ↳ `application_fee_percent` | number | Application fee percent (if any) | | ↳ `automatic_tax` | json | Automatic tax settings | | ↳ `billing_cycle_anchor` | number | Unix timestamp determining when billing cycle starts | | ↳ `billing_thresholds` | json | Billing thresholds for the subscription | | ↳ `cancel_at` | number | Unix timestamp when the subscription will be canceled | | ↳ `cancel_at_period_end` | boolean | Whether the subscription will be canceled at period end | | ↳ `canceled_at` | number | Unix timestamp when the subscription was canceled | | ↳ `cancellation_details` | json | Details about cancellation | | ↳ `collection_method` | string | Collection method (charge\_automatically or send\_invoice) | | ↳ `created` | number | Unix timestamp when the subscription was created | | ↳ `currency` | string | Three-letter ISO currency code (lowercase) | | ↳ `current_period_end` | number | Unix timestamp when the current period ends | | ↳ `current_period_start` | number | Unix timestamp when the current period started | | ↳ `customer` | string | ID of the customer who owns the subscription | | ↳ `days_until_due` | number | Number of days a customer has to pay invoices | | ↳ `default_payment_method` | string | ID of the default payment method | | ↳ `default_source` | string | ID of the default source | | ↳ `default_tax_rates` | array | Default tax rates | | ↳ `description` | string | Subscription description (max 500 characters) | | ↳ `discount` | json | Discount that applies to the subscription | | ↳ `ended_at` | number | Unix timestamp when the subscription ended | | ↳ `items` | object | List of subscription items | | ↳ `object` | string | String representing the object type (list) | | ↳ `data` | array | Array of subscription items | | ↳ `id` | string | Unique identifier for the subscription item | | ↳ `object` | string | String representing the object type (subscription\_item) | | ↳ `billing_thresholds` | json | Billing thresholds for the subscription item | | ↳ `created` | number | Unix timestamp when the item was added | | ↳ `metadata` | json | Set of key-value pairs for storing additional information | | ↳ `price` | json | Price object for this subscription item | | ↳ `quantity` | number | Quantity of the plan to subscribe to | | ↳ `subscription` | string | ID of the subscription this item belongs to | | ↳ `tax_rates` | array | Tax rates applied to this subscription item | | ↳ `has_more` | boolean | Whether there are more items | | ↳ `url` | string | URL to fetch more items | | ↳ `latest_invoice` | string | ID of the most recent invoice | | ↳ `livemode` | boolean | Whether object exists in live mode or test mode | | ↳ `metadata` | json | Set of key-value pairs for storing additional information | | ↳ `next_pending_invoice_item_invoice` | number | Unix timestamp of next pending invoice item invoice | | ↳ `on_behalf_of` | string | Account the subscription is made on behalf of | | ↳ `pause_collection` | json | If paused, when collection is paused until | | ↳ `payment_settings` | json | Payment settings for the subscription | | ↳ `pending_invoice_item_interval` | json | Pending invoice item interval | | ↳ `pending_setup_intent` | string | ID of the pending SetupIntent | | ↳ `pending_update` | json | Pending subscription update | | ↳ `schedule` | string | ID of the subscription schedule | | ↳ `start_date` | number | Unix timestamp when the subscription started | | ↳ `status` | string | Status of the subscription (incomplete, incomplete\_expired, trialing, active, past\_due, canceled, unpaid, paused) | | ↳ `test_clock` | string | ID of the test clock | | ↳ `transfer_data` | json | Data for creating transfers after payments succeed | | ↳ `trial_end` | number | Unix timestamp when the trial ends | | ↳ `trial_settings` | json | Settings related to subscription trials | | ↳ `trial_start` | number | Unix timestamp when the trial started | | `metadata` | json | Subscription metadata including ID, status, and customer | | ↳ `id` | string | Stripe unique identifier | | ↳ `status` | string | Current state of the resource | | ↳ `customer` | string | Associated customer ID | ### Stripe Retrieve Subscription [#stripe-retrieve-subscription] Retrieve an existing subscription by ID #### Input [#input-15] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------------------------------- | | `apiKey` | string | Yes | Stripe API key (secret key) | | `id` | string | Yes | Subscription ID (e.g., sub\_1234567890) | #### Output [#output-15] | Parameter | Type | Description | | ------------------------------------- | ------- | ------------------------------------------------------------------------------------------------------------------- | | `subscription` | object | The retrieved subscription object | | ↳ `id` | string | Unique identifier for the subscription | | ↳ `object` | string | String representing the object type (subscription) | | ↳ `application` | string | ID of the Connect application that created the subscription | | ↳ `application_fee_percent` | number | Application fee percent (if any) | | ↳ `automatic_tax` | json | Automatic tax settings | | ↳ `billing_cycle_anchor` | number | Unix timestamp determining when billing cycle starts | | ↳ `billing_thresholds` | json | Billing thresholds for the subscription | | ↳ `cancel_at` | number | Unix timestamp when the subscription will be canceled | | ↳ `cancel_at_period_end` | boolean | Whether the subscription will be canceled at period end | | ↳ `canceled_at` | number | Unix timestamp when the subscription was canceled | | ↳ `cancellation_details` | json | Details about cancellation | | ↳ `collection_method` | string | Collection method (charge\_automatically or send\_invoice) | | ↳ `created` | number | Unix timestamp when the subscription was created | | ↳ `currency` | string | Three-letter ISO currency code (lowercase) | | ↳ `current_period_end` | number | Unix timestamp when the current period ends | | ↳ `current_period_start` | number | Unix timestamp when the current period started | | ↳ `customer` | string | ID of the customer who owns the subscription | | ↳ `days_until_due` | number | Number of days a customer has to pay invoices | | ↳ `default_payment_method` | string | ID of the default payment method | | ↳ `default_source` | string | ID of the default source | | ↳ `default_tax_rates` | array | Default tax rates | | ↳ `description` | string | Subscription description (max 500 characters) | | ↳ `discount` | json | Discount that applies to the subscription | | ↳ `ended_at` | number | Unix timestamp when the subscription ended | | ↳ `items` | object | List of subscription items | | ↳ `object` | string | String representing the object type (list) | | ↳ `data` | array | Array of subscription items | | ↳ `id` | string | Unique identifier for the subscription item | | ↳ `object` | string | String representing the object type (subscription\_item) | | ↳ `billing_thresholds` | json | Billing thresholds for the subscription item | | ↳ `created` | number | Unix timestamp when the item was added | | ↳ `metadata` | json | Set of key-value pairs for storing additional information | | ↳ `price` | json | Price object for this subscription item | | ↳ `quantity` | number | Quantity of the plan to subscribe to | | ↳ `subscription` | string | ID of the subscription this item belongs to | | ↳ `tax_rates` | array | Tax rates applied to this subscription item | | ↳ `has_more` | boolean | Whether there are more items | | ↳ `url` | string | URL to fetch more items | | ↳ `latest_invoice` | string | ID of the most recent invoice | | ↳ `livemode` | boolean | Whether object exists in live mode or test mode | | ↳ `metadata` | json | Set of key-value pairs for storing additional information | | ↳ `next_pending_invoice_item_invoice` | number | Unix timestamp of next pending invoice item invoice | | ↳ `on_behalf_of` | string | Account the subscription is made on behalf of | | ↳ `pause_collection` | json | If paused, when collection is paused until | | ↳ `payment_settings` | json | Payment settings for the subscription | | ↳ `pending_invoice_item_interval` | json | Pending invoice item interval | | ↳ `pending_setup_intent` | string | ID of the pending SetupIntent | | ↳ `pending_update` | json | Pending subscription update | | ↳ `schedule` | string | ID of the subscription schedule | | ↳ `start_date` | number | Unix timestamp when the subscription started | | ↳ `status` | string | Status of the subscription (incomplete, incomplete\_expired, trialing, active, past\_due, canceled, unpaid, paused) | | ↳ `test_clock` | string | ID of the test clock | | ↳ `transfer_data` | json | Data for creating transfers after payments succeed | | ↳ `trial_end` | number | Unix timestamp when the trial ends | | ↳ `trial_settings` | json | Settings related to subscription trials | | ↳ `trial_start` | number | Unix timestamp when the trial started | | `metadata` | json | Subscription metadata including ID, status, and customer | | ↳ `id` | string | Stripe unique identifier | | ↳ `status` | string | Current state of the resource | | ↳ `customer` | string | Associated customer ID | ### Stripe Update Subscription [#stripe-update-subscription] Update an existing subscription #### Input [#input-16] | Parameter | Type | Required | Description | | ---------------------- | ------- | -------- | --------------------------------------- | | `apiKey` | string | Yes | Stripe API key (secret key) | | `id` | string | Yes | Subscription ID (e.g., sub\_1234567890) | | `items` | json | No | Updated array of items with price IDs | | `cancel_at_period_end` | boolean | No | Cancel subscription at period end | | `metadata` | json | No | Updated metadata | #### Output [#output-16] | Parameter | Type | Description | | ------------------------------------- | ------- | ------------------------------------------------------------------------------------------------------------------- | | `subscription` | object | The updated subscription object | | ↳ `id` | string | Unique identifier for the subscription | | ↳ `object` | string | String representing the object type (subscription) | | ↳ `application` | string | ID of the Connect application that created the subscription | | ↳ `application_fee_percent` | number | Application fee percent (if any) | | ↳ `automatic_tax` | json | Automatic tax settings | | ↳ `billing_cycle_anchor` | number | Unix timestamp determining when billing cycle starts | | ↳ `billing_thresholds` | json | Billing thresholds for the subscription | | ↳ `cancel_at` | number | Unix timestamp when the subscription will be canceled | | ↳ `cancel_at_period_end` | boolean | Whether the subscription will be canceled at period end | | ↳ `canceled_at` | number | Unix timestamp when the subscription was canceled | | ↳ `cancellation_details` | json | Details about cancellation | | ↳ `collection_method` | string | Collection method (charge\_automatically or send\_invoice) | | ↳ `created` | number | Unix timestamp when the subscription was created | | ↳ `currency` | string | Three-letter ISO currency code (lowercase) | | ↳ `current_period_end` | number | Unix timestamp when the current period ends | | ↳ `current_period_start` | number | Unix timestamp when the current period started | | ↳ `customer` | string | ID of the customer who owns the subscription | | ↳ `days_until_due` | number | Number of days a customer has to pay invoices | | ↳ `default_payment_method` | string | ID of the default payment method | | ↳ `default_source` | string | ID of the default source | | ↳ `default_tax_rates` | array | Default tax rates | | ↳ `description` | string | Subscription description (max 500 characters) | | ↳ `discount` | json | Discount that applies to the subscription | | ↳ `ended_at` | number | Unix timestamp when the subscription ended | | ↳ `items` | object | List of subscription items | | ↳ `object` | string | String representing the object type (list) | | ↳ `data` | array | Array of subscription items | | ↳ `id` | string | Unique identifier for the subscription item | | ↳ `object` | string | String representing the object type (subscription\_item) | | ↳ `billing_thresholds` | json | Billing thresholds for the subscription item | | ↳ `created` | number | Unix timestamp when the item was added | | ↳ `metadata` | json | Set of key-value pairs for storing additional information | | ↳ `price` | json | Price object for this subscription item | | ↳ `quantity` | number | Quantity of the plan to subscribe to | | ↳ `subscription` | string | ID of the subscription this item belongs to | | ↳ `tax_rates` | array | Tax rates applied to this subscription item | | ↳ `has_more` | boolean | Whether there are more items | | ↳ `url` | string | URL to fetch more items | | ↳ `latest_invoice` | string | ID of the most recent invoice | | ↳ `livemode` | boolean | Whether object exists in live mode or test mode | | ↳ `metadata` | json | Set of key-value pairs for storing additional information | | ↳ `next_pending_invoice_item_invoice` | number | Unix timestamp of next pending invoice item invoice | | ↳ `on_behalf_of` | string | Account the subscription is made on behalf of | | ↳ `pause_collection` | json | If paused, when collection is paused until | | ↳ `payment_settings` | json | Payment settings for the subscription | | ↳ `pending_invoice_item_interval` | json | Pending invoice item interval | | ↳ `pending_setup_intent` | string | ID of the pending SetupIntent | | ↳ `pending_update` | json | Pending subscription update | | ↳ `schedule` | string | ID of the subscription schedule | | ↳ `start_date` | number | Unix timestamp when the subscription started | | ↳ `status` | string | Status of the subscription (incomplete, incomplete\_expired, trialing, active, past\_due, canceled, unpaid, paused) | | ↳ `test_clock` | string | ID of the test clock | | ↳ `transfer_data` | json | Data for creating transfers after payments succeed | | ↳ `trial_end` | number | Unix timestamp when the trial ends | | ↳ `trial_settings` | json | Settings related to subscription trials | | ↳ `trial_start` | number | Unix timestamp when the trial started | | `metadata` | json | Subscription metadata including ID, status, and customer | | ↳ `id` | string | Stripe unique identifier | | ↳ `status` | string | Current state of the resource | | ↳ `customer` | string | Associated customer ID | ### Stripe Cancel Subscription [#stripe-cancel-subscription] Cancel a subscription #### Input [#input-17] | Parameter | Type | Required | Description | | ------------- | ------- | -------- | --------------------------------------- | | `apiKey` | string | Yes | Stripe API key (secret key) | | `id` | string | Yes | Subscription ID (e.g., sub\_1234567890) | | `prorate` | boolean | No | Whether to prorate the cancellation | | `invoice_now` | boolean | No | Whether to invoice immediately | #### Output [#output-17] | Parameter | Type | Description | | ------------------------------------- | ------- | ------------------------------------------------------------------------------------------------------------------- | | `subscription` | object | The canceled subscription object | | ↳ `id` | string | Unique identifier for the subscription | | ↳ `object` | string | String representing the object type (subscription) | | ↳ `application` | string | ID of the Connect application that created the subscription | | ↳ `application_fee_percent` | number | Application fee percent (if any) | | ↳ `automatic_tax` | json | Automatic tax settings | | ↳ `billing_cycle_anchor` | number | Unix timestamp determining when billing cycle starts | | ↳ `billing_thresholds` | json | Billing thresholds for the subscription | | ↳ `cancel_at` | number | Unix timestamp when the subscription will be canceled | | ↳ `cancel_at_period_end` | boolean | Whether the subscription will be canceled at period end | | ↳ `canceled_at` | number | Unix timestamp when the subscription was canceled | | ↳ `cancellation_details` | json | Details about cancellation | | ↳ `collection_method` | string | Collection method (charge\_automatically or send\_invoice) | | ↳ `created` | number | Unix timestamp when the subscription was created | | ↳ `currency` | string | Three-letter ISO currency code (lowercase) | | ↳ `current_period_end` | number | Unix timestamp when the current period ends | | ↳ `current_period_start` | number | Unix timestamp when the current period started | | ↳ `customer` | string | ID of the customer who owns the subscription | | ↳ `days_until_due` | number | Number of days a customer has to pay invoices | | ↳ `default_payment_method` | string | ID of the default payment method | | ↳ `default_source` | string | ID of the default source | | ↳ `default_tax_rates` | array | Default tax rates | | ↳ `description` | string | Subscription description (max 500 characters) | | ↳ `discount` | json | Discount that applies to the subscription | | ↳ `ended_at` | number | Unix timestamp when the subscription ended | | ↳ `items` | object | List of subscription items | | ↳ `object` | string | String representing the object type (list) | | ↳ `data` | array | Array of subscription items | | ↳ `id` | string | Unique identifier for the subscription item | | ↳ `object` | string | String representing the object type (subscription\_item) | | ↳ `billing_thresholds` | json | Billing thresholds for the subscription item | | ↳ `created` | number | Unix timestamp when the item was added | | ↳ `metadata` | json | Set of key-value pairs for storing additional information | | ↳ `price` | json | Price object for this subscription item | | ↳ `quantity` | number | Quantity of the plan to subscribe to | | ↳ `subscription` | string | ID of the subscription this item belongs to | | ↳ `tax_rates` | array | Tax rates applied to this subscription item | | ↳ `has_more` | boolean | Whether there are more items | | ↳ `url` | string | URL to fetch more items | | ↳ `latest_invoice` | string | ID of the most recent invoice | | ↳ `livemode` | boolean | Whether object exists in live mode or test mode | | ↳ `metadata` | json | Set of key-value pairs for storing additional information | | ↳ `next_pending_invoice_item_invoice` | number | Unix timestamp of next pending invoice item invoice | | ↳ `on_behalf_of` | string | Account the subscription is made on behalf of | | ↳ `pause_collection` | json | If paused, when collection is paused until | | ↳ `payment_settings` | json | Payment settings for the subscription | | ↳ `pending_invoice_item_interval` | json | Pending invoice item interval | | ↳ `pending_setup_intent` | string | ID of the pending SetupIntent | | ↳ `pending_update` | json | Pending subscription update | | ↳ `schedule` | string | ID of the subscription schedule | | ↳ `start_date` | number | Unix timestamp when the subscription started | | ↳ `status` | string | Status of the subscription (incomplete, incomplete\_expired, trialing, active, past\_due, canceled, unpaid, paused) | | ↳ `test_clock` | string | ID of the test clock | | ↳ `transfer_data` | json | Data for creating transfers after payments succeed | | ↳ `trial_end` | number | Unix timestamp when the trial ends | | ↳ `trial_settings` | json | Settings related to subscription trials | | ↳ `trial_start` | number | Unix timestamp when the trial started | | `metadata` | json | Subscription metadata including ID, status, and customer | | ↳ `id` | string | Stripe unique identifier | | ↳ `status` | string | Current state of the resource | | ↳ `customer` | string | Associated customer ID | ### Stripe Resume Subscription [#stripe-resume-subscription] Resume a subscription that was scheduled for cancellation #### Input [#input-18] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------------------------------- | | `apiKey` | string | Yes | Stripe API key (secret key) | | `id` | string | Yes | Subscription ID (e.g., sub\_1234567890) | #### Output [#output-18] | Parameter | Type | Description | | ------------------------------------- | ------- | ------------------------------------------------------------------------------------------------------------------- | | `subscription` | object | The resumed subscription object | | ↳ `id` | string | Unique identifier for the subscription | | ↳ `object` | string | String representing the object type (subscription) | | ↳ `application` | string | ID of the Connect application that created the subscription | | ↳ `application_fee_percent` | number | Application fee percent (if any) | | ↳ `automatic_tax` | json | Automatic tax settings | | ↳ `billing_cycle_anchor` | number | Unix timestamp determining when billing cycle starts | | ↳ `billing_thresholds` | json | Billing thresholds for the subscription | | ↳ `cancel_at` | number | Unix timestamp when the subscription will be canceled | | ↳ `cancel_at_period_end` | boolean | Whether the subscription will be canceled at period end | | ↳ `canceled_at` | number | Unix timestamp when the subscription was canceled | | ↳ `cancellation_details` | json | Details about cancellation | | ↳ `collection_method` | string | Collection method (charge\_automatically or send\_invoice) | | ↳ `created` | number | Unix timestamp when the subscription was created | | ↳ `currency` | string | Three-letter ISO currency code (lowercase) | | ↳ `current_period_end` | number | Unix timestamp when the current period ends | | ↳ `current_period_start` | number | Unix timestamp when the current period started | | ↳ `customer` | string | ID of the customer who owns the subscription | | ↳ `days_until_due` | number | Number of days a customer has to pay invoices | | ↳ `default_payment_method` | string | ID of the default payment method | | ↳ `default_source` | string | ID of the default source | | ↳ `default_tax_rates` | array | Default tax rates | | ↳ `description` | string | Subscription description (max 500 characters) | | ↳ `discount` | json | Discount that applies to the subscription | | ↳ `ended_at` | number | Unix timestamp when the subscription ended | | ↳ `items` | object | List of subscription items | | ↳ `object` | string | String representing the object type (list) | | ↳ `data` | array | Array of subscription items | | ↳ `id` | string | Unique identifier for the subscription item | | ↳ `object` | string | String representing the object type (subscription\_item) | | ↳ `billing_thresholds` | json | Billing thresholds for the subscription item | | ↳ `created` | number | Unix timestamp when the item was added | | ↳ `metadata` | json | Set of key-value pairs for storing additional information | | ↳ `price` | json | Price object for this subscription item | | ↳ `quantity` | number | Quantity of the plan to subscribe to | | ↳ `subscription` | string | ID of the subscription this item belongs to | | ↳ `tax_rates` | array | Tax rates applied to this subscription item | | ↳ `has_more` | boolean | Whether there are more items | | ↳ `url` | string | URL to fetch more items | | ↳ `latest_invoice` | string | ID of the most recent invoice | | ↳ `livemode` | boolean | Whether object exists in live mode or test mode | | ↳ `metadata` | json | Set of key-value pairs for storing additional information | | ↳ `next_pending_invoice_item_invoice` | number | Unix timestamp of next pending invoice item invoice | | ↳ `on_behalf_of` | string | Account the subscription is made on behalf of | | ↳ `pause_collection` | json | If paused, when collection is paused until | | ↳ `payment_settings` | json | Payment settings for the subscription | | ↳ `pending_invoice_item_interval` | json | Pending invoice item interval | | ↳ `pending_setup_intent` | string | ID of the pending SetupIntent | | ↳ `pending_update` | json | Pending subscription update | | ↳ `schedule` | string | ID of the subscription schedule | | ↳ `start_date` | number | Unix timestamp when the subscription started | | ↳ `status` | string | Status of the subscription (incomplete, incomplete\_expired, trialing, active, past\_due, canceled, unpaid, paused) | | ↳ `test_clock` | string | ID of the test clock | | ↳ `transfer_data` | json | Data for creating transfers after payments succeed | | ↳ `trial_end` | number | Unix timestamp when the trial ends | | ↳ `trial_settings` | json | Settings related to subscription trials | | ↳ `trial_start` | number | Unix timestamp when the trial started | | `metadata` | json | Subscription metadata including ID, status, and customer | | ↳ `id` | string | Stripe unique identifier | | ↳ `status` | string | Current state of the resource | | ↳ `customer` | string | Associated customer ID | ### Stripe List Subscriptions [#stripe-list-subscriptions] List all subscriptions #### Input [#input-19] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ------------------------------------------------------------------------------------------------------ | | `apiKey` | string | Yes | Stripe API key (secret key) | | `limit` | number | No | Number of results to return (default 10, max 100) | | `customer` | string | No | Filter by customer ID | | `status` | string | No | Filter by status (active, past\_due, unpaid, canceled, incomplete, incomplete\_expired, trialing, all) | | `price` | string | No | Filter by price ID | #### Output [#output-19] | Parameter | Type | Description | | ------------------------------------- | ------- | ------------------------------------------------------------------------------------------------------------------- | | `subscriptions` | array | Array of subscription objects | | ↳ `id` | string | Unique identifier for the subscription | | ↳ `object` | string | String representing the object type (subscription) | | ↳ `application` | string | ID of the Connect application that created the subscription | | ↳ `application_fee_percent` | number | Application fee percent (if any) | | ↳ `automatic_tax` | json | Automatic tax settings | | ↳ `billing_cycle_anchor` | number | Unix timestamp determining when billing cycle starts | | ↳ `billing_thresholds` | json | Billing thresholds for the subscription | | ↳ `cancel_at` | number | Unix timestamp when the subscription will be canceled | | ↳ `cancel_at_period_end` | boolean | Whether the subscription will be canceled at period end | | ↳ `canceled_at` | number | Unix timestamp when the subscription was canceled | | ↳ `cancellation_details` | json | Details about cancellation | | ↳ `collection_method` | string | Collection method (charge\_automatically or send\_invoice) | | ↳ `created` | number | Unix timestamp when the subscription was created | | ↳ `currency` | string | Three-letter ISO currency code (lowercase) | | ↳ `current_period_end` | number | Unix timestamp when the current period ends | | ↳ `current_period_start` | number | Unix timestamp when the current period started | | ↳ `customer` | string | ID of the customer who owns the subscription | | ↳ `days_until_due` | number | Number of days a customer has to pay invoices | | ↳ `default_payment_method` | string | ID of the default payment method | | ↳ `default_source` | string | ID of the default source | | ↳ `default_tax_rates` | array | Default tax rates | | ↳ `description` | string | Subscription description (max 500 characters) | | ↳ `discount` | json | Discount that applies to the subscription | | ↳ `ended_at` | number | Unix timestamp when the subscription ended | | ↳ `items` | object | List of subscription items | | ↳ `object` | string | String representing the object type (list) | | ↳ `data` | array | Array of subscription items | | ↳ `id` | string | Unique identifier for the subscription item | | ↳ `object` | string | String representing the object type (subscription\_item) | | ↳ `billing_thresholds` | json | Billing thresholds for the subscription item | | ↳ `created` | number | Unix timestamp when the item was added | | ↳ `metadata` | json | Set of key-value pairs for storing additional information | | ↳ `price` | json | Price object for this subscription item | | ↳ `quantity` | number | Quantity of the plan to subscribe to | | ↳ `subscription` | string | ID of the subscription this item belongs to | | ↳ `tax_rates` | array | Tax rates applied to this subscription item | | ↳ `has_more` | boolean | Whether there are more items | | ↳ `url` | string | URL to fetch more items | | ↳ `latest_invoice` | string | ID of the most recent invoice | | ↳ `livemode` | boolean | Whether object exists in live mode or test mode | | ↳ `metadata` | json | Set of key-value pairs for storing additional information | | ↳ `next_pending_invoice_item_invoice` | number | Unix timestamp of next pending invoice item invoice | | ↳ `on_behalf_of` | string | Account the subscription is made on behalf of | | ↳ `pause_collection` | json | If paused, when collection is paused until | | ↳ `payment_settings` | json | Payment settings for the subscription | | ↳ `pending_invoice_item_interval` | json | Pending invoice item interval | | ↳ `pending_setup_intent` | string | ID of the pending SetupIntent | | ↳ `pending_update` | json | Pending subscription update | | ↳ `schedule` | string | ID of the subscription schedule | | ↳ `start_date` | number | Unix timestamp when the subscription started | | ↳ `status` | string | Status of the subscription (incomplete, incomplete\_expired, trialing, active, past\_due, canceled, unpaid, paused) | | ↳ `test_clock` | string | ID of the test clock | | ↳ `transfer_data` | json | Data for creating transfers after payments succeed | | ↳ `trial_end` | number | Unix timestamp when the trial ends | | ↳ `trial_settings` | json | Settings related to subscription trials | | ↳ `trial_start` | number | Unix timestamp when the trial started | | `metadata` | json | List metadata | | ↳ `count` | number | Number of items returned | | ↳ `has_more` | boolean | Whether more items exist beyond this page | ### Stripe Search Subscriptions [#stripe-search-subscriptions] Search for subscriptions using query syntax #### Input [#input-20] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------------------------------------------- | | `apiKey` | string | Yes | Stripe API key (secret key) | | `query` | string | Yes | Search query (e.g., "status:'active' AND customer:'cus\_xxx'") | | `limit` | number | No | Number of results to return (default 10, max 100) | #### Output [#output-20] | Parameter | Type | Description | | ------------------------------------- | ------- | ------------------------------------------------------------------------------------------------------------------- | | `subscriptions` | array | Array of matching subscription objects | | ↳ `id` | string | Unique identifier for the subscription | | ↳ `object` | string | String representing the object type (subscription) | | ↳ `application` | string | ID of the Connect application that created the subscription | | ↳ `application_fee_percent` | number | Application fee percent (if any) | | ↳ `automatic_tax` | json | Automatic tax settings | | ↳ `billing_cycle_anchor` | number | Unix timestamp determining when billing cycle starts | | ↳ `billing_thresholds` | json | Billing thresholds for the subscription | | ↳ `cancel_at` | number | Unix timestamp when the subscription will be canceled | | ↳ `cancel_at_period_end` | boolean | Whether the subscription will be canceled at period end | | ↳ `canceled_at` | number | Unix timestamp when the subscription was canceled | | ↳ `cancellation_details` | json | Details about cancellation | | ↳ `collection_method` | string | Collection method (charge\_automatically or send\_invoice) | | ↳ `created` | number | Unix timestamp when the subscription was created | | ↳ `currency` | string | Three-letter ISO currency code (lowercase) | | ↳ `current_period_end` | number | Unix timestamp when the current period ends | | ↳ `current_period_start` | number | Unix timestamp when the current period started | | ↳ `customer` | string | ID of the customer who owns the subscription | | ↳ `days_until_due` | number | Number of days a customer has to pay invoices | | ↳ `default_payment_method` | string | ID of the default payment method | | ↳ `default_source` | string | ID of the default source | | ↳ `default_tax_rates` | array | Default tax rates | | ↳ `description` | string | Subscription description (max 500 characters) | | ↳ `discount` | json | Discount that applies to the subscription | | ↳ `ended_at` | number | Unix timestamp when the subscription ended | | ↳ `items` | object | List of subscription items | | ↳ `object` | string | String representing the object type (list) | | ↳ `data` | array | Array of subscription items | | ↳ `id` | string | Unique identifier for the subscription item | | ↳ `object` | string | String representing the object type (subscription\_item) | | ↳ `billing_thresholds` | json | Billing thresholds for the subscription item | | ↳ `created` | number | Unix timestamp when the item was added | | ↳ `metadata` | json | Set of key-value pairs for storing additional information | | ↳ `price` | json | Price object for this subscription item | | ↳ `quantity` | number | Quantity of the plan to subscribe to | | ↳ `subscription` | string | ID of the subscription this item belongs to | | ↳ `tax_rates` | array | Tax rates applied to this subscription item | | ↳ `has_more` | boolean | Whether there are more items | | ↳ `url` | string | URL to fetch more items | | ↳ `latest_invoice` | string | ID of the most recent invoice | | ↳ `livemode` | boolean | Whether object exists in live mode or test mode | | ↳ `metadata` | json | Set of key-value pairs for storing additional information | | ↳ `next_pending_invoice_item_invoice` | number | Unix timestamp of next pending invoice item invoice | | ↳ `on_behalf_of` | string | Account the subscription is made on behalf of | | ↳ `pause_collection` | json | If paused, when collection is paused until | | ↳ `payment_settings` | json | Payment settings for the subscription | | ↳ `pending_invoice_item_interval` | json | Pending invoice item interval | | ↳ `pending_setup_intent` | string | ID of the pending SetupIntent | | ↳ `pending_update` | json | Pending subscription update | | ↳ `schedule` | string | ID of the subscription schedule | | ↳ `start_date` | number | Unix timestamp when the subscription started | | ↳ `status` | string | Status of the subscription (incomplete, incomplete\_expired, trialing, active, past\_due, canceled, unpaid, paused) | | ↳ `test_clock` | string | ID of the test clock | | ↳ `transfer_data` | json | Data for creating transfers after payments succeed | | ↳ `trial_end` | number | Unix timestamp when the trial ends | | ↳ `trial_settings` | json | Settings related to subscription trials | | ↳ `trial_start` | number | Unix timestamp when the trial started | | `metadata` | json | Search metadata | | ↳ `count` | number | Number of items returned | | ↳ `has_more` | boolean | Whether more items exist beyond this page | ### Stripe Create Invoice [#stripe-create-invoice] Create a new invoice #### Input [#input-21] | Parameter | Type | Required | Description | | ------------------- | ------- | -------- | --------------------------------------------------------- | | `apiKey` | string | Yes | Stripe API key (secret key) | | `customer` | string | Yes | Customer ID (e.g., cus\_1234567890) | | `description` | string | No | Description of the invoice | | `metadata` | json | No | Set of key-value pairs | | `auto_advance` | boolean | No | Auto-finalize the invoice | | `collection_method` | string | No | Collection method: charge\_automatically or send\_invoice | #### Output [#output-21] | Parameter | Type | Description | | ------------------------------------ | ------- | -------------------------------------------------------------- | | `invoice` | object | The created invoice object | | ↳ `id` | string | Unique identifier for the invoice | | ↳ `object` | string | String representing the object type (invoice) | | ↳ `account_country` | string | Country of the business associated with this invoice | | ↳ `account_name` | string | Name of the account associated with this invoice | | ↳ `account_tax_ids` | array | Account tax IDs | | ↳ `amount_due` | number | Final amount due in smallest currency unit | | ↳ `amount_paid` | number | Amount paid in smallest currency unit | | ↳ `amount_remaining` | number | Amount remaining in smallest currency unit | | ↳ `amount_shipping` | number | Shipping amount in smallest currency unit | | ↳ `application` | string | ID of the Connect application that created the invoice | | ↳ `application_fee_amount` | number | Application fee amount | | ↳ `attempt_count` | number | Number of payment attempts made | | ↳ `attempted` | boolean | Whether an attempt has been made to pay the invoice | | ↳ `auto_advance` | boolean | Controls whether Stripe performs automatic collection | | ↳ `automatic_tax` | json | Settings and results for automatic tax lookup | | ↳ `billing_reason` | string | Reason the invoice was created | | ↳ `charge` | string | ID of the latest charge for this invoice | | ↳ `collection_method` | string | Collection method (charge\_automatically or send\_invoice) | | ↳ `created` | number | Unix timestamp when the invoice was created | | ↳ `currency` | string | Three-letter ISO currency code (lowercase) | | ↳ `custom_fields` | array | Custom fields displayed on the invoice | | ↳ `customer` | string | ID of the customer who will be billed | | ↳ `customer_address` | object | Address object | | ↳ `line1` | string | Address line 1 (street address) | | ↳ `line2` | string | Address line 2 (apartment, suite, etc.) | | ↳ `city` | string | City name | | ↳ `state` | string | State, county, province, or region | | ↳ `postal_code` | string | ZIP or postal code | | ↳ `country` | string | Two-letter country code (ISO 3166-1 alpha-2) | | ↳ `customer_email` | string | Email of the customer | | ↳ `customer_name` | string | Name of the customer | | ↳ `customer_phone` | string | Phone number of the customer | | ↳ `customer_shipping` | object | Shipping information | | ↳ `name` | string | Recipient name | | ↳ `phone` | string | Recipient phone number | | ↳ `address` | object | Address object | | ↳ `line1` | string | Address line 1 (street address) | | ↳ `line2` | string | Address line 2 (apartment, suite, etc.) | | ↳ `city` | string | City name | | ↳ `state` | string | State, county, province, or region | | ↳ `postal_code` | string | ZIP or postal code | | ↳ `country` | string | Two-letter country code (ISO 3166-1 alpha-2) | | ↳ `customer_tax_exempt` | string | Tax exemption status of the customer | | ↳ `customer_tax_ids` | array | Customer tax IDs | | ↳ `default_payment_method` | string | ID of the default payment method | | ↳ `default_source` | string | ID of the default source | | ↳ `default_tax_rates` | array | Default tax rates | | ↳ `description` | string | Description displayed in Dashboard (memo) | | ↳ `discount` | json | Discount applied to the invoice | | ↳ `discounts` | array | Discounts applied to the invoice | | ↳ `due_date` | number | Unix timestamp when payment is due | | ↳ `effective_at` | number | When the invoice was effective | | ↳ `ending_balance` | number | Ending customer balance after invoice is finalized | | ↳ `footer` | string | Footer displayed on the invoice | | ↳ `from_invoice` | json | Details of the invoice that this invoice was created from | | ↳ `hosted_invoice_url` | string | URL for the hosted invoice page | | ↳ `invoice_pdf` | string | URL for the invoice PDF | | ↳ `issuer` | json | The connected account that issues the invoice | | ↳ `last_finalization_error` | json | Error encountered during finalization | | ↳ `latest_revision` | string | ID of the most recent revision | | ↳ `lines` | object | Invoice line items | | ↳ `id` | string | Unique identifier for the line item | | ↳ `object` | string | String representing the object type (line\_item) | | ↳ `amount` | number | Amount in smallest currency unit | | ↳ `amount_excluding_tax` | number | Amount excluding tax | | ↳ `currency` | string | Three-letter ISO currency code (lowercase) | | ↳ `description` | string | Description of the line item | | ↳ `discount_amounts` | array | Discount amounts applied | | ↳ `discountable` | boolean | Whether the line item is discountable | | ↳ `discounts` | array | Discounts applied to the line item | | ↳ `invoice` | string | ID of the invoice that contains this line item | | ↳ `livemode` | boolean | Whether object exists in live mode or test mode | | ↳ `metadata` | json | Set of key-value pairs for storing additional information | | ↳ `period` | json | Period this line item covers | | ↳ `price` | json | Price object for this line item | | ↳ `proration` | boolean | Whether this is a proration | | ↳ `proration_details` | json | Additional details for proration line items | | ↳ `quantity` | number | Quantity of the item | | ↳ `subscription` | string | ID of the subscription | | ↳ `subscription_item` | string | ID of the subscription item | | ↳ `tax_amounts` | array | Tax amounts for this line item | | ↳ `tax_rates` | array | Tax rates applied | | ↳ `type` | string | Type of line item (invoiceitem or subscription) | | ↳ `unit_amount_excluding_tax` | string | Unit amount excluding tax | | ↳ `livemode` | boolean | Whether object exists in live mode or test mode | | ↳ `metadata` | json | Set of key-value pairs for storing additional information | | ↳ `next_payment_attempt` | number | Unix timestamp of next payment attempt | | ↳ `number` | string | Human-readable invoice number | | ↳ `on_behalf_of` | string | Account on behalf of which the invoice was issued | | ↳ `paid` | boolean | Whether payment was successfully collected | | ↳ `paid_out_of_band` | boolean | Whether the invoice was paid out of band | | ↳ `payment_intent` | string | ID of the PaymentIntent associated with the invoice | | ↳ `payment_settings` | json | Configuration settings for payment collection | | ↳ `period_end` | number | End of the usage period | | ↳ `period_start` | number | Start of the usage period | | ↳ `post_payment_credit_notes_amount` | number | Total of all post-payment credit notes | | ↳ `pre_payment_credit_notes_amount` | number | Total of all pre-payment credit notes | | ↳ `quote` | string | ID of the quote this invoice was generated from | | ↳ `receipt_number` | string | Receipt number for the invoice | | ↳ `rendering` | json | Invoice rendering options | | ↳ `rendering_options` | json | Invoice rendering options (deprecated) | | ↳ `shipping_cost` | json | Shipping cost information | | ↳ `shipping_details` | object | Shipping information | | ↳ `name` | string | Recipient name | | ↳ `phone` | string | Recipient phone number | | ↳ `address` | object | Address object | | ↳ `line1` | string | Address line 1 (street address) | | ↳ `line2` | string | Address line 2 (apartment, suite, etc.) | | ↳ `city` | string | City name | | ↳ `state` | string | State, county, province, or region | | ↳ `postal_code` | string | ZIP or postal code | | ↳ `country` | string | Two-letter country code (ISO 3166-1 alpha-2) | | ↳ `starting_balance` | number | Starting customer balance before invoice | | ↳ `statement_descriptor` | string | Statement descriptor | | ↳ `status` | string | Status of the invoice (draft, open, paid, uncollectible, void) | | ↳ `status_transitions` | json | Timestamps at which the invoice status was updated | | ↳ `subscription` | string | ID of the subscription for this invoice | | ↳ `subscription_details` | json | Details about the subscription | | ↳ `subscription_proration_date` | number | Only set for upcoming invoices with proration | | ↳ `subtotal` | number | Total before discounts and taxes | | ↳ `subtotal_excluding_tax` | number | Subtotal excluding tax | | ↳ `tax` | number | Total tax amount | | ↳ `test_clock` | string | ID of the test clock | | ↳ `threshold_reason` | json | Details about why the invoice was created | | ↳ `total` | number | Total after discounts and taxes | | ↳ `total_discount_amounts` | array | Total discount amounts | | ↳ `total_excluding_tax` | number | Total excluding tax | | ↳ `total_tax_amounts` | array | Total tax amounts | | ↳ `transfer_data` | json | Data for creating transfers | | ↳ `webhooks_delivered_at` | number | Unix timestamp of webhooks delivery | | `metadata` | json | Invoice metadata | | ↳ `id` | string | Stripe unique identifier | | ↳ `status` | string | Current state of the resource | | ↳ `amount_due` | number | Amount remaining to be paid in smallest currency unit | | ↳ `currency` | string | Three-letter ISO currency code (lowercase) | ### Stripe Retrieve Invoice [#stripe-retrieve-invoice] Retrieve an existing invoice by ID #### Input [#input-22] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------------------------- | | `apiKey` | string | Yes | Stripe API key (secret key) | | `id` | string | Yes | Invoice ID (e.g., in\_1234567890) | #### Output [#output-22] | Parameter | Type | Description | | ------------------------------------ | ------- | -------------------------------------------------------------- | | `invoice` | object | The retrieved invoice object | | ↳ `id` | string | Unique identifier for the invoice | | ↳ `object` | string | String representing the object type (invoice) | | ↳ `account_country` | string | Country of the business associated with this invoice | | ↳ `account_name` | string | Name of the account associated with this invoice | | ↳ `account_tax_ids` | array | Account tax IDs | | ↳ `amount_due` | number | Final amount due in smallest currency unit | | ↳ `amount_paid` | number | Amount paid in smallest currency unit | | ↳ `amount_remaining` | number | Amount remaining in smallest currency unit | | ↳ `amount_shipping` | number | Shipping amount in smallest currency unit | | ↳ `application` | string | ID of the Connect application that created the invoice | | ↳ `application_fee_amount` | number | Application fee amount | | ↳ `attempt_count` | number | Number of payment attempts made | | ↳ `attempted` | boolean | Whether an attempt has been made to pay the invoice | | ↳ `auto_advance` | boolean | Controls whether Stripe performs automatic collection | | ↳ `automatic_tax` | json | Settings and results for automatic tax lookup | | ↳ `billing_reason` | string | Reason the invoice was created | | ↳ `charge` | string | ID of the latest charge for this invoice | | ↳ `collection_method` | string | Collection method (charge\_automatically or send\_invoice) | | ↳ `created` | number | Unix timestamp when the invoice was created | | ↳ `currency` | string | Three-letter ISO currency code (lowercase) | | ↳ `custom_fields` | array | Custom fields displayed on the invoice | | ↳ `customer` | string | ID of the customer who will be billed | | ↳ `customer_address` | object | Address object | | ↳ `line1` | string | Address line 1 (street address) | | ↳ `line2` | string | Address line 2 (apartment, suite, etc.) | | ↳ `city` | string | City name | | ↳ `state` | string | State, county, province, or region | | ↳ `postal_code` | string | ZIP or postal code | | ↳ `country` | string | Two-letter country code (ISO 3166-1 alpha-2) | | ↳ `customer_email` | string | Email of the customer | | ↳ `customer_name` | string | Name of the customer | | ↳ `customer_phone` | string | Phone number of the customer | | ↳ `customer_shipping` | object | Shipping information | | ↳ `name` | string | Recipient name | | ↳ `phone` | string | Recipient phone number | | ↳ `address` | object | Address object | | ↳ `line1` | string | Address line 1 (street address) | | ↳ `line2` | string | Address line 2 (apartment, suite, etc.) | | ↳ `city` | string | City name | | ↳ `state` | string | State, county, province, or region | | ↳ `postal_code` | string | ZIP or postal code | | ↳ `country` | string | Two-letter country code (ISO 3166-1 alpha-2) | | ↳ `customer_tax_exempt` | string | Tax exemption status of the customer | | ↳ `customer_tax_ids` | array | Customer tax IDs | | ↳ `default_payment_method` | string | ID of the default payment method | | ↳ `default_source` | string | ID of the default source | | ↳ `default_tax_rates` | array | Default tax rates | | ↳ `description` | string | Description displayed in Dashboard (memo) | | ↳ `discount` | json | Discount applied to the invoice | | ↳ `discounts` | array | Discounts applied to the invoice | | ↳ `due_date` | number | Unix timestamp when payment is due | | ↳ `effective_at` | number | When the invoice was effective | | ↳ `ending_balance` | number | Ending customer balance after invoice is finalized | | ↳ `footer` | string | Footer displayed on the invoice | | ↳ `from_invoice` | json | Details of the invoice that this invoice was created from | | ↳ `hosted_invoice_url` | string | URL for the hosted invoice page | | ↳ `invoice_pdf` | string | URL for the invoice PDF | | ↳ `issuer` | json | The connected account that issues the invoice | | ↳ `last_finalization_error` | json | Error encountered during finalization | | ↳ `latest_revision` | string | ID of the most recent revision | | ↳ `lines` | object | Invoice line items | | ↳ `id` | string | Unique identifier for the line item | | ↳ `object` | string | String representing the object type (line\_item) | | ↳ `amount` | number | Amount in smallest currency unit | | ↳ `amount_excluding_tax` | number | Amount excluding tax | | ↳ `currency` | string | Three-letter ISO currency code (lowercase) | | ↳ `description` | string | Description of the line item | | ↳ `discount_amounts` | array | Discount amounts applied | | ↳ `discountable` | boolean | Whether the line item is discountable | | ↳ `discounts` | array | Discounts applied to the line item | | ↳ `invoice` | string | ID of the invoice that contains this line item | | ↳ `livemode` | boolean | Whether object exists in live mode or test mode | | ↳ `metadata` | json | Set of key-value pairs for storing additional information | | ↳ `period` | json | Period this line item covers | | ↳ `price` | json | Price object for this line item | | ↳ `proration` | boolean | Whether this is a proration | | ↳ `proration_details` | json | Additional details for proration line items | | ↳ `quantity` | number | Quantity of the item | | ↳ `subscription` | string | ID of the subscription | | ↳ `subscription_item` | string | ID of the subscription item | | ↳ `tax_amounts` | array | Tax amounts for this line item | | ↳ `tax_rates` | array | Tax rates applied | | ↳ `type` | string | Type of line item (invoiceitem or subscription) | | ↳ `unit_amount_excluding_tax` | string | Unit amount excluding tax | | ↳ `livemode` | boolean | Whether object exists in live mode or test mode | | ↳ `metadata` | json | Set of key-value pairs for storing additional information | | ↳ `next_payment_attempt` | number | Unix timestamp of next payment attempt | | ↳ `number` | string | Human-readable invoice number | | ↳ `on_behalf_of` | string | Account on behalf of which the invoice was issued | | ↳ `paid` | boolean | Whether payment was successfully collected | | ↳ `paid_out_of_band` | boolean | Whether the invoice was paid out of band | | ↳ `payment_intent` | string | ID of the PaymentIntent associated with the invoice | | ↳ `payment_settings` | json | Configuration settings for payment collection | | ↳ `period_end` | number | End of the usage period | | ↳ `period_start` | number | Start of the usage period | | ↳ `post_payment_credit_notes_amount` | number | Total of all post-payment credit notes | | ↳ `pre_payment_credit_notes_amount` | number | Total of all pre-payment credit notes | | ↳ `quote` | string | ID of the quote this invoice was generated from | | ↳ `receipt_number` | string | Receipt number for the invoice | | ↳ `rendering` | json | Invoice rendering options | | ↳ `rendering_options` | json | Invoice rendering options (deprecated) | | ↳ `shipping_cost` | json | Shipping cost information | | ↳ `shipping_details` | object | Shipping information | | ↳ `name` | string | Recipient name | | ↳ `phone` | string | Recipient phone number | | ↳ `address` | object | Address object | | ↳ `line1` | string | Address line 1 (street address) | | ↳ `line2` | string | Address line 2 (apartment, suite, etc.) | | ↳ `city` | string | City name | | ↳ `state` | string | State, county, province, or region | | ↳ `postal_code` | string | ZIP or postal code | | ↳ `country` | string | Two-letter country code (ISO 3166-1 alpha-2) | | ↳ `starting_balance` | number | Starting customer balance before invoice | | ↳ `statement_descriptor` | string | Statement descriptor | | ↳ `status` | string | Status of the invoice (draft, open, paid, uncollectible, void) | | ↳ `status_transitions` | json | Timestamps at which the invoice status was updated | | ↳ `subscription` | string | ID of the subscription for this invoice | | ↳ `subscription_details` | json | Details about the subscription | | ↳ `subscription_proration_date` | number | Only set for upcoming invoices with proration | | ↳ `subtotal` | number | Total before discounts and taxes | | ↳ `subtotal_excluding_tax` | number | Subtotal excluding tax | | ↳ `tax` | number | Total tax amount | | ↳ `test_clock` | string | ID of the test clock | | ↳ `threshold_reason` | json | Details about why the invoice was created | | ↳ `total` | number | Total after discounts and taxes | | ↳ `total_discount_amounts` | array | Total discount amounts | | ↳ `total_excluding_tax` | number | Total excluding tax | | ↳ `total_tax_amounts` | array | Total tax amounts | | ↳ `transfer_data` | json | Data for creating transfers | | ↳ `webhooks_delivered_at` | number | Unix timestamp of webhooks delivery | | `metadata` | json | Invoice metadata | | ↳ `id` | string | Stripe unique identifier | | ↳ `status` | string | Current state of the resource | | ↳ `amount_due` | number | Amount remaining to be paid in smallest currency unit | | ↳ `currency` | string | Three-letter ISO currency code (lowercase) | ### Stripe Update Invoice [#stripe-update-invoice] Update an existing invoice #### Input [#input-23] | Parameter | Type | Required | Description | | -------------- | ------- | -------- | --------------------------------- | | `apiKey` | string | Yes | Stripe API key (secret key) | | `id` | string | Yes | Invoice ID (e.g., in\_1234567890) | | `description` | string | No | Description of the invoice | | `metadata` | json | No | Set of key-value pairs | | `auto_advance` | boolean | No | Auto-finalize the invoice | #### Output [#output-23] | Parameter | Type | Description | | ------------------------------------ | ------- | -------------------------------------------------------------- | | `invoice` | object | The updated invoice object | | ↳ `id` | string | Unique identifier for the invoice | | ↳ `object` | string | String representing the object type (invoice) | | ↳ `account_country` | string | Country of the business associated with this invoice | | ↳ `account_name` | string | Name of the account associated with this invoice | | ↳ `account_tax_ids` | array | Account tax IDs | | ↳ `amount_due` | number | Final amount due in smallest currency unit | | ↳ `amount_paid` | number | Amount paid in smallest currency unit | | ↳ `amount_remaining` | number | Amount remaining in smallest currency unit | | ↳ `amount_shipping` | number | Shipping amount in smallest currency unit | | ↳ `application` | string | ID of the Connect application that created the invoice | | ↳ `application_fee_amount` | number | Application fee amount | | ↳ `attempt_count` | number | Number of payment attempts made | | ↳ `attempted` | boolean | Whether an attempt has been made to pay the invoice | | ↳ `auto_advance` | boolean | Controls whether Stripe performs automatic collection | | ↳ `automatic_tax` | json | Settings and results for automatic tax lookup | | ↳ `billing_reason` | string | Reason the invoice was created | | ↳ `charge` | string | ID of the latest charge for this invoice | | ↳ `collection_method` | string | Collection method (charge\_automatically or send\_invoice) | | ↳ `created` | number | Unix timestamp when the invoice was created | | ↳ `currency` | string | Three-letter ISO currency code (lowercase) | | ↳ `custom_fields` | array | Custom fields displayed on the invoice | | ↳ `customer` | string | ID of the customer who will be billed | | ↳ `customer_address` | object | Address object | | ↳ `line1` | string | Address line 1 (street address) | | ↳ `line2` | string | Address line 2 (apartment, suite, etc.) | | ↳ `city` | string | City name | | ↳ `state` | string | State, county, province, or region | | ↳ `postal_code` | string | ZIP or postal code | | ↳ `country` | string | Two-letter country code (ISO 3166-1 alpha-2) | | ↳ `customer_email` | string | Email of the customer | | ↳ `customer_name` | string | Name of the customer | | ↳ `customer_phone` | string | Phone number of the customer | | ↳ `customer_shipping` | object | Shipping information | | ↳ `name` | string | Recipient name | | ↳ `phone` | string | Recipient phone number | | ↳ `address` | object | Address object | | ↳ `line1` | string | Address line 1 (street address) | | ↳ `line2` | string | Address line 2 (apartment, suite, etc.) | | ↳ `city` | string | City name | | ↳ `state` | string | State, county, province, or region | | ↳ `postal_code` | string | ZIP or postal code | | ↳ `country` | string | Two-letter country code (ISO 3166-1 alpha-2) | | ↳ `customer_tax_exempt` | string | Tax exemption status of the customer | | ↳ `customer_tax_ids` | array | Customer tax IDs | | ↳ `default_payment_method` | string | ID of the default payment method | | ↳ `default_source` | string | ID of the default source | | ↳ `default_tax_rates` | array | Default tax rates | | ↳ `description` | string | Description displayed in Dashboard (memo) | | ↳ `discount` | json | Discount applied to the invoice | | ↳ `discounts` | array | Discounts applied to the invoice | | ↳ `due_date` | number | Unix timestamp when payment is due | | ↳ `effective_at` | number | When the invoice was effective | | ↳ `ending_balance` | number | Ending customer balance after invoice is finalized | | ↳ `footer` | string | Footer displayed on the invoice | | ↳ `from_invoice` | json | Details of the invoice that this invoice was created from | | ↳ `hosted_invoice_url` | string | URL for the hosted invoice page | | ↳ `invoice_pdf` | string | URL for the invoice PDF | | ↳ `issuer` | json | The connected account that issues the invoice | | ↳ `last_finalization_error` | json | Error encountered during finalization | | ↳ `latest_revision` | string | ID of the most recent revision | | ↳ `lines` | object | Invoice line items | | ↳ `id` | string | Unique identifier for the line item | | ↳ `object` | string | String representing the object type (line\_item) | | ↳ `amount` | number | Amount in smallest currency unit | | ↳ `amount_excluding_tax` | number | Amount excluding tax | | ↳ `currency` | string | Three-letter ISO currency code (lowercase) | | ↳ `description` | string | Description of the line item | | ↳ `discount_amounts` | array | Discount amounts applied | | ↳ `discountable` | boolean | Whether the line item is discountable | | ↳ `discounts` | array | Discounts applied to the line item | | ↳ `invoice` | string | ID of the invoice that contains this line item | | ↳ `livemode` | boolean | Whether object exists in live mode or test mode | | ↳ `metadata` | json | Set of key-value pairs for storing additional information | | ↳ `period` | json | Period this line item covers | | ↳ `price` | json | Price object for this line item | | ↳ `proration` | boolean | Whether this is a proration | | ↳ `proration_details` | json | Additional details for proration line items | | ↳ `quantity` | number | Quantity of the item | | ↳ `subscription` | string | ID of the subscription | | ↳ `subscription_item` | string | ID of the subscription item | | ↳ `tax_amounts` | array | Tax amounts for this line item | | ↳ `tax_rates` | array | Tax rates applied | | ↳ `type` | string | Type of line item (invoiceitem or subscription) | | ↳ `unit_amount_excluding_tax` | string | Unit amount excluding tax | | ↳ `livemode` | boolean | Whether object exists in live mode or test mode | | ↳ `metadata` | json | Set of key-value pairs for storing additional information | | ↳ `next_payment_attempt` | number | Unix timestamp of next payment attempt | | ↳ `number` | string | Human-readable invoice number | | ↳ `on_behalf_of` | string | Account on behalf of which the invoice was issued | | ↳ `paid` | boolean | Whether payment was successfully collected | | ↳ `paid_out_of_band` | boolean | Whether the invoice was paid out of band | | ↳ `payment_intent` | string | ID of the PaymentIntent associated with the invoice | | ↳ `payment_settings` | json | Configuration settings for payment collection | | ↳ `period_end` | number | End of the usage period | | ↳ `period_start` | number | Start of the usage period | | ↳ `post_payment_credit_notes_amount` | number | Total of all post-payment credit notes | | ↳ `pre_payment_credit_notes_amount` | number | Total of all pre-payment credit notes | | ↳ `quote` | string | ID of the quote this invoice was generated from | | ↳ `receipt_number` | string | Receipt number for the invoice | | ↳ `rendering` | json | Invoice rendering options | | ↳ `rendering_options` | json | Invoice rendering options (deprecated) | | ↳ `shipping_cost` | json | Shipping cost information | | ↳ `shipping_details` | object | Shipping information | | ↳ `name` | string | Recipient name | | ↳ `phone` | string | Recipient phone number | | ↳ `address` | object | Address object | | ↳ `line1` | string | Address line 1 (street address) | | ↳ `line2` | string | Address line 2 (apartment, suite, etc.) | | ↳ `city` | string | City name | | ↳ `state` | string | State, county, province, or region | | ↳ `postal_code` | string | ZIP or postal code | | ↳ `country` | string | Two-letter country code (ISO 3166-1 alpha-2) | | ↳ `starting_balance` | number | Starting customer balance before invoice | | ↳ `statement_descriptor` | string | Statement descriptor | | ↳ `status` | string | Status of the invoice (draft, open, paid, uncollectible, void) | | ↳ `status_transitions` | json | Timestamps at which the invoice status was updated | | ↳ `subscription` | string | ID of the subscription for this invoice | | ↳ `subscription_details` | json | Details about the subscription | | ↳ `subscription_proration_date` | number | Only set for upcoming invoices with proration | | ↳ `subtotal` | number | Total before discounts and taxes | | ↳ `subtotal_excluding_tax` | number | Subtotal excluding tax | | ↳ `tax` | number | Total tax amount | | ↳ `test_clock` | string | ID of the test clock | | ↳ `threshold_reason` | json | Details about why the invoice was created | | ↳ `total` | number | Total after discounts and taxes | | ↳ `total_discount_amounts` | array | Total discount amounts | | ↳ `total_excluding_tax` | number | Total excluding tax | | ↳ `total_tax_amounts` | array | Total tax amounts | | ↳ `transfer_data` | json | Data for creating transfers | | ↳ `webhooks_delivered_at` | number | Unix timestamp of webhooks delivery | | `metadata` | json | Invoice metadata | | ↳ `id` | string | Stripe unique identifier | | ↳ `status` | string | Current state of the resource | | ↳ `amount_due` | number | Amount remaining to be paid in smallest currency unit | | ↳ `currency` | string | Three-letter ISO currency code (lowercase) | ### Stripe Delete Invoice [#stripe-delete-invoice] Permanently delete a draft invoice #### Input [#input-24] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------------------------- | | `apiKey` | string | Yes | Stripe API key (secret key) | | `id` | string | Yes | Invoice ID (e.g., in\_1234567890) | #### Output [#output-24] | Parameter | Type | Description | | --------- | ------- | ------------------------------- | | `deleted` | boolean | Whether the invoice was deleted | | `id` | string | The ID of the deleted invoice | ### Stripe Finalize Invoice [#stripe-finalize-invoice] Finalize a draft invoice #### Input [#input-25] | Parameter | Type | Required | Description | | -------------- | ------- | -------- | --------------------------------- | | `apiKey` | string | Yes | Stripe API key (secret key) | | `id` | string | Yes | Invoice ID (e.g., in\_1234567890) | | `auto_advance` | boolean | No | Auto-advance the invoice | #### Output [#output-25] | Parameter | Type | Description | | ------------------------------------ | ------- | -------------------------------------------------------------- | | `invoice` | object | The finalized invoice object | | ↳ `id` | string | Unique identifier for the invoice | | ↳ `object` | string | String representing the object type (invoice) | | ↳ `account_country` | string | Country of the business associated with this invoice | | ↳ `account_name` | string | Name of the account associated with this invoice | | ↳ `account_tax_ids` | array | Account tax IDs | | ↳ `amount_due` | number | Final amount due in smallest currency unit | | ↳ `amount_paid` | number | Amount paid in smallest currency unit | | ↳ `amount_remaining` | number | Amount remaining in smallest currency unit | | ↳ `amount_shipping` | number | Shipping amount in smallest currency unit | | ↳ `application` | string | ID of the Connect application that created the invoice | | ↳ `application_fee_amount` | number | Application fee amount | | ↳ `attempt_count` | number | Number of payment attempts made | | ↳ `attempted` | boolean | Whether an attempt has been made to pay the invoice | | ↳ `auto_advance` | boolean | Controls whether Stripe performs automatic collection | | ↳ `automatic_tax` | json | Settings and results for automatic tax lookup | | ↳ `billing_reason` | string | Reason the invoice was created | | ↳ `charge` | string | ID of the latest charge for this invoice | | ↳ `collection_method` | string | Collection method (charge\_automatically or send\_invoice) | | ↳ `created` | number | Unix timestamp when the invoice was created | | ↳ `currency` | string | Three-letter ISO currency code (lowercase) | | ↳ `custom_fields` | array | Custom fields displayed on the invoice | | ↳ `customer` | string | ID of the customer who will be billed | | ↳ `customer_address` | object | Address object | | ↳ `line1` | string | Address line 1 (street address) | | ↳ `line2` | string | Address line 2 (apartment, suite, etc.) | | ↳ `city` | string | City name | | ↳ `state` | string | State, county, province, or region | | ↳ `postal_code` | string | ZIP or postal code | | ↳ `country` | string | Two-letter country code (ISO 3166-1 alpha-2) | | ↳ `customer_email` | string | Email of the customer | | ↳ `customer_name` | string | Name of the customer | | ↳ `customer_phone` | string | Phone number of the customer | | ↳ `customer_shipping` | object | Shipping information | | ↳ `name` | string | Recipient name | | ↳ `phone` | string | Recipient phone number | | ↳ `address` | object | Address object | | ↳ `line1` | string | Address line 1 (street address) | | ↳ `line2` | string | Address line 2 (apartment, suite, etc.) | | ↳ `city` | string | City name | | ↳ `state` | string | State, county, province, or region | | ↳ `postal_code` | string | ZIP or postal code | | ↳ `country` | string | Two-letter country code (ISO 3166-1 alpha-2) | | ↳ `customer_tax_exempt` | string | Tax exemption status of the customer | | ↳ `customer_tax_ids` | array | Customer tax IDs | | ↳ `default_payment_method` | string | ID of the default payment method | | ↳ `default_source` | string | ID of the default source | | ↳ `default_tax_rates` | array | Default tax rates | | ↳ `description` | string | Description displayed in Dashboard (memo) | | ↳ `discount` | json | Discount applied to the invoice | | ↳ `discounts` | array | Discounts applied to the invoice | | ↳ `due_date` | number | Unix timestamp when payment is due | | ↳ `effective_at` | number | When the invoice was effective | | ↳ `ending_balance` | number | Ending customer balance after invoice is finalized | | ↳ `footer` | string | Footer displayed on the invoice | | ↳ `from_invoice` | json | Details of the invoice that this invoice was created from | | ↳ `hosted_invoice_url` | string | URL for the hosted invoice page | | ↳ `invoice_pdf` | string | URL for the invoice PDF | | ↳ `issuer` | json | The connected account that issues the invoice | | ↳ `last_finalization_error` | json | Error encountered during finalization | | ↳ `latest_revision` | string | ID of the most recent revision | | ↳ `lines` | object | Invoice line items | | ↳ `id` | string | Unique identifier for the line item | | ↳ `object` | string | String representing the object type (line\_item) | | ↳ `amount` | number | Amount in smallest currency unit | | ↳ `amount_excluding_tax` | number | Amount excluding tax | | ↳ `currency` | string | Three-letter ISO currency code (lowercase) | | ↳ `description` | string | Description of the line item | | ↳ `discount_amounts` | array | Discount amounts applied | | ↳ `discountable` | boolean | Whether the line item is discountable | | ↳ `discounts` | array | Discounts applied to the line item | | ↳ `invoice` | string | ID of the invoice that contains this line item | | ↳ `livemode` | boolean | Whether object exists in live mode or test mode | | ↳ `metadata` | json | Set of key-value pairs for storing additional information | | ↳ `period` | json | Period this line item covers | | ↳ `price` | json | Price object for this line item | | ↳ `proration` | boolean | Whether this is a proration | | ↳ `proration_details` | json | Additional details for proration line items | | ↳ `quantity` | number | Quantity of the item | | ↳ `subscription` | string | ID of the subscription | | ↳ `subscription_item` | string | ID of the subscription item | | ↳ `tax_amounts` | array | Tax amounts for this line item | | ↳ `tax_rates` | array | Tax rates applied | | ↳ `type` | string | Type of line item (invoiceitem or subscription) | | ↳ `unit_amount_excluding_tax` | string | Unit amount excluding tax | | ↳ `livemode` | boolean | Whether object exists in live mode or test mode | | ↳ `metadata` | json | Set of key-value pairs for storing additional information | | ↳ `next_payment_attempt` | number | Unix timestamp of next payment attempt | | ↳ `number` | string | Human-readable invoice number | | ↳ `on_behalf_of` | string | Account on behalf of which the invoice was issued | | ↳ `paid` | boolean | Whether payment was successfully collected | | ↳ `paid_out_of_band` | boolean | Whether the invoice was paid out of band | | ↳ `payment_intent` | string | ID of the PaymentIntent associated with the invoice | | ↳ `payment_settings` | json | Configuration settings for payment collection | | ↳ `period_end` | number | End of the usage period | | ↳ `period_start` | number | Start of the usage period | | ↳ `post_payment_credit_notes_amount` | number | Total of all post-payment credit notes | | ↳ `pre_payment_credit_notes_amount` | number | Total of all pre-payment credit notes | | ↳ `quote` | string | ID of the quote this invoice was generated from | | ↳ `receipt_number` | string | Receipt number for the invoice | | ↳ `rendering` | json | Invoice rendering options | | ↳ `rendering_options` | json | Invoice rendering options (deprecated) | | ↳ `shipping_cost` | json | Shipping cost information | | ↳ `shipping_details` | object | Shipping information | | ↳ `name` | string | Recipient name | | ↳ `phone` | string | Recipient phone number | | ↳ `address` | object | Address object | | ↳ `line1` | string | Address line 1 (street address) | | ↳ `line2` | string | Address line 2 (apartment, suite, etc.) | | ↳ `city` | string | City name | | ↳ `state` | string | State, county, province, or region | | ↳ `postal_code` | string | ZIP or postal code | | ↳ `country` | string | Two-letter country code (ISO 3166-1 alpha-2) | | ↳ `starting_balance` | number | Starting customer balance before invoice | | ↳ `statement_descriptor` | string | Statement descriptor | | ↳ `status` | string | Status of the invoice (draft, open, paid, uncollectible, void) | | ↳ `status_transitions` | json | Timestamps at which the invoice status was updated | | ↳ `subscription` | string | ID of the subscription for this invoice | | ↳ `subscription_details` | json | Details about the subscription | | ↳ `subscription_proration_date` | number | Only set for upcoming invoices with proration | | ↳ `subtotal` | number | Total before discounts and taxes | | ↳ `subtotal_excluding_tax` | number | Subtotal excluding tax | | ↳ `tax` | number | Total tax amount | | ↳ `test_clock` | string | ID of the test clock | | ↳ `threshold_reason` | json | Details about why the invoice was created | | ↳ `total` | number | Total after discounts and taxes | | ↳ `total_discount_amounts` | array | Total discount amounts | | ↳ `total_excluding_tax` | number | Total excluding tax | | ↳ `total_tax_amounts` | array | Total tax amounts | | ↳ `transfer_data` | json | Data for creating transfers | | ↳ `webhooks_delivered_at` | number | Unix timestamp of webhooks delivery | | `metadata` | json | Invoice metadata | | ↳ `id` | string | Stripe unique identifier | | ↳ `status` | string | Current state of the resource | | ↳ `amount_due` | number | Amount remaining to be paid in smallest currency unit | | ↳ `currency` | string | Three-letter ISO currency code (lowercase) | ### Stripe Pay Invoice [#stripe-pay-invoice] Pay an invoice #### Input [#input-26] | Parameter | Type | Required | Description | | ------------------ | ------- | -------- | --------------------------------- | | `apiKey` | string | Yes | Stripe API key (secret key) | | `id` | string | Yes | Invoice ID (e.g., in\_1234567890) | | `paid_out_of_band` | boolean | No | Mark invoice as paid out of band | #### Output [#output-26] | Parameter | Type | Description | | ------------------------------------ | ------- | -------------------------------------------------------------- | | `invoice` | object | The paid invoice object | | ↳ `id` | string | Unique identifier for the invoice | | ↳ `object` | string | String representing the object type (invoice) | | ↳ `account_country` | string | Country of the business associated with this invoice | | ↳ `account_name` | string | Name of the account associated with this invoice | | ↳ `account_tax_ids` | array | Account tax IDs | | ↳ `amount_due` | number | Final amount due in smallest currency unit | | ↳ `amount_paid` | number | Amount paid in smallest currency unit | | ↳ `amount_remaining` | number | Amount remaining in smallest currency unit | | ↳ `amount_shipping` | number | Shipping amount in smallest currency unit | | ↳ `application` | string | ID of the Connect application that created the invoice | | ↳ `application_fee_amount` | number | Application fee amount | | ↳ `attempt_count` | number | Number of payment attempts made | | ↳ `attempted` | boolean | Whether an attempt has been made to pay the invoice | | ↳ `auto_advance` | boolean | Controls whether Stripe performs automatic collection | | ↳ `automatic_tax` | json | Settings and results for automatic tax lookup | | ↳ `billing_reason` | string | Reason the invoice was created | | ↳ `charge` | string | ID of the latest charge for this invoice | | ↳ `collection_method` | string | Collection method (charge\_automatically or send\_invoice) | | ↳ `created` | number | Unix timestamp when the invoice was created | | ↳ `currency` | string | Three-letter ISO currency code (lowercase) | | ↳ `custom_fields` | array | Custom fields displayed on the invoice | | ↳ `customer` | string | ID of the customer who will be billed | | ↳ `customer_address` | object | Address object | | ↳ `line1` | string | Address line 1 (street address) | | ↳ `line2` | string | Address line 2 (apartment, suite, etc.) | | ↳ `city` | string | City name | | ↳ `state` | string | State, county, province, or region | | ↳ `postal_code` | string | ZIP or postal code | | ↳ `country` | string | Two-letter country code (ISO 3166-1 alpha-2) | | ↳ `customer_email` | string | Email of the customer | | ↳ `customer_name` | string | Name of the customer | | ↳ `customer_phone` | string | Phone number of the customer | | ↳ `customer_shipping` | object | Shipping information | | ↳ `name` | string | Recipient name | | ↳ `phone` | string | Recipient phone number | | ↳ `address` | object | Address object | | ↳ `line1` | string | Address line 1 (street address) | | ↳ `line2` | string | Address line 2 (apartment, suite, etc.) | | ↳ `city` | string | City name | | ↳ `state` | string | State, county, province, or region | | ↳ `postal_code` | string | ZIP or postal code | | ↳ `country` | string | Two-letter country code (ISO 3166-1 alpha-2) | | ↳ `customer_tax_exempt` | string | Tax exemption status of the customer | | ↳ `customer_tax_ids` | array | Customer tax IDs | | ↳ `default_payment_method` | string | ID of the default payment method | | ↳ `default_source` | string | ID of the default source | | ↳ `default_tax_rates` | array | Default tax rates | | ↳ `description` | string | Description displayed in Dashboard (memo) | | ↳ `discount` | json | Discount applied to the invoice | | ↳ `discounts` | array | Discounts applied to the invoice | | ↳ `due_date` | number | Unix timestamp when payment is due | | ↳ `effective_at` | number | When the invoice was effective | | ↳ `ending_balance` | number | Ending customer balance after invoice is finalized | | ↳ `footer` | string | Footer displayed on the invoice | | ↳ `from_invoice` | json | Details of the invoice that this invoice was created from | | ↳ `hosted_invoice_url` | string | URL for the hosted invoice page | | ↳ `invoice_pdf` | string | URL for the invoice PDF | | ↳ `issuer` | json | The connected account that issues the invoice | | ↳ `last_finalization_error` | json | Error encountered during finalization | | ↳ `latest_revision` | string | ID of the most recent revision | | ↳ `lines` | object | Invoice line items | | ↳ `id` | string | Unique identifier for the line item | | ↳ `object` | string | String representing the object type (line\_item) | | ↳ `amount` | number | Amount in smallest currency unit | | ↳ `amount_excluding_tax` | number | Amount excluding tax | | ↳ `currency` | string | Three-letter ISO currency code (lowercase) | | ↳ `description` | string | Description of the line item | | ↳ `discount_amounts` | array | Discount amounts applied | | ↳ `discountable` | boolean | Whether the line item is discountable | | ↳ `discounts` | array | Discounts applied to the line item | | ↳ `invoice` | string | ID of the invoice that contains this line item | | ↳ `livemode` | boolean | Whether object exists in live mode or test mode | | ↳ `metadata` | json | Set of key-value pairs for storing additional information | | ↳ `period` | json | Period this line item covers | | ↳ `price` | json | Price object for this line item | | ↳ `proration` | boolean | Whether this is a proration | | ↳ `proration_details` | json | Additional details for proration line items | | ↳ `quantity` | number | Quantity of the item | | ↳ `subscription` | string | ID of the subscription | | ↳ `subscription_item` | string | ID of the subscription item | | ↳ `tax_amounts` | array | Tax amounts for this line item | | ↳ `tax_rates` | array | Tax rates applied | | ↳ `type` | string | Type of line item (invoiceitem or subscription) | | ↳ `unit_amount_excluding_tax` | string | Unit amount excluding tax | | ↳ `livemode` | boolean | Whether object exists in live mode or test mode | | ↳ `metadata` | json | Set of key-value pairs for storing additional information | | ↳ `next_payment_attempt` | number | Unix timestamp of next payment attempt | | ↳ `number` | string | Human-readable invoice number | | ↳ `on_behalf_of` | string | Account on behalf of which the invoice was issued | | ↳ `paid` | boolean | Whether payment was successfully collected | | ↳ `paid_out_of_band` | boolean | Whether the invoice was paid out of band | | ↳ `payment_intent` | string | ID of the PaymentIntent associated with the invoice | | ↳ `payment_settings` | json | Configuration settings for payment collection | | ↳ `period_end` | number | End of the usage period | | ↳ `period_start` | number | Start of the usage period | | ↳ `post_payment_credit_notes_amount` | number | Total of all post-payment credit notes | | ↳ `pre_payment_credit_notes_amount` | number | Total of all pre-payment credit notes | | ↳ `quote` | string | ID of the quote this invoice was generated from | | ↳ `receipt_number` | string | Receipt number for the invoice | | ↳ `rendering` | json | Invoice rendering options | | ↳ `rendering_options` | json | Invoice rendering options (deprecated) | | ↳ `shipping_cost` | json | Shipping cost information | | ↳ `shipping_details` | object | Shipping information | | ↳ `name` | string | Recipient name | | ↳ `phone` | string | Recipient phone number | | ↳ `address` | object | Address object | | ↳ `line1` | string | Address line 1 (street address) | | ↳ `line2` | string | Address line 2 (apartment, suite, etc.) | | ↳ `city` | string | City name | | ↳ `state` | string | State, county, province, or region | | ↳ `postal_code` | string | ZIP or postal code | | ↳ `country` | string | Two-letter country code (ISO 3166-1 alpha-2) | | ↳ `starting_balance` | number | Starting customer balance before invoice | | ↳ `statement_descriptor` | string | Statement descriptor | | ↳ `status` | string | Status of the invoice (draft, open, paid, uncollectible, void) | | ↳ `status_transitions` | json | Timestamps at which the invoice status was updated | | ↳ `subscription` | string | ID of the subscription for this invoice | | ↳ `subscription_details` | json | Details about the subscription | | ↳ `subscription_proration_date` | number | Only set for upcoming invoices with proration | | ↳ `subtotal` | number | Total before discounts and taxes | | ↳ `subtotal_excluding_tax` | number | Subtotal excluding tax | | ↳ `tax` | number | Total tax amount | | ↳ `test_clock` | string | ID of the test clock | | ↳ `threshold_reason` | json | Details about why the invoice was created | | ↳ `total` | number | Total after discounts and taxes | | ↳ `total_discount_amounts` | array | Total discount amounts | | ↳ `total_excluding_tax` | number | Total excluding tax | | ↳ `total_tax_amounts` | array | Total tax amounts | | ↳ `transfer_data` | json | Data for creating transfers | | ↳ `webhooks_delivered_at` | number | Unix timestamp of webhooks delivery | | `metadata` | json | Invoice metadata | | ↳ `id` | string | Stripe unique identifier | | ↳ `status` | string | Current state of the resource | | ↳ `amount_due` | number | Amount remaining to be paid in smallest currency unit | | ↳ `currency` | string | Three-letter ISO currency code (lowercase) | ### Stripe Void Invoice [#stripe-void-invoice] Void an invoice #### Input [#input-27] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------------------------- | | `apiKey` | string | Yes | Stripe API key (secret key) | | `id` | string | Yes | Invoice ID (e.g., in\_1234567890) | #### Output [#output-27] | Parameter | Type | Description | | ------------------------------------ | ------- | -------------------------------------------------------------- | | `invoice` | object | The voided invoice object | | ↳ `id` | string | Unique identifier for the invoice | | ↳ `object` | string | String representing the object type (invoice) | | ↳ `account_country` | string | Country of the business associated with this invoice | | ↳ `account_name` | string | Name of the account associated with this invoice | | ↳ `account_tax_ids` | array | Account tax IDs | | ↳ `amount_due` | number | Final amount due in smallest currency unit | | ↳ `amount_paid` | number | Amount paid in smallest currency unit | | ↳ `amount_remaining` | number | Amount remaining in smallest currency unit | | ↳ `amount_shipping` | number | Shipping amount in smallest currency unit | | ↳ `application` | string | ID of the Connect application that created the invoice | | ↳ `application_fee_amount` | number | Application fee amount | | ↳ `attempt_count` | number | Number of payment attempts made | | ↳ `attempted` | boolean | Whether an attempt has been made to pay the invoice | | ↳ `auto_advance` | boolean | Controls whether Stripe performs automatic collection | | ↳ `automatic_tax` | json | Settings and results for automatic tax lookup | | ↳ `billing_reason` | string | Reason the invoice was created | | ↳ `charge` | string | ID of the latest charge for this invoice | | ↳ `collection_method` | string | Collection method (charge\_automatically or send\_invoice) | | ↳ `created` | number | Unix timestamp when the invoice was created | | ↳ `currency` | string | Three-letter ISO currency code (lowercase) | | ↳ `custom_fields` | array | Custom fields displayed on the invoice | | ↳ `customer` | string | ID of the customer who will be billed | | ↳ `customer_address` | object | Address object | | ↳ `line1` | string | Address line 1 (street address) | | ↳ `line2` | string | Address line 2 (apartment, suite, etc.) | | ↳ `city` | string | City name | | ↳ `state` | string | State, county, province, or region | | ↳ `postal_code` | string | ZIP or postal code | | ↳ `country` | string | Two-letter country code (ISO 3166-1 alpha-2) | | ↳ `customer_email` | string | Email of the customer | | ↳ `customer_name` | string | Name of the customer | | ↳ `customer_phone` | string | Phone number of the customer | | ↳ `customer_shipping` | object | Shipping information | | ↳ `name` | string | Recipient name | | ↳ `phone` | string | Recipient phone number | | ↳ `address` | object | Address object | | ↳ `line1` | string | Address line 1 (street address) | | ↳ `line2` | string | Address line 2 (apartment, suite, etc.) | | ↳ `city` | string | City name | | ↳ `state` | string | State, county, province, or region | | ↳ `postal_code` | string | ZIP or postal code | | ↳ `country` | string | Two-letter country code (ISO 3166-1 alpha-2) | | ↳ `customer_tax_exempt` | string | Tax exemption status of the customer | | ↳ `customer_tax_ids` | array | Customer tax IDs | | ↳ `default_payment_method` | string | ID of the default payment method | | ↳ `default_source` | string | ID of the default source | | ↳ `default_tax_rates` | array | Default tax rates | | ↳ `description` | string | Description displayed in Dashboard (memo) | | ↳ `discount` | json | Discount applied to the invoice | | ↳ `discounts` | array | Discounts applied to the invoice | | ↳ `due_date` | number | Unix timestamp when payment is due | | ↳ `effective_at` | number | When the invoice was effective | | ↳ `ending_balance` | number | Ending customer balance after invoice is finalized | | ↳ `footer` | string | Footer displayed on the invoice | | ↳ `from_invoice` | json | Details of the invoice that this invoice was created from | | ↳ `hosted_invoice_url` | string | URL for the hosted invoice page | | ↳ `invoice_pdf` | string | URL for the invoice PDF | | ↳ `issuer` | json | The connected account that issues the invoice | | ↳ `last_finalization_error` | json | Error encountered during finalization | | ↳ `latest_revision` | string | ID of the most recent revision | | ↳ `lines` | object | Invoice line items | | ↳ `id` | string | Unique identifier for the line item | | ↳ `object` | string | String representing the object type (line\_item) | | ↳ `amount` | number | Amount in smallest currency unit | | ↳ `amount_excluding_tax` | number | Amount excluding tax | | ↳ `currency` | string | Three-letter ISO currency code (lowercase) | | ↳ `description` | string | Description of the line item | | ↳ `discount_amounts` | array | Discount amounts applied | | ↳ `discountable` | boolean | Whether the line item is discountable | | ↳ `discounts` | array | Discounts applied to the line item | | ↳ `invoice` | string | ID of the invoice that contains this line item | | ↳ `livemode` | boolean | Whether object exists in live mode or test mode | | ↳ `metadata` | json | Set of key-value pairs for storing additional information | | ↳ `period` | json | Period this line item covers | | ↳ `price` | json | Price object for this line item | | ↳ `proration` | boolean | Whether this is a proration | | ↳ `proration_details` | json | Additional details for proration line items | | ↳ `quantity` | number | Quantity of the item | | ↳ `subscription` | string | ID of the subscription | | ↳ `subscription_item` | string | ID of the subscription item | | ↳ `tax_amounts` | array | Tax amounts for this line item | | ↳ `tax_rates` | array | Tax rates applied | | ↳ `type` | string | Type of line item (invoiceitem or subscription) | | ↳ `unit_amount_excluding_tax` | string | Unit amount excluding tax | | ↳ `livemode` | boolean | Whether object exists in live mode or test mode | | ↳ `metadata` | json | Set of key-value pairs for storing additional information | | ↳ `next_payment_attempt` | number | Unix timestamp of next payment attempt | | ↳ `number` | string | Human-readable invoice number | | ↳ `on_behalf_of` | string | Account on behalf of which the invoice was issued | | ↳ `paid` | boolean | Whether payment was successfully collected | | ↳ `paid_out_of_band` | boolean | Whether the invoice was paid out of band | | ↳ `payment_intent` | string | ID of the PaymentIntent associated with the invoice | | ↳ `payment_settings` | json | Configuration settings for payment collection | | ↳ `period_end` | number | End of the usage period | | ↳ `period_start` | number | Start of the usage period | | ↳ `post_payment_credit_notes_amount` | number | Total of all post-payment credit notes | | ↳ `pre_payment_credit_notes_amount` | number | Total of all pre-payment credit notes | | ↳ `quote` | string | ID of the quote this invoice was generated from | | ↳ `receipt_number` | string | Receipt number for the invoice | | ↳ `rendering` | json | Invoice rendering options | | ↳ `rendering_options` | json | Invoice rendering options (deprecated) | | ↳ `shipping_cost` | json | Shipping cost information | | ↳ `shipping_details` | object | Shipping information | | ↳ `name` | string | Recipient name | | ↳ `phone` | string | Recipient phone number | | ↳ `address` | object | Address object | | ↳ `line1` | string | Address line 1 (street address) | | ↳ `line2` | string | Address line 2 (apartment, suite, etc.) | | ↳ `city` | string | City name | | ↳ `state` | string | State, county, province, or region | | ↳ `postal_code` | string | ZIP or postal code | | ↳ `country` | string | Two-letter country code (ISO 3166-1 alpha-2) | | ↳ `starting_balance` | number | Starting customer balance before invoice | | ↳ `statement_descriptor` | string | Statement descriptor | | ↳ `status` | string | Status of the invoice (draft, open, paid, uncollectible, void) | | ↳ `status_transitions` | json | Timestamps at which the invoice status was updated | | ↳ `subscription` | string | ID of the subscription for this invoice | | ↳ `subscription_details` | json | Details about the subscription | | ↳ `subscription_proration_date` | number | Only set for upcoming invoices with proration | | ↳ `subtotal` | number | Total before discounts and taxes | | ↳ `subtotal_excluding_tax` | number | Subtotal excluding tax | | ↳ `tax` | number | Total tax amount | | ↳ `test_clock` | string | ID of the test clock | | ↳ `threshold_reason` | json | Details about why the invoice was created | | ↳ `total` | number | Total after discounts and taxes | | ↳ `total_discount_amounts` | array | Total discount amounts | | ↳ `total_excluding_tax` | number | Total excluding tax | | ↳ `total_tax_amounts` | array | Total tax amounts | | ↳ `transfer_data` | json | Data for creating transfers | | ↳ `webhooks_delivered_at` | number | Unix timestamp of webhooks delivery | | `metadata` | json | Invoice metadata | | ↳ `id` | string | Stripe unique identifier | | ↳ `status` | string | Current state of the resource | | ↳ `amount_due` | number | Amount remaining to be paid in smallest currency unit | | ↳ `currency` | string | Three-letter ISO currency code (lowercase) | ### Stripe Send Invoice [#stripe-send-invoice] Send an invoice to the customer #### Input [#input-28] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------------------------- | | `apiKey` | string | Yes | Stripe API key (secret key) | | `id` | string | Yes | Invoice ID (e.g., in\_1234567890) | #### Output [#output-28] | Parameter | Type | Description | | -------------- | ------ | ----------------------------------------------------- | | `invoice` | json | The sent invoice object | | `metadata` | json | Invoice metadata | | ↳ `id` | string | Stripe unique identifier | | ↳ `status` | string | Current state of the resource | | ↳ `amount_due` | number | Amount remaining to be paid in smallest currency unit | | ↳ `currency` | string | Three-letter ISO currency code (lowercase) | ### Stripe List Invoices [#stripe-list-invoices] List all invoices #### Input [#input-29] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ------------------------------------------------- | | `apiKey` | string | Yes | Stripe API key (secret key) | | `limit` | number | No | Number of results to return (default 10, max 100) | | `customer` | string | No | Filter by customer ID | | `status` | string | No | Filter by invoice status | #### Output [#output-29] | Parameter | Type | Description | | ------------ | ------- | ----------------------------------------- | | `invoices` | json | Array of invoice objects | | `metadata` | json | List metadata | | ↳ `count` | number | Number of items returned | | ↳ `has_more` | boolean | Whether more items exist beyond this page | ### Stripe Search Invoices [#stripe-search-invoices] Search for invoices using query syntax #### Input [#input-30] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------- | | `apiKey` | string | Yes | Stripe API key (secret key) | | `query` | string | Yes | Search query (e.g., "customer:'cus\_1234567890'") | | `limit` | number | No | Number of results to return (default 10, max 100) | #### Output [#output-30] | Parameter | Type | Description | | ------------ | ------- | ----------------------------------------- | | `invoices` | json | Array of matching invoice objects | | `metadata` | json | Search metadata | | ↳ `count` | number | Number of items returned | | ↳ `has_more` | boolean | Whether more items exist beyond this page | ### Stripe Create Charge [#stripe-create-charge] Create a new charge to process a payment #### Input [#input-31] | Parameter | Type | Required | Description | | ------------- | ------- | -------- | ------------------------------------------------------------ | | `apiKey` | string | Yes | Stripe API key (secret key) | | `amount` | number | Yes | Amount in cents (e.g., 2000 for $20.00) | | `currency` | string | Yes | Three-letter ISO currency code (e.g., usd, eur) | | `customer` | string | No | Customer ID to associate with this charge | | `source` | string | No | Payment source ID (e.g., card token or saved card ID) | | `description` | string | No | Description of the charge | | `metadata` | json | No | Set of key-value pairs for storing additional information | | `capture` | boolean | No | Whether to immediately capture the charge (defaults to true) | #### Output [#output-31] | Parameter | Type | Description | | ------------ | ------- | ----------------------------------------------------------------------- | | `charge` | json | The created Charge object | | `metadata` | json | Charge metadata including ID, status, amount, currency, and paid status | | ↳ `id` | string | Stripe unique identifier | | ↳ `status` | string | Current state of the resource | | ↳ `amount` | number | Amount in smallest currency unit (e.g., cents) | | ↳ `currency` | string | Three-letter ISO currency code (lowercase) | | ↳ `paid` | boolean | Whether payment has been received | ### Stripe Retrieve Charge [#stripe-retrieve-charge] Retrieve an existing charge by ID #### Input [#input-32] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------------- | | `apiKey` | string | Yes | Stripe API key (secret key) | | `id` | string | Yes | Charge ID (e.g., ch\_1234567890) | #### Output [#output-32] | Parameter | Type | Description | | ------------ | ------- | ----------------------------------------------------------------------- | | `charge` | json | The retrieved Charge object | | `metadata` | json | Charge metadata including ID, status, amount, currency, and paid status | | ↳ `id` | string | Stripe unique identifier | | ↳ `status` | string | Current state of the resource | | ↳ `amount` | number | Amount in smallest currency unit (e.g., cents) | | ↳ `currency` | string | Three-letter ISO currency code (lowercase) | | ↳ `paid` | boolean | Whether payment has been received | ### Stripe Update Charge [#stripe-update-charge] Update an existing charge #### Input [#input-33] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | -------------------------------- | | `apiKey` | string | Yes | Stripe API key (secret key) | | `id` | string | Yes | Charge ID (e.g., ch\_1234567890) | | `description` | string | No | Updated description | | `metadata` | json | No | Updated metadata | #### Output [#output-33] | Parameter | Type | Description | | ------------ | ------- | ----------------------------------------------------------------------- | | `charge` | json | The updated Charge object | | `metadata` | json | Charge metadata including ID, status, amount, currency, and paid status | | ↳ `id` | string | Stripe unique identifier | | ↳ `status` | string | Current state of the resource | | ↳ `amount` | number | Amount in smallest currency unit (e.g., cents) | | ↳ `currency` | string | Three-letter ISO currency code (lowercase) | | ↳ `paid` | boolean | Whether payment has been received | ### Stripe Capture Charge [#stripe-capture-charge] Capture an uncaptured charge #### Input [#input-34] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------------------------------- | | `apiKey` | string | Yes | Stripe API key (secret key) | | `id` | string | Yes | Charge ID (e.g., ch\_1234567890) | | `amount` | number | No | Amount to capture in cents (defaults to full amount) | #### Output [#output-34] | Parameter | Type | Description | | ------------ | ------- | ----------------------------------------------------------------------- | | `charge` | json | The captured Charge object | | `metadata` | json | Charge metadata including ID, status, amount, currency, and paid status | | ↳ `id` | string | Stripe unique identifier | | ↳ `status` | string | Current state of the resource | | ↳ `amount` | number | Amount in smallest currency unit (e.g., cents) | | ↳ `currency` | string | Three-letter ISO currency code (lowercase) | | ↳ `paid` | boolean | Whether payment has been received | ### Stripe List Charges [#stripe-list-charges] List all charges #### Input [#input-35] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | --------------------------------------------------- | | `apiKey` | string | Yes | Stripe API key (secret key) | | `limit` | number | No | Number of results to return (default 10, max 100) | | `customer` | string | No | Filter by customer ID | | `created` | json | No | Filter by creation date (e.g., \{"gt": 1633024800}) | #### Output [#output-35] | Parameter | Type | Description | | ------------ | ------- | ------------------------------------------- | | `charges` | json | Array of Charge objects | | `metadata` | json | List metadata including count and has\_more | | ↳ `count` | number | Number of items returned | | ↳ `has_more` | boolean | Whether more items exist beyond this page | ### Stripe Search Charges [#stripe-search-charges] Search for charges using query syntax #### Input [#input-36] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------------ | | `apiKey` | string | Yes | Stripe API key (secret key) | | `query` | string | Yes | Search query (e.g., "status:'succeeded' AND currency:'usd'") | | `limit` | number | No | Number of results to return (default 10, max 100) | #### Output [#output-36] | Parameter | Type | Description | | ------------ | ------- | --------------------------------------------- | | `charges` | json | Array of matching Charge objects | | `metadata` | json | Search metadata including count and has\_more | | ↳ `count` | number | Number of items returned | | ↳ `has_more` | boolean | Whether more items exist beyond this page | ### Stripe Create Product [#stripe-create-product] Create a new product object #### Input [#input-37] | Parameter | Type | Required | Description | | ------------- | ------- | -------- | ----------------------------------- | | `apiKey` | string | Yes | Stripe API key (secret key) | | `name` | string | Yes | Product name | | `description` | string | No | Product description | | `active` | boolean | No | Whether the product is active | | `images` | json | No | Array of image URLs for the product | | `metadata` | json | No | Set of key-value pairs | #### Output [#output-37] | Parameter | Type | Description | | ---------- | ------- | ---------------------------------------- | | `product` | json | The created product object | | `metadata` | json | Product metadata | | ↳ `id` | string | Stripe unique identifier | | ↳ `name` | string | Display name | | ↳ `active` | boolean | Whether the resource is currently active | ### Stripe Retrieve Product [#stripe-retrieve-product] Retrieve an existing product by ID #### Input [#input-38] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------------------------------- | | `apiKey` | string | Yes | Stripe API key (secret key) | | `id` | string | Yes | Product ID (e.g., prod\_1234567890) | #### Output [#output-38] | Parameter | Type | Description | | ---------- | ------- | ---------------------------------------- | | `product` | json | The retrieved product object | | `metadata` | json | Product metadata | | ↳ `id` | string | Stripe unique identifier | | ↳ `name` | string | Display name | | ↳ `active` | boolean | Whether the resource is currently active | ### Stripe Update Product [#stripe-update-product] Update an existing product #### Input [#input-39] | Parameter | Type | Required | Description | | ------------- | ------- | -------- | ----------------------------------- | | `apiKey` | string | Yes | Stripe API key (secret key) | | `id` | string | Yes | Product ID (e.g., prod\_1234567890) | | `name` | string | No | Updated product name | | `description` | string | No | Updated product description | | `active` | boolean | No | Updated active status | | `images` | json | No | Updated array of image URLs | | `metadata` | json | No | Updated metadata | #### Output [#output-39] | Parameter | Type | Description | | ---------- | ------- | ---------------------------------------- | | `product` | json | The updated product object | | `metadata` | json | Product metadata | | ↳ `id` | string | Stripe unique identifier | | ↳ `name` | string | Display name | | ↳ `active` | boolean | Whether the resource is currently active | ### Stripe Delete Product [#stripe-delete-product] Permanently delete a product #### Input [#input-40] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------------------------------- | | `apiKey` | string | Yes | Stripe API key (secret key) | | `id` | string | Yes | Product ID (e.g., prod\_1234567890) | #### Output [#output-40] | Parameter | Type | Description | | --------- | ------- | ------------------------------- | | `deleted` | boolean | Whether the product was deleted | | `id` | string | The ID of the deleted product | ### Stripe List Products [#stripe-list-products] List all products #### Input [#input-41] | Parameter | Type | Required | Description | | --------- | ------- | -------- | ------------------------------------------------- | | `apiKey` | string | Yes | Stripe API key (secret key) | | `limit` | number | No | Number of results to return (default 10, max 100) | | `active` | boolean | No | Filter by active status | #### Output [#output-41] | Parameter | Type | Description | | ------------ | ------- | ----------------------------------------- | | `products` | json | Array of product objects | | `metadata` | json | List metadata | | ↳ `count` | number | Number of items returned | | ↳ `has_more` | boolean | Whether more items exist beyond this page | ### Stripe Search Products [#stripe-search-products] Search for products using query syntax #### Input [#input-42] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------- | | `apiKey` | string | Yes | Stripe API key (secret key) | | `query` | string | Yes | Search query (e.g., "name:'shirt'") | | `limit` | number | No | Number of results to return (default 10, max 100) | #### Output [#output-42] | Parameter | Type | Description | | ------------ | ------- | ----------------------------------------- | | `products` | json | Array of matching product objects | | `metadata` | json | Search metadata | | ↳ `count` | number | Number of items returned | | ↳ `has_more` | boolean | Whether more items exist beyond this page | ### Stripe Create Price [#stripe-create-price] Create a new price for a product #### Input [#input-43] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | --------------------------------------------------------------- | | `apiKey` | string | Yes | Stripe API key (secret key) | | `product` | string | Yes | Product ID (e.g., prod\_1234567890) | | `currency` | string | Yes | Three-letter ISO currency code (e.g., usd, eur) | | `unit_amount` | number | No | Amount in cents (e.g., 1000 for $10.00) | | `recurring` | json | No | Recurring billing configuration (interval: day/week/month/year) | | `metadata` | json | No | Set of key-value pairs | | `billing_scheme` | string | No | Billing scheme (per\_unit or tiered) | #### Output [#output-43] | Parameter | Type | Description | | --------------- | ------ | ---------------------------------------------- | | `price` | json | The created price object | | `metadata` | json | Price metadata | | ↳ `id` | string | Stripe unique identifier | | ↳ `product` | string | Associated product ID | | ↳ `unit_amount` | number | Amount in smallest currency unit (e.g., cents) | | ↳ `currency` | string | Three-letter ISO currency code (lowercase) | ### Stripe Retrieve Price [#stripe-retrieve-price] Retrieve an existing price by ID #### Input [#input-44] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------------- | | `apiKey` | string | Yes | Stripe API key (secret key) | | `id` | string | Yes | Price ID (e.g., price\_1234567890) | #### Output [#output-44] | Parameter | Type | Description | | --------------- | ------ | ---------------------------------------------- | | `price` | json | The retrieved price object | | `metadata` | json | Price metadata | | ↳ `id` | string | Stripe unique identifier | | ↳ `product` | string | Associated product ID | | ↳ `unit_amount` | number | Amount in smallest currency unit (e.g., cents) | | ↳ `currency` | string | Three-letter ISO currency code (lowercase) | ### Stripe Update Price [#stripe-update-price] Update an existing price #### Input [#input-45] | Parameter | Type | Required | Description | | ---------- | ------- | -------- | ---------------------------------- | | `apiKey` | string | Yes | Stripe API key (secret key) | | `id` | string | Yes | Price ID (e.g., price\_1234567890) | | `active` | boolean | No | Whether the price is active | | `metadata` | json | No | Updated metadata | #### Output [#output-45] | Parameter | Type | Description | | --------------- | ------ | ---------------------------------------------- | | `price` | json | The updated price object | | `metadata` | json | Price metadata | | ↳ `id` | string | Stripe unique identifier | | ↳ `product` | string | Associated product ID | | ↳ `unit_amount` | number | Amount in smallest currency unit (e.g., cents) | | ↳ `currency` | string | Three-letter ISO currency code (lowercase) | ### Stripe List Prices [#stripe-list-prices] List all prices #### Input [#input-46] | Parameter | Type | Required | Description | | --------- | ------- | -------- | ------------------------------------------------- | | `apiKey` | string | Yes | Stripe API key (secret key) | | `limit` | number | No | Number of results to return (default 10, max 100) | | `product` | string | No | Filter by product ID | | `active` | boolean | No | Filter by active status | #### Output [#output-46] | Parameter | Type | Description | | ------------ | ------- | ----------------------------------------- | | `prices` | json | Array of price objects | | `metadata` | json | List metadata | | ↳ `count` | number | Number of items returned | | ↳ `has_more` | boolean | Whether more items exist beyond this page | ### Stripe Search Prices [#stripe-search-prices] Search for prices using query syntax #### Input [#input-47] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------- | | `apiKey` | string | Yes | Stripe API key (secret key) | | `query` | string | Yes | Search query (e.g., "active:'true' AND currency:'usd'") | | `limit` | number | No | Number of results to return (default 10, max 100) | #### Output [#output-47] | Parameter | Type | Description | | ------------ | ------- | ----------------------------------------- | | `prices` | json | Array of matching price objects | | `metadata` | json | Search metadata | | ↳ `count` | number | Number of items returned | | ↳ `has_more` | boolean | Whether more items exist beyond this page | ### Stripe Retrieve Event [#stripe-retrieve-event] Retrieve an existing Event by ID #### Input [#input-48] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------------- | | `apiKey` | string | Yes | Stripe API key (secret key) | | `id` | string | Yes | Event ID (e.g., evt\_1234567890) | #### Output [#output-48] | Parameter | Type | Description | | ----------- | ------ | -------------------------------------------------------- | | `event` | json | The retrieved Event object | | `metadata` | json | Event metadata including ID, type, and created timestamp | | ↳ `id` | string | Stripe unique identifier | | ↳ `type` | string | Event type identifier | | ↳ `created` | number | Unix timestamp of creation | ### Stripe List Events [#stripe-list-events] List all Events #### Input [#input-49] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------------------------------- | | `apiKey` | string | Yes | Stripe API key (secret key) | | `limit` | number | No | Number of results to return (default 10, max 100) | | `type` | string | No | Filter by event type (e.g., payment\_intent.created) | | `created` | json | No | Filter by creation date (e.g., \{"gt": 1633024800}) | #### Output [#output-49] | Parameter | Type | Description | | ------------ | ------- | ------------------------------------------- | | `events` | json | Array of Event objects | | `metadata` | json | List metadata including count and has\_more | | ↳ `count` | number | Number of items returned | | ↳ `has_more` | boolean | Whether more items exist beyond this page | ## Triggers [#triggers] A **Trigger** is a block that starts a workflow when an event happens in this service. ### Stripe Webhook [#stripe-webhook] Triggers when Stripe events occur (payments, subscriptions, invoices, etc.) #### Configuration [#configuration] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | --------------------------------------------------------------------------------------- | | `eventTypes` | string | No | Select specific Stripe events to filter. Leave empty to receive all events from Stripe. | | `webhookSecret` | string | No | Your webhook signing secret from Stripe Dashboard. Used to verify webhook authenticity. | #### Output [#output-50] | Parameter | Type | Description | | ------------------ | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `id` | string | Unique identifier for the event | | `type` | string | Event type (e.g., payment\_intent.succeeded, customer.created, invoice.paid) | | `object` | string | Always "event" | | `api_version` | string | Stripe API version used to render the event | | `created` | number | Unix timestamp when the event was created | | `data` | json | Event data containing the affected Stripe object. Structure varies by event type - access via data.object for the resource (PaymentIntent, Customer, Invoice, etc.) | | `livemode` | boolean | Whether this event occurred in live mode (true) or test mode (false) | | `pending_webhooks` | number | Number of webhooks yet to be delivered for this event | | `request` | json | Information about the API request that triggered this event (id, idempotency\_key) | --- # Notion Internal Integrations (/en/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. `studio-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. Studio 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 Studio 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 Studio [#adding-the-internal-integration-to-studio] Open **Integrations** from your workspace sidebar Search for "Notion" and open it, then click **Add to Studio** 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**. Studio 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. --- # Polymarket (/en/integrations/polymarket) {/* MANUAL-CONTENT-START:intro */} Use [Polymarket](https://polymarket.com) in Studio 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 | --- # YouTube (/en/integrations/youtube) {/* MANUAL-CONTENT-START:intro */} [YouTube](https://www.youtube.com/) is the world's largest video sharing platform, hosting billions of videos and serving over 2 billion logged-in monthly users. With YouTube's extensive API capabilities, you can: * **Search content**: Find relevant videos across YouTube's vast library using specific keywords, filters, and parameters * **Access metadata**: Retrieve detailed information about videos including titles, descriptions, view counts, and engagement metrics * **Analyze trends**: Identify popular content and trending topics within specific categories or regions * **Extract insights**: Gather data about audience preferences, content performance, and engagement patterns In Seeyu Agent Studio, the YouTube integration enables your agents to programmatically search and analyze YouTube content as part of their workflows. This allows for powerful automation scenarios that require up-to-date video information. Your agents can search for instructional videos, research content trends, gather information from educational channels, or monitor specific creators for new uploads. This integration bridges the gap between your AI workflows and the world's largest video repository, enabling more sophisticated and content-aware automations. By connecting Seeyu Agent Studio with YouTube, you can create agents that stay current with the latest information, provide more accurate responses, and deliver more value to users - all without requiring manual intervention or custom code. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate YouTube into the workflow. Can search for videos, get trending videos, get video details, get video categories, get channel information, get all videos from a channel, get channel playlists, get playlist items, and get video comments. ## Actions [#actions] ### YouTube Channel Info [#youtube-channel-info] Get detailed information about a YouTube channel including statistics, branding, and content details. #### Input [#input] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | --------------------------------------------------------------------------------------------- | | `channelId` | string | No | YouTube channel ID starting with "UC" (24-character string, use either channelId or username) | | `username` | string | No | YouTube channel username (use either channelId or username) | | `apiKey` | string | Yes | YouTube API Key | #### Output [#output] | Parameter | Type | Description | | ----------------------- | ------- | --------------------------------------------------------------------- | | `channelId` | string | YouTube channel ID | | `title` | string | Channel name | | `description` | string | Channel description | | `subscriberCount` | number | Number of subscribers (0 if hidden) | | `videoCount` | number | Number of public videos | | `viewCount` | number | Total channel views | | `publishedAt` | string | Channel creation date | | `thumbnail` | string | Channel thumbnail/avatar URL | | `customUrl` | string | Channel custom URL (handle) | | `country` | string | Country the channel is associated with | | `uploadsPlaylistId` | string | Playlist ID containing all channel uploads (use with playlist\_items) | | `bannerImageUrl` | string | Channel banner image URL | | `hiddenSubscriberCount` | boolean | Whether the subscriber count is hidden | ### YouTube Channel Playlists [#youtube-channel-playlists] Get all public playlists from a specific YouTube channel. #### Input [#input-1] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | --------------------------------------------------------------------------------- | | `channelId` | string | Yes | YouTube channel ID starting with "UC" (24-character string) to get playlists from | | `maxResults` | number | No | Maximum number of playlists to return (1-50) | | `pageToken` | string | No | Page token for pagination (from previous response nextPageToken) | | `apiKey` | string | Yes | YouTube API Key | #### Output [#output-1] | Parameter | Type | Description | | ---------------- | ------ | -------------------------------------------- | | `items` | array | Array of playlists from the channel | | ↳ `playlistId` | string | YouTube playlist ID | | ↳ `title` | string | Playlist title | | ↳ `description` | string | Playlist description | | ↳ `thumbnail` | string | Playlist thumbnail URL | | ↳ `itemCount` | number | Number of videos in playlist | | ↳ `publishedAt` | string | Playlist creation date | | ↳ `channelTitle` | string | Channel name | | `totalResults` | number | Total number of playlists in the channel | | `nextPageToken` | string | Token for accessing the next page of results | ### YouTube Channel Videos [#youtube-channel-videos] Search for videos from a specific YouTube channel with sorting options. For complete channel video list, use channel\_info to get uploadsPlaylistId, then use playlist\_items. #### Input [#input-2] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | --------------------------------------------------------------------------------------- | | `channelId` | string | Yes | YouTube channel ID starting with "UC" (24-character string) to get videos from | | `maxResults` | number | No | Maximum number of videos to return (1-50) | | `order` | string | No | Sort order: "date" (newest first, default), "rating", "relevance", "title", "viewCount" | | `pageToken` | string | No | Page token for pagination (from previous response nextPageToken) | | `apiKey` | string | Yes | YouTube API Key | #### Output [#output-2] | Parameter | Type | Description | | ---------------- | ------ | -------------------------------------------- | | `items` | array | Array of videos from the channel | | ↳ `videoId` | string | YouTube video ID | | ↳ `title` | string | Video title | | ↳ `description` | string | Video description | | ↳ `thumbnail` | string | Video thumbnail URL | | ↳ `publishedAt` | string | Video publish date | | ↳ `channelTitle` | string | Channel name | | `totalResults` | number | Total number of videos in the channel | | `nextPageToken` | string | Token for accessing the next page of results | ### YouTube Video Comments [#youtube-video-comments] Get top-level comments from a YouTube video with author details and engagement. #### Input [#input-3] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ----------------------------------------------------------------------------- | | `videoId` | string | Yes | YouTube video ID (11-character string, e.g., "dQw4w9WgXcQ") | | `maxResults` | number | No | Maximum number of comments to return (1-100) | | `order` | string | No | Order of comments: "time" (newest first) or "relevance" (most relevant first) | | `pageToken` | string | No | Page token for pagination (from previous response nextPageToken) | | `apiKey` | string | Yes | YouTube API Key | #### Output [#output-3] | Parameter | Type | Description | | ------------------------- | ------ | -------------------------------------------- | | `items` | array | Array of top-level comments from the video | | ↳ `commentId` | string | Comment ID | | ↳ `authorDisplayName` | string | Comment author display name | | ↳ `authorChannelUrl` | string | Comment author channel URL | | ↳ `authorProfileImageUrl` | string | Comment author profile image URL | | ↳ `textDisplay` | string | Comment text (HTML formatted) | | ↳ `textOriginal` | string | Comment text (plain text) | | ↳ `likeCount` | number | Number of likes on the comment | | ↳ `publishedAt` | string | When the comment was posted | | ↳ `updatedAt` | string | When the comment was last edited | | ↳ `replyCount` | number | Number of replies to this comment | | `totalResults` | number | Total number of comment threads available | | `nextPageToken` | string | Token for accessing the next page of results | ### YouTube Playlist Items [#youtube-playlist-items] Get videos from a YouTube playlist. Can be used with a channel uploads playlist to get all channel videos. #### Input [#input-4] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------- | | `playlistId` | string | Yes | YouTube playlist ID starting with "PL" or "UU" (34-character string). Use uploadsPlaylistId from channel\_info to get all channel videos. | | `maxResults` | number | No | Maximum number of videos to return (1-50) | | `pageToken` | string | No | Page token for pagination (from previous response nextPageToken) | | `apiKey` | string | Yes | YouTube API Key | #### Output [#output-4] | Parameter | Type | Description | | -------------------------- | ------ | -------------------------------------------- | | `items` | array | Array of videos in the playlist | | ↳ `videoId` | string | YouTube video ID | | ↳ `title` | string | Video title | | ↳ `description` | string | Video description | | ↳ `thumbnail` | string | Video thumbnail URL | | ↳ `publishedAt` | string | Date added to playlist | | ↳ `channelTitle` | string | Playlist owner channel name | | ↳ `position` | number | Position in playlist (0-indexed) | | ↳ `videoOwnerChannelId` | string | Channel ID of the video owner | | ↳ `videoOwnerChannelTitle` | string | Channel name of the video owner | | `totalResults` | number | Total number of items in playlist | | `nextPageToken` | string | Token for accessing the next page of results | ### YouTube Search [#youtube-search] Search for videos on YouTube using the YouTube Data API. Supports advanced filtering by channel, date range, duration, category, quality, captions, live streams, and more. #### Input [#input-5] | Parameter | Type | Required | Description | | ------------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------ | | `query` | string | Yes | Search query for YouTube videos | | `maxResults` | number | No | Maximum number of videos to return (1-50) | | `pageToken` | string | No | Page token for pagination (from previous response nextPageToken) | | `apiKey` | string | Yes | YouTube API Key | | `channelId` | string | No | Filter results to a specific YouTube channel ID starting with "UC" (24-character string) | | `publishedAfter` | string | No | Only return videos published after this date (RFC 3339 format: "2024-01-01T00:00:00Z") | | `publishedBefore` | string | No | Only return videos published before this date (RFC 3339 format: "2024-01-01T00:00:00Z") | | `videoDuration` | string | No | Filter by video length: "short" (\<4 min), "medium" (4-20 min), "long" (>20 min), "any" | | `order` | string | No | Sort results by: "date", "rating", "relevance" (default), "title", "videoCount", "viewCount" | | `videoCategoryId` | string | No | Filter by YouTube category ID (e.g., "10" for Music, "20" for Gaming). Use video\_categories to list IDs. | | `videoDefinition` | string | No | Filter by video quality: "high" (HD), "standard", "any" | | `videoCaption` | string | No | Filter by caption availability: "closedCaption" (has captions), "none" (no captions), "any" | | `eventType` | string | No | Filter by live broadcast status: "live" (currently live), "upcoming" (scheduled), "completed" (past streams) | | `regionCode` | string | No | Return results relevant to a specific region (ISO 3166-1 alpha-2 country code, e.g., "US", "GB") | | `relevanceLanguage` | string | No | Return results most relevant to a language (ISO 639-1 code, e.g., "en", "es") | | `safeSearch` | string | No | Content filtering level: "moderate" (default), "none", "strict" | #### Output [#output-5] | Parameter | Type | Description | | ------------------------ | ------ | ---------------------------------------------------- | | `items` | array | Array of YouTube videos matching the search query | | ↳ `videoId` | string | YouTube video ID | | ↳ `title` | string | Video title | | ↳ `description` | string | Video description | | ↳ `thumbnail` | string | Video thumbnail URL | | ↳ `channelId` | string | Channel ID that uploaded the video | | ↳ `channelTitle` | string | Channel name | | ↳ `publishedAt` | string | Video publish date | | ↳ `liveBroadcastContent` | string | Live broadcast status: "none", "live", or "upcoming" | | `totalResults` | number | Total number of search results available | | `nextPageToken` | string | Token for accessing the next page of results | ### YouTube Trending Videos [#youtube-trending-videos] Get the most popular/trending videos on YouTube. Can filter by region and video category. #### Input [#input-6] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------- | | `regionCode` | string | No | ISO 3166-1 alpha-2 country code to get trending videos for (e.g., "US", "GB", "JP"). Defaults to US. | | `videoCategoryId` | string | No | Filter by video category ID (e.g., "10" for Music, "20" for Gaming, "17" for Sports) | | `maxResults` | number | No | Maximum number of trending videos to return (1-50) | | `pageToken` | string | No | Page token for pagination (from previous response nextPageToken) | | `apiKey` | string | Yes | YouTube API Key | #### Output [#output-6] | Parameter | Type | Description | | ---------------- | ------ | -------------------------------------------- | | `items` | array | Array of trending videos | | ↳ `videoId` | string | YouTube video ID | | ↳ `title` | string | Video title | | ↳ `description` | string | Video description | | ↳ `thumbnail` | string | Video thumbnail URL | | ↳ `channelId` | string | Channel ID | | ↳ `channelTitle` | string | Channel name | | ↳ `publishedAt` | string | Video publish date | | ↳ `viewCount` | number | Number of views | | ↳ `likeCount` | number | Number of likes | | ↳ `commentCount` | number | Number of comments | | ↳ `duration` | string | Video duration in ISO 8601 format | | `totalResults` | number | Total number of trending videos available | | `nextPageToken` | string | Token for accessing the next page of results | ### YouTube Video Categories [#youtube-video-categories] Get a list of video categories available on YouTube. Use this to discover valid category IDs for filtering search and trending results. #### Input [#input-7] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ----------------------------------------------------------------------------------------------- | | `regionCode` | string | No | ISO 3166-1 alpha-2 country code to get categories for (e.g., "US", "GB", "JP"). Defaults to US. | | `hl` | string | No | Language for category titles (ISO 639-1 code, e.g., "en", "es", "fr"). Defaults to English. | | `apiKey` | string | Yes | YouTube API Key | #### Output [#output-7] | Parameter | Type | Description | | -------------- | ------- | -------------------------------------------------------------------- | | `items` | array | Array of video categories available in the specified region | | ↳ `categoryId` | string | Category ID to use in search/trending filters (e.g., "10" for Music) | | ↳ `title` | string | Human-readable category name | | ↳ `assignable` | boolean | Whether videos can be tagged with this category | | `totalResults` | number | Total number of categories available | ### YouTube Video Details [#youtube-video-details] Get detailed information about a specific YouTube video including statistics, content details, live streaming info, and metadata. #### Input [#input-8] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------------------------------------------------------- | | `videoId` | string | Yes | YouTube video ID (11-character string, e.g., "dQw4w9WgXcQ") | | `apiKey` | string | Yes | YouTube API Key | #### Output [#output-8] | Parameter | Type | Description | | ---------------------- | ------- | -------------------------------------------------------------------- | | `videoId` | string | YouTube video ID | | `title` | string | Video title | | `description` | string | Video description | | `channelId` | string | Channel ID | | `channelTitle` | string | Channel name | | `publishedAt` | string | Published date and time | | `duration` | string | Video duration in ISO 8601 format (e.g., "PT4M13S" for 4 min 13 sec) | | `viewCount` | number | Number of views | | `likeCount` | number | Number of likes | | `commentCount` | number | Number of comments | | `favoriteCount` | number | Number of times added to favorites | | `thumbnail` | string | Video thumbnail URL | | `tags` | array | Video tags | | `categoryId` | string | YouTube video category ID | | `definition` | string | Video definition: "hd" or "sd" | | `caption` | string | Whether captions are available: "true" or "false" | | `licensedContent` | boolean | Whether the video is licensed content | | `privacyStatus` | string | Video privacy status: "public", "private", or "unlisted" | | `liveBroadcastContent` | string | Live broadcast status: "live", "upcoming", or "none" | | `defaultLanguage` | string | Default language of the video metadata | | `defaultAudioLanguage` | string | Default audio language of the video | | `isLiveContent` | boolean | Whether this video is or was a live stream | | `scheduledStartTime` | string | Scheduled start time for upcoming live streams (ISO 8601) | | `actualStartTime` | string | When the live stream actually started (ISO 8601) | | `actualEndTime` | string | When the live stream ended (ISO 8601) | | `concurrentViewers` | number | Current number of viewers (only for active live streams) | | `activeLiveChatId` | string | Live chat ID for the stream (only for active live streams) | --- # Obsidian (/en/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 Studio:** 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 | --- # Enrich (/en/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 Seeyu Agent Studio 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 Seeyu Agent Studio'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 | --- # DocuSign (/en/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 | --- # ClickUp (/en/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 Studio, 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 Studio, 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) | --- # Redis (/en/integrations/redis) {/* MANUAL-CONTENT-START:intro */} Use [Redis](https://redis.io/) in Studio 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) | --- # Calendly (/en/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 Seeyu Agent Studio 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, Seeyu Agent Studio agents can automatically trigger corresponding workflows—such as sending reminders, updating CRMs, or notifying participants. * **Integrate easily using webhooks**: Set up Seeyu Agent Studio 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 Seeyu Agent Studio 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) | --- # Microsoft Excel (/en/integrations/microsoft_excel) {/* MANUAL-CONTENT-START:intro */} Use [Microsoft Excel](https://www.microsoft.com/en-us/microsoft-365/excel) in Studio 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. Can read and write data in specific sheets. ## Actions [#actions] ### Read from Microsoft Excel V2 [#read-from-microsoft-excel-v2] Read data from a specific sheet in a Microsoft Excel spreadsheet #### Input [#input] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------ | | `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 personal OneDrive. | | `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] | Parameter | Type | Description | | ------------------ | ------ | ----------------------------------------- | | `sheetName` | string | Name of the sheet that was read | | `range` | string | The range that was read | | `values` | array | Array of rows containing cell values | | `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-1] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | ------------------------------------------------------------------------------------------------------------------ | | `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 personal OneDrive. | | `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 | 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 | 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-2] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------ | | `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 personal OneDrive. | | `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-2] | 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-3] | Parameter | Type | Required | Description | | --------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------ | | `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 personal OneDrive. | | `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). | | `fontName` | string | No | Font name (e.g., "Calibri"). | #### Output [#output-3] | 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 | | ↳ `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-4] | Parameter | Type | Required | Description | | --------------- | ------- | -------- | --------------------------------------------------------------------------------------------------------------------------- | | `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 personal OneDrive. | | `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-4] | Parameter | Type | Description | | ------------------ | ------- | ---------------------------------- | | `table` | object | Details of the newly created table | | ↳ `id` | string | The unique ID of the table | | ↳ `name` | string | The name of the table | | ↳ `showHeaders` | boolean | Whether the header row is shown | | ↳ `showTotals` | boolean | Whether the totals row is shown | | ↳ `style` | string | The table style name | | `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-5] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------ | | `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 personal OneDrive. | | `worksheetName` | string | Yes | The name of the worksheet to delete (e.g., "Sheet1", "Old Data") | #### Output [#output-5] | 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 a column in a Microsoft Excel worksheet #### Input [#input-6] | Parameter | Type | Required | Description | | --------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------ | | `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 personal OneDrive. | | `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 | Yes | The zero-based column index within the range or table to sort on (0 = first column). | | `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-6] | 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 column index that was sorted on | | `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 | --- # Lambda (/en/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 Studio, 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 | --- # Enrow (/en/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" | --- # Hunter.io (/en/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@) | --- # TinyFish (/en/integrations/tinyfish) {/* MANUAL-CONTENT-START:intro */} [TinyFish](https://www.tinyfish.ai/) is web infrastructure for AI agents. Instead of maintaining a scraper per site, you give a TinyFish web agent a natural-language goal and a starting URL, and it drives a real browser — clicking, typing, paginating, logging in — until the goal is met, then returns what it found as structured JSON. TinyFish exposes three surfaces through this block: * **Agent** — natural-language browser automation on live websites. Charged per step from a prepaid wallet. * **Search** — ranked web results with titles, snippets, and URLs. Free. * **Fetch** — up to 10 URLs at a time rendered and extracted as clean markdown, HTML, or a JSON document tree. Free. With TinyFish in Studio, you can: * **Automate any site, API or not**: Log into vendor portals, legacy ERPs, and internal tools that never shipped an API, and pull the data out. * **Get typed results, not scraped HTML**: Supply a JSON Schema in **Output Schema** and TinyFish holds the agent to it, re-prompting on mismatch and reporting every field that did not match in `schemaValidation`. * **Survive bot detection**: Switch **Browser Engine** to `stealth` for anti-detection, and enable the Tetra proxy with a country when the page is geo-restricted. * **Stay logged in between runs**: Enable **Use Browser Profile** to start a run from a Browser Context Profile — saved browser state you log into once on TinyFish. **List Browser Profiles** returns the ids to choose from; leaving the id empty uses your default profile. Pair it with the vault so an expired session can be repaired. * **Log in safely**: Connect a password manager to TinyFish's vault, then enable **Use Vault Credentials** and scope a run to specific credential URIs. **List Vault Items** returns those URIs as display-safe metadata — labels, domains, field names — so credentials never travel through the workflow. * **Run work that outlives a step**: **Start Agent Run** queues an automation and returns a run ID immediately; **Get Run**, **Cancel Run**, and **List Runs** track it afterwards, and a webhook URL can notify you on completion. * **Read the live web cheaply**: Pair **Search** and **Fetch URLs** to gather current sources before an agent writes or answers. ## Choosing an operation [#choosing-an-operation] | You want to… | Use | | ------------------------------------------------ | ------------------------------------- | | Get an answer back in the same workflow step | **Run Agent** | | Kick off a long automation and check on it later | **Start Agent Run**, then **Get Run** | | Stop a queued or in-flight automation | **Cancel Run** | | Find runs you did not record the ID for | **List Runs** | | Get ranked web results for a query | **Search** | | Read specific pages as clean text | **Fetch URLs** | | Find the credential URI to scope a run to | **List Vault Items** | ## Writing a good goal [#writing-a-good-goal] The goal is handed to the agent's model verbatim, so it behaves like a prompt. Name the destination, the data, and the stopping condition — "open the pricing page and collect every plan name and monthly price" beats "get pricing". Start the run as close to the target page as you can: every navigation the URL saves is a step you are not billed for. Use **Agent Mode** `strict` when the run is a test that should fail loudly rather than improvise. ## API key and hosted keys [#api-key-and-hosted-keys] On Studio's hosted platform, **Run Agent**, **Search**, and **Fetch URLs** run on Studio's TinyFish key by default, metered to your workspace — Agent runs are billed per step, Search and Fetch are free. You can bring your own key in **Settings → API Keys** to bill TinyFish directly instead. **Start Agent Run**, **Get Run**, **Cancel Run**, **List Runs**, and **List Vault Items** always require your own key. An async run accrues its charge after the request returns, so there is nothing for Studio to meter at call time. ## Errors [#errors] A failed automation comes back as HTTP 200 with the failure inside the run's own `error` object, so read `status` rather than assuming success. The `category` tells you what to do: `AGENT_FAILURE` means the goal or the site needs attention, `SYSTEM_FAILURE` is worth retrying after `retryAfter` seconds, and `BILLING_FAILURE` means the TinyFish wallet is empty. All of that is on the block's `error` output, so a workflow can branch on it without parsing a message string. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate TinyFish into the workflow. Give a web agent a natural-language goal and let it drive a real browser on any site, queue and track long-running automations, search the web, and fetch pages as clean markdown. ## Actions [#actions] ### TinyFish Run Agent [#tinyfish-run-agent] Run a TinyFish web agent against a website and wait for it to finish, returning the structured result it extracted #### Input [#input] | Parameter | Type | Required | Description | | -------------------- | ------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------- | | `url` | string | Yes | Target website URL the agent starts on | | `goal` | string | Yes | Natural-language description of what to accomplish on the website | | `browserProfile` | string | No | Browser engine: "lite" (standard) or "stealth" (anti-detection). Not a Browser Context Profile — use useProfile for saved logins | | `agentMode` | string | No | Agent behavior: "default" or "strict" (fail fast) | | `maxSteps` | number | No | Maximum tool-call steps before the agent stops (1-500, default 150) | | `maxDurationSeconds` | number | No | Maximum wall-clock seconds before the agent stops. Unlimited by default, so a run stalled on a slow page is only bounded by the step cap | | `outputSchema` | json | No | JSON Schema draft-07 contract the run result must satisfy | | `proxyEnabled` | boolean | No | Route the run through TinyFish’s Tetra proxy | | `proxyCountryCode` | string | No | Proxy country: US, GB, CA, DE, FR, JP, or AU | | `useVault` | boolean | No | Let the run use credentials from the connected TinyFish vault | | `credentialItemIds` | string | No | Comma-separated vault credential URIs to scope the run to | | `useProfile` | boolean | No | Start the run from a saved Browser Context Profile, reusing the logged-in session stored in it | | `profileId` | string | No | Browser Context Profile to start from, such as "prof\_abc123". Requires useProfile; omit to use the account default | | `apiKey` | string | Yes | TinyFish API key | #### Output [#output] | Parameter | Type | Description | | -------------------- | ------- | ---------------------------------------------------------------------------------------------------------------------------- | | `runId` | string | Run identifier | | `status` | string | Final run status: COMPLETED or FAILED | | `startedAt` | string | ISO 8601 timestamp when the run started | | `finishedAt` | string | ISO 8601 timestamp when the run finished | | `numOfSteps` | number | Steps the agent took | | `result` | json | Structured data the agent extracted, null when the run failed | | `schemaValidation` | object | Validation of the result against the requested output schema | | ↳ `valid` | boolean | Whether the result matched the requested output schema | | ↳ `rePromptAttempts` | number | Number of schema-repair re-prompts TinyFish performed | | ↳ `errors` | array | Fields that did not match the requested schema | | ↳ `path` | string | Path to the failing field | | ↳ `expected` | string | Expected type or constraint | | ↳ `received` | string | Type actually returned | | ↳ `message` | string | Validation error message | | `error` | object | Why the run failed, null when it succeeded. Branch on category to decide whether to retry | | ↳ `code` | string | Machine-readable error code | | ↳ `message` | string | Why the run failed | | ↳ `category` | string | SYSTEM\_FAILURE (retry), AGENT\_FAILURE (fix the goal), BILLING\_FAILURE (add credits), or UNKNOWN | | ↳ `retryAfter` | number | Suggested retry delay in seconds, null when not retryable | | ↳ `helpUrl` | string | Troubleshooting documentation URL | | ↳ `helpMessage` | string | Human-readable guidance | | `profileHint` | object | Present when TinyFish believes a Browser Context Profile would fix this failed run, such as one that stopped at a login wall | | ↳ `message` | string | Why a Browser Context Profile would help this run | | ↳ `setupUrl` | string | Path on the TinyFish dashboard that sets up a profile for the blocked domain | | ↳ `reason` | string | auth\_wall (the run hit a login) or bot\_challenge (the site blocked automation) | ### TinyFish Start Agent Run [#tinyfish-start-agent-run] Queue a TinyFish web agent run and return its run ID immediately, without waiting for the automation to finish #### Input [#input-1] | Parameter | Type | Required | Description | | -------------------- | ------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------- | | `url` | string | Yes | Target website URL the agent starts on | | `goal` | string | Yes | Natural-language description of what to accomplish on the website | | `browserProfile` | string | No | Browser engine: "lite" (standard) or "stealth" (anti-detection). Not a Browser Context Profile — use useProfile for saved logins | | `agentMode` | string | No | Agent behavior: "default" or "strict" (fail fast) | | `maxSteps` | number | No | Maximum tool-call steps before the agent stops (1-500, default 150) | | `maxDurationSeconds` | number | No | Maximum wall-clock seconds before the agent stops. Unlimited by default, so a run stalled on a slow page is only bounded by the step cap | | `outputSchema` | json | No | JSON Schema draft-07 contract the run result must satisfy | | `proxyEnabled` | boolean | No | Route the run through TinyFish’s Tetra proxy | | `proxyCountryCode` | string | No | Proxy country: US, GB, CA, DE, FR, JP, or AU | | `useVault` | boolean | No | Let the run use credentials from the connected TinyFish vault | | `credentialItemIds` | string | No | Comma-separated vault credential URIs to scope the run to | | `useProfile` | boolean | No | Start the run from a saved Browser Context Profile, reusing the logged-in session stored in it | | `profileId` | string | No | Browser Context Profile to start from, such as "prof\_abc123". Requires useProfile; omit to use the account default | | `apiKey` | string | Yes | TinyFish API key | | `webhookUrl` | string | No | HTTPS URL notified when the run completes, fails, or is cancelled | #### Output [#output-1] | Parameter | Type | Description | | --------- | ------ | ------------------------------------------------------- | | `runId` | string | Identifier of the queued run, used to poll or cancel it | ### TinyFish Get Run [#tinyfish-get-run] Get the status, extracted result, and step history of a TinyFish automation run by its ID #### Input [#input-2] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------------- | | `runId` | string | Yes | Identifier of the run to look up | | `apiKey` | string | Yes | TinyFish API key | #### Output [#output-2] | Parameter | Type | Description | | -------------------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `runId` | string | Run identifier | | `status` | string | PENDING, RUNNING, COMPLETED, FAILED, or CANCELLED | | `goal` | string | Natural-language goal the run was given | | `createdAt` | string | ISO 8601 timestamp when the run was created | | `startedAt` | string | ISO 8601 timestamp when the run started executing | | `finishedAt` | string | ISO 8601 timestamp when the run finished | | `numOfSteps` | number | Steps taken, null while the run is still in progress | | `result` | json | Structured data the agent extracted, null until the run succeeds | | `schemaValidation` | object | Validation of the result against the requested output schema | | ↳ `valid` | boolean | Whether the result matched the requested output schema | | ↳ `rePromptAttempts` | number | Number of schema-repair re-prompts TinyFish performed | | ↳ `errors` | array | Fields that did not match the requested schema | | ↳ `path` | string | Path to the failing field | | ↳ `expected` | string | Expected type or constraint | | ↳ `received` | string | Type actually returned | | ↳ `message` | string | Validation error message | | `error` | object | Failure details, null while the run is pending or succeeded | | ↳ `code` | string | Machine-readable error code | | ↳ `message` | string | Why the run failed | | ↳ `category` | string | SYSTEM\_FAILURE (retry), AGENT\_FAILURE (fix the goal), BILLING\_FAILURE (add credits), or UNKNOWN | | ↳ `retryAfter` | number | Suggested retry delay in seconds, null when not retryable | | ↳ `helpUrl` | string | Troubleshooting documentation URL | | ↳ `helpMessage` | string | Human-readable guidance | | `streamingUrl` | string | Live browser view URL, available while the run is executing | | `browserConfig` | object | Proxy settings the run executed with | | ↳ `proxyEnabled` | boolean | Whether a proxy was used | | ↳ `proxyCountryCode` | string | Proxy country code | | `profileAttached` | boolean | Whether the run actually started from a Browser Context Profile, null when the API omits it — treat null as unknown rather than as false | | `profileId` | string | Browser Context Profile the run attached. Null covers both no profile and a payload that omitted the field, so read profileAttached alongside it rather than reading null as proof | | `profileHint` | object | Present when TinyFish believes a Browser Context Profile would fix this failed run | | ↳ `message` | string | Why a Browser Context Profile would help this run | | ↳ `setupUrl` | string | Path on the TinyFish dashboard that sets up a profile for the blocked domain | | ↳ `reason` | string | auth\_wall (the run hit a login) or bot\_challenge (the site blocked automation) | | `videoUrl` | string | Presigned recording URL, expires 15 minutes after it is issued | | `steps` | array | Steps the agent took during the run | | ↳ `id` | string | Step identifier | | ↳ `timestamp` | string | ISO 8601 timestamp of the step | | ↳ `status` | string | Status of the run at this step | | ↳ `action` | string | Action the agent took | | ↳ `duration` | string | Time the step took | ### TinyFish Cancel Run [#tinyfish-cancel-run] Cancel a queued or in-progress TinyFish automation run by its ID #### Input [#input-3] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------- | | `runId` | string | Yes | Identifier of the run to cancel | | `apiKey` | string | Yes | TinyFish API key | #### Output [#output-3] | Parameter | Type | Description | | ------------- | ------ | -------------------------------------------------------------------------------- | | `runId` | string | Run identifier | | `status` | string | Status after the call: CANCELLED, or the terminal status the run already reached | | `cancelledAt` | string | ISO 8601 timestamp of the cancellation, null when nothing was cancelled | | `message` | string | Context such as "Run already cancelled" or "Run already finished" | ### TinyFish List Runs [#tinyfish-list-runs] List TinyFish automation runs, optionally filtered by status, goal text, or creation date #### Input [#input-4] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ------------------------------------------------------------------------ | | `status` | string | No | Filter by run status: PENDING, RUNNING, COMPLETED, FAILED, or CANCELLED | | `goal` | string | No | Filter by goal text (case-insensitive partial match, max 500 characters) | | `createdAfter` | string | No | Only return runs created after this ISO 8601 timestamp | | `createdBefore` | string | No | Only return runs created before this ISO 8601 timestamp | | `sortDirection` | string | No | Sort by creation time: "desc" (newest first, default) or "asc" | | `limit` | number | No | Maximum runs to return (1-100, default 20) | | `cursor` | string | No | Pagination cursor returned by a previous call | | `apiKey` | string | Yes | TinyFish API key | #### Output [#output-4] | Parameter | Type | Description | | -------------------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `runs` | array | Runs matching the filters, newest first by default | | ↳ `runId` | string | Run identifier | | ↳ `status` | string | PENDING, RUNNING, COMPLETED, FAILED, or CANCELLED | | ↳ `goal` | string | Natural-language goal the run was given | | ↳ `createdAt` | string | ISO 8601 timestamp when the run was created | | ↳ `startedAt` | string | ISO 8601 timestamp when the run started executing | | ↳ `finishedAt` | string | ISO 8601 timestamp when the run finished | | ↳ `numOfSteps` | number | Steps taken, null while the run is still in progress | | ↳ `result` | json | Structured data the agent extracted, null until the run succeeds | | ↳ `schemaValidation` | object | Validation of the result against the requested output schema | | ↳ `valid` | boolean | Whether the result matched the requested output schema | | ↳ `rePromptAttempts` | number | Number of schema-repair re-prompts TinyFish performed | | ↳ `errors` | array | Fields that did not match the requested schema | | ↳ `path` | string | Path to the failing field | | ↳ `expected` | string | Expected type or constraint | | ↳ `received` | string | Type actually returned | | ↳ `message` | string | Validation error message | | ↳ `error` | object | Failure details, null while the run is pending or succeeded | | ↳ `code` | string | Machine-readable error code | | ↳ `message` | string | Why the run failed | | ↳ `category` | string | SYSTEM\_FAILURE (retry), AGENT\_FAILURE (fix the goal), BILLING\_FAILURE (add credits), or UNKNOWN | | ↳ `retryAfter` | number | Suggested retry delay in seconds, null when not retryable | | ↳ `helpUrl` | string | Troubleshooting documentation URL | | ↳ `helpMessage` | string | Human-readable guidance | | ↳ `streamingUrl` | string | Live browser view URL, available while the run is executing | | ↳ `browserConfig` | object | Proxy settings the run executed with | | ↳ `proxyEnabled` | boolean | Whether a proxy was used | | ↳ `proxyCountryCode` | string | Proxy country code | | ↳ `profileAttached` | boolean | Whether the run actually started from a Browser Context Profile, null when the API omits it — treat null as unknown rather than as false | | ↳ `profileId` | string | Browser Context Profile the run attached. Null covers both no profile and a payload that omitted the field, so read profileAttached alongside it rather than reading null as proof | | ↳ `profileHint` | object | Present when TinyFish believes a Browser Context Profile would fix this failed run | | ↳ `message` | string | Why a Browser Context Profile would help this run | | ↳ `setupUrl` | string | Path on the TinyFish dashboard that sets up a profile for the blocked domain | | ↳ `reason` | string | auth\_wall (the run hit a login) or bot\_challenge (the site blocked automation) | | `total` | number | Total runs matching the filters | | `nextCursor` | string | Cursor for the next page, null when there are no more results | | `hasMore` | boolean | Whether more results follow this page | ### TinyFish Search [#tinyfish-search] Search the web with TinyFish and get ranked results with titles, snippets, and URLs #### Input [#input-5] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ------------------------------------------------- | | `query` | string | Yes | Search query | | `location` | string | No | Country code for geo-targeted results, such as US | | `language` | string | No | Language code for the results, such as en | | `apiKey` | string | Yes | TinyFish API key | #### Output [#output-5] | Parameter | Type | Description | | -------------- | ------ | -------------------------- | | `query` | string | Query that was executed | | `results` | array | Ranked search results | | ↳ `position` | number | Rank in the result list | | ↳ `siteName` | string | Site the result came from | | ↳ `snippet` | string | Text snippet from the page | | ↳ `title` | string | Page title | | ↳ `url` | string | Result URL | | `totalResults` | number | Number of results returned | ### TinyFish Fetch [#tinyfish-fetch] Fetch up to 10 URLs with TinyFish, rendering JavaScript when needed, and return clean extracted content #### Input [#input-6] | Parameter | Type | Required | Description | | ------------ | ------- | -------- | ---------------------------------------------------------- | | `urls` | string | Yes | Comma-separated list of 1-10 URLs to fetch | | `format` | string | No | Extraction format: "markdown" (default), "html", or "json" | | `links` | boolean | No | Also return every outbound link found on each page | | `imageLinks` | boolean | No | Also return every image URL found on each page | | `apiKey` | string | Yes | TinyFish API key | #### Output [#output-6] | Parameter | Type | Description | | ----------------- | ------ | ---------------------------------------------------------------------------- | | `results` | array | Successfully fetched pages | | ↳ `url` | string | URL that was requested | | ↳ `finalUrl` | string | URL after redirects | | ↳ `title` | string | Page title | | ↳ `description` | string | Meta description | | ↳ `language` | string | Detected language code | | ↳ `format` | string | Format of the extracted content | | ↳ `text` | json | Extracted content — a string for markdown and html, a document tree for json | | ↳ `author` | string | Page author | | ↳ `publishedDate` | string | Published date | | ↳ `links` | array | Outbound links, only when links was requested | | ↳ `imageLinks` | array | Image URLs, only when image links were requested | | ↳ `latencyMs` | number | Fetch latency in ms | | `errors` | array | URLs that failed. A per-URL failure never fails the whole request | | ↳ `url` | string | URL that failed | | ↳ `error` | string | Why the fetch failed | ### TinyFish List Vault Items [#tinyfish-list-vault-items] List the credentials available from password managers connected to TinyFish, with the URIs an agent run can be scoped to #### Input [#input-7] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------- | | `apiKey` | string | Yes | TinyFish API key | #### Output [#output-7] | Parameter | Type | Description | | ----------------- | ------- | ------------------------------------------------------- | | `items` | array | Credentials available to automation runs | | ↳ `itemId` | string | Credential URI, used as a Vault Credential URI on a run | | ↳ `connectionId` | string | Identifier of the vault connection it came from | | ↳ `label` | string | Credential name, such as "Amazon Login" | | ↳ `vaultName` | string | Vault the credential lives in | | ↳ `domains` | array | Domains the credential applies to | | ↳ `fieldMetadata` | array | Fields the credential carries, without their values | | ↳ `fieldId` | string | Field identifier | | ↳ `label` | string | Field name | | ↳ `type` | string | STRING, CONCEALED, or OTP | | ↳ `hasTotp` | boolean | Whether the credential carries a TOTP secret | ### TinyFish List Browser Profiles [#tinyfish-list-browser-profiles] List the Browser Context Profiles saved on the TinyFish account, with the ids an agent run can start from to reuse a logged-in session #### Input [#input-8] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------- | | `apiKey` | string | Yes | TinyFish API key | #### Output [#output-8] | Parameter | Type | Description | | -------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------- | | `profiles` | array | Browser Context Profiles an agent run can start from | | ↳ `profileId` | string | Profile identifier, used as the Browser Profile ID on a run | | ↳ `name` | string | Profile name, such as "Salesforce Production" | | ↳ `proxyCountryCode` | string | Country the profile proxies through, null when it has no proxy | | ↳ `fingerprintSeed` | string | Seed for the browser fingerprint the profile replays, null when the API omits it | | ↳ `domainCount` | number | How many domains the profile holds saved state for, null when the API omits it. Zero means it was created but never logged into | | ↳ `createdAt` | string | ISO 8601 timestamp when the profile was created, null when the API omits it | | ↳ `updatedAt` | string | ISO 8601 timestamp when the profile was last saved, null when the API omits it | | ↳ `isDefault` | boolean | Whether runs with no Browser Profile ID use this one, null when the API omits it | --- # New Relic (/en/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. Studio'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 | --- # Windchill (/en/integrations/windchill) {/* MANUAL-CONTENT-START:intro */} [PTC Windchill](https://www.ptc.com/en/products/windchill) is the product lifecycle management system manufacturers use as the system of record for engineering data. Documents in Windchill are controlled objects: each one carries a number, a revision and iteration, a lifecycle state, folder placement, security labels, and a checkout status that decides who is allowed to change it right now. This integration talks to Windchill REST Services (WRS) 2.7 over OData — the query protocol Windchill exposes its data through — using a Basic-authenticated service account. Point it at a complete versioned service root — `https://your-host/Windchill/servlet/odata/v6` — and your agents can: * **Find and read documents**: list documents with an OData filter, sort order, field selection, page size, and a latest-version-only switch; fetch a single document by its object identifier (OID); and walk a document's structure through its usage links to see child documents with their versions and states. * **Create and update**: create one document or a batch of them in a container and optional folder, and patch editable attributes on one or many documents. Name, Number, and Organization are rejected here and have their own operation, because Windchill changes those through a separate action and refuses it while a document is checked out. * **Run the version and lifecycle cycle**: check documents out and back in with notes, undo a checkout, revise to the next revision, read the lifecycle states a document is actually allowed to move to, and transition it to one of them. * **Move files**: download a document's primary content, or a specific attachment by its OID, into a Studio file — and upload files as primary content or attachments. Studio handles Windchill's CSRF token and its multi-step upload handshake for you. Bulk actions are atomic on Windchill's side: PTC documents that if the action fails for any object in the collection, the entire action is rolled back and nothing changes. Two limits are worth knowing before you build. Windchill identifies everything by OID (`OR:wt.doc.WTDocument:48796581`), so most operations need an OID you got from a list or get call rather than a document number. And this integration supports Basic authentication only — Windchill deployments fronted by OAuth are not currently supported. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate PTC Windchill REST Services 2.7 document management into your workflow using Basic authentication. Read and update document metadata, perform version and lifecycle actions, and transfer primary content and attachments. Windchill OAuth deployments are not currently supported. ## Actions [#actions] ### Windchill List Documents [#windchill-list-documents] List documents with an OData query, sorting, and pagination #### Input [#input] | Parameter | Type | Required | Description | | --------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `baseUrl` | string | Yes | Complete WRS 2.7 versioned service root using Basic authentication, for example [https://host/Windchill/servlet/odata/v6](https://host/Windchill/servlet/odata/v6) | | `username` | string | Yes | Windchill service-account username | | `password` | string | Yes | Windchill service-account password | | `select` | string | No | Comma-separated normalized document properties to return | | `filter` | string | No | OData $filter expression | | `orderBy` | string | No | OData $orderby expression | | `top` | number | No | Maximum documents in the OData result set ($top), from 1 to 2000 | | `skip` | number | No | Documents to skip | | `count` | boolean | No | Ask Windchill to include the total matching count | | `latestVersion` | boolean | No | Return only the latest version of matching documents | | `nextLink` | string | No | Verified @odata.nextLink from a previous list response | #### Output [#output] | Parameter | Type | Description | | ------------------ | ------- | ------------------------------------------- | | `operation` | string | Windchill operation that was executed | | `documents` | array | Windchill documents | | ↳ `id` | string | Windchill object identifier | | ↳ `name` | string | Document name | | ↳ `number` | string | Document number | | ↳ `title` | string | Document title | | ↳ `description` | string | Document description | | ↳ `state` | string | Internal life cycle state value | | ↳ `stateDisplay` | string | Displayed life cycle state value | | ↳ `versionId` | string | Version identifier | | ↳ `revision` | string | Revision identifier | | ↳ `version` | string | Version and iteration | | ↳ `latest` | boolean | Whether this is the latest version | | ↳ `checkoutState` | string | Checkout state | | ↳ `folderName` | string | Folder name | | ↳ `folderLocation` | string | Folder path | | `pageInfo` | object | OData pagination information | | ↳ `count` | number | Number of items returned in this page | | ↳ `totalCount` | number | Total matching items | | ↳ `nextLink` | string | URL returned by Windchill for the next page | ### Windchill Get Document [#windchill-get-document] Get a WT.Document by OID #### Input [#input-1] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `baseUrl` | string | Yes | Complete WRS 2.7 versioned service root using Basic authentication, for example [https://host/Windchill/servlet/odata/v6](https://host/Windchill/servlet/odata/v6) | | `username` | string | Yes | Windchill service-account username | | `password` | string | Yes | Windchill service-account password | | `documentOid` | string | Yes | WT.Document OID, for example OR:wt.doc.WTDocument:48796581 | | `select` | string | No | Comma-separated normalized document properties to return | #### Output [#output-1] | Parameter | Type | Description | | ------------------ | ------- | ------------------------------------- | | `operation` | string | Windchill operation that was executed | | `document` | object | Windchill document | | ↳ `id` | string | Windchill object identifier | | ↳ `name` | string | Document name | | ↳ `number` | string | Document number | | ↳ `title` | string | Document title | | ↳ `description` | string | Document description | | ↳ `state` | string | Internal life cycle state value | | ↳ `stateDisplay` | string | Displayed life cycle state value | | ↳ `versionId` | string | Version identifier | | ↳ `revision` | string | Revision identifier | | ↳ `version` | string | Version and iteration | | ↳ `latest` | boolean | Whether this is the latest version | | ↳ `checkoutState` | string | Checkout state | | ↳ `folderName` | string | Folder name | | ↳ `folderLocation` | string | Folder path | ### Windchill Get Document Structure [#windchill-get-document-structure] Retrieve recursive document usage links and their parent and child documents #### Input [#input-2] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `baseUrl` | string | Yes | Complete WRS 2.7 versioned service root using Basic authentication, for example [https://host/Windchill/servlet/odata/v6](https://host/Windchill/servlet/odata/v6) | | `username` | string | Yes | Windchill service-account username | | `password` | string | Yes | Windchill service-account password | | `documentOid` | string | Yes | WT.Document OID, for example OR:wt.doc.WTDocument:48796581 | | `structureDepth` | number | No | Document structure expansion depth, from 1 to 3 | | `nextLink` | string | No | Verified @odata.nextLink from a previous structure response | #### Output [#output-2] | Parameter | Type | Description | | ------------------ | ------- | ---------------------------------------------------------------- | | `operation` | string | Windchill operation that was executed | | `structure` | array | Document usage links, including recursively expanded child links | | ↳ `id` | string | Document usage link OID | | ↳ `parent` | object | Parent document | | ↳ `id` | string | Windchill object identifier | | ↳ `name` | string | Document name | | ↳ `number` | string | Document number | | ↳ `title` | string | Document title | | ↳ `description` | string | Document description | | ↳ `state` | string | Internal life cycle state value | | ↳ `stateDisplay` | string | Displayed life cycle state value | | ↳ `versionId` | string | Version identifier | | ↳ `revision` | string | Revision identifier | | ↳ `version` | string | Version and iteration | | ↳ `latest` | boolean | Whether this is the latest version | | ↳ `checkoutState` | string | Checkout state | | ↳ `folderName` | string | Folder name | | ↳ `folderLocation` | string | Folder path | | ↳ `child` | object | Child document | | ↳ `id` | string | Windchill object identifier | | ↳ `name` | string | Document name | | ↳ `number` | string | Document number | | ↳ `title` | string | Document title | | ↳ `description` | string | Document description | | ↳ `state` | string | Internal life cycle state value | | ↳ `stateDisplay` | string | Displayed life cycle state value | | ↳ `versionId` | string | Version identifier | | ↳ `revision` | string | Revision identifier | | ↳ `version` | string | Version and iteration | | ↳ `latest` | boolean | Whether this is the latest version | | ↳ `checkoutState` | string | Checkout state | | ↳ `folderName` | string | Folder name | | ↳ `folderLocation` | string | Folder path | | ↳ `children` | array | Nested child usage links with the same recursive shape | | `pageInfo` | object | OData pagination information | | ↳ `count` | number | Number of items returned in this page | | ↳ `totalCount` | number | Total matching items | | ↳ `nextLink` | string | URL returned by Windchill for the next page | ### Windchill Get Valid State Transitions [#windchill-get-valid-state-transitions] Get lifecycle states a document can transition to from its current state #### Input [#input-3] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `baseUrl` | string | Yes | Complete WRS 2.7 versioned service root using Basic authentication, for example [https://host/Windchill/servlet/odata/v6](https://host/Windchill/servlet/odata/v6) | | `username` | string | Yes | Windchill service-account username | | `password` | string | Yes | Windchill service-account password | | `documentOid` | string | Yes | WT.Document OID, for example OR:wt.doc.WTDocument:48796581 | #### Output [#output-3] | Parameter | Type | Description | | ----------- | ------ | ------------------------------------- | | `operation` | string | Windchill operation that was executed | | `states` | array | Valid lifecycle transitions | | ↳ `value` | string | Internal state value | | ↳ `display` | string | Displayed state value | ### Windchill Get Primary Content [#windchill-get-primary-content] Get primary-content metadata for a document #### Input [#input-4] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `baseUrl` | string | Yes | Complete WRS 2.7 versioned service root using Basic authentication, for example [https://host/Windchill/servlet/odata/v6](https://host/Windchill/servlet/odata/v6) | | `username` | string | Yes | Windchill service-account username | | `password` | string | Yes | Windchill service-account password | | `documentOid` | string | Yes | WT.Document OID, for example OR:wt.doc.WTDocument:48796581 | #### Output [#output-4] | Parameter | Type | Description | | -------------------- | ------ | ------------------------------------- | | `operation` | string | Windchill operation that was executed | | `content` | object | Primary-content metadata | | ↳ `id` | string | Content object identifier | | ↳ `fileName` | string | Content file name | | ↳ `description` | string | Content description | | ↳ `format` | string | Windchill content format | | ↳ `mimeType` | string | Content MIME type | | ↳ `fileSize` | number | Content size in bytes | | ↳ `contentType` | string | Windchill OData content entity type | | ↳ `displayName` | string | Displayed content name | | ↳ `urlLocation` | string | URL-data location | | ↳ `externalLocation` | string | External-storage location | ### Windchill List Attachments [#windchill-list-attachments] List attachment metadata for a document #### Input [#input-5] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `baseUrl` | string | Yes | Complete WRS 2.7 versioned service root using Basic authentication, for example [https://host/Windchill/servlet/odata/v6](https://host/Windchill/servlet/odata/v6) | | `username` | string | Yes | Windchill service-account username | | `password` | string | Yes | Windchill service-account password | | `documentOid` | string | Yes | WT.Document OID, for example OR:wt.doc.WTDocument:48796581 | | `nextLink` | string | No | Verified @odata.nextLink from a previous attachment response | #### Output [#output-5] | Parameter | Type | Description | | -------------------- | ------ | ------------------------------------------- | | `operation` | string | Windchill operation that was executed | | `attachments` | array | Document attachments | | ↳ `id` | string | Content object identifier | | ↳ `fileName` | string | Content file name | | ↳ `description` | string | Content description | | ↳ `format` | string | Windchill content format | | ↳ `mimeType` | string | Content MIME type | | ↳ `fileSize` | number | Content size in bytes | | ↳ `contentType` | string | Windchill OData content entity type | | ↳ `displayName` | string | Displayed content name | | ↳ `urlLocation` | string | URL-data location | | ↳ `externalLocation` | string | External-storage location | | `pageInfo` | object | OData pagination information | | ↳ `count` | number | Number of items returned in this page | | ↳ `totalCount` | number | Total matching items | | ↳ `nextLink` | string | URL returned by Windchill for the next page | ### Windchill Create Document [#windchill-create-document] Create one WT.Document #### Input [#input-6] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `baseUrl` | string | Yes | Complete WRS 2.7 versioned service root using Basic authentication, for example [https://host/Windchill/servlet/odata/v6](https://host/Windchill/servlet/odata/v6) | | `username` | string | Yes | Windchill service-account username | | `password` | string | Yes | Windchill service-account password | | `name` | string | Yes | Document name | | `containerOid` | string | Yes | Container OID in which to create the document | | `number` | string | No | Optional document number when manual numbering is enabled | | `title` | string | No | Document title | | `description` | string | No | Document description | | `folderOid` | string | No | Optional folder OID for the new document | | `attributes` | json | No | Optional installed Windchill document attributes as a JSON object | #### Output [#output-6] | Parameter | Type | Description | | ------------------ | ------- | ------------------------------------------------------------- | | `operation` | string | Windchill operation that was executed | | `affectedIds` | array | Document identifiers affected by the operation | | `document` | object | Document returned by Windchill when the operation returns one | | ↳ `id` | string | Windchill object identifier | | ↳ `name` | string | Document name | | ↳ `number` | string | Document number | | ↳ `title` | string | Document title | | ↳ `description` | string | Document description | | ↳ `state` | string | Internal life cycle state value | | ↳ `stateDisplay` | string | Displayed life cycle state value | | ↳ `versionId` | string | Version identifier | | ↳ `revision` | string | Revision identifier | | ↳ `version` | string | Version and iteration | | ↳ `latest` | boolean | Whether this is the latest version | | ↳ `checkoutState` | string | Checkout state | | ↳ `folderName` | string | Folder name | | ↳ `folderLocation` | string | Folder path | ### Windchill Create Documents [#windchill-create-documents] Create several documents in one atomic Windchill request #### Input [#input-7] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `baseUrl` | string | Yes | Complete WRS 2.7 versioned service root using Basic authentication, for example [https://host/Windchill/servlet/odata/v6](https://host/Windchill/servlet/odata/v6) | | `username` | string | Yes | Windchill service-account username | | `password` | string | Yes | Windchill service-account password | | `documents` | array | Yes | Document inputs as a JSON array; each item requires name and containerOid | #### Output [#output-7] | Parameter | Type | Description | | ------------------ | ------- | --------------------------------------------------------------- | | `operation` | string | Windchill operation that was executed | | `affectedIds` | array | Document identifiers affected by the operation | | `documents` | array | Documents returned by Windchill when the operation returns them | | ↳ `id` | string | Windchill object identifier | | ↳ `name` | string | Document name | | ↳ `number` | string | Document number | | ↳ `title` | string | Document title | | ↳ `description` | string | Document description | | ↳ `state` | string | Internal life cycle state value | | ↳ `stateDisplay` | string | Displayed life cycle state value | | ↳ `versionId` | string | Version identifier | | ↳ `revision` | string | Revision identifier | | ↳ `version` | string | Version and iteration | | ↳ `latest` | boolean | Whether this is the latest version | | ↳ `checkoutState` | string | Checkout state | | ↳ `folderName` | string | Folder name | | ↳ `folderLocation` | string | Folder path | ### Windchill Update Document [#windchill-update-document] Update one document's editable attributes #### Input [#input-8] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `baseUrl` | string | Yes | Complete WRS 2.7 versioned service root using Basic authentication, for example [https://host/Windchill/servlet/odata/v6](https://host/Windchill/servlet/odata/v6) | | `username` | string | Yes | Windchill service-account username | | `password` | string | Yes | Windchill service-account password | | `documentOid` | string | Yes | WT.Document OID, for example OR:wt.doc.WTDocument:48796581 | | `attributes` | json | Yes | Editable attributes as a JSON object. Name, Number, and Organization require the Update Common Properties operation and are not supported here. | #### Output [#output-8] | Parameter | Type | Description | | ------------------ | ------- | ------------------------------------------------------------- | | `operation` | string | Windchill operation that was executed | | `affectedIds` | array | Document identifiers affected by the operation | | `document` | object | Document returned by Windchill when the operation returns one | | ↳ `id` | string | Windchill object identifier | | ↳ `name` | string | Document name | | ↳ `number` | string | Document number | | ↳ `title` | string | Document title | | ↳ `description` | string | Document description | | ↳ `state` | string | Internal life cycle state value | | ↳ `stateDisplay` | string | Displayed life cycle state value | | ↳ `versionId` | string | Version identifier | | ↳ `revision` | string | Revision identifier | | ↳ `version` | string | Version and iteration | | ↳ `latest` | boolean | Whether this is the latest version | | ↳ `checkoutState` | string | Checkout state | | ↳ `folderName` | string | Folder name | | ↳ `folderLocation` | string | Folder path | ### Windchill Update Common Properties [#windchill-update-common-properties] Update a document's Name, Number, and other common properties #### Input [#input-9] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `baseUrl` | string | Yes | Complete WRS 2.7 versioned service root using Basic authentication, for example [https://host/Windchill/servlet/odata/v6](https://host/Windchill/servlet/odata/v6) | | `username` | string | Yes | Windchill service-account username | | `password` | string | Yes | Windchill service-account password | | `documentOid` | string | Yes | WT.Document OID, for example OR:wt.doc.WTDocument:48796581. The document must not be checked out. | | `commonProperties` | json | Yes | Common properties as a JSON object, for example \{"Name":"New name","Number":"NEW-001"}. Enumerated properties take a value/display pair. | #### Output [#output-9] | Parameter | Type | Description | | ------------------ | ------- | ------------------------------------------------------------- | | `operation` | string | Windchill operation that was executed | | `affectedIds` | array | Document identifiers affected by the operation | | `document` | object | Document returned by Windchill when the operation returns one | | ↳ `id` | string | Windchill object identifier | | ↳ `name` | string | Document name | | ↳ `number` | string | Document number | | ↳ `title` | string | Document title | | ↳ `description` | string | Document description | | ↳ `state` | string | Internal life cycle state value | | ↳ `stateDisplay` | string | Displayed life cycle state value | | ↳ `versionId` | string | Version identifier | | ↳ `revision` | string | Revision identifier | | ↳ `version` | string | Version and iteration | | ↳ `latest` | boolean | Whether this is the latest version | | ↳ `checkoutState` | string | Checkout state | | ↳ `folderName` | string | Folder name | | ↳ `folderLocation` | string | Folder path | ### Windchill Update Documents [#windchill-update-documents] Update several documents' editable attributes in one atomic request #### Input [#input-10] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `baseUrl` | string | Yes | Complete WRS 2.7 versioned service root using Basic authentication, for example [https://host/Windchill/servlet/odata/v6](https://host/Windchill/servlet/odata/v6) | | `username` | string | Yes | Windchill service-account username | | `password` | string | Yes | Windchill service-account password | | `documents` | array | Yes | Document updates as a JSON array; each item requires id and the editable attributes to set. Name, Number, and Organization are not supported. | #### Output [#output-10] | Parameter | Type | Description | | ------------------ | ------- | --------------------------------------------------------------- | | `operation` | string | Windchill operation that was executed | | `affectedIds` | array | Document identifiers affected by the operation | | `documents` | array | Documents returned by Windchill when the operation returns them | | ↳ `id` | string | Windchill object identifier | | ↳ `name` | string | Document name | | ↳ `number` | string | Document number | | ↳ `title` | string | Document title | | ↳ `description` | string | Document description | | ↳ `state` | string | Internal life cycle state value | | ↳ `stateDisplay` | string | Displayed life cycle state value | | ↳ `versionId` | string | Version identifier | | ↳ `revision` | string | Revision identifier | | ↳ `version` | string | Version and iteration | | ↳ `latest` | boolean | Whether this is the latest version | | ↳ `checkoutState` | string | Checkout state | | ↳ `folderName` | string | Folder name | | ↳ `folderLocation` | string | Folder path | ### Windchill Delete Document [#windchill-delete-document] Delete one document #### Input [#input-11] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `baseUrl` | string | Yes | Complete WRS 2.7 versioned service root using Basic authentication, for example [https://host/Windchill/servlet/odata/v6](https://host/Windchill/servlet/odata/v6) | | `username` | string | Yes | Windchill service-account username | | `password` | string | Yes | Windchill service-account password | | `documentOid` | string | Yes | WT.Document OID, for example OR:wt.doc.WTDocument:48796581 | #### Output [#output-11] | Parameter | Type | Description | | ------------- | ------ | ---------------------------------------------- | | `operation` | string | Windchill operation that was executed | | `affectedIds` | array | Document identifiers affected by the operation | ### Windchill Delete Documents [#windchill-delete-documents] Delete multiple documents atomically #### Input [#input-12] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `baseUrl` | string | Yes | Complete WRS 2.7 versioned service root using Basic authentication, for example [https://host/Windchill/servlet/odata/v6](https://host/Windchill/servlet/odata/v6) | | `username` | string | Yes | Windchill service-account username | | `password` | string | Yes | Windchill service-account password | | `documentOids` | array | Yes | WT.Document OIDs to process atomically | #### Output [#output-12] | Parameter | Type | Description | | ------------- | ------ | ---------------------------------------------- | | `operation` | string | Windchill operation that was executed | | `affectedIds` | array | Document identifiers affected by the operation | ### Windchill Check Out Document [#windchill-check-out-document] Check out one document #### Input [#input-13] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `baseUrl` | string | Yes | Complete WRS 2.7 versioned service root using Basic authentication, for example [https://host/Windchill/servlet/odata/v6](https://host/Windchill/servlet/odata/v6) | | `username` | string | Yes | Windchill service-account username | | `password` | string | Yes | Windchill service-account password | | `documentOid` | string | Yes | WT.Document OID, for example OR:wt.doc.WTDocument:48796581 | | `checkOutNote` | string | No | Checkout note | #### Output [#output-13] | Parameter | Type | Description | | ------------------ | ------- | ------------------------------------------------------------- | | `operation` | string | Windchill operation that was executed | | `affectedIds` | array | Document identifiers affected by the operation | | `document` | object | Document returned by Windchill when the operation returns one | | ↳ `id` | string | Windchill object identifier | | ↳ `name` | string | Document name | | ↳ `number` | string | Document number | | ↳ `title` | string | Document title | | ↳ `description` | string | Document description | | ↳ `state` | string | Internal life cycle state value | | ↳ `stateDisplay` | string | Displayed life cycle state value | | ↳ `versionId` | string | Version identifier | | ↳ `revision` | string | Revision identifier | | ↳ `version` | string | Version and iteration | | ↳ `latest` | boolean | Whether this is the latest version | | ↳ `checkoutState` | string | Checkout state | | ↳ `folderName` | string | Folder name | | ↳ `folderLocation` | string | Folder path | ### Windchill Check Out Documents [#windchill-check-out-documents] Check out multiple documents atomically #### Input [#input-14] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `baseUrl` | string | Yes | Complete WRS 2.7 versioned service root using Basic authentication, for example [https://host/Windchill/servlet/odata/v6](https://host/Windchill/servlet/odata/v6) | | `username` | string | Yes | Windchill service-account username | | `password` | string | Yes | Windchill service-account password | | `documentOids` | array | Yes | WT.Document OIDs to process atomically | | `checkOutNote` | string | No | Checkout note | #### Output [#output-14] | Parameter | Type | Description | | ------------------ | ------- | --------------------------------------------------------------- | | `operation` | string | Windchill operation that was executed | | `affectedIds` | array | Document identifiers affected by the operation | | `documents` | array | Documents returned by Windchill when the operation returns them | | ↳ `id` | string | Windchill object identifier | | ↳ `name` | string | Document name | | ↳ `number` | string | Document number | | ↳ `title` | string | Document title | | ↳ `description` | string | Document description | | ↳ `state` | string | Internal life cycle state value | | ↳ `stateDisplay` | string | Displayed life cycle state value | | ↳ `versionId` | string | Version identifier | | ↳ `revision` | string | Revision identifier | | ↳ `version` | string | Version and iteration | | ↳ `latest` | boolean | Whether this is the latest version | | ↳ `checkoutState` | string | Checkout state | | ↳ `folderName` | string | Folder name | | ↳ `folderLocation` | string | Folder path | ### Windchill Check In Document [#windchill-check-in-document] Check in one document #### Input [#input-15] | Parameter | Type | Required | Description | | ---------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `baseUrl` | string | Yes | Complete WRS 2.7 versioned service root using Basic authentication, for example [https://host/Windchill/servlet/odata/v6](https://host/Windchill/servlet/odata/v6) | | `username` | string | Yes | Windchill service-account username | | `password` | string | Yes | Windchill service-account password | | `documentOid` | string | Yes | WT.Document OID, for example OR:wt.doc.WTDocument:48796581 | | `checkInNote` | string | No | Check-in note | | `keepCheckedOut` | boolean | No | Keep the document checked out after checking it in | | `checkOutNote` | string | No | Checkout note | #### Output [#output-15] | Parameter | Type | Description | | ------------------ | ------- | ------------------------------------------------------------- | | `operation` | string | Windchill operation that was executed | | `affectedIds` | array | Document identifiers affected by the operation | | `document` | object | Document returned by Windchill when the operation returns one | | ↳ `id` | string | Windchill object identifier | | ↳ `name` | string | Document name | | ↳ `number` | string | Document number | | ↳ `title` | string | Document title | | ↳ `description` | string | Document description | | ↳ `state` | string | Internal life cycle state value | | ↳ `stateDisplay` | string | Displayed life cycle state value | | ↳ `versionId` | string | Version identifier | | ↳ `revision` | string | Revision identifier | | ↳ `version` | string | Version and iteration | | ↳ `latest` | boolean | Whether this is the latest version | | ↳ `checkoutState` | string | Checkout state | | ↳ `folderName` | string | Folder name | | ↳ `folderLocation` | string | Folder path | ### Windchill Check In Documents [#windchill-check-in-documents] Check in multiple documents atomically #### Input [#input-16] | Parameter | Type | Required | Description | | ---------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `baseUrl` | string | Yes | Complete WRS 2.7 versioned service root using Basic authentication, for example [https://host/Windchill/servlet/odata/v6](https://host/Windchill/servlet/odata/v6) | | `username` | string | Yes | Windchill service-account username | | `password` | string | Yes | Windchill service-account password | | `documentOids` | array | Yes | WT.Document OIDs to process atomically | | `checkInNote` | string | No | Check-in note | | `keepCheckedOut` | boolean | No | Keep the document checked out after checking it in | | `checkOutNote` | string | No | Checkout note | #### Output [#output-16] | Parameter | Type | Description | | ------------------ | ------- | --------------------------------------------------------------- | | `operation` | string | Windchill operation that was executed | | `affectedIds` | array | Document identifiers affected by the operation | | `documents` | array | Documents returned by Windchill when the operation returns them | | ↳ `id` | string | Windchill object identifier | | ↳ `name` | string | Document name | | ↳ `number` | string | Document number | | ↳ `title` | string | Document title | | ↳ `description` | string | Document description | | ↳ `state` | string | Internal life cycle state value | | ↳ `stateDisplay` | string | Displayed life cycle state value | | ↳ `versionId` | string | Version identifier | | ↳ `revision` | string | Revision identifier | | ↳ `version` | string | Version and iteration | | ↳ `latest` | boolean | Whether this is the latest version | | ↳ `checkoutState` | string | Checkout state | | ↳ `folderName` | string | Folder name | | ↳ `folderLocation` | string | Folder path | ### Windchill Undo Check Out Document [#windchill-undo-check-out-document] Undo checkout for one document #### Input [#input-17] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `baseUrl` | string | Yes | Complete WRS 2.7 versioned service root using Basic authentication, for example [https://host/Windchill/servlet/odata/v6](https://host/Windchill/servlet/odata/v6) | | `username` | string | Yes | Windchill service-account username | | `password` | string | Yes | Windchill service-account password | | `documentOid` | string | Yes | WT.Document OID, for example OR:wt.doc.WTDocument:48796581 | #### Output [#output-17] | Parameter | Type | Description | | ------------------ | ------- | ------------------------------------------------------------- | | `operation` | string | Windchill operation that was executed | | `affectedIds` | array | Document identifiers affected by the operation | | `document` | object | Document returned by Windchill when the operation returns one | | ↳ `id` | string | Windchill object identifier | | ↳ `name` | string | Document name | | ↳ `number` | string | Document number | | ↳ `title` | string | Document title | | ↳ `description` | string | Document description | | ↳ `state` | string | Internal life cycle state value | | ↳ `stateDisplay` | string | Displayed life cycle state value | | ↳ `versionId` | string | Version identifier | | ↳ `revision` | string | Revision identifier | | ↳ `version` | string | Version and iteration | | ↳ `latest` | boolean | Whether this is the latest version | | ↳ `checkoutState` | string | Checkout state | | ↳ `folderName` | string | Folder name | | ↳ `folderLocation` | string | Folder path | ### Windchill Undo Check Out Documents [#windchill-undo-check-out-documents] Undo checkout for multiple documents atomically #### Input [#input-18] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `baseUrl` | string | Yes | Complete WRS 2.7 versioned service root using Basic authentication, for example [https://host/Windchill/servlet/odata/v6](https://host/Windchill/servlet/odata/v6) | | `username` | string | Yes | Windchill service-account username | | `password` | string | Yes | Windchill service-account password | | `documentOids` | array | Yes | WT.Document OIDs to process atomically | #### Output [#output-18] | Parameter | Type | Description | | ------------------ | ------- | --------------------------------------------------------------- | | `operation` | string | Windchill operation that was executed | | `affectedIds` | array | Document identifiers affected by the operation | | `documents` | array | Documents returned by Windchill when the operation returns them | | ↳ `id` | string | Windchill object identifier | | ↳ `name` | string | Document name | | ↳ `number` | string | Document number | | ↳ `title` | string | Document title | | ↳ `description` | string | Document description | | ↳ `state` | string | Internal life cycle state value | | ↳ `stateDisplay` | string | Displayed life cycle state value | | ↳ `versionId` | string | Version identifier | | ↳ `revision` | string | Revision identifier | | ↳ `version` | string | Version and iteration | | ↳ `latest` | boolean | Whether this is the latest version | | ↳ `checkoutState` | string | Checkout state | | ↳ `folderName` | string | Folder name | | ↳ `folderLocation` | string | Folder path | ### Windchill Revise Document [#windchill-revise-document] Create a new revision of one document #### Input [#input-19] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `baseUrl` | string | Yes | Complete WRS 2.7 versioned service root using Basic authentication, for example [https://host/Windchill/servlet/odata/v6](https://host/Windchill/servlet/odata/v6) | | `username` | string | Yes | Windchill service-account username | | `password` | string | Yes | Windchill service-account password | | `documentOid` | string | Yes | WT.Document OID, for example OR:wt.doc.WTDocument:48796581 | | `versionId` | string | No | Optional target revision identifier when override-on-revise is enabled | #### Output [#output-19] | Parameter | Type | Description | | ------------------ | ------- | ------------------------------------------------------------- | | `operation` | string | Windchill operation that was executed | | `affectedIds` | array | Document identifiers affected by the operation | | `document` | object | Document returned by Windchill when the operation returns one | | ↳ `id` | string | Windchill object identifier | | ↳ `name` | string | Document name | | ↳ `number` | string | Document number | | ↳ `title` | string | Document title | | ↳ `description` | string | Document description | | ↳ `state` | string | Internal life cycle state value | | ↳ `stateDisplay` | string | Displayed life cycle state value | | ↳ `versionId` | string | Version identifier | | ↳ `revision` | string | Revision identifier | | ↳ `version` | string | Version and iteration | | ↳ `latest` | boolean | Whether this is the latest version | | ↳ `checkoutState` | string | Checkout state | | ↳ `folderName` | string | Folder name | | ↳ `folderLocation` | string | Folder path | ### Windchill Revise Documents [#windchill-revise-documents] Create new revisions of multiple documents atomically #### Input [#input-20] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `baseUrl` | string | Yes | Complete WRS 2.7 versioned service root using Basic authentication, for example [https://host/Windchill/servlet/odata/v6](https://host/Windchill/servlet/odata/v6) | | `username` | string | Yes | Windchill service-account username | | `password` | string | Yes | Windchill service-account password | | `documentOids` | array | Yes | WT.Document OIDs to process atomically | #### Output [#output-20] | Parameter | Type | Description | | ------------------ | ------- | --------------------------------------------------------------- | | `operation` | string | Windchill operation that was executed | | `affectedIds` | array | Document identifiers affected by the operation | | `documents` | array | Documents returned by Windchill when the operation returns them | | ↳ `id` | string | Windchill object identifier | | ↳ `name` | string | Document name | | ↳ `number` | string | Document number | | ↳ `title` | string | Document title | | ↳ `description` | string | Document description | | ↳ `state` | string | Internal life cycle state value | | ↳ `stateDisplay` | string | Displayed life cycle state value | | ↳ `versionId` | string | Version identifier | | ↳ `revision` | string | Revision identifier | | ↳ `version` | string | Version and iteration | | ↳ `latest` | boolean | Whether this is the latest version | | ↳ `checkoutState` | string | Checkout state | | ↳ `folderName` | string | Folder name | | ↳ `folderLocation` | string | Folder path | ### Windchill Set Lifecycle State [#windchill-set-lifecycle-state] Transition a document to a valid lifecycle state #### Input [#input-21] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `baseUrl` | string | Yes | Complete WRS 2.7 versioned service root using Basic authentication, for example [https://host/Windchill/servlet/odata/v6](https://host/Windchill/servlet/odata/v6) | | `username` | string | Yes | Windchill service-account username | | `password` | string | Yes | Windchill service-account password | | `documentOid` | string | Yes | WT.Document OID, for example OR:wt.doc.WTDocument:48796581 | | `stateValue` | string | Yes | Internal value of the target lifecycle state | | `stateDisplay` | string | Yes | Display value of the target lifecycle state | #### Output [#output-21] | Parameter | Type | Description | | ------------------ | ------- | ------------------------------------------------------------- | | `operation` | string | Windchill operation that was executed | | `affectedIds` | array | Document identifiers affected by the operation | | `document` | object | Document returned by Windchill when the operation returns one | | ↳ `id` | string | Windchill object identifier | | ↳ `name` | string | Document name | | ↳ `number` | string | Document number | | ↳ `title` | string | Document title | | ↳ `description` | string | Document description | | ↳ `state` | string | Internal life cycle state value | | ↳ `stateDisplay` | string | Displayed life cycle state value | | ↳ `versionId` | string | Version identifier | | ↳ `revision` | string | Revision identifier | | ↳ `version` | string | Version and iteration | | ↳ `latest` | boolean | Whether this is the latest version | | ↳ `checkoutState` | string | Checkout state | | ↳ `folderName` | string | Folder name | | ↳ `folderLocation` | string | Folder path | ### Windchill Update Document Security Labels [#windchill-update-document-security-labels] Update installed security-label attributes for one or more documents #### Input [#input-22] | Parameter | Type | Required | Description | | ---------------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `baseUrl` | string | Yes | Complete WRS 2.7 versioned service root using Basic authentication, for example [https://host/Windchill/servlet/odata/v6](https://host/Windchill/servlet/odata/v6) | | `username` | string | Yes | Windchill service-account username | | `password` | string | Yes | Windchill service-account password | | `securityLabelUpdates` | array | Yes | Array of document IDs and installed security-label values | #### Output [#output-22] | Parameter | Type | Description | | ------------------ | ------- | --------------------------------------------------------------- | | `operation` | string | Windchill operation that was executed | | `affectedIds` | array | Document identifiers affected by the operation | | `documents` | array | Documents returned by Windchill when the operation returns them | | ↳ `id` | string | Windchill object identifier | | ↳ `name` | string | Document name | | ↳ `number` | string | Document number | | ↳ `title` | string | Document title | | ↳ `description` | string | Document description | | ↳ `state` | string | Internal life cycle state value | | ↳ `stateDisplay` | string | Displayed life cycle state value | | ↳ `versionId` | string | Version identifier | | ↳ `revision` | string | Revision identifier | | ↳ `version` | string | Version and iteration | | ↳ `latest` | boolean | Whether this is the latest version | | ↳ `checkoutState` | string | Checkout state | | ↳ `folderName` | string | Folder name | | ↳ `folderLocation` | string | Folder path | ### Windchill Download Primary Content [#windchill-download-primary-content] Download primary content into a canonical UserFile #### Input [#input-23] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `baseUrl` | string | Yes | Complete WRS 2.7 versioned service root using Basic authentication, for example [https://host/Windchill/servlet/odata/v6](https://host/Windchill/servlet/odata/v6) | | `username` | string | Yes | Windchill service-account username | | `password` | string | Yes | Windchill service-account password | | `documentOid` | string | Yes | WT.Document OID, for example OR:wt.doc.WTDocument:48796581 | | `fileName` | string | No | Optional downloaded file name override | #### Output [#output-23] | Parameter | Type | Description | | ----------- | ------ | ------------------------------------------------- | | `operation` | string | Windchill operation that was executed | | `file` | file | Downloaded content stored as a canonical UserFile | | `fileName` | string | Downloaded file name | | `mimeType` | string | Downloaded content MIME type | ### Windchill Upload Primary Content [#windchill-upload-primary-content] Upload a primary-content file to a document that has none #### Input [#input-24] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `baseUrl` | string | Yes | Complete WRS 2.7 versioned service root using Basic authentication, for example [https://host/Windchill/servlet/odata/v6](https://host/Windchill/servlet/odata/v6) | | `username` | string | Yes | Windchill service-account username | | `password` | string | Yes | Windchill service-account password | | `documentOid` | string | Yes | WT.Document OID, for example OR:wt.doc.WTDocument:48796581 | | `primaryFile` | file | Yes | Primary content file to upload | #### Output [#output-24] | Parameter | Type | Description | | ------------------- | ------ | ------------------------------------------- | | `operation` | string | Windchill operation that was executed | | `affectedIds` | array | Document identifiers affected by the upload | | `uploadedFileNames` | array | Names of files accepted by Windchill | ### Windchill Download Attachment [#windchill-download-attachment] Download a document attachment into a canonical UserFile #### Input [#input-25] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `baseUrl` | string | Yes | Complete WRS 2.7 versioned service root using Basic authentication, for example [https://host/Windchill/servlet/odata/v6](https://host/Windchill/servlet/odata/v6) | | `username` | string | Yes | Windchill service-account username | | `password` | string | Yes | Windchill service-account password | | `documentOid` | string | Yes | WT.Document OID, for example OR:wt.doc.WTDocument:48796581 | | `attachmentOid` | string | Yes | Windchill attachment content OID | | `fileName` | string | No | Optional downloaded file name override | #### Output [#output-25] | Parameter | Type | Description | | ----------- | ------ | ------------------------------------------------- | | `operation` | string | Windchill operation that was executed | | `file` | file | Downloaded content stored as a canonical UserFile | | `fileName` | string | Downloaded file name | | `mimeType` | string | Downloaded content MIME type | ### Windchill Upload Attachments [#windchill-upload-attachments] Upload one or more files as document attachments #### Input [#input-26] | Parameter | Type | Required | Description | | ----------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `baseUrl` | string | Yes | Complete WRS 2.7 versioned service root using Basic authentication, for example [https://host/Windchill/servlet/odata/v6](https://host/Windchill/servlet/odata/v6) | | `username` | string | Yes | Windchill service-account username | | `password` | string | Yes | Windchill service-account password | | `documentOid` | string | Yes | WT.Document OID, for example OR:wt.doc.WTDocument:48796581 | | `attachmentFiles` | file\[] | Yes | Attachment files to upload | #### Output [#output-26] | Parameter | Type | Description | | ------------------- | ------ | ------------------------------------------- | | `operation` | string | Windchill operation that was executed | | `affectedIds` | array | Document identifiers affected by the upload | | `uploadedFileNames` | array | Names of files accepted by Windchill | --- # Wiza (/en/integrations/wiza) {/* MANUAL-CONTENT-START:intro */} Use [Wiza](https://wiza.co/) to search prospects, enrich companies, reveal contact details, and check credits. Individual Reveal starts enrichment and polls for completion within one block operation; a separate polling block is not required. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] {/* MANUAL-CONTENT-START:usage */} ## Wiza API Key Setup [#wiza-api-key-setup] Wiza authenticates via API key. To get yours: 1. Log in to your [Wiza account](https://app.wiza.co/). 2. Open **Settings → API** and generate a new API key (or copy an existing one). 3. In Studio, open the Wiza block and paste the key into the **Wiza API Key** field. The same key is used for every Wiza operation. Wiza enforces a rate limit of 30 requests per minute (43,200 per day) per key. ## Individual Reveal [#individual-reveal] Select **Individual Reveal** and provide a LinkedIn URL, a name plus company/domain, or an email. The operation starts the reveal and polls until it resolves, returning the contact data with `status` and `is_complete`. You do not need separate start and get operations or a callback URL. ## Enrichment Levels and Credits [#enrichment-levels-and-credits] When starting an individual reveal, choose the enrichment level that matches the data you need: * **`none`** — Identity only, no contact info (no credit spend) * **`partial`** — Verified work email (email credits) * **`phone`** — Mobile phone (phone credits) * **`full`** — Email + phone (email + phone credits) Use `wiza_get_credits` to monitor remaining email, phone, export, and API credits before running large batches. {/* MANUAL-CONTENT-END */} Integrates Wiza into the workflow. Search prospects, enrich companies, reveal verified emails and phone numbers for individuals, and check your account credit balance. ## Actions [#actions] ### Wiza Prospect Search [#wiza-prospect-search] Search Wiza's database of prospects using person, company, and financial filters #### Input [#input] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | ---------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Wiza API key | | `size` | number | No | Number of sample profiles to return (0-30, default 0) | | `filters` | object | No | Full filters object (overrides individual filter params if provided) | | `first_name` | array | No | Exact first names to match (e.g., \["John", "Jane"]) | | `last_name` | array | No | Exact last names to match | | `job_title` | array | No | Job titles to include/exclude (e.g., \[\{"v":"CEO","s":"i"},\{"v":"CTO","s":"e"}]) | | `job_title_level` | array | No | Seniority levels (e.g., \["cxo", "director", "manager"]) | | `job_role` | array | No | Job role categories (e.g., \["sales", "engineering", "marketing"]) | | `job_sub_role` | array | No | Detailed role categories (e.g., \["software", "product"]) | | `location` | array | No | Person's location filters (city/state/country with include/exclude) | | `skill` | array | No | Professional skills (e.g., \["python", "marketing"]) | | `school` | array | No | Educational institutions | | `major` | array | No | Field of study | | `linkedin_slug` | array | No | LinkedIn profile slugs | | `job_company` | array | No | Current company filters (include/exclude) | | `past_company` | array | No | Past company filters | | `company_location` | array | No | Company HQ location filters | | `company_industry` | array | No | Company industry filters (include/exclude) | | `company_size` | array | No | Company headcount brackets (e.g., \["1-10", "11-50", "51-200"]) | | `company_type` | array | No | Company type (e.g., \["private", "public", "educational"]) | #### Output [#output] | Parameter | Type | Description | | ---------- | ------ | -------------------------------------------- | | `total` | number | Total number of matching prospects | | `profiles` | array | Sample profiles matching the filter criteria | ### Wiza Company Enrichment [#wiza-company-enrichment] Enrich a company by name, domain, LinkedIn ID, or LinkedIn slug with detailed firmographic data #### Input [#input-1] | Parameter | Type | Required | Description | | ----------------------- | ------ | -------- | ---------------------------------- | | `apiKey` | string | Yes | Wiza API key | | `company_name` | string | No | Company name (e.g., "Wiza") | | `company_domain` | string | No | Company domain (e.g., "wiza.co") | | `company_linkedin_id` | string | No | Company LinkedIn ID | | `company_linkedin_slug` | string | No | Company LinkedIn slug from the URL | #### Output [#output-1] | Parameter | Type | Description | | ----------------------------- | ------ | --------------------------------------------------------------------------------- | | `company_name` | string | Company name | | `company_domain` | string | Company domain | | `domain` | string | Domain | | `company_industry` | string | Industry | | `company_size` | number | Employee count | | `company_size_range` | string | Headcount range | | `company_founded` | number | Year founded | | `company_revenue_range` | string | Revenue range | | `company_funding` | string | Total funding | | `company_type` | string | Company type | | `company_description` | string | Description | | `company_ticker` | string | Stock ticker | | `company_last_funding_round` | string | Last funding round | | `company_last_funding_amount` | string | Last funding amount | | `company_last_funding_at` | string | Last funding date | | `company_location` | string | Full location string | | `company_twitter` | string | Twitter URL | | `company_facebook` | string | Facebook URL | | `company_linkedin` | string | LinkedIn URL | | `company_linkedin_id` | string | LinkedIn ID | | `company_street` | string | Street address | | `company_locality` | string | City | | `company_region` | string | State/region | | `company_postal_code` | string | Postal code | | `company_country` | string | Country | | `credits` | json | Credits deducted for this enrichment (api\_credits: \{ total, company\_credits }) | ### Wiza Individual Reveal [#wiza-individual-reveal] Reveal a contact via LinkedIn URL, name + company/domain, or email. Starts the reveal and polls until it resolves. Uses 2 credits per valid email and 5 credits per phone, charged only on success. #### Input [#input-2] | Parameter | Type | Required | Description | | ------------------ | ------- | -------- | ----------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | Wiza API key | | `enrichment_level` | string | Yes | Enrichment depth: none, partial, phone, or full | | `profile_url` | string | No | LinkedIn profile URL (e.g., [https://linkedin.com/in/johndoe](https://linkedin.com/in/johndoe)) | | `full_name` | string | No | Full name (used with company or domain) | | `company` | string | No | Company name (used with full\_name) | | `domain` | string | No | Company domain (used with full\_name) | | `email` | string | No | Email address (use alone or with other identifiers) | | `accept_work` | boolean | No | Whether to accept work emails (email\_options) | | `accept_personal` | boolean | No | Whether to accept personal emails (email\_options) | #### Output [#output-2] | Parameter | Type | Description | | ---------------------- | ------- | ----------------------------------------- | | `id` | number | Reveal ID | | `status` | string | queued \| resolving \| finished \| failed | | `is_complete` | boolean | Whether the reveal has completed | | `name` | string | Full name | | `company` | string | Company name | | `enrichment_level` | string | Enrichment level used | | `linkedin_profile_url` | string | LinkedIn URL | | `title` | string | Job title | | `location` | string | Location | | `email` | string | Primary email | | `email_type` | string | Email type | | `email_status` | string | valid \| risky \| unfound | | `emails` | array | All emails found | | `mobile_phone` | string | Mobile phone | | `phone_number` | string | Direct/office phone | | `phone_status` | string | found \| unfound | | `phones` | array | All phones found | | `company_size` | number | Employee count | | `company_size_range` | string | Headcount range | | `company_type` | string | Company type | | `company_domain` | string | Company domain | | `company_locality` | string | City | | `company_region` | string | State/region | | `company_country` | string | Country | | `company_street` | string | Street | | `company_postal_code` | string | Postal code | | `company_founded` | number | Year founded | | `company_funding` | string | Funding total | | `company_revenue` | string | Revenue | | `company_industry` | string | Industry | | `company_subindustry` | string | Subindustry | | `company_linkedin` | string | Company LinkedIn URL | | `company_location` | string | Full company location | | `company_description` | string | Company description | | `credits` | json | Credits consumed by the reveal | ### Wiza Get Credits [#wiza-get-credits] Retrieve the remaining credits on your Wiza account #### Input [#input-3] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------ | | `apiKey` | string | Yes | Wiza API key | #### Output [#output-3] | Parameter | Type | Description | | ---------------- | ------ | ----------------------------------------------- | | `email_credits` | json | Remaining email credits (number or "unlimited") | | `phone_credits` | json | Remaining phone credits (number or "unlimited") | | `export_credits` | number | Remaining export credits | | `api_credits` | number | Remaining API credits | --- # Loops (/en/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 | --- # ManageEngine ServiceDesk Plus (/en/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. Studio 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 Studio** 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 Studio:** * **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 a Studio table for querying and charting. **Before you start** Connect your Zoho account from the block's credential field. Self-hosted deployments additionally need Studio'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. Studio'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 Studio 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 Studio 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 | | ↳ `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 | | ↳ `color` | string | Priority colour | | ↳ `requester` | json | Requester | | ↳ `technician` | json | Assigned technician | | ↳ `group` | json | Support group | | ↳ `site` | string | Site the group belongs to | | ↳ `deleted` | boolean | Whether the group is deleted | | ↳ `category` | json | Category | | ↳ `subcategory` | json | Subcategory | | ↳ `urgency` | json | Urgency | | ↳ `impact` | json | Impact | | ↳ `template` | json | Request template | | ↳ `site` | json | Site | | ↳ `created_time` | json | Creation time | | ↳ `due_by_time` | json | SLA due time | | ↳ `resolved_time` | json | Resolution time | | ↳ `completed_time` | json | Completion time | | ↳ `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 Studio 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 | | ↳ `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 | | ↳ `color` | string | Priority colour | | ↳ `requester` | json | Requester | | ↳ `technician` | json | Assigned technician | | ↳ `group` | json | Support group | | ↳ `site` | string | Site the group belongs to | | ↳ `deleted` | boolean | Whether the group is deleted | | ↳ `category` | json | Category | | ↳ `subcategory` | json | Subcategory | | ↳ `urgency` | json | Urgency | | ↳ `impact` | json | Impact | | ↳ `template` | json | Request template | | ↳ `site` | json | Site | | ↳ `created_time` | json | Creation time | | ↳ `due_by_time` | json | SLA due time | | ↳ `resolved_time` | json | Resolution time | | ↳ `completed_time` | json | Completion time | | ↳ `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 Studio 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 | | ↳ `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 | | ↳ `color` | string | Priority colour | | ↳ `requester` | json | Requester | | ↳ `technician` | json | Assigned technician | | ↳ `group` | json | Support group | | ↳ `site` | string | Site the group belongs to | | ↳ `deleted` | boolean | Whether the group is deleted | | ↳ `category` | json | Category | | ↳ `subcategory` | json | Subcategory | | ↳ `urgency` | json | Urgency | | ↳ `impact` | json | Impact | | ↳ `template` | json | Request template | | ↳ `site` | json | Site | | ↳ `created_time` | json | Creation time | | ↳ `due_by_time` | json | SLA due time | | ↳ `resolved_time` | json | Resolution time | | ↳ `completed_time` | json | Completion time | | ↳ `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 Studio 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 | | ↳ `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 | | ↳ `color` | string | Priority colour | | ↳ `requester` | json | Requester | | ↳ `technician` | json | Assigned technician | | ↳ `group` | json | Support group | | ↳ `site` | string | Site the group belongs to | | ↳ `deleted` | boolean | Whether the group is deleted | | ↳ `category` | json | Category | | ↳ `subcategory` | json | Subcategory | | ↳ `urgency` | json | Urgency | | ↳ `impact` | json | Impact | | ↳ `template` | json | Request template | | ↳ `site` | json | Site | | ↳ `created_time` | json | Creation time | | ↳ `due_by_time` | json | SLA due time | | ↳ `resolved_time` | json | Resolution time | | ↳ `completed_time` | json | Completion time | | ↳ `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 Studio 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 Studio 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 | | ↳ `created_by` | json | Note author | | ↳ `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 Studio 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 | | ↳ `created_by` | json | Note author | | ↳ `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 Studio 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) | | ↳ `title` | string | Problem title | | ↳ `description` | string | Problem description (HTML) | | ↳ `status` | json | Current status | | ↳ `priority` | json | Priority | | ↳ `urgency` | json | Urgency | | ↳ `impact` | json | Impact | | ↳ `category` | json | Category | | ↳ `subcategory` | json | Subcategory | | ↳ `group` | json | Support group | | ↳ `site` | json | Site | | ↳ `reported_by` | json | User who reported the problem | | ↳ `technician` | json | Assigned technician | | ↳ `reported_time` | json | Time the problem was reported | | ↳ `due_by_time` | json | Due time | | ↳ `closed_time` | json | Time the problem was closed | | ↳ `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 Studio 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) | | ↳ `title` | string | Problem title | | ↳ `description` | string | Problem description (HTML) | | ↳ `status` | json | Current status | | ↳ `priority` | json | Priority | | ↳ `urgency` | json | Urgency | | ↳ `impact` | json | Impact | | ↳ `category` | json | Category | | ↳ `subcategory` | json | Subcategory | | ↳ `group` | json | Support group | | ↳ `site` | json | Site | | ↳ `reported_by` | json | User who reported the problem | | ↳ `technician` | json | Assigned technician | | ↳ `reported_time` | json | Time the problem was reported | | ↳ `due_by_time` | json | Due time | | ↳ `closed_time` | json | Time the problem was closed | | ↳ `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 Studio 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) | | ↳ `title` | string | Problem title | | ↳ `description` | string | Problem description (HTML) | | ↳ `status` | json | Current status | | ↳ `priority` | json | Priority | | ↳ `urgency` | json | Urgency | | ↳ `impact` | json | Impact | | ↳ `category` | json | Category | | ↳ `subcategory` | json | Subcategory | | ↳ `group` | json | Support group | | ↳ `site` | json | Site | | ↳ `reported_by` | json | User who reported the problem | | ↳ `technician` | json | Assigned technician | | ↳ `reported_time` | json | Time the problem was reported | | ↳ `due_by_time` | json | Due time | | ↳ `closed_time` | json | Time the problem was closed | | ↳ `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 Studio 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) | | ↳ `title` | string | Problem title | | ↳ `description` | string | Problem description (HTML) | | ↳ `status` | json | Current status | | ↳ `priority` | json | Priority | | ↳ `urgency` | json | Urgency | | ↳ `impact` | json | Impact | | ↳ `category` | json | Category | | ↳ `subcategory` | json | Subcategory | | ↳ `group` | json | Support group | | ↳ `site` | json | Site | | ↳ `reported_by` | json | User who reported the problem | | ↳ `technician` | json | Assigned technician | | ↳ `reported_time` | json | Time the problem was reported | | ↳ `due_by_time` | json | Due time | | ↳ `closed_time` | json | Time the problem was closed | | ↳ `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 Studio 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 Studio 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 | | ↳ `performed_time` | json | Time the note was added | ### 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 Studio 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 | | ↳ `performed_time` | json | Time the note was added | | `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 Studio 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) | | ↳ `title` | string | Change title | | ↳ `description` | string | Change description (HTML) | | ↳ `status` | json | Current status | | ↳ `internal_name` | string | Internal status name | | ↳ `stage` | json | Change stage | | ↳ `change_type` | json | Change type | | ↳ `color` | string | Type colour | | ↳ `pre_approved` | boolean | Whether the type is pre-approved | | ↳ `priority` | json | Priority | | ↳ `urgency` | json | Urgency | | ↳ `impact` | json | Impact | | ↳ `approval_status` | json | Approval status | | ↳ `reason_for_change` | json | Reason for the change | | ↳ `change_requester` | json | User who requested the change | | ↳ `change_owner` | json | Change owner | | ↳ `change_manager` | json | Change manager | | ↳ `group` | json | Support group | | ↳ `emergency` | boolean | Whether the change is an emergency | | ↳ `created_time` | json | Creation time | | ↳ `scheduled_start_time` | json | Scheduled start | | ↳ `scheduled_end_time` | json | Scheduled end | | ↳ `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 Studio 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) | | ↳ `title` | string | Change title | | ↳ `description` | string | Change description (HTML) | | ↳ `status` | json | Current status | | ↳ `internal_name` | string | Internal status name | | ↳ `stage` | json | Change stage | | ↳ `change_type` | json | Change type | | ↳ `color` | string | Type colour | | ↳ `pre_approved` | boolean | Whether the type is pre-approved | | ↳ `priority` | json | Priority | | ↳ `urgency` | json | Urgency | | ↳ `impact` | json | Impact | | ↳ `approval_status` | json | Approval status | | ↳ `reason_for_change` | json | Reason for the change | | ↳ `change_requester` | json | User who requested the change | | ↳ `change_owner` | json | Change owner | | ↳ `change_manager` | json | Change manager | | ↳ `group` | json | Support group | | ↳ `emergency` | boolean | Whether the change is an emergency | | ↳ `created_time` | json | Creation time | | ↳ `scheduled_start_time` | json | Scheduled start | | ↳ `scheduled_end_time` | json | Scheduled end | | ↳ `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 Studio 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) | | ↳ `title` | string | Change title | | ↳ `description` | string | Change description (HTML) | | ↳ `status` | json | Current status | | ↳ `internal_name` | string | Internal status name | | ↳ `stage` | json | Change stage | | ↳ `change_type` | json | Change type | | ↳ `color` | string | Type colour | | ↳ `pre_approved` | boolean | Whether the type is pre-approved | | ↳ `priority` | json | Priority | | ↳ `urgency` | json | Urgency | | ↳ `impact` | json | Impact | | ↳ `approval_status` | json | Approval status | | ↳ `reason_for_change` | json | Reason for the change | | ↳ `change_requester` | json | User who requested the change | | ↳ `change_owner` | json | Change owner | | ↳ `change_manager` | json | Change manager | | ↳ `group` | json | Support group | | ↳ `emergency` | boolean | Whether the change is an emergency | | ↳ `created_time` | json | Creation time | | ↳ `scheduled_start_time` | json | Scheduled start | | ↳ `scheduled_end_time` | json | Scheduled end | | ↳ `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 Studio 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) | | ↳ `title` | string | Change title | | ↳ `description` | string | Change description (HTML) | | ↳ `status` | json | Current status | | ↳ `internal_name` | string | Internal status name | | ↳ `stage` | json | Change stage | | ↳ `change_type` | json | Change type | | ↳ `color` | string | Type colour | | ↳ `pre_approved` | boolean | Whether the type is pre-approved | | ↳ `priority` | json | Priority | | ↳ `urgency` | json | Urgency | | ↳ `impact` | json | Impact | | ↳ `approval_status` | json | Approval status | | ↳ `reason_for_change` | json | Reason for the change | | ↳ `change_requester` | json | User who requested the change | | ↳ `change_owner` | json | Change owner | | ↳ `change_manager` | json | Change manager | | ↳ `group` | json | Support group | | ↳ `emergency` | boolean | Whether the change is an emergency | | ↳ `created_time` | json | Creation time | | ↳ `scheduled_start_time` | json | Scheduled start | | ↳ `scheduled_end_time` | json | Scheduled end | | ↳ `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 Studio 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 Studio 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 | | ↳ `performed_time` | json | Time the note was added | ### 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 Studio 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 | | ↳ `performed_time` | json | Time the note was added | | `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 Studio 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, ...) | | ↳ `description` | string | State description | | ↳ `product` | json | Product this asset is an instance of | | ↳ `manufacturer` | string | Manufacturer | | ↳ `part_no` | string | Part number | | ↳ `product_type` | json | Product type | | ↳ `vendor` | json | Vendor | | ↳ `department` | json | Owning department | | ↳ `site` | json | Site | | ↳ `user` | json | User the asset is assigned to | | ↳ `purchase_cost` | number | Purchase cost | | ↳ `total_cost` | number | Total cost | | ↳ `acquisition_date` | json | Acquisition date | | ↳ `expiry_date` | json | Expiry date | | ↳ `warranty_expiry` | json | Warranty expiry date | | ↳ `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 Studio 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, ...) | | ↳ `description` | string | State description | | ↳ `product` | json | Product this asset is an instance of | | ↳ `manufacturer` | string | Manufacturer | | ↳ `part_no` | string | Part number | | ↳ `product_type` | json | Product type | | ↳ `vendor` | json | Vendor | | ↳ `department` | json | Owning department | | ↳ `site` | json | Site | | ↳ `user` | json | User the asset is assigned to | | ↳ `purchase_cost` | number | Purchase cost | | ↳ `total_cost` | number | Total cost | | ↳ `acquisition_date` | json | Acquisition date | | ↳ `expiry_date` | json | Expiry date | | ↳ `warranty_expiry` | json | Warranty expiry date | | ↳ `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 Studio 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, ...) | | ↳ `description` | string | State description | | ↳ `product` | json | Product this asset is an instance of | | ↳ `manufacturer` | string | Manufacturer | | ↳ `part_no` | string | Part number | | ↳ `product_type` | json | Product type | | ↳ `vendor` | json | Vendor | | ↳ `department` | json | Owning department | | ↳ `site` | json | Site | | ↳ `user` | json | User the asset is assigned to | | ↳ `purchase_cost` | number | Purchase cost | | ↳ `total_cost` | number | Total cost | | ↳ `acquisition_date` | json | Acquisition date | | ↳ `expiry_date` | json | Expiry date | | ↳ `warranty_expiry` | json | Warranty expiry date | | ↳ `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 Studio 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, ...) | | ↳ `description` | string | State description | | ↳ `product` | json | Product this asset is an instance of | | ↳ `manufacturer` | string | Manufacturer | | ↳ `part_no` | string | Part number | | ↳ `product_type` | json | Product type | | ↳ `vendor` | json | Vendor | | ↳ `department` | json | Owning department | | ↳ `site` | json | Site | | ↳ `user` | json | User the asset is assigned to | | ↳ `purchase_cost` | number | Purchase cost | | ↳ `total_cost` | number | Total cost | | ↳ `acquisition_date` | json | Acquisition date | | ↳ `expiry_date` | json | Expiry date | | ↳ `warranty_expiry` | json | Warranty expiry date | | ↳ `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 Studio 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 Studio 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) | | ↳ `title` | string | Solution title | | ↳ `description` | string | Solution body (HTML) | | ↳ `topic` | json | Topic the solution is filed under | | ↳ `parent_topic` | json | Parent topic | | ↳ `approval_status` | json | Approval status | | ↳ `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 | | ↳ `last_updated_time` | json | Last update time | | ↳ `review_date` | json | Date the solution is due for review | | ↳ `expiry_date` | json | Date the solution expires | | ↳ `created_by` | json | Author | | ↳ `last_updated_by` | json | User who last updated the solution | | ↳ `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 Studio 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) | | ↳ `title` | string | Solution title | | ↳ `description` | string | Solution body (HTML) | | ↳ `topic` | json | Topic the solution is filed under | | ↳ `parent_topic` | json | Parent topic | | ↳ `approval_status` | json | Approval status | | ↳ `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 | | ↳ `last_updated_time` | json | Last update time | | ↳ `review_date` | json | Date the solution is due for review | | ↳ `expiry_date` | json | Date the solution expires | | ↳ `created_by` | json | Author | | ↳ `last_updated_by` | json | User who last updated the solution | | ↳ `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 Studio 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) | | ↳ `title` | string | Solution title | | ↳ `description` | string | Solution body (HTML) | | ↳ `topic` | json | Topic the solution is filed under | | ↳ `parent_topic` | json | Parent topic | | ↳ `approval_status` | json | Approval status | | ↳ `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 | | ↳ `last_updated_time` | json | Last update time | | ↳ `review_date` | json | Date the solution is due for review | | ↳ `expiry_date` | json | Date the solution expires | | ↳ `created_by` | json | Author | | ↳ `last_updated_by` | json | User who last updated the solution | | ↳ `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 Studio 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) | | ↳ `title` | string | Solution title | | ↳ `description` | string | Solution body (HTML) | | ↳ `topic` | json | Topic the solution is filed under | | ↳ `parent_topic` | json | Parent topic | | ↳ `approval_status` | json | Approval status | | ↳ `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 | | ↳ `last_updated_time` | json | Last update time | | ↳ `review_date` | json | Date the solution is due for review | | ↳ `expiry_date` | json | Date the solution expires | | ↳ `created_by` | json | Author | | ↳ `last_updated_by` | json | User who last updated the solution | | ↳ `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 Studio 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 | --- # WordPress (/en/integrations/wordpress) {/* MANUAL-CONTENT-START:intro */} [WordPress.com](https://wordpress.com/) hosts sites and their content. Connect a WordPress.com site through OAuth to create and manage posts, pages, media, comments, categories, tags, and users. Use the search operation to find content before reading or updating it. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate with WordPress.com to create, update, and manage posts, pages, media, comments, categories, tags, and users. Connects to WordPress.com sites via OAuth. ## Actions [#actions] ### WordPress Create Post [#wordpress-create-post] Create a new blog post in WordPress.com #### Input [#input] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ------------------------------------------------------------------------ | | `siteId` | string | Yes | WordPress.com site ID or domain (e.g., 12345678 or mysite.wordpress.com) | | `title` | string | Yes | Post title | | `content` | string | No | Post content (HTML or plain text) | | `status` | string | No | Post status: publish, draft, pending, private, or future | | `excerpt` | string | No | Post excerpt | | `categories` | string | No | Comma-separated category IDs | | `tags` | string | No | Comma-separated tag IDs | | `featuredMedia` | number | No | Featured image media ID | | `slug` | string | No | URL slug for the post | #### Output [#output] | Parameter | Type | Description | | ------------------ | ------ | ---------------------- | | `post` | object | The created post | | ↳ `id` | number | Post ID | | ↳ `date` | string | Post creation date | | ↳ `modified` | string | Post modification date | | ↳ `slug` | string | Post slug | | ↳ `status` | string | Post status | | ↳ `type` | string | Post type | | ↳ `link` | string | Post URL | | ↳ `title` | object | Post title object | | ↳ `content` | object | Post content object | | ↳ `excerpt` | object | Post excerpt object | | ↳ `author` | number | Author ID | | ↳ `featured_media` | number | Featured media ID | | ↳ `categories` | array | Category IDs | | ↳ `tags` | array | Tag IDs | ### WordPress Update Post [#wordpress-update-post] Update an existing blog post in WordPress.com #### Input [#input-1] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ------------------------------------------------------------------------ | | `siteId` | string | Yes | WordPress.com site ID or domain (e.g., 12345678 or mysite.wordpress.com) | | `postId` | number | Yes | The ID of the post to update | | `title` | string | No | Post title | | `content` | string | No | Post content (HTML or plain text) | | `status` | string | No | Post status: publish, draft, pending, private, or future | | `excerpt` | string | No | Post excerpt | | `categories` | string | No | Comma-separated category IDs | | `tags` | string | No | Comma-separated tag IDs | | `featuredMedia` | number | No | Featured image media ID | | `slug` | string | No | URL slug for the post | #### Output [#output-1] | Parameter | Type | Description | | ------------------ | ------ | ---------------------- | | `post` | object | The updated post | | ↳ `id` | number | Post ID | | ↳ `date` | string | Post creation date | | ↳ `modified` | string | Post modification date | | ↳ `slug` | string | Post slug | | ↳ `status` | string | Post status | | ↳ `type` | string | Post type | | ↳ `link` | string | Post URL | | ↳ `title` | object | Post title object | | ↳ `content` | object | Post content object | | ↳ `excerpt` | object | Post excerpt object | | ↳ `author` | number | Author ID | | ↳ `featured_media` | number | Featured media ID | | ↳ `categories` | array | Category IDs | | ↳ `tags` | array | Tag IDs | ### WordPress Delete Post [#wordpress-delete-post] Delete a blog post from WordPress.com #### Input [#input-2] | Parameter | Type | Required | Description | | --------- | ------- | -------- | ------------------------------------------------------------------------ | | `siteId` | string | Yes | WordPress.com site ID or domain (e.g., 12345678 or mysite.wordpress.com) | | `postId` | number | Yes | The ID of the post to delete | | `force` | boolean | No | Bypass trash and force delete permanently | #### Output [#output-2] | Parameter | Type | Description | | ------------------ | ------- | ---------------------------- | | `deleted` | boolean | Whether the post was deleted | | `post` | object | The deleted post | | ↳ `id` | number | Post ID | | ↳ `date` | string | Post creation date | | ↳ `modified` | string | Post modification date | | ↳ `slug` | string | Post slug | | ↳ `status` | string | Post status | | ↳ `type` | string | Post type | | ↳ `link` | string | Post URL | | ↳ `title` | object | Post title object | | ↳ `content` | object | Post content object | | ↳ `excerpt` | object | Post excerpt object | | ↳ `author` | number | Author ID | | ↳ `featured_media` | number | Featured media ID | | ↳ `categories` | array | Category IDs | | ↳ `tags` | array | Tag IDs | ### WordPress Get Post [#wordpress-get-post] Get a single blog post from WordPress.com by ID #### Input [#input-3] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------------------------ | | `siteId` | string | Yes | WordPress.com site ID or domain (e.g., 12345678 or mysite.wordpress.com) | | `postId` | number | Yes | The ID of the post to retrieve | #### Output [#output-3] | Parameter | Type | Description | | ------------------ | ------ | ---------------------- | | `post` | object | The retrieved post | | ↳ `id` | number | Post ID | | ↳ `date` | string | Post creation date | | ↳ `modified` | string | Post modification date | | ↳ `slug` | string | Post slug | | ↳ `status` | string | Post status | | ↳ `type` | string | Post type | | ↳ `link` | string | Post URL | | ↳ `title` | object | Post title object | | ↳ `content` | object | Post content object | | ↳ `excerpt` | object | Post excerpt object | | ↳ `author` | number | Author ID | | ↳ `featured_media` | number | Featured media ID | | ↳ `categories` | array | Category IDs | | ↳ `tags` | array | Tag IDs | ### WordPress List Posts [#wordpress-list-posts] List blog posts from WordPress.com with optional filters #### Input [#input-4] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------------------------------------------------------------------ | | `siteId` | string | Yes | WordPress.com site ID or domain (e.g., 12345678 or mysite.wordpress.com) | | `perPage` | number | No | Number of posts per page (e.g., 10, 25, 50). Default: 10, max: 100 | | `page` | number | No | Page number for pagination (e.g., 1, 2, 3) | | `status` | string | No | Post status filter: publish, draft, pending, private | | `author` | number | No | Filter by author ID (e.g., 1, 42) | | `categories` | string | No | Comma-separated category IDs to filter by (e.g., "1,2,3") | | `tags` | string | No | Comma-separated tag IDs to filter by (e.g., "5,10,15") | | `search` | string | No | Search term to filter posts (e.g., "tutorial", "announcement") | | `orderBy` | string | No | Order by field: date, id, title, slug, modified | | `order` | string | No | Order direction: asc or desc | #### Output [#output-4] | Parameter | Type | Description | | ------------------ | ------ | ---------------------- | | `posts` | array | List of posts | | ↳ `id` | number | Post ID | | ↳ `date` | string | Post creation date | | ↳ `modified` | string | Post modification date | | ↳ `slug` | string | Post slug | | ↳ `status` | string | Post status | | ↳ `type` | string | Post type | | ↳ `link` | string | Post URL | | ↳ `title` | object | Post title object | | ↳ `content` | object | Post content object | | ↳ `excerpt` | object | Post excerpt object | | ↳ `author` | number | Author ID | | ↳ `featured_media` | number | Featured media ID | | ↳ `categories` | array | Category IDs | | ↳ `tags` | array | Tag IDs | | `total` | number | Total number of posts | | `totalPages` | number | Total number of pages | ### WordPress Create Page [#wordpress-create-page] Create a new page in WordPress.com #### Input [#input-5] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ------------------------------------------------------------------------ | | `siteId` | string | Yes | WordPress.com site ID or domain (e.g., 12345678 or mysite.wordpress.com) | | `title` | string | Yes | Page title | | `content` | string | No | Page content (HTML or plain text) | | `status` | string | No | Page status: publish, draft, pending, private | | `excerpt` | string | No | Page excerpt | | `parent` | number | No | Parent page ID for hierarchical pages | | `menuOrder` | number | No | Order in page menu | | `featuredMedia` | number | No | Featured image media ID | | `slug` | string | No | URL slug for the page | #### Output [#output-5] | Parameter | Type | Description | | ------------------ | ------ | ---------------------- | | `page` | object | The created page | | ↳ `id` | number | Page ID | | ↳ `date` | string | Page creation date | | ↳ `modified` | string | Page modification date | | ↳ `slug` | string | Page slug | | ↳ `status` | string | Page status | | ↳ `type` | string | Content type | | ↳ `link` | string | Page URL | | ↳ `title` | object | Page title object | | ↳ `content` | object | Page content object | | ↳ `excerpt` | object | Page excerpt object | | ↳ `author` | number | Author ID | | ↳ `featured_media` | number | Featured media ID | | ↳ `parent` | number | Parent page ID | | ↳ `menu_order` | number | Menu order | ### WordPress Update Page [#wordpress-update-page] Update an existing page in WordPress.com #### Input [#input-6] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ------------------------------------------------------------------------ | | `siteId` | string | Yes | WordPress.com site ID or domain (e.g., 12345678 or mysite.wordpress.com) | | `pageId` | number | Yes | The ID of the page to update | | `title` | string | No | Page title | | `content` | string | No | Page content (HTML or plain text) | | `status` | string | No | Page status: publish, draft, pending, private | | `excerpt` | string | No | Page excerpt | | `parent` | number | No | Parent page ID for hierarchical pages | | `menuOrder` | number | No | Order in page menu | | `featuredMedia` | number | No | Featured image media ID | | `slug` | string | No | URL slug for the page | #### Output [#output-6] | Parameter | Type | Description | | ------------------ | ------ | ---------------------- | | `page` | object | The updated page | | ↳ `id` | number | Page ID | | ↳ `date` | string | Page creation date | | ↳ `modified` | string | Page modification date | | ↳ `slug` | string | Page slug | | ↳ `status` | string | Page status | | ↳ `type` | string | Content type | | ↳ `link` | string | Page URL | | ↳ `title` | object | Page title object | | ↳ `content` | object | Page content object | | ↳ `excerpt` | object | Page excerpt object | | ↳ `author` | number | Author ID | | ↳ `featured_media` | number | Featured media ID | | ↳ `parent` | number | Parent page ID | | ↳ `menu_order` | number | Menu order | ### WordPress Delete Page [#wordpress-delete-page] Delete a page from WordPress.com #### Input [#input-7] | Parameter | Type | Required | Description | | --------- | ------- | -------- | ------------------------------------------------------------------------ | | `siteId` | string | Yes | WordPress.com site ID or domain (e.g., 12345678 or mysite.wordpress.com) | | `pageId` | number | Yes | The ID of the page to delete | | `force` | boolean | No | Bypass trash and force delete permanently | #### Output [#output-7] | Parameter | Type | Description | | ------------------ | ------- | ---------------------------- | | `deleted` | boolean | Whether the page was deleted | | `page` | object | The deleted page | | ↳ `id` | number | Page ID | | ↳ `date` | string | Page creation date | | ↳ `modified` | string | Page modification date | | ↳ `slug` | string | Page slug | | ↳ `status` | string | Page status | | ↳ `type` | string | Content type | | ↳ `link` | string | Page URL | | ↳ `title` | object | Page title object | | ↳ `content` | object | Page content object | | ↳ `excerpt` | object | Page excerpt object | | ↳ `author` | number | Author ID | | ↳ `featured_media` | number | Featured media ID | | ↳ `parent` | number | Parent page ID | | ↳ `menu_order` | number | Menu order | ### WordPress Get Page [#wordpress-get-page] Get a single page from WordPress.com by ID #### Input [#input-8] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------------------------ | | `siteId` | string | Yes | WordPress.com site ID or domain (e.g., 12345678 or mysite.wordpress.com) | | `pageId` | number | Yes | The ID of the page to retrieve | #### Output [#output-8] | Parameter | Type | Description | | ------------------ | ------ | ---------------------- | | `page` | object | The retrieved page | | ↳ `id` | number | Page ID | | ↳ `date` | string | Page creation date | | ↳ `modified` | string | Page modification date | | ↳ `slug` | string | Page slug | | ↳ `status` | string | Page status | | ↳ `type` | string | Content type | | ↳ `link` | string | Page URL | | ↳ `title` | object | Page title object | | ↳ `content` | object | Page content object | | ↳ `excerpt` | object | Page excerpt object | | ↳ `author` | number | Author ID | | ↳ `featured_media` | number | Featured media ID | | ↳ `parent` | number | Parent page ID | | ↳ `menu_order` | number | Menu order | ### WordPress List Pages [#wordpress-list-pages] List pages from WordPress.com with optional filters #### Input [#input-9] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------------------------ | | `siteId` | string | Yes | WordPress.com site ID or domain (e.g., 12345678 or mysite.wordpress.com) | | `perPage` | number | No | Number of pages per request (e.g., 10, 25, 50). Default: 10, max: 100 | | `page` | number | No | Page number for pagination (e.g., 1, 2, 3) | | `status` | string | No | Page status filter: publish, draft, pending, private | | `parent` | number | No | Filter by parent page ID (e.g., 123) | | `search` | string | No | Search term to filter pages (e.g., "about", "contact") | | `orderBy` | string | No | Order by field: date, id, title, slug, modified, menu\_order | | `order` | string | No | Order direction: asc or desc | #### Output [#output-9] | Parameter | Type | Description | | ------------------ | ------ | ---------------------------- | | `pages` | array | List of pages | | ↳ `id` | number | Page ID | | ↳ `date` | string | Page creation date | | ↳ `modified` | string | Page modification date | | ↳ `slug` | string | Page slug | | ↳ `status` | string | Page status | | ↳ `type` | string | Content type | | ↳ `link` | string | Page URL | | ↳ `title` | object | Page title object | | ↳ `content` | object | Page content object | | ↳ `excerpt` | object | Page excerpt object | | ↳ `author` | number | Author ID | | ↳ `featured_media` | number | Featured media ID | | ↳ `parent` | number | Parent page ID | | ↳ `menu_order` | number | Menu order | | `total` | number | Total number of pages | | `totalPages` | number | Total number of result pages | ### WordPress Upload Media [#wordpress-upload-media] Upload a media file (image, video, document) to WordPress.com #### Input [#input-10] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ------------------------------------------------------------------------ | | `siteId` | string | Yes | WordPress.com site ID or domain (e.g., 12345678 or mysite.wordpress.com) | | `file` | file | No | File to upload (UserFile object) | | `filename` | string | No | Optional filename override (e.g., image.jpg) | | `title` | string | No | Media title | | `caption` | string | No | Media caption | | `altText` | string | No | Alternative text for accessibility | | `description` | string | No | Media description | #### Output [#output-10] | Parameter | Type | Description | | ----------------- | ------ | -------------------------------- | | `media` | object | The uploaded media item | | ↳ `id` | number | Media ID | | ↳ `date` | string | Upload date | | ↳ `slug` | string | Media slug | | ↳ `type` | string | Content type | | ↳ `link` | string | Media page URL | | ↳ `title` | object | Media title object | | ↳ `caption` | object | Media caption object | | ↳ `alt_text` | string | Alt text | | ↳ `media_type` | string | Media type (image, video, etc.) | | ↳ `mime_type` | string | MIME type | | ↳ `source_url` | string | Direct URL to the media file | | ↳ `media_details` | object | Media details (dimensions, etc.) | ### WordPress Get Media [#wordpress-get-media] Get a single media item from WordPress.com by ID #### Input [#input-11] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------------------------ | | `siteId` | string | Yes | WordPress.com site ID or domain (e.g., 12345678 or mysite.wordpress.com) | | `mediaId` | number | Yes | The ID of the media item to retrieve | #### Output [#output-11] | Parameter | Type | Description | | ----------------- | ------ | -------------------------------- | | `media` | object | The retrieved media item | | ↳ `id` | number | Media ID | | ↳ `date` | string | Upload date | | ↳ `slug` | string | Media slug | | ↳ `type` | string | Content type | | ↳ `link` | string | Media page URL | | ↳ `title` | object | Media title object | | ↳ `caption` | object | Media caption object | | ↳ `alt_text` | string | Alt text | | ↳ `media_type` | string | Media type (image, video, etc.) | | ↳ `mime_type` | string | MIME type | | ↳ `source_url` | string | Direct URL to the media file | | ↳ `media_details` | object | Media details (dimensions, etc.) | ### WordPress List Media [#wordpress-list-media] List media items from the WordPress.com media library #### Input [#input-12] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | --------------------------------------------------------------------------- | | `siteId` | string | Yes | WordPress.com site ID or domain (e.g., 12345678 or mysite.wordpress.com) | | `perPage` | number | No | Number of media items per request (e.g., 10, 25, 50). Default: 10, max: 100 | | `page` | number | No | Page number for pagination (e.g., 1, 2, 3) | | `search` | string | No | Search term to filter media (e.g., "logo", "banner") | | `mediaType` | string | No | Filter by media type: image, video, audio, application | | `mimeType` | string | No | Filter by specific MIME type (e.g., image/jpeg, image/png) | | `orderBy` | string | No | Order by field: date, id, title, slug | | `order` | string | No | Order direction: asc or desc | #### Output [#output-12] | Parameter | Type | Description | | ----------------- | ------ | -------------------------------- | | `media` | array | List of media items | | ↳ `id` | number | Media ID | | ↳ `date` | string | Upload date | | ↳ `slug` | string | Media slug | | ↳ `type` | string | Content type | | ↳ `link` | string | Media page URL | | ↳ `title` | object | Media title object | | ↳ `caption` | object | Media caption object | | ↳ `alt_text` | string | Alt text | | ↳ `media_type` | string | Media type (image, video, etc.) | | ↳ `mime_type` | string | MIME type | | ↳ `source_url` | string | Direct URL to the media file | | ↳ `media_details` | object | Media details (dimensions, etc.) | | `total` | number | Total number of media items | | `totalPages` | number | Total number of result pages | ### WordPress Delete Media [#wordpress-delete-media] Delete a media item from WordPress.com #### Input [#input-13] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------------------------ | | `siteId` | string | Yes | WordPress.com site ID or domain (e.g., 12345678 or mysite.wordpress.com) | | `mediaId` | number | Yes | The ID of the media item to delete | #### Output [#output-13] | Parameter | Type | Description | | ----------------- | ------- | -------------------------------- | | `deleted` | boolean | Whether the media was deleted | | `media` | object | The deleted media item | | ↳ `id` | number | Media ID | | ↳ `date` | string | Upload date | | ↳ `slug` | string | Media slug | | ↳ `type` | string | Content type | | ↳ `link` | string | Media page URL | | ↳ `title` | object | Media title object | | ↳ `caption` | object | Media caption object | | ↳ `alt_text` | string | Alt text | | ↳ `media_type` | string | Media type (image, video, etc.) | | ↳ `mime_type` | string | MIME type | | ↳ `source_url` | string | Direct URL to the media file | | ↳ `media_details` | object | Media details (dimensions, etc.) | ### WordPress Create Comment [#wordpress-create-comment] Create a new comment on a WordPress.com post #### Input [#input-14] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ------------------------------------------------------------------------ | | `siteId` | string | Yes | WordPress.com site ID or domain (e.g., 12345678 or mysite.wordpress.com) | | `postId` | number | Yes | The ID of the post to comment on | | `content` | string | Yes | Comment content | | `parent` | number | No | Parent comment ID for replies | | `authorName` | string | No | Comment author display name | | `authorEmail` | string | No | Comment author email | | `authorUrl` | string | No | Comment author URL | #### Output [#output-14] | Parameter | Type | Description | | ---------------- | ------ | ---------------------- | | `comment` | object | The created comment | | ↳ `id` | number | Comment ID | | ↳ `post` | number | Post ID | | ↳ `parent` | number | Parent comment ID | | ↳ `author` | number | Author user ID | | ↳ `author_name` | string | Author display name | | ↳ `author_email` | string | Author email | | ↳ `author_url` | string | Author URL | | ↳ `date` | string | Comment date | | ↳ `content` | object | Comment content object | | ↳ `link` | string | Comment permalink | | ↳ `status` | string | Comment status | ### WordPress List Comments [#wordpress-list-comments] List comments from WordPress.com with optional filters #### Input [#input-15] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------------------------ | | `siteId` | string | Yes | WordPress.com site ID or domain (e.g., 12345678 or mysite.wordpress.com) | | `perPage` | number | No | Number of comments per request (e.g., 10, 25, 50). Default: 10, max: 100 | | `page` | number | No | Page number for pagination (e.g., 1, 2, 3) | | `postId` | number | No | Filter by post ID (e.g., 123, 456) | | `status` | string | No | Filter by comment status: approved, hold, spam, trash | | `search` | string | No | Search term to filter comments (e.g., "question", "feedback") | | `orderBy` | string | No | Order by field: date, id, parent | | `order` | string | No | Order direction: asc or desc | #### Output [#output-15] | Parameter | Type | Description | | ---------------- | ------ | ---------------------------- | | `comments` | array | List of comments | | ↳ `id` | number | Comment ID | | ↳ `post` | number | Post ID | | ↳ `parent` | number | Parent comment ID | | ↳ `author` | number | Author user ID | | ↳ `author_name` | string | Author display name | | ↳ `author_email` | string | Author email | | ↳ `author_url` | string | Author URL | | ↳ `date` | string | Comment date | | ↳ `content` | object | Comment content object | | ↳ `link` | string | Comment permalink | | ↳ `status` | string | Comment status | | `total` | number | Total number of comments | | `totalPages` | number | Total number of result pages | ### WordPress Update Comment [#wordpress-update-comment] Update a comment in WordPress.com (content or status) #### Input [#input-16] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------------------------------------------------------ | | `siteId` | string | Yes | WordPress.com site ID or domain (e.g., 12345678 or mysite.wordpress.com) | | `commentId` | number | Yes | The ID of the comment to update | | `content` | string | No | Updated comment content | | `status` | string | No | Comment status: approved, hold, spam, trash | #### Output [#output-16] | Parameter | Type | Description | | ---------------- | ------ | ---------------------- | | `comment` | object | The updated comment | | ↳ `id` | number | Comment ID | | ↳ `post` | number | Post ID | | ↳ `parent` | number | Parent comment ID | | ↳ `author` | number | Author user ID | | ↳ `author_name` | string | Author display name | | ↳ `author_email` | string | Author email | | ↳ `author_url` | string | Author URL | | ↳ `date` | string | Comment date | | ↳ `content` | object | Comment content object | | ↳ `link` | string | Comment permalink | | ↳ `status` | string | Comment status | ### WordPress Delete Comment [#wordpress-delete-comment] Delete a comment from WordPress.com #### Input [#input-17] | Parameter | Type | Required | Description | | ----------- | ------- | -------- | ------------------------------------------------------------------------ | | `siteId` | string | Yes | WordPress.com site ID or domain (e.g., 12345678 or mysite.wordpress.com) | | `commentId` | number | Yes | The ID of the comment to delete | | `force` | boolean | No | Bypass trash and force delete permanently | #### Output [#output-17] | Parameter | Type | Description | | ---------------- | ------- | ------------------------------- | | `deleted` | boolean | Whether the comment was deleted | | `comment` | object | The deleted comment | | ↳ `id` | number | Comment ID | | ↳ `post` | number | Post ID | | ↳ `parent` | number | Parent comment ID | | ↳ `author` | number | Author user ID | | ↳ `author_name` | string | Author display name | | ↳ `author_email` | string | Author email | | ↳ `author_url` | string | Author URL | | ↳ `date` | string | Comment date | | ↳ `content` | object | Comment content object | | ↳ `link` | string | Comment permalink | | ↳ `status` | string | Comment status | ### WordPress Create Category [#wordpress-create-category] Create a new category in WordPress.com #### Input [#input-18] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ------------------------------------------------------------------------ | | `siteId` | string | Yes | WordPress.com site ID or domain (e.g., 12345678 or mysite.wordpress.com) | | `name` | string | Yes | Category name | | `description` | string | No | Category description | | `parent` | number | No | Parent category ID for hierarchical categories | | `slug` | string | No | URL slug for the category | #### Output [#output-18] | Parameter | Type | Description | | --------------- | ------ | -------------------------------- | | `category` | object | The created category | | ↳ `id` | number | Category ID | | ↳ `count` | number | Number of posts in this category | | ↳ `description` | string | Category description | | ↳ `link` | string | Category archive URL | | ↳ `name` | string | Category name | | ↳ `slug` | string | Category slug | | ↳ `taxonomy` | string | Taxonomy name | | ↳ `parent` | number | Parent category ID | ### WordPress List Categories [#wordpress-list-categories] List categories from WordPress.com #### Input [#input-19] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------------------------------------------------------- | | `siteId` | string | Yes | WordPress.com site ID or domain (e.g., 12345678 or mysite.wordpress.com) | | `perPage` | number | No | Number of categories per request (e.g., 10, 25, 50). Default: 10, max: 100 | | `page` | number | No | Page number for pagination (e.g., 1, 2, 3) | | `search` | string | No | Search term to filter categories (e.g., "news", "technology") | | `order` | string | No | Order direction: asc or desc | #### Output [#output-19] | Parameter | Type | Description | | --------------- | ------ | -------------------------------- | | `categories` | array | List of categories | | ↳ `id` | number | Category ID | | ↳ `count` | number | Number of posts in this category | | ↳ `description` | string | Category description | | ↳ `link` | string | Category archive URL | | ↳ `name` | string | Category name | | ↳ `slug` | string | Category slug | | ↳ `taxonomy` | string | Taxonomy name | | ↳ `parent` | number | Parent category ID | | `total` | number | Total number of categories | | `totalPages` | number | Total number of result pages | ### WordPress Get Category [#wordpress-get-category] Get a single category from WordPress.com by ID #### Input [#input-20] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------------------------------------------------------------------ | | `siteId` | string | Yes | WordPress.com site ID or domain (e.g., 12345678 or mysite.wordpress.com) | | `categoryId` | number | Yes | The ID of the category to retrieve | #### Output [#output-20] | Parameter | Type | Description | | --------------- | ------ | -------------------------------- | | `category` | object | The retrieved category | | ↳ `id` | number | Category ID | | ↳ `count` | number | Number of posts in this category | | ↳ `description` | string | Category description | | ↳ `link` | string | Category archive URL | | ↳ `name` | string | Category name | | ↳ `slug` | string | Category slug | | ↳ `taxonomy` | string | Taxonomy name | | ↳ `parent` | number | Parent category ID | ### WordPress Update Category [#wordpress-update-category] Update an existing category in WordPress.com #### Input [#input-21] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ------------------------------------------------------------------------ | | `siteId` | string | Yes | WordPress.com site ID or domain (e.g., 12345678 or mysite.wordpress.com) | | `categoryId` | number | Yes | The ID of the category to update | | `name` | string | No | Category name | | `description` | string | No | Category description | | `parent` | number | No | Parent category ID for hierarchical categories | | `slug` | string | No | URL slug for the category | #### Output [#output-21] | Parameter | Type | Description | | --------------- | ------ | -------------------------------- | | `category` | object | The updated category | | ↳ `id` | number | Category ID | | ↳ `count` | number | Number of posts in this category | | ↳ `description` | string | Category description | | ↳ `link` | string | Category archive URL | | ↳ `name` | string | Category name | | ↳ `slug` | string | Category slug | | ↳ `taxonomy` | string | Taxonomy name | | ↳ `parent` | number | Parent category ID | ### WordPress Delete Category [#wordpress-delete-category] Delete a category from WordPress.com #### Input [#input-22] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------------------------------------------------------------------ | | `siteId` | string | Yes | WordPress.com site ID or domain (e.g., 12345678 or mysite.wordpress.com) | | `categoryId` | number | Yes | The ID of the category to delete | #### Output [#output-22] | Parameter | Type | Description | | --------------- | ------- | -------------------------------- | | `deleted` | boolean | Whether the category was deleted | | `category` | object | The deleted category | | ↳ `id` | number | Category ID | | ↳ `count` | number | Number of posts in this category | | ↳ `description` | string | Category description | | ↳ `link` | string | Category archive URL | | ↳ `name` | string | Category name | | ↳ `slug` | string | Category slug | | ↳ `taxonomy` | string | Taxonomy name | | ↳ `parent` | number | Parent category ID | ### WordPress Create Tag [#wordpress-create-tag] Create a new tag in WordPress.com #### Input [#input-23] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ------------------------------------------------------------------------ | | `siteId` | string | Yes | WordPress.com site ID or domain (e.g., 12345678 or mysite.wordpress.com) | | `name` | string | Yes | Tag name | | `description` | string | No | Tag description | | `slug` | string | No | URL slug for the tag | #### Output [#output-23] | Parameter | Type | Description | | --------------- | ------ | ----------------------------- | | `tag` | object | The created tag | | ↳ `id` | number | Tag ID | | ↳ `count` | number | Number of posts with this tag | | ↳ `description` | string | Tag description | | ↳ `link` | string | Tag archive URL | | ↳ `name` | string | Tag name | | ↳ `slug` | string | Tag slug | | ↳ `taxonomy` | string | Taxonomy name | ### WordPress List Tags [#wordpress-list-tags] List tags from WordPress.com #### Input [#input-24] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------------------------ | | `siteId` | string | Yes | WordPress.com site ID or domain (e.g., 12345678 or mysite.wordpress.com) | | `perPage` | number | No | Number of tags per request (e.g., 10, 25, 50). Default: 10, max: 100 | | `page` | number | No | Page number for pagination (e.g., 1, 2, 3) | | `search` | string | No | Search term to filter tags (e.g., "javascript", "tutorial") | | `order` | string | No | Order direction: asc or desc | #### Output [#output-24] | Parameter | Type | Description | | --------------- | ------ | ----------------------------- | | `tags` | array | List of tags | | ↳ `id` | number | Tag ID | | ↳ `count` | number | Number of posts with this tag | | ↳ `description` | string | Tag description | | ↳ `link` | string | Tag archive URL | | ↳ `name` | string | Tag name | | ↳ `slug` | string | Tag slug | | ↳ `taxonomy` | string | Taxonomy name | | `total` | number | Total number of tags | | `totalPages` | number | Total number of result pages | ### WordPress Get Tag [#wordpress-get-tag] Get a single tag from WordPress.com by ID #### Input [#input-25] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------------------------ | | `siteId` | string | Yes | WordPress.com site ID or domain (e.g., 12345678 or mysite.wordpress.com) | | `tagId` | number | Yes | The ID of the tag to retrieve | #### Output [#output-25] | Parameter | Type | Description | | --------------- | ------ | ----------------------------- | | `tag` | object | The retrieved tag | | ↳ `id` | number | Tag ID | | ↳ `count` | number | Number of posts with this tag | | ↳ `description` | string | Tag description | | ↳ `link` | string | Tag archive URL | | ↳ `name` | string | Tag name | | ↳ `slug` | string | Tag slug | | ↳ `taxonomy` | string | Taxonomy name | ### WordPress Update Tag [#wordpress-update-tag] Update an existing tag in WordPress.com #### Input [#input-26] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ------------------------------------------------------------------------ | | `siteId` | string | Yes | WordPress.com site ID or domain (e.g., 12345678 or mysite.wordpress.com) | | `tagId` | number | Yes | The ID of the tag to update | | `name` | string | No | Tag name | | `description` | string | No | Tag description | | `slug` | string | No | URL slug for the tag | #### Output [#output-26] | Parameter | Type | Description | | --------------- | ------ | ----------------------------- | | `tag` | object | The updated tag | | ↳ `id` | number | Tag ID | | ↳ `count` | number | Number of posts with this tag | | ↳ `description` | string | Tag description | | ↳ `link` | string | Tag archive URL | | ↳ `name` | string | Tag name | | ↳ `slug` | string | Tag slug | | ↳ `taxonomy` | string | Taxonomy name | ### WordPress Delete Tag [#wordpress-delete-tag] Delete a tag from WordPress.com #### Input [#input-27] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------------------------ | | `siteId` | string | Yes | WordPress.com site ID or domain (e.g., 12345678 or mysite.wordpress.com) | | `tagId` | number | Yes | The ID of the tag to delete | #### Output [#output-27] | Parameter | Type | Description | | --------------- | ------- | ----------------------------- | | `deleted` | boolean | Whether the tag was deleted | | `tag` | object | The deleted tag | | ↳ `id` | number | Tag ID | | ↳ `count` | number | Number of posts with this tag | | ↳ `description` | string | Tag description | | ↳ `link` | string | Tag archive URL | | ↳ `name` | string | Tag name | | ↳ `slug` | string | Tag slug | | ↳ `taxonomy` | string | Taxonomy name | ### WordPress Get Current User [#wordpress-get-current-user] Get information about the currently authenticated WordPress.com user #### Input [#input-28] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------------------------ | | `siteId` | string | Yes | WordPress.com site ID or domain (e.g., 12345678 or mysite.wordpress.com) | #### Output [#output-28] | Parameter | Type | Description | | --------------- | ------ | ------------------------------ | | `user` | object | The current user | | ↳ `id` | number | User ID | | ↳ `username` | string | Username | | ↳ `name` | string | Display name | | ↳ `first_name` | string | First name | | ↳ `last_name` | string | Last name | | ↳ `email` | string | Email address | | ↳ `url` | string | User website URL | | ↳ `description` | string | User bio | | ↳ `link` | string | Author archive URL | | ↳ `slug` | string | User slug | | ↳ `roles` | array | User roles | | ↳ `avatar_urls` | object | Avatar URLs at different sizes | ### WordPress List Users [#wordpress-list-users] List users from WordPress.com (requires admin privileges) #### Input [#input-29] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------------------------ | | `siteId` | string | Yes | WordPress.com site ID or domain (e.g., 12345678 or mysite.wordpress.com) | | `perPage` | number | No | Number of users per request (e.g., 10, 25, 50). Default: 10, max: 100 | | `page` | number | No | Page number for pagination (e.g., 1, 2, 3) | | `search` | string | No | Search term to filter users (e.g., "john", "admin") | | `roles` | string | No | Comma-separated role names to filter by (e.g., "administrator,editor") | | `order` | string | No | Order direction: asc or desc | #### Output [#output-29] | Parameter | Type | Description | | --------------- | ------ | ------------------------------ | | `users` | array | List of users | | ↳ `id` | number | User ID | | ↳ `username` | string | Username | | ↳ `name` | string | Display name | | ↳ `first_name` | string | First name | | ↳ `last_name` | string | Last name | | ↳ `email` | string | Email address | | ↳ `url` | string | User website URL | | ↳ `description` | string | User bio | | ↳ `link` | string | Author archive URL | | ↳ `slug` | string | User slug | | ↳ `roles` | array | User roles | | ↳ `avatar_urls` | object | Avatar URLs at different sizes | | `total` | number | Total number of users | | `totalPages` | number | Total number of result pages | ### WordPress Get User [#wordpress-get-user] Get a specific user from WordPress.com by ID #### Input [#input-30] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------------------------ | | `siteId` | string | Yes | WordPress.com site ID or domain (e.g., 12345678 or mysite.wordpress.com) | | `userId` | number | Yes | The ID of the user to retrieve | #### Output [#output-30] | Parameter | Type | Description | | --------------- | ------ | ------------------------------ | | `user` | object | The retrieved user | | ↳ `id` | number | User ID | | ↳ `username` | string | Username | | ↳ `name` | string | Display name | | ↳ `first_name` | string | First name | | ↳ `last_name` | string | Last name | | ↳ `email` | string | Email address | | ↳ `url` | string | User website URL | | ↳ `description` | string | User bio | | ↳ `link` | string | Author archive URL | | ↳ `slug` | string | User slug | | ↳ `roles` | array | User roles | | ↳ `avatar_urls` | object | Avatar URLs at different sizes | ### WordPress Search Content [#wordpress-search-content] Search across all content types in WordPress.com (posts, pages, media) #### Input [#input-31] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------------------------------------------------------------------------- | | `siteId` | string | Yes | WordPress.com site ID or domain (e.g., 12345678 or mysite.wordpress.com) | | `query` | string | Yes | Search query | | `perPage` | number | No | Number of results per request (default: 10, max: 100) | | `page` | number | No | Page number for pagination | | `type` | string | No | Filter by search index type: post, term, or post-format | | `subtype` | string | No | Filter by subtype within the selected type (e.g., post or page when type is post) | #### Output [#output-31] | Parameter | Type | Description | | ------------ | ------ | -------------------------------------------------- | | `results` | array | Search results | | ↳ `id` | number | Content ID | | ↳ `title` | string | Content title | | ↳ `url` | string | Content URL | | ↳ `type` | string | Content type (post, term, or post-format) | | ↳ `subtype` | string | Subtype within the content type (e.g., post, page) | | `total` | number | Total number of results | | `totalPages` | number | Total number of result pages | --- # SMTP (/en/integrations/smtp) {/* MANUAL-CONTENT-START:intro */} The SMTP block sends email through a mail server using its hostname, port, security protocol, and credentials. Set the sender, recipients, subject, and plain-text or HTML body; add CC, BCC, reply-to, and attachments as needed. Inspect the returned send status and message ID, or the error if sending fails. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Send emails using any SMTP server (Gmail, Outlook, custom servers, etc.). Configure SMTP connection settings and send emails with full control over content, recipients, and attachments. ## Actions [#actions] ### SMTP Send Mail [#smtp-send-mail] Send emails via SMTP server #### Input [#input] | Parameter | Type | Required | Description | | -------------- | ------- | -------- | ------------------------------------------- | | `smtpHost` | string | Yes | SMTP server hostname (e.g., smtp.gmail.com) | | `smtpPort` | number | Yes | SMTP server port (587 for TLS, 465 for SSL) | | `smtpUsername` | string | Yes | SMTP authentication username | | `smtpPassword` | string | Yes | SMTP authentication password | | `smtpSecure` | string | Yes | Security protocol (TLS, SSL, or None) | | `from` | string | Yes | Sender email address | | `to` | string | Yes | Recipient email address | | `subject` | string | Yes | Email subject | | `body` | string | Yes | Email body content | | `contentType` | string | No | Content type (text or html) | | `fromName` | string | No | Display name for sender | | `cc` | string | No | CC recipients (comma-separated) | | `bcc` | string | No | BCC recipients (comma-separated) | | `replyTo` | string | No | Reply-to email address | | `attachments` | file\[] | No | Files to attach to the email | #### Output [#output] | Parameter | Type | Description | | ----------- | ------- | --------------------------------------- | | `success` | boolean | Whether the email was sent successfully | | `messageId` | string | Message ID from SMTP server | | `to` | string | Recipient email address | | `subject` | string | Email subject | | `error` | string | Error message if sending failed | --- # Upstash (/en/integrations/upstash) {/* MANUAL-CONTENT-START:intro */} Use [Upstash](https://upstash.com/) Redis through its REST API to manage keys, hashes, lists, counters, and expiry. The Command action accepts a Redis command for operations beyond the dedicated actions. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Connect to Upstash Redis to perform key-value, hash, list, and utility operations via the REST API. ## Actions [#actions] ### Upstash Redis Get [#upstash-redis-get] Get the value of a key from Upstash Redis. #### Input [#input] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------ | | `restUrl` | string | Yes | Upstash Redis REST URL | | `restToken` | string | Yes | Upstash Redis REST Token | | `key` | string | Yes | The key to retrieve | #### Output [#output] | Parameter | Type | Description | | --------- | ------ | --------------------------------------------------- | | `key` | string | The key that was retrieved | | `value` | json | The value of the key (string), or null if not found | ### Upstash Redis Set [#upstash-redis-set] Set the value of a key in Upstash Redis with an optional expiration time in seconds. #### Input [#input-1] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------------------- | | `restUrl` | string | Yes | Upstash Redis REST URL | | `restToken` | string | Yes | Upstash Redis REST Token | | `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") | ### Upstash Redis Delete [#upstash-redis-delete] Delete a key from Upstash Redis. #### Input [#input-2] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------ | | `restUrl` | string | Yes | Upstash Redis REST URL | | `restToken` | string | Yes | Upstash Redis REST Token | | `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) | ### Upstash Redis Keys [#upstash-redis-keys] List keys matching a pattern in Upstash Redis. Defaults to listing all keys (\*). #### Input [#input-3] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | -------------------------------------------------------------------------- | | `restUrl` | string | Yes | Upstash Redis REST URL | | `restToken` | string | Yes | Upstash Redis REST Token | | `pattern` | string | No | Pattern to match keys (e.g., "user:*"). Defaults to "*" 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 | ### Upstash Redis Command [#upstash-redis-command] Execute an arbitrary Redis command against Upstash Redis. Pass the full command as a JSON array (e.g., \["HSET", "myhash", "field1", "value1"]). #### Input [#input-4] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------- | | `restUrl` | string | Yes | Upstash Redis REST URL | | `restToken` | string | Yes | Upstash Redis REST Token | | `command` | string | Yes | Redis command as a JSON array (e.g., \["HSET", "myhash", "field1", "value1"]) or a simple command string (e.g., "PING") | #### Output [#output-4] | Parameter | Type | Description | | --------- | ------ | ------------------------------- | | `command` | string | The command that was executed | | `result` | json | The result of the Redis command | ### Upstash Redis HSET [#upstash-redis-hset] Set a field in a hash stored at a key in Upstash Redis. #### Input [#input-5] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------------------ | | `restUrl` | string | Yes | Upstash Redis REST URL | | `restToken` | string | Yes | Upstash Redis REST Token | | `key` | string | Yes | The hash key | | `field` | string | Yes | The field name within the hash | | `value` | string | Yes | The value to store in the hash field | #### Output [#output-5] | Parameter | Type | Description | | --------- | ------ | ------------------------------------------------------------- | | `key` | string | The hash key | | `field` | string | The field that was set | | `result` | number | Number of new fields added (0 if field was updated, 1 if new) | ### Upstash Redis HGET [#upstash-redis-hget] Get the value of a field in a hash stored at a key in Upstash Redis. #### Input [#input-6] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | -------------------------- | | `restUrl` | string | Yes | Upstash Redis REST URL | | `restToken` | string | Yes | Upstash Redis REST Token | | `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` | json | The value of the hash field (string), or null if not found | ### Upstash Redis HGETALL [#upstash-redis-hgetall] Get all fields and values of a hash stored at a key in Upstash Redis. #### Input [#input-7] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------ | | `restUrl` | string | Yes | Upstash Redis REST URL | | `restToken` | string | Yes | Upstash Redis REST Token | | `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, keyed by field name | | `fieldCount` | number | Number of fields in the hash | ### Upstash Redis INCR [#upstash-redis-incr] Atomically increment the integer value of a key by one in Upstash Redis. If the key does not exist, it is set to 0 before incrementing. #### Input [#input-8] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------ | | `restUrl` | string | Yes | Upstash Redis REST URL | | `restToken` | string | Yes | Upstash Redis REST Token | | `key` | string | Yes | The key to increment | #### Output [#output-8] | Parameter | Type | Description | | --------- | ------ | -------------------------------- | | `key` | string | The key that was incremented | | `value` | number | The new value after incrementing | ### Upstash Redis EXPIRE [#upstash-redis-expire] Set a timeout on a key in Upstash Redis. After the timeout, the key is deleted. #### Input [#input-9] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ---------------------------- | | `restUrl` | string | Yes | Upstash Redis REST URL | | `restToken` | string | Yes | Upstash Redis REST Token | | `key` | string | Yes | The key to set expiration on | | `seconds` | number | Yes | Timeout in seconds | #### Output [#output-9] | 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 | ### Upstash Redis TTL [#upstash-redis-ttl] Get the remaining time to live of a key in Upstash Redis. Returns -1 if the key has no expiration, -2 if the key does not exist. #### Input [#input-10] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------ | | `restUrl` | string | Yes | Upstash Redis REST URL | | `restToken` | string | Yes | Upstash Redis REST Token | | `key` | string | Yes | The key to check TTL for | #### Output [#output-10] | Parameter | Type | Description | | --------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------------- | | `key` | string | The key checked | | `ttl` | number | Remaining TTL in seconds. Positive integer if the key has a TTL set, -1 if the key exists with no expiration, -2 if the key does not exist. | ### Upstash Redis LPUSH [#upstash-redis-lpush] Prepend a value to the beginning of a list in Upstash Redis. Creates the list if it does not exist. #### Input [#input-11] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | -------------------------------- | | `restUrl` | string | Yes | Upstash Redis REST URL | | `restToken` | string | Yes | Upstash Redis REST Token | | `key` | string | Yes | The list key | | `value` | string | Yes | The value to prepend to the list | #### Output [#output-11] | Parameter | Type | Description | | --------- | ------ | ------------------------------------- | | `key` | string | The list key | | `length` | number | The length of the list after the push | ### Upstash Redis LRANGE [#upstash-redis-lrange] Get a range of elements from a list in Upstash Redis. Use 0 and -1 for start and stop to get all elements. #### Input [#input-12] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ----------------------------------------------------- | | `restUrl` | string | Yes | Upstash Redis REST URL | | `restToken` | string | Yes | Upstash Redis REST Token | | `key` | string | Yes | The list key | | `start` | number | Yes | Start index (0-based, negative values count from end) | | `stop` | number | Yes | Stop index (inclusive, -1 for last element) | #### Output [#output-12] | Parameter | Type | Description | | --------- | ------ | --------------------------------------- | | `key` | string | The list key | | `values` | array | List of elements in the specified range | | `count` | number | Number of elements returned | ### Upstash Redis EXISTS [#upstash-redis-exists] Check if a key exists in Upstash Redis. Returns true if the key exists, false otherwise. #### Input [#input-13] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------ | | `restUrl` | string | Yes | Upstash Redis REST URL | | `restToken` | string | Yes | Upstash Redis REST Token | | `key` | string | Yes | The key to check | #### Output [#output-13] | Parameter | Type | Description | | --------- | ------- | -------------------------------------------- | | `key` | string | The key that was checked | | `exists` | boolean | Whether the key exists (true) or not (false) | ### Upstash Redis SETNX [#upstash-redis-setnx] Set the value of a key only if it does not already exist. Returns true if the key was set, false if it already existed. #### Input [#input-14] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | -------------------------------------------- | | `restUrl` | string | Yes | Upstash Redis REST URL | | `restToken` | string | Yes | Upstash Redis REST Token | | `key` | string | Yes | The key to set | | `value` | string | Yes | The value to store if the key does not exist | #### Output [#output-14] | Parameter | Type | Description | | --------- | ------- | --------------------------------------------------------- | | `key` | string | The key that was attempted to set | | `wasSet` | boolean | Whether the key was set (true) or already existed (false) | ### Upstash Redis INCRBY [#upstash-redis-incrby] Increment the integer value of a key by a given amount. Use a negative value to decrement. If the key does not exist, it is set to 0 before the operation. #### Input [#input-15] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | -------------------------------------------------------- | | `restUrl` | string | Yes | Upstash Redis REST URL | | `restToken` | string | Yes | Upstash Redis REST Token | | `key` | string | Yes | The key to increment | | `increment` | number | Yes | Amount to increment by (use negative value to decrement) | #### Output [#output-15] | Parameter | Type | Description | | --------- | ------ | -------------------------------- | | `key` | string | The key that was incremented | | `value` | number | The new value after incrementing | --- # Azure Data Explorer (/en/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 Studio, 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 | --- # Bright Data (/en/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 | --- # HubSpot setup guide (/en/integrations/hubspot-setup) Studio 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 [Studio](https://agent-studio.seeyu.ai) 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 Studio, open your workspace, and click **Integrations** in the sidebar. 2. Search for **HubSpot** and open it. The current Integrations page with search and HubSpot in the featured services 3. Click **Add to Studio** and choose **Connect with OAuth**. For a private app token, follow the [Private App Tokens guide](/integrations/hubspot-service-account). The HubSpot integration page in Studio with the Add to Studio button in the top right 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. HubSpot's screen for connecting your Studio account, with sign-in options 6. Review the requested scopes on HubSpot's approval screen and click **Connect app**. {/* VISUAL: screenshot of the HubSpot scope approval screen for the Studio app. */} 7. You are returned to Studio. 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. Skills such as *upsert-contact* provide instructions an agent can load for a task. 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. Studio 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 Studio [#disconnect-hubspot-from-studio] 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 Studio is not affected. 1. In Studio, 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 Studio from the HubSpot side, which revokes its access entirely: 1. In HubSpot, go to **Settings → Integrations → Connected apps**. 2. Find **Studio** 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 Studio'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 [help@seeyu.ai](mailto:help@seeyu.ai). --- # CloudTrail (/en/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 | --- # Jotform (/en/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 | --- # Google Drive (/en/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 | --- # Twilio SMS (/en/integrations/twilio_sms) {/* MANUAL-CONTENT-START:intro */} Use [Twilio SMS](https://www.twilio.com/en-us/sms) to send a text message from a workflow. Configure the Twilio credentials, sending number, recipient, and message body documented below. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate Twilio into the workflow. Can send SMS messages. ## Actions [#actions] ### Twilio Send SMS [#twilio-send-sms] Send text messages to single or multiple recipients using the Twilio API. #### Input [#input] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ------------------------------------------------------------------------------------------------ | | `phoneNumbers` | string | Yes | Phone numbers to send the message to in E.164 format (e.g., +15551234567), separated by newlines | | `message` | string | Yes | Message to send | | `accountSid` | string | Yes | Twilio Account SID | | `authToken` | string | Yes | Twilio Auth Token | | `fromNumber` | string | Yes | Twilio phone number to send the message from in E.164 format (e.g., +15551234567) | #### Output [#output] | Parameter | Type | Description | | ------------ | ------- | -------------------------------------- | | `success` | boolean | SMS send success status | | `messageId` | string | Unique Twilio message identifier (SID) | | `status` | string | Message delivery status from Twilio | | `fromNumber` | string | Phone number message was sent from | | `toNumber` | string | Phone number message was sent to | --- # DSPy (/en/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 Seeyu Agent Studio, 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 Seeyu Agent Studio 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 Seeyu Agent Studio 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()) | --- # Apollo (/en/integrations/apollo) {/* MANUAL-CONTENT-START:intro */} Use [Apollo.io](https://apollo.io/) in Studio 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 | --- # Seeyu Chat Comments (/en/integrations/seeyu_chat_comments) ## Usage Instructions [#usage-instructions] Execute pre-defined database operations for managing Instagram comments in the Seeyu Chat system. Supports getting posts, saving comments with classification, saving AI replies, and hiding comments. ## Actions [#actions] ### Seeyu Chat Comments - Get Post [#seeyu-chat-comments---get-post] Find a post by its source ID in the Seeyu Chat database #### Input [#input] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ------------------------- | | `host` | string | Yes | Database host | | `port` | number | Yes | Database port | | `database` | string | Yes | Database name | | `username` | string | Yes | Database username | | `password` | string | Yes | Database password | | `ssl` | string | No | SSL connection mode | | `sourceId` | string | Yes | Post source ID to look up | #### Output [#output] | Parameter | Type | Description | | ---------- | ------ | --------------------------- | | `message` | string | Operation status message | | `rows` | array | Array of matching post rows | | `rowCount` | number | Number of rows returned | ### Seeyu Chat Comments - Save Comment [#seeyu-chat-comments---save-comment] Insert or update a comment in the Seeyu Chat database #### Input [#input-1] | Parameter | Type | Required | Description | | ----------------------- | ------ | -------- | ------------------------------------------------- | | `host` | string | Yes | Database host | | `port` | number | Yes | Database port | | `database` | string | Yes | Database name | | `username` | string | Yes | Database username | | `password` | string | Yes | Database password | | `ssl` | string | No | SSL connection mode | | `postId` | number | Yes | Post ID (from get\_post result) | | `message` | string | Yes | Comment message text | | `sourceId` | string | Yes | Comment source ID | | `fromId` | string | Yes | Comment author ID | | `fromName` | string | Yes | Comment author name | | `classification` | string | Yes | Comment classification (POSITIVE, NEGATIVE, etc.) | | `customClassifications` | string | No | Custom classifications as JSON string | #### Output [#output-1] | Parameter | Type | Description | | ---------- | ------ | ------------------------ | | `message` | string | Operation status message | | `rows` | array | Affected comment rows | | `rowCount` | number | Number of rows affected | ### Seeyu Chat Comments - Save Reply [#seeyu-chat-comments---save-reply] Insert a reply comment in the Seeyu Chat database #### Input [#input-2] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ------------------------------------------------ | | `host` | string | Yes | Database host | | `port` | number | Yes | Database port | | `database` | string | Yes | Database name | | `username` | string | Yes | Database username | | `password` | string | Yes | Database password | | `ssl` | string | No | SSL connection mode | | `postId` | number | Yes | Post ID (from get\_post result) | | `commentSourceId` | string | Yes | Source ID of the parent comment being replied to | | `message` | string | Yes | Reply message text | | `replySourceId` | string | Yes | Source ID of the reply (from send\_reply result) | | `pageId` | string | Yes | Instagram page ID | | `pageName` | string | Yes | Instagram page name | #### Output [#output-2] | Parameter | Type | Description | | ---------- | ------ | ------------------------ | | `message` | string | Operation status message | | `rows` | array | Affected reply rows | | `rowCount` | number | Number of rows affected | ### Seeyu Chat Comments - Hide Comment [#seeyu-chat-comments---hide-comment] Mark a comment as hidden in the Seeyu Chat database #### Input [#input-3] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | -------------------------------- | | `host` | string | Yes | Database host | | `port` | number | Yes | Database port | | `database` | string | Yes | Database name | | `username` | string | Yes | Database username | | `password` | string | Yes | Database password | | `ssl` | string | No | SSL connection mode | | `sourceId` | string | Yes | Source ID of the comment to hide | #### Output [#output-3] | Parameter | Type | Description | | ---------- | ------ | ------------------------ | | `message` | string | Operation status message | | `rows` | array | Affected comment rows | | `rowCount` | number | Number of rows affected | --- # Quiver (/en/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 Studio, 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) | --- # Clerk (/en/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 Seeyu Agent Studio, 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 Seeyu Agent Studio. 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) | --- # Qdrant (/en/integrations/qdrant) {/* MANUAL-CONTENT-START:intro */} Use [Qdrant](https://qdrant.tech) in Studio 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 | --- # SharePoint (/en/integrations/sharepoint) {/* MANUAL-CONTENT-START:intro */} Use [SharePoint](https://www.microsoft.com/en-us/microsoft-365/sharepoint/collaboration) in Studio to list sites, manage pages and lists, update list items, and upload or download files. Connect a Microsoft account through OAuth, then choose the target site or resource for each operation. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate SharePoint into the workflow. Read/create pages, list sites, and work with lists (read, create, update items). Requires OAuth. ## Actions [#actions] ### Create SharePoint Page [#create-sharepoint-page] Create a new page in a SharePoint site #### Input [#input] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ----------------------------------------------------------------------------- | | `siteId` | string | No | The ID of the SharePoint site (internal use) | | `siteSelector` | string | No | Select the SharePoint site | | `pageName` | string | Yes | The name of the page to create. Example: My-New-Page.aspx or Report-2024.aspx | | `pageTitle` | string | No | The title of the page (defaults to page name if not provided) | | `pageContent` | string | No | The content of the page | #### Output [#output] | Parameter | Type | Description | | ------------------------ | ------ | ----------------------------------- | | `page` | object | Created SharePoint page information | | ↳ `id` | string | The unique ID of the created page | | ↳ `name` | string | The name of the created page | | ↳ `title` | string | The title of the created page | | ↳ `webUrl` | string | The URL to access the page | | ↳ `pageLayout` | string | The layout type of the page | | ↳ `createdDateTime` | string | When the page was created | | ↳ `lastModifiedDateTime` | string | When the page was last modified | ### Read SharePoint Page [#read-sharepoint-page] Read a specific page from a SharePoint site #### Input [#input-1] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ----------------------------------------------------------------------------------------- | | `siteSelector` | string | No | Select the SharePoint site | | `siteId` | string | No | The ID of the SharePoint site (internal use) | | `pageId` | string | No | The ID of the page to read. Example: a GUID like 12345678-1234-1234-1234-123456789012 | | `pageName` | string | No | The name of the page to read (alternative to pageId). Example: Home.aspx or About-Us.aspx | | `maxPages` | number | No | Maximum number of pages to return when listing all pages (default: 10, max: 50) | | `nextPageUrl` | string | No | Full @odata.nextLink URL from a previous Microsoft Graph page response | #### Output [#output-1] | Parameter | Type | Description | | ------------------------ | ------ | --------------------------------------------------------------------- | | `page` | object | Information about the SharePoint page | | ↳ `id` | string | The unique ID of the page | | ↳ `name` | string | The name of the page | | ↳ `title` | string | The title of the page | | ↳ `webUrl` | string | The URL to access the page | | ↳ `pageLayout` | string | The layout type of the page | | ↳ `description` | string | The description of the page | | ↳ `createdDateTime` | string | When the page was created | | ↳ `lastModifiedDateTime` | string | When the page was last modified | | `pages` | array | List of SharePoint pages | | ↳ `page` | object | page output from the tool | | ↳ `id` | string | The unique ID of the page | | ↳ `name` | string | The name of the page | | ↳ `title` | string | The title of the page | | ↳ `webUrl` | string | The URL to access the page | | ↳ `pageLayout` | string | The layout type of the page | | ↳ `description` | string | The description of the page | | ↳ `createdDateTime` | string | When the page was created | | ↳ `lastModifiedDateTime` | string | When the page was last modified | | ↳ `content` | object | content output from the tool | | ↳ `content` | string | Extracted text content from the page | | ↳ `canvasLayout` | object | Raw SharePoint canvas layout structure | | `content` | object | Content of the SharePoint page | | ↳ `content` | string | Extracted text content from the page | | ↳ `canvasLayout` | object | Raw SharePoint canvas layout structure | | `totalPages` | number | Total number of pages found | | `nextPageUrl` | string | Full Microsoft Graph @odata.nextLink URL for the next page of results | ### Update SharePoint Page [#update-sharepoint-page] Update the title and/or content of a SharePoint page #### Input [#input-2] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | --------------------------------------------------------------------------------------- | | `siteId` | string | No | The ID of the SharePoint site (internal use) | | `siteSelector` | string | No | Select the SharePoint site | | `pageId` | string | Yes | The ID of the page to update. Example: a GUID like 12345678-1234-1234-1234-123456789012 | | `pageTitle` | string | No | The new title of the page | | `pageContent` | string | No | The new text content of the page. Replaces the entire canvas layout of the page. | #### Output [#output-2] | Parameter | Type | Description | | ------------------------ | ------ | ----------------------------------- | | `page` | object | Updated SharePoint page information | | ↳ `id` | string | The unique ID of the page | | ↳ `name` | string | The name of the page | | ↳ `title` | string | The title of the page | | ↳ `webUrl` | string | The URL to access the page | | ↳ `pageLayout` | string | The layout type of the page | | ↳ `createdDateTime` | string | When the page was created | | ↳ `lastModifiedDateTime` | string | When the page was last modified | ### Publish SharePoint Page [#publish-sharepoint-page] Publish the latest version of a SharePoint page, making it available to all users #### Input [#input-3] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ---------------------------------------------------------------------------------------- | | `siteSelector` | string | No | Select the SharePoint site | | `siteId` | string | No | The ID of the SharePoint site (internal use) | | `pageId` | string | Yes | The ID of the page to publish. Example: a GUID like 12345678-1234-1234-1234-123456789012 | #### Output [#output-3] | Parameter | Type | Description | | ----------- | ------- | ------------------------------ | | `published` | boolean | Whether the page was published | | `pageId` | string | The ID of the published page | ### Delete SharePoint Page [#delete-sharepoint-page] Delete a page from a SharePoint site #### Input [#input-4] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | --------------------------------------------------------------------------------------- | | `siteSelector` | string | No | Select the SharePoint site | | `siteId` | string | No | The ID of the SharePoint site (internal use) | | `pageId` | string | Yes | The ID of the page to delete. Example: a GUID like 12345678-1234-1234-1234-123456789012 | #### Output [#output-4] | Parameter | Type | Description | | --------- | ------- | ---------------------------- | | `deleted` | boolean | Whether the page was deleted | | `pageId` | string | The ID of the deleted page | ### List SharePoint Sites [#list-sharepoint-sites] List details of all SharePoint sites #### Input [#input-5] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------- | | `siteSelector` | string | No | Select the SharePoint site | | `siteId` | string | No | The ID of the SharePoint site (internal use) | | `groupId` | string | No | The group ID for accessing a group team site. Example: a GUID like 12345678-1234-1234-1234-123456789012 | | `nextPageUrl` | string | No | Full @odata.nextLink URL from a previous Microsoft Graph page response | #### Output [#output-5] | Parameter | Type | Description | | ------------------------ | ------- | ----------------------------------------------------------------------------------- | | `site` | object | Information about the current SharePoint site | | ↳ `id` | string | The unique ID of the site | | ↳ `name` | string | The name of the site | | ↳ `displayName` | string | The display name of the site | | ↳ `webUrl` | string | The URL to access the site | | ↳ `description` | string | The description of the site | | ↳ `createdDateTime` | string | When the site was created | | ↳ `lastModifiedDateTime` | string | When the site was last modified | | ↳ `isPersonalSite` | boolean | Whether this is a personal site | | ↳ `root` | object | Present (as an empty object) only when this site is the root of its site collection | | ↳ `siteCollection` | object | siteCollection output from the tool | | ↳ `hostname` | string | Site collection hostname | | `sites` | array | List of all accessible SharePoint sites | | ↳ `id` | string | The unique ID of the site | | ↳ `name` | string | The name of the site | | ↳ `displayName` | string | The display name of the site | | ↳ `webUrl` | string | The URL to access the site | | ↳ `description` | string | The description of the site | | ↳ `createdDateTime` | string | When the site was created | | ↳ `lastModifiedDateTime` | string | When the site was last modified | | `nextPageUrl` | string | Full Microsoft Graph @odata.nextLink URL for the next page of results | ### Create SharePoint List [#create-sharepoint-list] Create a new list in a SharePoint site #### Input [#input-6] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------- | | `siteId` | string | No | The ID of the SharePoint site (internal use) | | `siteSelector` | string | No | Select the SharePoint site | | `listDisplayName` | string | Yes | Display name of the list to create. Example: Project Tasks or Customer Contacts | | `listDescription` | string | No | Description of the list | | `listTemplate` | string | No | List template name (e.g., 'genericList') | | `pageContent` | json | No | Optional JSON of columns. Either a top-level array of column definitions or an object with \{ columns: \[...] }. | #### Output [#output-6] | Parameter | Type | Description | | ------------------------ | ------ | ----------------------------------- | | `list` | object | Created SharePoint list information | | ↳ `id` | string | The unique ID of the list | | ↳ `displayName` | string | The display name of the list | | ↳ `name` | string | The internal name of the list | | ↳ `webUrl` | string | The web URL of the list | | ↳ `createdDateTime` | string | When the list was created | | ↳ `lastModifiedDateTime` | string | When the list was last modified | | ↳ `list` | object | List properties (e.g., template) | ### Get SharePoint List [#get-sharepoint-list] Get metadata (and optionally columns/items) for a SharePoint list #### Input [#input-7] | Parameter | Type | Required | Description | | ---------------- | ------- | -------- | ----------------------------------------------------------------------------------------------------------- | | `siteSelector` | string | No | Select the SharePoint site | | `siteId` | string | No | The ID of the SharePoint site (internal use) | | `listId` | string | No | The ID of the list to retrieve. Example: b!abc123def456 or a GUID like 12345678-1234-1234-1234-123456789012 | | `includeColumns` | boolean | No | Whether to include column definitions when retrieving a specific list | | `includeItems` | boolean | No | Whether to include list items when retrieving a specific list | | `nextPageUrl` | string | No | Full @odata.nextLink URL from a previous Microsoft Graph page response | #### Output [#output-7] | Parameter | Type | Description | | ------------------------ | ------ | --------------------------------------------------------------------- | | `list` | object | Information about the SharePoint list | | ↳ `id` | string | The unique ID of the list | | ↳ `displayName` | string | The display name of the list | | ↳ `name` | string | The internal name of the list | | ↳ `webUrl` | string | The web URL of the list | | ↳ `createdDateTime` | string | When the list was created | | ↳ `lastModifiedDateTime` | string | When the list was last modified | | ↳ `list` | object | List properties (e.g., template) | | ↳ `columns` | array | List column definitions | | ↳ `items` | array | List items (with fields when expanded) | | ↳ `id` | string | Item ID | | ↳ `fields` | object | Field values for the item | | `lists` | array | All lists in the site when no listId/title provided | | `items` | array | List items with expanded fields when reading list items | | ↳ `id` | string | Item ID | | ↳ `fields` | object | Field values for the item | | `nextPageUrl` | string | Full Microsoft Graph @odata.nextLink URL for the next page of results | ### Update SharePoint List Item [#update-sharepoint-list-item] Update the properties (fields) on a SharePoint list item #### Input [#input-8] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------- | | `siteSelector` | string | No | Select the SharePoint site | | `siteId` | string | No | The ID of the SharePoint site (internal use) | | `listId` | string | Yes | The ID of the list containing the item. Example: b!abc123def456 or a GUID like 12345678-1234-1234-1234-123456789012 | | `itemId` | string | Yes | The ID of the list item to update. Example: 1, 42, or 123 | | `listItemFields` | json | Yes | Field values to update on the list item | #### Output [#output-8] | Parameter | Type | Description | | ---------- | ------ | ---------------------------- | | `item` | object | Updated SharePoint list item | | ↳ `id` | string | Item ID | | ↳ `fields` | object | Updated field values | ### Add SharePoint List Item [#add-sharepoint-list-item] Add a new item to a SharePoint list #### Input [#input-9] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------ | | `siteSelector` | string | No | Select the SharePoint site | | `siteId` | string | No | The ID of the SharePoint site (internal use) | | `listId` | string | Yes | The ID of the list to add the item to. Example: b!abc123def456 or a GUID like 12345678-1234-1234-1234-123456789012 | | `listItemFields` | json | Yes | Field values for the new list item | #### Output [#output-9] | Parameter | Type | Description | | ---------- | ------ | ----------------------------- | | `item` | object | Created SharePoint list item | | ↳ `id` | string | Item ID | | ↳ `fields` | object | Field values for the new item | ### Get SharePoint List Item [#get-sharepoint-list-item] Get a single item (with field values) from a SharePoint list #### Input [#input-10] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------- | | `siteSelector` | string | No | Select the SharePoint site | | `siteId` | string | No | The ID of the SharePoint site (internal use) | | `listId` | string | Yes | The ID of the list containing the item. Example: b!abc123def456 or a GUID like 12345678-1234-1234-1234-123456789012 | | `itemId` | string | Yes | The ID of the list item to retrieve. Example: 1, 42, or 123 | #### Output [#output-10] | Parameter | Type | Description | | ---------- | ------ | -------------------------------------- | | `item` | object | SharePoint list item with field values | | ↳ `id` | string | Item ID | | ↳ `fields` | object | Field values for the item | ### Delete SharePoint List Item [#delete-sharepoint-list-item] Delete an item from a SharePoint list #### Input [#input-11] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------- | | `siteSelector` | string | No | Select the SharePoint site | | `siteId` | string | No | The ID of the SharePoint site (internal use) | | `listId` | string | Yes | The ID of the list containing the item. Example: b!abc123def456 or a GUID like 12345678-1234-1234-1234-123456789012 | | `itemId` | string | Yes | The ID of the list item to delete. Example: 1, 42, or 123 | #### Output [#output-11] | Parameter | Type | Description | | --------- | ------- | --------------------------------- | | `deleted` | boolean | Whether the list item was deleted | | `itemId` | string | The ID of the deleted list item | ### Upload File to SharePoint [#upload-file-to-sharepoint] Upload files to a SharePoint document library #### Input [#input-12] | Parameter | Type | Required | Description | | ------------ | ------- | -------- | ------------------------------------------------------------------------------------------------------------ | | `siteId` | string | No | The ID of the SharePoint site | | `driveId` | string | No | The ID of the document library (drive). If not provided, uses default drive. Example: b!abc123def456 | | `folderPath` | string | No | Optional folder path within the document library. Example: /Documents/Subfolder or /Shared Documents/Reports | | `fileName` | string | No | Optional: override the uploaded file name. Example: report-2024.pdf | | `files` | file\[] | Yes | Files to upload to SharePoint | #### Output [#output-12] | Parameter | Type | Description | | ------------------------ | ------ | ------------------------------------- | | `uploadedFiles` | array | Array of uploaded file objects | | ↳ `id` | string | The unique ID of the uploaded file | | ↳ `name` | string | The name of the uploaded file | | ↳ `webUrl` | string | The URL to access the file | | ↳ `size` | number | The size of the file in bytes | | ↳ `createdDateTime` | string | When the file was created | | ↳ `lastModifiedDateTime` | string | When the file was last modified | | `fileCount` | number | Number of files uploaded | | `skippedFiles` | array | Files that were skipped before upload | | ↳ `name` | string | File name | | ↳ `size` | number | File size in bytes | | ↳ `limit` | number | Upload size limit in bytes | | ↳ `reason` | string | Reason the file was skipped | | `skippedCount` | number | Number of files skipped | | `errors` | array | Per-file upload errors | | ↳ `name` | string | File name | | ↳ `error` | string | Error message | | ↳ `status` | number | HTTP status from Microsoft Graph | ### Download File from SharePoint [#download-file-from-sharepoint] Download a file from a SharePoint document library #### Input [#input-13] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | --------------------------------------------------------------- | | `driveId` | string | Yes | The ID of the document library (drive). Example: b!abc123def456 | | `driveItemId` | string | Yes | The ID of the file (drive item) to download | | `fileName` | string | No | Optional filename override (e.g., "report.pdf", "data.xlsx") | #### Output [#output-13] | Parameter | Type | Description | | --------- | ---- | ----------------------------------------- | | `file` | file | Downloaded file stored in execution files | ### Get SharePoint Drive Item [#get-sharepoint-drive-item] Get metadata for a file or folder in a SharePoint document library #### Input [#input-14] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | --------------------------------------------------------------- | | `driveId` | string | Yes | The ID of the document library (drive). Example: b!abc123def456 | | `driveItemId` | string | Yes | The ID of the file or folder (drive item) to retrieve | #### Output [#output-14] | Parameter | Type | Description | | ------------------------ | ------ | ----------------------------------------------------- | | `driveItem` | object | Metadata for the SharePoint file or folder | | ↳ `id` | string | The unique ID of the drive item | | ↳ `name` | string | The name of the file or folder | | ↳ `webUrl` | string | The URL to access the item | | ↳ `size` | number | The size of the item in bytes | | ↳ `createdDateTime` | string | When the item was created | | ↳ `lastModifiedDateTime` | string | When the item was last modified | | ↳ `file` | object | Present if the item is a file (contains mimeType) | | ↳ `folder` | object | Present if the item is a folder (contains childCount) | | ↳ `parentReference` | object | Reference to the parent folder/drive | ### Delete SharePoint File [#delete-sharepoint-file] Delete a file (or folder) from a SharePoint document library #### Input [#input-15] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | --------------------------------------------------------------- | | `driveId` | string | Yes | The ID of the document library (drive). Example: b!abc123def456 | | `driveItemId` | string | Yes | The ID of the file (drive item) to delete | #### Output [#output-15] | Parameter | Type | Description | | --------- | ------- | ---------------------------- | | `deleted` | boolean | Whether the file was deleted | | `itemId` | string | The ID of the deleted file | --- # Clay (/en/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 Studio 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 | --- # GitHub (/en/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) | | ↳ `filename` | string | File name | | ↳ `type` | string | MIME type | | ↳ `language` | string | Programming language | | ↳ `raw_url` | string | Raw file URL | | ↳ `size` | number | File size in bytes | | ↳ `truncated` | boolean | Whether content is truncated | | ↳ `content` | string | File 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 | | `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) | | ↳ `filename` | string | File name | | ↳ `type` | string | MIME type | | ↳ `language` | string | Programming language | | ↳ `raw_url` | string | Raw file URL | | ↳ `size` | number | File size in bytes | | ↳ `truncated` | boolean | Whether content is truncated | | ↳ `content` | string | File 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 | | ↳ `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 | --- # Table (/en/integrations/table) ## Usage Instructions [#usage-instructions] Create and manage custom data tables. Store, query, and manipulate structured data within workflows. Query Rows accepts a plain predicate — `{"field":"wins","op":"gte","value":10}` — for one condition. Use `all` (AND) or `any` (OR) groups for multiple or nested conditions. Operators: eq, ne, gt, gte, lt, lte, in, nin, like, ilike, nlike, nilike, contains, ncontains, startsWith, endsWith, isNull, isNotNull, isEmpty, isNotEmpty. Order is a sort spec `[{"field":"wins","direction":"desc"}]`. Query Rows returns every matching row when Limit is omitted (fails if the result exceeds 5MB — add a filter or a Limit). With a Limit, responses page: a non-null nextCursor means more rows exist — pass it back as the cursor. Columns to Return narrows each row to the selected columns (by stable id or name; one that no longer exists is skipped); leave it empty for every column. ## Actions [#actions] ### Insert Row [#insert-row] Insert a new row into a table. IMPORTANT: You must use the "data" parameter (not "values", "row", "fields", or other variations) to specify the row contents. #### Input [#input] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------------------- | | `tableId` | string | Yes | Table ID | | `data` | object | Yes | Row data as JSON object | #### Output [#output] | Parameter | Type | Description | | --------- | ------- | ------------------------ | | `success` | boolean | Whether row was inserted | | `row` | json | Inserted row data | | `message` | string | Status message | ### Batch Insert Rows [#batch-insert-rows] Insert multiple rows into a table at once (up to 1000 rows) #### Input [#input-1] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------------------------------------- | | `tableId` | string | Yes | Table ID | | `rows` | array | Yes | Array of row data objects (max 1000 rows) | #### Output [#output-1] | Parameter | Type | Description | | --------------- | ------- | -------------------------- | | `success` | boolean | Whether rows were inserted | | `rows` | array | Inserted rows data | | `insertedCount` | number | Number of rows inserted | | `message` | string | Status message | ### Upsert Row [#upsert-row] Insert or update a row based on unique column constraints. If a row with matching unique field exists, update it; otherwise insert a new row. IMPORTANT: You must use the "data" parameter (not "values", "row", "fields", or other variations) to specify the row contents. #### Input [#input-2] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ---------------------------------------------------------------------------------------- | | `tableId` | string | Yes | Table ID | | `data` | object | Yes | Row data to insert or update | | `conflictTarget` | string | No | Unique column to match on. Required only when the table has more than one unique column. | #### Output [#output-2] | Parameter | Type | Description | | ----------- | ------- | ------------------------------------- | | `success` | boolean | Whether row was upserted | | `row` | json | Upserted row data | | `operation` | string | Operation performed: insert or update | | `message` | string | Status message | ### Update Row [#update-row] Update an existing row in a table. Supports partial updates - only include the fields you want to change. IMPORTANT: You must use the "data" parameter (not "values", "row", "fields", or other variations) to specify the fields to update. #### Input [#input-3] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------- | | `tableId` | string | Yes | Table ID | | `rowId` | string | Yes | Row ID to update | | `data` | object | Yes | Updated row data | #### Output [#output-3] | Parameter | Type | Description | | --------- | ------- | ----------------------- | | `success` | boolean | Whether row was updated | | `row` | json | Updated row data | | `message` | string | Status message | ### Update Rows by Filter [#update-rows-by-filter] Update multiple rows that match filter criteria. Data is merged with existing row data. #### Input [#input-4] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `tableId` | string | Yes | Table ID | | `filter` | object | Yes | Filter criteria using operators like $eq, $ne, $gt, $lt, $contains, $ncontains, $startsWith, $endsWith, $in, $nin, $empty, etc. | | `data` | object | Yes | Fields to update (merged with existing data) | | `limit` | number | No | Maximum number of rows to update (default: no limit, max: 1000) | #### Output [#output-4] | Parameter | Type | Description | | --------------- | ------- | ------------------------- | | `success` | boolean | Whether rows were updated | | `updatedCount` | number | Number of rows updated | | `updatedRowIds` | array | IDs of updated rows | | `message` | string | Status message | ### Delete Row [#delete-row] Delete a row from a table #### Input [#input-5] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------- | | `tableId` | string | Yes | Table ID | | `rowId` | string | Yes | Row ID to delete | #### Output [#output-5] | Parameter | Type | Description | | -------------- | ------- | ----------------------- | | `success` | boolean | Whether row was deleted | | `deletedCount` | number | Number of rows deleted | | `message` | string | Status message | ### Delete Rows by Filter [#delete-rows-by-filter] Delete multiple rows that match filter criteria. Use with caution - supports optional limit for safety. #### Input [#input-6] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `tableId` | string | Yes | Table ID | | `filter` | object | Yes | Filter criteria using operators like $eq, $ne, $gt, $lt, $contains, $ncontains, $startsWith, $endsWith, $in, $nin, $empty, etc. | | `limit` | number | No | Maximum number of rows to delete (default: no limit, max: 1000) | #### Output [#output-6] | Parameter | Type | Description | | --------------- | ------- | ------------------------- | | `success` | boolean | Whether rows were deleted | | `deletedCount` | number | Number of rows deleted | | `deletedRowIds` | array | IDs of deleted rows | | `message` | string | Status message | ### Query Rows [#query-rows] Query rows with a typed predicate filter and cursor pagination. A single filter can be a plain condition: `\{"field":"wins","op":"gte","value":10\}`. Use `all` (AND) or `any` (OR) groups for multiple or nested conditions. Operators: eq, ne, gt, gte, lt, lte, in, nin, like, ilike, nlike, nilike, contains, ncontains, startsWith, endsWith, isNull, isNotNull, isEmpty, isNotEmpty. Order is a sort spec, e.g. `[\{"field":"wins","direction":"desc"\}]`. Omit limit to return the entire result — the query fails if it exceeds the 5MB budget (narrow with a filter or set a limit). With a limit, a page can end early at the byte budget: a non-null nextCursor means more rows exist — pass it back as cursor to continue; never infer completion from page size. #### Input [#input-7] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `tableId` | string | Yes | Table ID | | `filter` | json | No | Predicate condition, e.g. `\{"field":"wins","op":"gte","value":10\}`. Use `all` or `any` for multiple conditions; omit to match all rows. | | `columns` | array | No | Stable column IDs or table column names to include in each row data object. Omit or pass an empty array to return all columns. A reference that matches no column is ignored. | | `order` | json | No | Sort spec, e.g. `\[\{"field":"wins","direction":"desc"\}\]`. | | `limit` | number | No | Maximum rows per page. Omit to return the entire matching result — fails if it exceeds the 5MB budget. With a limit, pages may byte-cut early and set nextCursor when more remain. | | `cursor` | string | No | Opaque pagination cursor returned by a prior query. Omit for the first page. | #### Output [#output-7] | Parameter | Type | Description | | ------------ | ------- | ------------------------------------------------------------------- | | `success` | boolean | Whether the query succeeded | | `rows` | array | Query result rows | | `rowCount` | number | Number of rows returned | | `totalCount` | number | Total rows matching the predicate (computed on the first page only) | | `limit` | number | Limit used in the query | | `nextCursor` | string | Cursor to fetch the next page, or null on the last page | ### Get Row [#get-row] Get a single row by ID #### Input [#input-8] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------ | | `tableId` | string | Yes | Table ID | | `rowId` | string | Yes | Row ID to retrieve | #### Output [#output-8] | Parameter | Type | Description | | --------- | ------- | ------------------------- | | `success` | boolean | Whether row was retrieved | | `row` | json | Row data | | `message` | string | Status message | ### Get Schema [#get-schema] Get the schema configuration of a table #### Input [#input-9] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------- | | `tableId` | string | Yes | Table ID | #### Output [#output-9] | Parameter | Type | Description | | ------------- | ------- | ------------------------------------------------ | | `success` | boolean | Whether schema was retrieved | | `name` | string | Table name | | `columns` | array | Column definitions (each includes its stable id) | | `columnCount` | number | Number of columns | | `rowCount` | number | Number of rows in the table | | `maxRows` | number | Max rows per table for the workspace's plan | | `message` | string | Status message | --- # Lemlist (/en/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) | --- # LogRocket (/en/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. Studio'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 Studio 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 | --- # ClickHouse (/en/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 | --- # Luma (/en/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 Studio, 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 Studio 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 Studio workflows. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate Luma into the workflow. Can create events, update events, get event details, list calendar events, get guest lists, and add guests to events. ## 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 | --- # Snowflake Programmatic Access Tokens (/en/integrations/snowflake-service-account) Connect Snowflake with a programmatic access token (PAT) and account host. The token belongs to one user; use `ROLE_RESTRICTION` to limit it to a role with the access your workflows need. Studio stores the token alongside your account host as one credential. Once it is added, every Snowflake block picks it from a dropdown — and the block's database, schema, table, warehouse, role, file-format, and procedure fields become pickers that list what the token can actually see. ## Prerequisites [#prerequisites] * A Snowflake user you can generate a token for. Generating a token for another user requires the ability to run `ALTER USER` on them. * Your account host — the `.snowflakecomputing.com` hostname, for example `myorg-myaccount.snowflakecomputing.com`. Snowsight shows it under **Account details**. * A network policy covering the user, or an authentication policy that waives the requirement (see below). Snowflake's **network policy** requirement varies by user type, and getting it wrong is the most common reason a token is rejected: * `TYPE = PERSON` — you can generate a token without a network policy, but the user **must** be covered by one to authenticate with it. * `TYPE = SERVICE` and `TYPE = LEGACY_SERVICE` — a network policy is required to generate **and** to use a token. * `TYPE = SERVICE_AGENT` — exempt; generate and use freely. If your account has no network policy, either create one (allowing Studio's egress) or set `NETWORK_POLICY_EVALUATION = ENFORCED_NOT_REQUIRED` on an authentication policy applied to the user. ## Creating the Token [#creating-the-token] ### Option 1 — Snowsight [#option-1--snowsight] Open **Governance & security** → **Users & roles** and select the user the workflow should run as Under **Programmatic access tokens**, click **Generate new token** Give it a name, optionally restrict it to a single role, and set the expiry in days Copy the token secret. Snowflake shows it **once**, at creation ### Option 2 — SQL [#option-2--sql] ```sql ALTER USER my_service_user ADD PROGRAMMATIC ACCESS TOKEN studio_workflows ROLE_RESTRICTION = 'STUDIO_WORKFLOW_ROLE' DAYS_TO_EXPIRY = 90; ``` `DAYS_TO_EXPIRY` defaults to 15 days and cannot exceed 365 — an authentication policy can lower that ceiling further via `PROGRAMMATIC_ACCESS_TOKEN_MAX_EXPIRY_IN_DAYS`. **A token can never be non-expiring**, and the value cannot be changed after creation — to extend it, generate a new token and swap the credential in Studio. Plan the rotation when you create it. Service users (`TYPE = SERVICE`, `LEGACY_SERVICE`, or `SERVICE_AGENT`) **must** set `ROLE_RESTRICTION`, unless an authentication policy exempts them. For person users it is optional but recommended: a restricted token can only ever act as that one role. If an authentication policy applies to the user, `'PROGRAMMATIC_ACCESS_TOKEN'` must appear in its `AUTHENTICATION_METHODS` list, otherwise the token is refused. ## Adding the Credential to Studio [#adding-the-credential-to-studio] Add a **Snowflake** block to a workflow, open the credential dropdown, and choose to add a programmatic access token Enter the **account host** (`myorg-myaccount.snowflakecomputing.com`) and paste the **token** Save. Studio verifies the credential by running `SELECT CURRENT_USER(), CURRENT_ACCOUNT(), CURRENT_ROLE()` over the SQL API — a metadata-only statement that needs no warehouse and consumes no credits. A wrong host is reported separately. Authentication failures can also mean an expired token, a blocking network policy, or unavailable SQL API access. The host and the token are encrypted before being stored, and the token is never returned to the browser — the block sends a credential id and Studio resolves it server-side. ## Using the Credential in Workflows [#using-the-credential-in-workflows] Select the credential on any Snowflake block. You never enter the host again: every tool derives its endpoint from the host stored on the credential. With a credential selected, these fields become pickers backed by metadata-only statements: | Field | Lists | Needs | | ----------------- | ----------------------------- | ---------------- | | Database | `SHOW DATABASES` | credential | | Schema | `SHOW SCHEMAS IN DATABASE` | database | | Table | `SHOW TABLES IN SCHEMA` | database, schema | | Warehouse | `SHOW WAREHOUSES` | credential | | Execution role | `CURRENT_AVAILABLE_ROLES()` | credential | | Named file format | `SHOW FILE FORMATS IN SCHEMA` | database, schema | | Procedure | `SHOW PROCEDURES IN SCHEMA` | database, schema | Each picker runs as the token's user under its **default** role — not the execution role set on the block — so an empty list is usually a privilege gap rather than an empty account. Switch any field to advanced mode to type a name directly or reference an upstream block's output instead. **Unload Data requires a table or view.** To export a query result, create a view or use `CREATE TABLE AS SELECT` through Execute SQL, then unload that object. ## Rotating and Revoking [#rotating-and-revoking] A token's expiry is fixed at creation. To rotate, generate a new token on the same user and update the credential in Studio — the old one stays valid until you remove it. `ALTER USER ... REMOVE PROGRAMMATIC ACCESS TOKEN ` revokes immediately and cannot be undone. --- # Hugging Face (/en/integrations/huggingface) {/* MANUAL-CONTENT-START:intro */} Use [Hugging Face](https://huggingface.co/) in Studio 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 | --- # Hex (/en/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 | --- # Ahrefs (/en/integrations/ahrefs) {/* MANUAL-CONTENT-START:intro */} Use [Ahrefs](https://ahrefs.com/) in Studio 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 | --- # Google Vault (/en/integrations/google_vault) {/* MANUAL-CONTENT-START:intro */} Use [Google Vault](https://workspace.google.com/products/vault/) in Studio 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 | --- # Perplexity (/en/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 | --- # QuickBooks (/en/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 Studio and select its Sandbox or Production environment. Studio 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 Studio 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. Studio 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. Studio 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; Studio 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 Studio 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 Studio 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 Studio 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 Studio 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 | --- # Jupyter (/en/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 Studio, 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 | --- # Pulse (/en/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; Studio 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 | --- # Splunk (/en/integrations/splunk) {/* MANUAL-CONTENT-START:intro */} [Splunk](https://www.splunk.com/) indexes machine data — logs, metrics, and events — and makes it searchable with SPL, its search processing language. Teams use it for operational monitoring, incident investigation, and security analytics, with saved searches and alerts watching for conditions on a schedule. With the Splunk integration in Studio, you can: * **Run searches**: Execute an SPL search synchronously and get its results in a single call * **Run long searches as jobs**: Create a search job, check its status, page through its results, and cancel it * **Use saved searches**: List and get saved searches, and dispatch one on demand * **Inspect alerts**: List fired alerts and get the fired instances of a specific alert * **Explore the instance**: List indexes and installed apps In Studio, the Splunk integration enables your agents to investigate and act on operational data. An agent can run a search when an incident opens, dispatch a saved search to reproduce a known query, page through a large job's results, and read fired alerts to decide what to escalate. It works against both Splunk Enterprise and Splunk Cloud, authenticating with a bearer token. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate Splunk Enterprise or Splunk Cloud into workflows. Run SPL searches synchronously or as asynchronous jobs, fetch results, dispatch saved searches, and inspect fired alerts and indexes. ## Actions [#actions] ### Splunk Run Search [#splunk-run-search] Run an SPL search synchronously and return its results in a single call (oneshot mode). A oneshot search buffers the whole result set in one response with no paging, so use it for short searches; for anything large use Create Search Job with Get Search Results, which defaults to 100 rows and pages with offset. #### Input [#input] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `baseUrl` | string | Yes | Splunk management URL including the management port (e.g. [https://splunk.example.com:8089](https://splunk.example.com:8089)) | | `authToken` | string | No | Splunk authentication token, sent as a bearer token. Preferred over a password. | | `username` | string | No | Splunk username, used for basic authentication when no token is supplied | | `password` | string | No | Splunk password, used for basic authentication when no token is supplied | | `owner` | string | No | Namespace owner for /servicesNS requests (e.g. admin, or nobody for app-shared objects). Leave both this and the app empty to use the authenticated user context; set only one and the other becomes the - wildcard. | | `app` | string | No | Namespace app context for /servicesNS requests (e.g. search). Leave both this and the owner empty to use the authenticated user context; set only one and the other becomes the - wildcard. | | `search` | string | Yes | SPL search string (e.g. index=main error \| stats count by host). The leading "search" command is added automatically when omitted. | | `earliestTime` | string | No | Earliest (inclusive) time bound — relative (e.g. -24h, -7d\@d) or absolute epoch/formatted time | | `latestTime` | string | No | Latest (exclusive) time bound — relative (e.g. now) or absolute time | | `adhocSearchLevel` | string | No | Search mode: verbose, fast, or smart. Defaults to fast. | | `autoCancel` | number | No | Cancel the search after this many seconds of inactivity (e.g. 60). 0 never auto-cancels. | | `maxCount` | number | No | Number of events accessible in any given status bucket, and in transforming mode the maximum number of results to store. Defaults to 10000. | #### Output [#output] | Parameter | Type | Description | | ------------- | ------- | -------------------------------------------------------------- | | `results` | array | Result rows. Each row holds the fields produced by the search. | | `resultCount` | number | Number of result rows returned in this response | | `preview` | boolean | Whether these are preview results from a still-running job | | `initOffset` | number | Offset of the first returned row within the full result set | | `messages` | array | Search messages returned alongside the results | | ↳ `type` | string | Message severity | | ↳ `text` | string | Message text | ### Splunk Create Search Job [#splunk-create-search-job] Start a Splunk search job and return its search ID (sid). The search runs asynchronously — poll its status and fetch results separately. #### Input [#input-1] | Parameter | Type | Required | Description | | --------------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `baseUrl` | string | Yes | Splunk management URL including the management port (e.g. [https://splunk.example.com:8089](https://splunk.example.com:8089)) | | `authToken` | string | No | Splunk authentication token, sent as a bearer token. Preferred over a password. | | `username` | string | No | Splunk username, used for basic authentication when no token is supplied | | `password` | string | No | Splunk password, used for basic authentication when no token is supplied | | `owner` | string | No | Namespace owner for /servicesNS requests (e.g. admin, or nobody for app-shared objects). Leave both this and the app empty to use the authenticated user context; set only one and the other becomes the - wildcard. | | `app` | string | No | Namespace app context for /servicesNS requests (e.g. search). Leave both this and the owner empty to use the authenticated user context; set only one and the other becomes the - wildcard. | | `search` | string | Yes | SPL search string (e.g. index=main sourcetype=access\_combined \| timechart count). The leading "search" command is added automatically when omitted. | | `earliestTime` | string | No | Earliest (inclusive) time bound — relative (e.g. -24h) or absolute time | | `latestTime` | string | No | Latest (exclusive) time bound — relative (e.g. now) or absolute time | | `execMode` | string | No | Execution mode: normal (returns the sid immediately) or blocking (returns the sid once the job completes). Defaults to normal. oneshot is rejected here because it returns results instead of a sid — use Splunk Run Search for that. | | `adhocSearchLevel` | string | No | Search mode: verbose, fast, or smart. Defaults to fast. | | `searchId` | string | No | Custom search ID to assign to the job. A random ID is generated when omitted. | | `indexEarliest` | string | No | Earliest (inclusive) time bound based on index time rather than event time | | `indexLatest` | string | No | Latest (exclusive) time bound based on index time rather than event time | | `enableLookups` | boolean | No | Whether lookups are applied to events. Defaults to true. | | `allowPartialResults` | boolean | No | Whether the job may return partial results when a search peer fails. Defaults to true. | | `autoCancel` | number | No | Cancel the job after this many seconds of inactivity (e.g. 300). 0 never auto-cancels. | | `maxCount` | number | No | Number of events accessible in any given status bucket, and in transforming mode the maximum number of results to store. Defaults to 10000. | #### Output [#output-1] | Parameter | Type | Description | | --------- | ------ | ------------------------------------------------------------------- | | `sid` | string | Search ID of the created job, used to poll status and fetch results | ### Splunk Get Search Job [#splunk-get-search-job] Get the status and progress of a Splunk search job by search ID, including dispatch state, completion progress, and event/result counts. #### Input [#input-2] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `baseUrl` | string | Yes | Splunk management URL including the management port (e.g. [https://splunk.example.com:8089](https://splunk.example.com:8089)) | | `authToken` | string | No | Splunk authentication token, sent as a bearer token. Preferred over a password. | | `username` | string | No | Splunk username, used for basic authentication when no token is supplied | | `password` | string | No | Splunk password, used for basic authentication when no token is supplied | | `owner` | string | No | Namespace owner for /servicesNS requests (e.g. admin, or nobody for app-shared objects). Leave both this and the app empty to use the authenticated user context; set only one and the other becomes the - wildcard. | | `app` | string | No | Namespace app context for /servicesNS requests (e.g. search). Leave both this and the owner empty to use the authenticated user context; set only one and the other becomes the - wildcard. | | `sid` | string | Yes | Search ID of the job to inspect (e.g. 1457683115.100) | #### Output [#output-2] | Parameter | Type | Description | | --------------------- | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `sid` | string | Search ID of the job | | `label` | string | Custom name created for this search | | `dispatchState` | string | Job state: QUEUED, PARSING, RUNNING, FINALIZING, PAUSE, INTERNAL\_CANCEL, USER\_CANCEL, BAD\_INPUT\_CANCEL, QUIT, FAILED, or DONE | | `doneProgress` | number | Approximate progress between 0 and 1.0 | | `isDone` | boolean | Whether the search has completed | | `isFailed` | boolean | Whether a fatal error occurred running the search | | `isFinalized` | boolean | Whether the search was finalized (stopped before completion) | | `isPaused` | boolean | Whether the search is paused | | `isZombie` | boolean | Whether the search process died before the search finished | | `isSaved` | boolean | Whether the search job artifacts are saved to disk | | `isSavedSearch` | boolean | Whether this is a saved search run by the scheduler | | `isRealTimeSearch` | boolean | Whether this is a real-time search | | `eventCount` | number | Number of events returned by the search | | `eventAvailableCount` | number | Number of events available for export | | `eventFieldCount` | number | Number of fields found in the search results | | `resultCount` | number | Total number of results returned by the search | | `resultPreviewCount` | number | Number of result rows in the latest preview results | | `scanCount` | number | Number of events scanned or read off disk | | `runDuration` | number | Time in seconds the search took to complete | | `priority` | number | Search priority between 0 and 10 | | `earliestTime` | string | Earliest (inclusive) time bound for the search | | `latestTime` | string | Latest (exclusive) time bound for the search | | `searchEarliestTime` | number | Earliest time as specified in the search command itself, as an epoch timestamp. Unlike earliestTime, which the job entry renders as an ISO string, this pair is documented as bare numbers (e.g. 1308589800.000000000). | | `searchLatestTime` | number | Latest time as specified in the search command itself, as an epoch timestamp. Unlike latestTime, which the job entry renders as an ISO string, this pair is documented as bare numbers. | | `messages` | json | Errors and debug messages recorded for the job | ### Splunk Get Search Results [#splunk-get-search-results] Fetch the transformed results of a completed Splunk search job by search ID, with pagination. #### Input [#input-3] | Parameter | Type | Required | Description | | ---------------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `baseUrl` | string | Yes | Splunk management URL including the management port (e.g. [https://splunk.example.com:8089](https://splunk.example.com:8089)) | | `authToken` | string | No | Splunk authentication token, sent as a bearer token. Preferred over a password. | | `username` | string | No | Splunk username, used for basic authentication when no token is supplied | | `password` | string | No | Splunk password, used for basic authentication when no token is supplied | | `owner` | string | No | Namespace owner for /servicesNS requests (e.g. admin, or nobody for app-shared objects). Leave both this and the app empty to use the authenticated user context; set only one and the other becomes the - wildcard. | | `app` | string | No | Namespace app context for /servicesNS requests (e.g. search). Leave both this and the owner empty to use the authenticated user context; set only one and the other becomes the - wildcard. | | `sid` | string | Yes | Search ID of the job whose results to fetch (e.g. 1457683115.100) | | `count` | number | No | Maximum number of result rows to return. Defaults to 100. Page through larger result sets with offset rather than raising this — a completed job can hold millions of rows. 0 is rejected here even though Splunk reads it as "every row". | | `offset` | number | No | First result row (0-indexed) from which to begin returning data | | `fields` | string | No | Comma-separated list of fields to return for each row (e.g. \_time,host,source). Returns all fields when omitted. | | `addSummaryToMetadata` | boolean | No | Include field summary statistics in the response | #### Output [#output-3] | Parameter | Type | Description | | ------------- | ------- | -------------------------------------------------------------- | | `results` | array | Result rows. Each row holds the fields produced by the search. | | `resultCount` | number | Number of result rows returned in this response | | `preview` | boolean | Whether these are preview results from a still-running job | | `initOffset` | number | Offset of the first returned row within the full result set | | `messages` | array | Search messages returned alongside the results | | ↳ `type` | string | Message severity | | ↳ `text` | string | Message text | ### Splunk Cancel Search Job [#splunk-cancel-search-job] Cancel a running Splunk search job and delete its result cache. #### Input [#input-4] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `baseUrl` | string | Yes | Splunk management URL including the management port (e.g. [https://splunk.example.com:8089](https://splunk.example.com:8089)) | | `authToken` | string | No | Splunk authentication token, sent as a bearer token. Preferred over a password. | | `username` | string | No | Splunk username, used for basic authentication when no token is supplied | | `password` | string | No | Splunk password, used for basic authentication when no token is supplied | | `owner` | string | No | Namespace owner for /servicesNS requests (e.g. admin, or nobody for app-shared objects). Leave both this and the app empty to use the authenticated user context; set only one and the other becomes the - wildcard. | | `app` | string | No | Namespace app context for /servicesNS requests (e.g. search). Leave both this and the owner empty to use the authenticated user context; set only one and the other becomes the - wildcard. | | `sid` | string | Yes | Search ID of the job to cancel (e.g. 1457683115.100) | #### Output [#output-4] | Parameter | Type | Description | | ---------- | ------ | --------------------------------------------------------------------- | | `sid` | string | Search ID of the cancelled job | | `messages` | array | Informational, warning, and error messages returned with the response | | ↳ `type` | string | Message severity (INFO, WARN, ERROR, DEBUG) | | ↳ `text` | string | Message text | ### Splunk List Saved Searches [#splunk-list-saved-searches] List saved searches and reports configured in Splunk, including their SPL, schedule, and alert configuration. #### Input [#input-5] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `baseUrl` | string | Yes | Splunk management URL including the management port (e.g. [https://splunk.example.com:8089](https://splunk.example.com:8089)) | | `authToken` | string | No | Splunk authentication token, sent as a bearer token. Preferred over a password. | | `username` | string | No | Splunk username, used for basic authentication when no token is supplied | | `password` | string | No | Splunk password, used for basic authentication when no token is supplied | | `owner` | string | No | Namespace owner for /servicesNS requests (e.g. admin, or nobody for app-shared objects). Leave both this and the app empty to use the authenticated user context; set only one and the other becomes the - wildcard. | | `app` | string | No | Namespace app context for /servicesNS requests (e.g. search). Leave both this and the owner empty to use the authenticated user context; set only one and the other becomes the - wildcard. | | `search` | string | No | Filter saved searches. A bare term matches as a substring across fields (e.g. Errors); field\_name=field\_value matches one field (e.g. is\_scheduled=1). | | `count` | number | No | Maximum number of saved searches to return (e.g. 50). 0 returns all. | | `offset` | number | No | Index of the first saved search to return, for pagination | #### Output [#output-5] | Parameter | Type | Description | | ------------------------ | ------- | -------------------------------------------------------------------------------------------------------------------------------------------- | | `savedSearches` | array | Saved searches configured in Splunk | | ↳ `name` | string | Saved search name | | ↳ `id` | string | Fully qualified REST URI of the saved search | | ↳ `author` | string | Owner of the saved search | | ↳ `updated` | string | Last update timestamp | | ↳ `search` | string | The SPL the saved search runs | | ↳ `qualifiedSearch` | string | The exact search string the scheduler runs | | ↳ `description` | string | Saved search description | | ↳ `disabled` | boolean | Whether the saved search is disabled | | ↳ `isScheduled` | boolean | Whether the search runs on a schedule | | ↳ `isVisible` | boolean | Whether the search appears in the visible saved search list | | ↳ `cronSchedule` | string | Cron schedule for the search | | ↳ `nextScheduledTime` | string | Time the scheduler runs this search again | | ↳ `alertType` | string | Alert condition type (e.g. always, custom, number of events) | | ↳ `dispatchEarliestTime` | string | Earliest time bound used when the search is dispatched | | ↳ `dispatchLatestTime` | string | Latest time bound used when the search is dispatched | | `total` | number | Total number of entries matching the request, from the response paging envelope. Compare with offset to decide whether another page remains. | | `offset` | number | Offset of the first entry in this page, echoed from the response paging envelope | ### Splunk Get Saved Search [#splunk-get-saved-search] Get the configuration of a single Splunk saved search by name, including its SPL, schedule, and alert settings. #### Input [#input-6] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `baseUrl` | string | Yes | Splunk management URL including the management port (e.g. [https://splunk.example.com:8089](https://splunk.example.com:8089)) | | `authToken` | string | No | Splunk authentication token, sent as a bearer token. Preferred over a password. | | `username` | string | No | Splunk username, used for basic authentication when no token is supplied | | `password` | string | No | Splunk password, used for basic authentication when no token is supplied | | `owner` | string | No | Namespace owner for /servicesNS requests (e.g. admin, or nobody for app-shared objects). Leave both this and the app empty to use the authenticated user context; set only one and the other becomes the - wildcard. | | `app` | string | No | Namespace app context for /servicesNS requests (e.g. search). Leave both this and the owner empty to use the authenticated user context; set only one and the other becomes the - wildcard. | | `name` | string | Yes | Name of the saved search (e.g. Errors in the last 24 hours) | #### Output [#output-6] | Parameter | Type | Description | | ---------------------- | ------- | ------------------------------------------------------------ | | `name` | string | Saved search name | | `id` | string | Fully qualified REST URI of the saved search | | `author` | string | Owner of the saved search | | `updated` | string | Last update timestamp | | `search` | string | The SPL the saved search runs | | `qualifiedSearch` | string | The exact search string the scheduler runs | | `description` | string | Saved search description | | `disabled` | boolean | Whether the saved search is disabled | | `isScheduled` | boolean | Whether the search runs on a schedule | | `isVisible` | boolean | Whether the search appears in the visible saved search list | | `cronSchedule` | string | Cron schedule for the search | | `nextScheduledTime` | string | Time the scheduler runs this search again | | `alertType` | string | Alert condition type (e.g. always, custom, number of events) | | `dispatchEarliestTime` | string | Earliest time bound used when the search is dispatched | | `dispatchLatestTime` | string | Latest time bound used when the search is dispatched | ### Splunk Dispatch Saved Search [#splunk-dispatch-saved-search] Run a Splunk saved search immediately and return the search ID (sid) of the dispatched job. #### Input [#input-7] | Parameter | Type | Required | Description | | ---------------------- | ------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `baseUrl` | string | Yes | Splunk management URL including the management port (e.g. [https://splunk.example.com:8089](https://splunk.example.com:8089)) | | `authToken` | string | No | Splunk authentication token, sent as a bearer token. Preferred over a password. | | `username` | string | No | Splunk username, used for basic authentication when no token is supplied | | `password` | string | No | Splunk password, used for basic authentication when no token is supplied | | `owner` | string | No | Namespace owner for /servicesNS requests (e.g. admin, or nobody for app-shared objects). Leave both this and the app empty to use the authenticated user context; set only one and the other becomes the - wildcard. | | `app` | string | No | Namespace app context for /servicesNS requests (e.g. search). Leave both this and the owner empty to use the authenticated user context; set only one and the other becomes the - wildcard. | | `name` | string | Yes | Name of the saved search to run (e.g. Errors in the last 24 hours) | | `triggerActions` | boolean | No | Whether to trigger the saved search alert actions on this run | | `dispatchEarliestTime` | string | No | Override the earliest time bound for this run — relative (e.g. -24h) or absolute time | | `dispatchLatestTime` | string | No | Override the latest time bound for this run — relative (e.g. now) or absolute time | | `dispatchMaxCount` | number | No | Maximum number of results before the search is finalized (e.g. 10000) | | `dispatchMaxTime` | number | No | Maximum number of seconds before the search is finalized (e.g. 300) | | `dispatchTtl` | number | No | Time to live in seconds for the search artifacts when no actions are triggered (e.g. 600) | | `forceDispatch` | boolean | No | Start a new search even when another instance of this saved search is already running | #### Output [#output-7] | Parameter | Type | Description | | --------- | ------ | ---------------------------------------------------------------------- | | `sid` | string | Search ID of the dispatched job, used to poll status and fetch results | ### Splunk List Fired Alerts [#splunk-list-fired-alerts] List the saved searches with currently triggered (unexpired) Splunk alerts and how many times each has fired. #### Input [#input-8] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `baseUrl` | string | Yes | Splunk management URL including the management port (e.g. [https://splunk.example.com:8089](https://splunk.example.com:8089)) | | `authToken` | string | No | Splunk authentication token, sent as a bearer token. Preferred over a password. | | `username` | string | No | Splunk username, used for basic authentication when no token is supplied | | `password` | string | No | Splunk password, used for basic authentication when no token is supplied | | `owner` | string | No | Namespace owner for /servicesNS requests (e.g. admin, or nobody for app-shared objects). Leave both this and the app empty to use the authenticated user context; set only one and the other becomes the - wildcard. | | `app` | string | No | Namespace app context for /servicesNS requests (e.g. search). Leave both this and the owner empty to use the authenticated user context; set only one and the other becomes the - wildcard. | | `count` | number | No | Maximum number of entries to return (e.g. 50). 0 returns all. | | `offset` | number | No | Index of the first entry to return, for pagination | #### Output [#output-8] | Parameter | Type | Description | | ----------------------- | ------ | -------------------------------------------------------------------------------------------------------------------------------------------- | | `alerts` | array | Saved searches with currently triggered alerts | | ↳ `name` | string | Name of the alerting saved search | | ↳ `id` | string | Fully qualified REST URI of the entry | | ↳ `updated` | string | Last update timestamp | | ↳ `triggeredAlertCount` | number | Trigger count for this alert | | `total` | number | Total number of entries matching the request, from the response paging envelope. Compare with offset to decide whether another page remains. | | `offset` | number | Offset of the first entry in this page, echoed from the response paging envelope | ### Splunk Get Fired Alerts [#splunk-get-fired-alerts] List the unexpired triggered instances of a Splunk alert by saved search name, including severity, trigger time, and the search ID of each firing. #### Input [#input-9] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `baseUrl` | string | Yes | Splunk management URL including the management port (e.g. [https://splunk.example.com:8089](https://splunk.example.com:8089)) | | `authToken` | string | No | Splunk authentication token, sent as a bearer token. Preferred over a password. | | `username` | string | No | Splunk username, used for basic authentication when no token is supplied | | `password` | string | No | Splunk password, used for basic authentication when no token is supplied | | `owner` | string | No | Namespace owner for /servicesNS requests (e.g. admin, or nobody for app-shared objects). Leave both this and the app empty to use the authenticated user context; set only one and the other becomes the - wildcard. | | `app` | string | No | Namespace app context for /servicesNS requests (e.g. search). Leave both this and the owner empty to use the authenticated user context; set only one and the other becomes the - wildcard. | | `name` | string | Yes | Name of the alerting saved search (e.g. Errors in the last 24 hours). Use - to return the fired alerts of every saved search — this endpoint documents "Request parameters: None", so there is no count or offset to bound that with. Name one saved search unless you really want all of them. | #### Output [#output-9] | Parameter | Type | Description | | -------------------------- | ------ | ------------------------------------------------------- | | `firedAlerts` | array | Unexpired triggered instances of the alert | | ↳ `name` | string | Name of the fired alert entry | | ↳ `id` | string | Fully qualified REST URI of the entry | | ↳ `updated` | string | Last update timestamp | | ↳ `savedSearchName` | string | Name of the saved search that triggered the alert | | ↳ `alertType` | string | Whether the alert was historical or real-time | | ↳ `severity` | number | Severity level of the alert | | ↳ `sid` | string | Search ID of the search that triggered the alert | | ↳ `triggerTime` | number | Time the alert was triggered | | ↳ `triggerTimeRendered` | string | Human-readable time the alert was triggered | | ↳ `expirationTimeRendered` | string | Human-readable time this triggered alert record expires | | ↳ `triggeredAlerts` | number | Number of alerts included in this triggered instance | | ↳ `actions` | string | Additional alert actions triggered by this alert | ### Splunk List Indexes [#splunk-list-indexes] List the indexes configured on the Splunk instance with their size, event count, and retention settings. #### Input [#input-10] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `baseUrl` | string | Yes | Splunk management URL including the management port (e.g. [https://splunk.example.com:8089](https://splunk.example.com:8089)) | | `authToken` | string | No | Splunk authentication token, sent as a bearer token. Preferred over a password. | | `username` | string | No | Splunk username, used for basic authentication when no token is supplied | | `password` | string | No | Splunk password, used for basic authentication when no token is supplied | | `owner` | string | No | Namespace owner for /servicesNS requests (e.g. admin, or nobody for app-shared objects). Leave both this and the app empty to use the authenticated user context; set only one and the other becomes the - wildcard. | | `app` | string | No | Namespace app context for /servicesNS requests (e.g. search). Leave both this and the owner empty to use the authenticated user context; set only one and the other becomes the - wildcard. | | `datatype` | string | No | Filter indexes by type: all, event, or metric. Splunk defaults to event, so pass all to include metric indexes. | | `count` | number | No | Maximum number of indexes to return (e.g. 50). 0 returns all. | | `offset` | number | No | Index of the first entry to return, for pagination | #### Output [#output-10] | Parameter | Type | Description | | -------------------------- | ------- | -------------------------------------------------------------------------------------------------------------------------------------------- | | `indexes` | array | Indexes configured on the instance | | ↳ `name` | string | Index name | | ↳ `id` | string | Fully qualified REST URI of the index | | ↳ `updated` | string | Last update timestamp | | ↳ `datatype` | string | Index data type (event or metric) | | ↳ `disabled` | boolean | Whether the index is disabled | | ↳ `isInternal` | boolean | Whether this is an internal Splunk index | | ↳ `totalEventCount` | number | Total number of events in the index | | ↳ `currentDBSizeMB` | number | Current index size in megabytes | | ↳ `maxTotalDataSizeMB` | number | Maximum index size in megabytes before rolling to frozen | | ↳ `frozenTimePeriodInSecs` | number | Age in seconds at which data rolls to frozen | | ↳ `minTime` | string | Timestamp of the earliest event in the index | | ↳ `maxTime` | string | Timestamp of the latest event in the index | | ↳ `homePath` | string | Path to the hot and warm buckets | | ↳ `coldPath` | string | Path to the cold buckets | | ↳ `thawedPath` | string | Path to the thawed buckets | | `total` | number | Total number of entries matching the request, from the response paging envelope. Compare with offset to decide whether another page remains. | | `offset` | number | Offset of the first entry in this page, echoed from the response paging envelope | ### Splunk List Apps [#splunk-list-apps] List the apps installed on the Splunk instance with their label, version, author, and enabled state. #### Input [#input-11] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `baseUrl` | string | Yes | Splunk management URL including the management port (e.g. [https://splunk.example.com:8089](https://splunk.example.com:8089)) | | `authToken` | string | No | Splunk authentication token, sent as a bearer token. Preferred over a password. | | `username` | string | No | Splunk username, used for basic authentication when no token is supplied | | `password` | string | No | Splunk password, used for basic authentication when no token is supplied | | `owner` | string | No | Namespace owner for /servicesNS requests (e.g. admin, or nobody for app-shared objects). Leave both this and the app empty to use the authenticated user context; set only one and the other becomes the - wildcard. | | `app` | string | No | Namespace app context for /servicesNS requests (e.g. search). Leave both this and the owner empty to use the authenticated user context; set only one and the other becomes the - wildcard. | | `count` | number | No | Maximum number of apps to return (e.g. 50). 0 returns all. | | `offset` | number | No | Index of the first app to return, for pagination | #### Output [#output-11] | Parameter | Type | Description | | ------------------------------ | ------- | -------------------------------------------------------------------------------------------------------------------------------------------- | | `apps` | array | Apps installed on the Splunk instance | | ↳ `name` | string | App directory name, usable as the app namespace | | ↳ `id` | string | Fully qualified REST URI of the app | | ↳ `updated` | string | Last update timestamp | | ↳ `label` | string | Display name of the app | | ↳ `version` | string | App version | | ↳ `author` | string | App author | | ↳ `description` | string | App description | | ↳ `details` | string | URL with detailed information about the app | | ↳ `disabled` | boolean | Whether the app is disabled | | ↳ `visible` | boolean | Whether the app is visible and navigable from Splunk Web | | ↳ `configured` | boolean | Whether the custom app setup has been completed | | ↳ `checkForUpdates` | boolean | Whether Splunkbase is checked for app updates | | ↳ `stateChangeRequiresRestart` | boolean | Whether changing the app state requires a restart | | `total` | number | Total number of entries matching the request, from the response paging envelope. Compare with offset to decide whether another page remains. | | `offset` | number | Offset of the first entry in this page, echoed from the response paging envelope | --- # SailPoint (/en/integrations/sailpoint) {/* MANUAL-CONTENT-START:intro */} The SailPoint integration connects Studio 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. Studio 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. Studio 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**. Studio 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 | --- # Exa (/en/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 | --- # Google BigQuery (/en/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 | --- # monday.com API Tokens (/en/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 `studio-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 Studio [#adding-the-api-token-to-studio] Open **Integrations** from your workspace sidebar Search for "Monday" and open it, then click **Add to Studio** 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**. Studio 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. --- # Modal (/en/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 | --- # Mailchimp (/en/integrations/mailchimp) {/* MANUAL-CONTENT-START:intro */} Use [Mailchimp](https://mailchimp.com/) in Studio 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 | --- # Google Search (/en/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) | --- # Zoho Desk Self Clients (/en/integrations/zoho-desk-service-account) This guide covers Studio's Zoho Desk **Self Client** connection. It collects a Client ID, client secret, organization ID, and data center, then requests access tokens for the configured Desk organization. ## Prerequisites [#prerequisites] You need a Zoho account with access to the Zoho API Console **for your data center**, for the same organization your Zoho Desk portal belongs to, and the Zoho Desk **organization ID** for that portal. See [Know Your Data Center](#3-know-your-data-center) for the console that matches your region. A Self Client can authenticate against the **US, EU, IN, or AU** accounts server — pick your region from the **Data center** dropdown when you add the credential, or leave it unset for US. Organizations in the JP, CA, SA, CN, or UK data centers are not supported yet. API calls are then routed to the Desk host for that same region, so data residency is honored end to end. The interactive **OAuth** connection is a separate path and remains **US-only** (`accounts.zoho.com`), so a non-US organization can connect only through a Self Client. Zoho Desk **webhooks are a Professional-edition and above feature**. The Zoho Desk trigger in Studio provisions a webhook subscription, so it does not work on Free or Standard plans. The trigger also requires a personal **OAuth** connection rather than a Self Client — see [Triggers](#triggers-still-need-oauth) below. ## Setting Up the Self Client [#setting-up-the-self-client] ### 1. Create the Self Client [#1-create-the-self-client] Sign in to the Zoho API Console **for your data center** with the Zoho account that owns the Desk portal — see [Know Your Data Center](#3-know-your-data-center) for the right one. A Self Client is registered in one data center and cannot authenticate against another region's accounts server Click **Add Client**, choose **Self Client**, and click **Create** — then **OK** on the confirmation {/* TODO(screenshot): Zoho API Console Add Client dialog with Self Client selected */} Open the new client and switch to the **Client Secret** tab. Copy the **Client ID** and **Client Secret** — these are two of the three values you'll paste into Studio {/* TODO(screenshot): Self Client Client Secret tab showing Client ID and Client Secret */} You do **not** need the **Generate Code** tab. That tab produces a one-time authorization code for the code-exchange flow; the client-credentials flow Studio uses needs only the client ID, the client secret, and your organization ID. ### 2. Find Your Organization ID [#2-find-your-organization-id] Open Zoho Desk and go to **Setup** (the gear icon) → **Developer Space** → **API** Copy the numeric **Organization ID** (also called the Org ID or portal ID) shown there — for example `600123456` {/* TODO(screenshot): Zoho Desk Setup > Developer Space > API showing the Organization ID */} This must be the organization ID of the Desk portal you want the workflows to act on. If your Zoho account has more than one Desk portal, using the wrong ID makes Zoho either reject the token request or issue a token scoped to the wrong portal. ### 3. Know Your Data Center [#3-know-your-data-center] Zoho hosts each organization in one data center, and the accounts server that issues tokens is per region. Look at the URL you use to sign in to Zoho Desk and pick the matching region in the **Data center** dropdown: | Sign-in domain | Data center to pick | API Console to create the Self Client in | | -------------- | ------------------------------------------- | ---------------------------------------------------------- | | `zoho.com` | United States (the default when left unset) | [api-console.zoho.com](https://api-console.zoho.com) | | `zoho.eu` | Europe | [api-console.zoho.eu](https://api-console.zoho.eu) | | `zoho.in` | India | [api-console.zoho.in](https://api-console.zoho.in) | | `zoho.com.au` | Australia | [api-console.zoho.com.au](https://api-console.zoho.com.au) | Organizations in the JP, CA, SA, CN, and UK data centers cannot be connected yet. Create the Self Client in the console for **your** data center. Zoho ties a client to the region it was registered in — *"the accounts-server-url is specific to the location (i.e., datacenter) where the client is registered"* — and the multi-data-center setting that would extend a client to other regions is [not available for Self Clients](https://docs.catalyst.zoho.com/en/api/oauth2/register-new-client/). A Self Client created in the wrong console cannot be repointed later; create a new one in the right region. ### 4. Scopes [#4-scopes] Studio requests the Zoho Desk scopes its tools and its webhook trigger exercise — the same list on both connection types: ``` Desk.tickets.READ Desk.tickets.UPDATE Desk.contacts.READ Desk.agents.READ Desk.basic.READ Desk.webhooks.CREATE Desk.webhooks.DELETE ``` Studio sends this list on every token request, so there is nothing to pre-configure on the Self Client itself. The `aaaserver.profile.READ` scope Studio requests on the interactive OAuth flow is deliberately left off this grant — it is an Accounts *profile* scope, and this grant never calls the Accounts profile endpoint; identity is synthesized from the organization ID. If Zoho rejects the request with an invalid-scope error, the Self Client's owner does not have access to one of the Desk modules above in that organization. `Desk.webhooks.CREATE` and `Desk.webhooks.DELETE` belong to the trigger, which runs on an OAuth connection only (see [Triggers](#triggers-still-need-oauth) below). They are harmless on a Self Client grant, but a Free or Standard Desk plan may reject them, since webhooks are a Professional-edition feature. A scope that is granted but insufficient surfaces at run time as a `4xx` from the Zoho Desk API naming the scope problem. ### 5. Protect the Client Secret [#5-protect-the-client-secret] The client secret is bearer material for your Zoho Desk organization, limited only by the scopes above. Treat it like a password — do not commit it to source control or share it publicly. Studio encrypts it at rest. Regenerating or revoking the Self Client in the Zoho API Console invalidates the stored pair immediately. If you rotate it, update the credential in Studio right away. ## Adding the Self Client to Studio [#adding-the-self-client-to-studio] Open **Integrations** from your workspace sidebar Search for "Zoho Desk" and open it, then click **Add to Studio** and choose **Add Self Client** {/* TODO(screenshot): Zoho Desk integration page with the Add Self Client connect option */} In the **Add Zoho Desk Self Client** dialog, paste the **Client ID**, the **Client secret**, and the numeric **Organization ID**. Pick your region from the **Data center** dropdown — leaving it unset uses the United States. Optionally set a display name and description {/* TODO(screenshot): Add Zoho Desk Self Client dialog with all fields filled in */} Click **Add Self Client**. Studio verifies the credentials by minting a real access token from Zoho — if it fails, the error tells you whether Zoho rejected the credentials or couldn't be reached. ## Using the Self Client in Workflows [#using-the-self-client-in-workflows] Add a Zoho Desk block to your workflow. In the credential dropdown, your Self Client appears alongside any OAuth credentials. Select it and configure the block as you normally would. {/* TODO(screenshot): Zoho Desk block in a workflow with the Self Client selected as the credential */} The block calls the Zoho Desk REST API with a freshly minted access token — the same requests as the OAuth flow, so the Zoho Desk tools work the same way, subject to the scopes above. **Get Attachment** has not been verified with this Self Client flow. If it returns a scope error, contact support with the operation and error details; the requested scope list is managed by Studio. ### Triggers still need OAuth [#triggers-still-need-oauth] The Zoho Desk **trigger** provisions and tears down its own webhook subscription against your Desk organization, and that provisioning path currently runs only against a personal OAuth connection. Connect a Zoho Desk account through OAuth for triggers, and use the Self Client for the blocks that read and update tickets. Because the OAuth flow is US-only, an organization outside the US data center can use Zoho Desk blocks through a Self Client but cannot use the Zoho Desk trigger. ## Token Behavior [#token-behavior] Access tokens minted from a Self Client live for one hour and there is **no refresh token** — Studio mints a new token whenever one is needed, and caches the current one until it is close to expiry. Two events invalidate the stored credential: * **Revoking or deleting the Self Client** in the Zoho API Console — no new tokens can be minted * **Regenerating the client secret** — the stored pair stops working; paste the new secret into the credential in Studio --- # CB Insights (/en/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 Studio** This integration covers every non-streaming v2 endpoint. Authentication is a client-credential exchange — Studio 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 Studio:** * **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 | --- # Stagehand (/en/integrations/stagehand) {/* MANUAL-CONTENT-START:intro */} [Stagehand](https://www.stagehand.dev/) runs browser automation using Browserbase and an LLM. Use **Extract** to retrieve page data matching a schema. Use **Agent** for a task that requires multiple browser interactions, such as navigating and filling out a form. Configure the Browserbase and model credentials required by the selected operation. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate Stagehand into the workflow. Can extract structured data from webpages or run an autonomous agent to perform tasks. ## Actions [#actions] ### Stagehand Extract [#stagehand-extract] Extract structured data from a webpage using Stagehand #### Input [#input] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | --------------------------------------------------------- | | `url` | string | Yes | URL of the webpage to extract data from | | `instruction` | string | Yes | Instructions for extraction | | `provider` | string | No | AI provider to use: openai or anthropic | | `apiKey` | string | Yes | API key for the selected provider | | `schema` | json | Yes | JSON schema defining the structure of the data to extract | #### Output [#output] | Parameter | Type | Description | | --------- | ------ | ------------------------------------------------------ | | `data` | object | Extracted structured data matching the provided schema | ### Stagehand Agent [#stagehand-agent] Run an autonomous web agent to complete tasks and extract structured data #### Input [#input-1] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | --------------------------------------------------------------------------------------------------- | | `startUrl` | string | Yes | URL of the webpage to start the agent on | | `task` | string | Yes | The task to complete or goal to achieve on the website | | `variables` | json | No | Optional variables to substitute in the task (format: \{key: value}). Reference in task using %key% | | `provider` | string | No | AI provider to use: openai or anthropic | | `apiKey` | string | Yes | API key for the selected provider | | `outputSchema` | json | No | Optional JSON schema defining the structure of data the agent should return | | `mode` | string | No | Agent tool mode: dom (default), hybrid, or cua | | `maxSteps` | number | No | Maximum agent steps (default 20, max 200) | #### Output [#output-1] | Parameter | Type | Description | | ------------------ | ------- | ------------------------------------------------------------------------------------------ | | `agentResult` | object | Result from the Stagehand agent execution | | ↳ `success` | boolean | Whether the agent task completed successfully without errors | | ↳ `completed` | boolean | Whether the agent finished executing (may be false if max steps reached) | | ↳ `message` | string | Final status message or result summary from the agent | | ↳ `actions` | array | List of all actions performed by the agent during task execution | | ↳ `type` | string | Type of action performed (e.g., "act", "observe", "ariaTree", "close", "wait", "navigate") | | ↳ `reasoning` | string | AI reasoning for why this action was taken | | ↳ `taskCompleted` | boolean | Whether the task was completed after this action | | ↳ `action` | string | Description of the action taken (e.g., "click the submit button") | | ↳ `instruction` | string | Instruction that triggered this action | | ↳ `pageUrl` | string | URL of the page when this action was performed | | ↳ `pageText` | string | Page text content (for ariaTree actions) | | ↳ `timestamp` | number | Unix timestamp when the action was performed | | ↳ `timeMs` | number | Time in milliseconds (for wait actions) | | `structuredOutput` | object | Extracted data matching the provided output schema | | `liveViewUrl` | string | Embeddable Browserbase live view URL (active only while the session is running) | | `sessionId` | string | Browserbase session identifier | --- # NeverBounce (/en/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 | --- # Ketch (/en/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 | --- # Workday (/en/integrations/workday) {/* MANUAL-CONTENT-START:intro */} [Workday](https://www.workday.com/) is a cloud-based Human Capital Management (HCM) and finance system used by organizations to manage their workforce, from hiring through termination. It centralizes worker records, organizational structure, compensation, and HR business processes. With this integration, you can: * **Manage worker records**: Retrieve individual worker profiles or list and search workers with pagination * **Run the hire lifecycle**: Create pre-hire records and convert them into active employees with position and start date * **Update worker data**: Change fields on existing worker records, such as business title or work email * **Handle job and org changes**: Process transfers, promotions, demotions, and lateral moves, and retrieve organizations, departments, and cost centers * **Manage onboarding and compensation**: Assign onboarding plans and retrieve compensation plan details for a worker * **Process terminations**: Initiate the termination business process with a reason and effective date In Studio, the Workday integration allows your agents to look up and update worker profiles, create pre-hires and hire them into positions, assign onboarding plans, process job changes and terminations, and pull organization and compensation data—all through Workday's Integration System User authentication. This lets your agents automate HR operations such as onboarding new employees, keeping worker records current, and managing the employee lifecycle directly from a workflow. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate Workday HRIS into your workflow. Create pre-hires, hire employees, manage worker profiles, assign onboarding plans, handle job changes, retrieve compensation data, and process terminations. ## Actions [#actions] ### Get Workday Worker [#get-workday-worker] Retrieve a specific worker profile including personal, employment, and organization data. #### Input [#input] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------- | | `tenantUrl` | string | Yes | Workday instance URL (e.g., [https://wd5-impl-services1.workday.com](https://wd5-impl-services1.workday.com)) | | `tenant` | string | Yes | Workday tenant name | | `username` | string | Yes | Integration System User username | | `password` | string | Yes | Integration System User password | | `workerId` | string | Yes | Worker ID to retrieve (e.g., 3aa5550b7fe348b98d7b5741afc65534) | #### Output [#output] | Parameter | Type | Description | | --------- | ---- | --------------------------------------------------------------- | | `worker` | json | Worker profile with personal, employment, and organization data | ### List Workday Workers [#list-workday-workers] List or search workers with optional filtering and pagination. #### Input [#input-1] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------- | | `tenantUrl` | string | Yes | Workday instance URL (e.g., [https://wd5-impl-services1.workday.com](https://wd5-impl-services1.workday.com)) | | `tenant` | string | Yes | Workday tenant name | | `username` | string | Yes | Integration System User username | | `password` | string | Yes | Integration System User password | | `limit` | number | No | Maximum number of workers to return (default: 20) | | `offset` | number | No | Number of records to skip for pagination | #### Output [#output-1] | Parameter | Type | Description | | --------- | ------ | -------------------------------- | | `workers` | array | Array of worker profiles | | `total` | number | Total number of matching workers | ### Create Workday Pre-Hire [#create-workday-pre-hire] Create a new pre-hire (applicant) record in Workday. This is typically the first step before hiring an employee. #### Input [#input-2] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------- | | `tenantUrl` | string | Yes | Workday instance URL (e.g., [https://wd5-impl-services1.workday.com](https://wd5-impl-services1.workday.com)) | | `tenant` | string | Yes | Workday tenant name | | `username` | string | Yes | Integration System User username | | `password` | string | Yes | Integration System User password | | `legalName` | string | Yes | Full legal name of the pre-hire (e.g., "Jane Doe") | | `email` | string | No | Email address of the pre-hire | | `phoneNumber` | string | No | Phone number of the pre-hire | | `address` | string | No | Address of the pre-hire | | `countryCode` | string | No | ISO 3166-1 Alpha-2 country code (defaults to US) | #### Output [#output-2] | Parameter | Type | Description | | ------------ | ------ | --------------------------------- | | `preHireId` | string | ID of the created pre-hire record | | `descriptor` | string | Display name of the pre-hire | ### Hire Workday Employee [#hire-workday-employee] Hire a pre-hire into an employee position. Converts an applicant into an active employee record with position, start date, and manager assignment. #### Input [#input-3] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------- | | `tenantUrl` | string | Yes | Workday instance URL (e.g., [https://wd5-impl-services1.workday.com](https://wd5-impl-services1.workday.com)) | | `tenant` | string | Yes | Workday tenant name | | `username` | string | Yes | Integration System User username | | `password` | string | Yes | Integration System User password | | `preHireId` | string | Yes | Pre-hire (applicant) ID to convert into an employee | | `positionId` | string | Yes | Position ID to assign the new hire to | | `hireDate` | string | Yes | Hire date in ISO 8601 format (e.g., 2025-06-01) | | `employeeType` | string | No | Employee type (e.g., Regular, Temporary, Contractor) | #### Output [#output-3] | Parameter | Type | Description | | ------------ | ------ | ------------------------------------- | | `workerId` | string | Worker ID of the newly hired employee | | `employeeId` | string | Employee ID assigned to the new hire | | `eventId` | string | Event ID of the hire business process | | `hireDate` | string | Effective hire date | ### Update Workday Worker [#update-workday-worker] Update fields on an existing worker record in Workday. #### Input [#input-4] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------- | | `tenantUrl` | string | Yes | Workday instance URL (e.g., [https://wd5-impl-services1.workday.com](https://wd5-impl-services1.workday.com)) | | `tenant` | string | Yes | Workday tenant name | | `username` | string | Yes | Integration System User username | | `password` | string | Yes | Integration System User password | | `workerId` | string | Yes | Worker ID to update | | `fields` | json | Yes | Fields to update as JSON (e.g., \{"businessTitle": "Senior Engineer", "primaryWorkEmail": "[new@company.com](mailto:new@company.com)"}) | #### Output [#output-4] | Parameter | Type | Description | | ---------- | ------ | ------------------------------------------------------------ | | `eventId` | string | Event ID of the change personal information business process | | `workerId` | string | Worker ID that was updated | ### Assign Workday Onboarding Plan [#assign-workday-onboarding-plan] Create or update an onboarding plan assignment for a worker. Sets up onboarding stages and manages the assignment lifecycle. #### Input [#input-5] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | ------------------------------------------------------------------------------------------------------------- | | `tenantUrl` | string | Yes | Workday instance URL (e.g., [https://wd5-impl-services1.workday.com](https://wd5-impl-services1.workday.com)) | | `tenant` | string | Yes | Workday tenant name | | `username` | string | Yes | Integration System User username | | `password` | string | Yes | Integration System User password | | `workerId` | string | Yes | Worker ID to assign the onboarding plan to | | `onboardingPlanId` | string | Yes | Onboarding plan ID to assign | | `actionEventId` | string | Yes | Action event ID that enables the onboarding plan (e.g., the hiring event ID) | #### Output [#output-5] | Parameter | Type | Description | | -------------- | ------ | ------------------------------------ | | `assignmentId` | string | Onboarding plan assignment ID | | `workerId` | string | Worker ID the plan was assigned to | | `planId` | string | Onboarding plan ID that was assigned | ### Get Workday Organizations [#get-workday-organizations] Retrieve organizations, departments, and cost centers from Workday. #### Input [#input-6] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------- | | `tenantUrl` | string | Yes | Workday instance URL (e.g., [https://wd5-impl-services1.workday.com](https://wd5-impl-services1.workday.com)) | | `tenant` | string | Yes | Workday tenant name | | `username` | string | Yes | Integration System User username | | `password` | string | Yes | Integration System User password | | `type` | string | No | Organization type filter (e.g., Supervisory, Cost\_Center, Company, Region) | | `limit` | number | No | Maximum number of organizations to return (default: 20) | | `offset` | number | No | Number of records to skip for pagination | #### Output [#output-6] | Parameter | Type | Description | | --------------- | ------ | -------------------------------------- | | `organizations` | array | Array of organization records | | `total` | number | Total number of matching organizations | ### Change Workday Job [#change-workday-job] Perform a job change for a worker including transfers, promotions, demotions, and lateral moves. #### Input [#input-7] | Parameter | Type | Required | Description | | --------------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------- | | `tenantUrl` | string | Yes | Workday instance URL (e.g., [https://wd5-impl-services1.workday.com](https://wd5-impl-services1.workday.com)) | | `tenant` | string | Yes | Workday tenant name | | `username` | string | Yes | Integration System User username | | `password` | string | Yes | Integration System User password | | `workerId` | string | Yes | Worker ID for the job change | | `effectiveDate` | string | Yes | Effective date for the job change in ISO 8601 format (e.g., 2025-06-01) | | `newPositionId` | string | No | New position ID (for transfers) | | `newJobProfileId` | string | No | New job profile ID (for role changes) | | `newLocationId` | string | No | New work location ID (for relocations) | | `newSupervisoryOrgId` | string | No | Target supervisory organization ID (for org transfers) | | `reason` | string | Yes | Reason for the job change (e.g., Promotion, Transfer, Reorganization) | #### Output [#output-7] | Parameter | Type | Description | | --------------- | ------ | --------------------------------------- | | `eventId` | string | Job change event ID | | `workerId` | string | Worker ID the job change was applied to | | `effectiveDate` | string | Effective date of the job change | ### Get Workday Compensation [#get-workday-compensation] Retrieve compensation plan details for a specific worker. #### Input [#input-8] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------- | | `tenantUrl` | string | Yes | Workday instance URL (e.g., [https://wd5-impl-services1.workday.com](https://wd5-impl-services1.workday.com)) | | `tenant` | string | Yes | Workday tenant name | | `username` | string | Yes | Integration System User username | | `password` | string | Yes | Integration System User password | | `workerId` | string | Yes | Worker ID to retrieve compensation data for | #### Output [#output-8] | Parameter | Type | Description | | ------------------- | ------ | ---------------------------------- | | `compensationPlans` | array | Array of compensation plan details | | ↳ `id` | string | Compensation plan ID | | ↳ `planName` | string | Name of the compensation plan | | ↳ `amount` | number | Compensation amount | | ↳ `currency` | string | Currency code | | ↳ `frequency` | string | Pay frequency | ### Terminate Workday Worker [#terminate-workday-worker] Initiate a worker termination in Workday. Triggers the Terminate Employee business process. #### Input [#input-9] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | ------------------------------------------------------------------------------------------------------------- | | `tenantUrl` | string | Yes | Workday instance URL (e.g., [https://wd5-impl-services1.workday.com](https://wd5-impl-services1.workday.com)) | | `tenant` | string | Yes | Workday tenant name | | `username` | string | Yes | Integration System User username | | `password` | string | Yes | Integration System User password | | `workerId` | string | Yes | Worker ID to terminate | | `terminationDate` | string | Yes | Termination date in ISO 8601 format (e.g., 2025-06-01) | | `reason` | string | Yes | Termination reason (e.g., Resignation, End\_of\_Contract, Retirement) | | `notificationDate` | string | No | Date the termination was communicated in ISO 8601 format | | `lastDayOfWork` | string | No | Last day of work in ISO 8601 format (defaults to termination date) | #### Output [#output-9] | Parameter | Type | Description | | ----------------- | ------ | ----------------------------- | | `eventId` | string | Termination event ID | | `workerId` | string | Worker ID that was terminated | | `terminationDate` | string | Effective termination date | --- # SendGrid (/en/integrations/sendgrid) {/* MANUAL-CONTENT-START:intro */} Use [SendGrid](https://sendgrid.com) in Studio to send transactional emails, work with dynamic templates and attachments, and manage marketing contacts and lists. The action reference also covers template and suppression-group operations. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate SendGrid into your workflow. Send transactional emails, manage marketing contacts and lists, and work with email templates. Supports dynamic templates, attachments, and comprehensive contact management. ## Actions [#actions] ### SendGrid Send Mail [#sendgrid-send-mail] Send an email using SendGrid API #### Input [#input] | Parameter | Type | Required | Description | | --------------------- | ------- | -------- | ------------------------------------------------------------------------------ | | `apiKey` | string | Yes | SendGrid API key | | `from` | string | Yes | Sender email address (must be verified in SendGrid) | | `fromName` | string | No | Sender name | | `to` | string | Yes | Recipient email address | | `toName` | string | No | Recipient name | | `subject` | string | No | Email subject (required unless using a template with pre-defined subject) | | `content` | string | No | Email body content (required unless using a template with pre-defined content) | | `contentType` | string | No | Content type (text/plain or text/html) | | `cc` | string | No | CC email address | | `bcc` | string | No | BCC email address | | `replyTo` | string | No | Reply-to email address | | `replyToName` | string | No | Reply-to name | | `attachments` | file\[] | No | Files to attach to the email (UserFile objects) | | `templateId` | string | No | SendGrid template ID to use | | `dynamicTemplateData` | json | No | JSON object of dynamic template data | #### Output [#output] | Parameter | Type | Description | | ----------- | ------- | --------------------------------------- | | `success` | boolean | Whether the email was sent successfully | | `messageId` | string | SendGrid message ID | | `to` | string | Recipient email address | | `subject` | string | Email subject | ### SendGrid Add Contact [#sendgrid-add-contact] Add a new contact to SendGrid #### Input [#input-1] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | SendGrid API key | | `email` | string | Yes | Contact email address | | `firstName` | string | No | Contact first name | | `lastName` | string | No | Contact last name | | `customFields` | json | No | JSON object of custom field key-value pairs (use field IDs like e1\_T, e2\_N, e3\_D, not field names) | | `listIds` | string | No | Comma-separated list IDs to add the contact to | #### Output [#output-1] | Parameter | Type | Description | | ----------- | ------ | ---------------------------------------------- | | `jobId` | string | Job ID for tracking the async contact creation | | `email` | string | Contact email address | | `firstName` | string | Contact first name | | `lastName` | string | Contact last name | | `message` | string | Status message | ### SendGrid Get Contact [#sendgrid-get-contact] Get a specific contact by ID from SendGrid #### Input [#input-2] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ---------------- | | `apiKey` | string | Yes | SendGrid API key | | `contactId` | string | Yes | Contact ID | #### Output [#output-2] | Parameter | Type | Description | | -------------- | ------ | ---------------------------------------- | | `id` | string | Contact ID | | `email` | string | Contact email address | | `firstName` | string | Contact first name | | `lastName` | string | Contact last name | | `createdAt` | string | Creation timestamp | | `updatedAt` | string | Last update timestamp | | `listIds` | json | Array of list IDs the contact belongs to | | `customFields` | json | Custom field values | ### SendGrid Search Contacts [#sendgrid-search-contacts] Search for contacts in SendGrid using a query #### Input [#input-3] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------------------------------------ | | `apiKey` | string | Yes | SendGrid API key | | `query` | string | Yes | Search query (e.g., "email LIKE '%example.com%' AND CONTAINS(list\_ids, 'list-id')") | #### Output [#output-3] | Parameter | Type | Description | | -------------- | ------ | ------------------------------ | | `contacts` | json | Array of matching contacts | | `contactCount` | number | Total number of contacts found | ### SendGrid Delete Contacts [#sendgrid-delete-contacts] Delete one or more contacts from SendGrid #### Input [#input-4] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------------------------------- | | `apiKey` | string | Yes | SendGrid API key | | `contactIds` | string | Yes | Comma-separated contact IDs to delete | #### Output [#output-4] | Parameter | Type | Description | | --------- | ------ | ------------------------------- | | `jobId` | string | Job ID for the deletion request | ### SendGrid Create List [#sendgrid-create-list] Create a new contact list in SendGrid #### Input [#input-5] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------- | | `apiKey` | string | Yes | SendGrid API key | | `name` | string | Yes | List name | #### Output [#output-5] | Parameter | Type | Description | | -------------- | ------ | ------------------------------ | | `id` | string | List ID | | `name` | string | List name | | `contactCount` | number | Number of contacts in the list | ### SendGrid Get List [#sendgrid-get-list] Get a specific list by ID from SendGrid #### Input [#input-6] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------- | | `apiKey` | string | Yes | SendGrid API key | | `listId` | string | Yes | List ID | #### Output [#output-6] | Parameter | Type | Description | | -------------- | ------ | ------------------------------ | | `id` | string | List ID | | `name` | string | List name | | `contactCount` | number | Number of contacts in the list | ### SendGrid List All Lists [#sendgrid-list-all-lists] Get all contact lists from SendGrid #### Input [#input-7] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | -------------------------------------------------------------------------- | | `apiKey` | string | Yes | SendGrid API key | | `pageSize` | number | No | Number of lists to return per page (default: 100, max: 1000) | | `pageToken` | string | No | Page token from a previous response (nextPageToken) to fetch the next page | #### Output [#output-7] | Parameter | Type | Description | | --------------- | ------ | ------------------------------------------------------------------------ | | `lists` | json | Array of lists | | `nextPageToken` | string | Token to pass as pageToken to fetch the next page, if more results exist | ### SendGrid Delete List [#sendgrid-delete-list] Delete a contact list from SendGrid #### Input [#input-8] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------------- | | `apiKey` | string | Yes | SendGrid API key | | `listId` | string | Yes | List ID to delete | #### Output [#output-8] | Parameter | Type | Description | | --------- | ------ | --------------- | | `message` | string | Success message | ### SendGrid Add Contacts to List [#sendgrid-add-contacts-to-list] Add or update contacts and assign them to a list in SendGrid (uses PUT /v3/marketing/contacts) #### Input [#input-9] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apiKey` | string | Yes | SendGrid API key | | `listId` | string | Yes | List ID to add contacts to | | `contacts` | json | Yes | JSON array of contact objects. Each contact must have at least: email (or phone\_number\_id/external\_id/anonymous\_id). Example: \[\{"email": "[user@example.com](mailto:user@example.com)", "first\_name": "John"}] | #### Output [#output-9] | Parameter | Type | Description | | --------- | ------ | --------------------------------------- | | `jobId` | string | Job ID for tracking the async operation | | `message` | string | Status message | ### SendGrid Remove Contacts from List [#sendgrid-remove-contacts-from-list] Remove contacts from a specific list in SendGrid #### Input [#input-10] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | --------------------------------------------------- | | `apiKey` | string | Yes | SendGrid API key | | `listId` | string | Yes | List ID | | `contactIds` | string | Yes | Comma-separated contact IDs to remove from the list | #### Output [#output-10] | Parameter | Type | Description | | --------- | ------ | ---------------------- | | `jobId` | string | Job ID for the request | ### SendGrid Create Template [#sendgrid-create-template] Create a new email template in SendGrid #### Input [#input-11] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | -------------------------------------------------------------- | | `apiKey` | string | Yes | SendGrid API key | | `name` | string | Yes | Template name | | `generation` | string | No | Template generation type (legacy or dynamic, default: dynamic) | #### Output [#output-11] | Parameter | Type | Description | | ------------ | ------ | -------------------------- | | `id` | string | Template ID | | `name` | string | Template name | | `generation` | string | Template generation | | `updatedAt` | string | Last update timestamp | | `versions` | json | Array of template versions | ### SendGrid Get Template [#sendgrid-get-template] Get a specific template by ID from SendGrid #### Input [#input-12] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ---------------- | | `apiKey` | string | Yes | SendGrid API key | | `templateId` | string | Yes | Template ID | #### Output [#output-12] | Parameter | Type | Description | | ------------ | ------ | -------------------------- | | `id` | string | Template ID | | `name` | string | Template name | | `generation` | string | Template generation | | `updatedAt` | string | Last update timestamp | | `versions` | json | Array of template versions | ### SendGrid List Templates [#sendgrid-list-templates] Get all email templates from SendGrid #### Input [#input-13] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `apiKey` | string | Yes | SendGrid API key | | `generations` | string | No | Filter by generation (legacy, dynamic, or both) | | `pageSize` | number | No | Number of templates to return per page (default: 20, max: 200). When paginating with pageToken, pass the same pageSize used on the first request to keep page boundaries consistent. | | `pageToken` | string | No | Page token from a previous response (nextPageToken) to fetch the next page | #### Output [#output-13] | Parameter | Type | Description | | --------------- | ------ | ------------------------------------------------------------------------ | | `templates` | json | Array of templates | | `nextPageToken` | string | Token to pass as pageToken to fetch the next page, if more results exist | ### SendGrid Delete Template [#sendgrid-delete-template] Delete an email template from SendGrid #### Input [#input-14] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | --------------------- | | `apiKey` | string | Yes | SendGrid API key | | `templateId` | string | Yes | Template ID to delete | #### Output [#output-14] | Parameter | Type | Description | | --------------- | ------- | ---------------------------------------------------------------------- | | `success` | boolean | Operation success status | | `message` | string | Status or success message | | `messageId` | string | Email message ID (send\_mail) | | `to` | string | Recipient email address (send\_mail) | | `subject` | string | Email subject (send\_mail, create\_template\_version) | | `id` | string | Resource ID | | `jobId` | string | Job ID for async operations | | `email` | string | Contact email address | | `firstName` | string | Contact first name | | `lastName` | string | Contact last name | | `createdAt` | string | Creation timestamp | | `updatedAt` | string | Last update timestamp | | `listIds` | json | Array of list IDs the contact belongs to | | `customFields` | json | Custom field values | | `contacts` | json | Array of contacts | | `contactCount` | number | Number of contacts | | `lists` | json | Array of lists | | `name` | string | Resource name | | `templates` | json | Array of templates | | `generation` | string | Template generation | | `versions` | json | Array of template versions | | `nextPageToken` | string | Token for the next page of results (list\_all\_lists, list\_templates) | | `templateId` | string | Template ID | | `active` | boolean | Whether template version is active | | `htmlContent` | string | HTML content | | `plainContent` | string | Plain text content | ### SendGrid Create Template Version [#sendgrid-create-template-version] Create a new version of an email template in SendGrid #### Input [#input-15] | Parameter | Type | Required | Description | | -------------- | ------- | -------- | ---------------------------------------------- | | `apiKey` | string | Yes | SendGrid API key | | `templateId` | string | Yes | Template ID | | `name` | string | Yes | Version name | | `subject` | string | Yes | Email subject line | | `htmlContent` | string | No | HTML content of the template | | `plainContent` | string | No | Plain text content of the template | | `active` | boolean | No | Whether this version is active (default: true) | #### Output [#output-15] | Parameter | Type | Description | | -------------- | ------- | ------------------------------ | | `id` | string | Version ID | | `templateId` | string | Template ID | | `name` | string | Version name | | `subject` | string | Email subject | | `active` | boolean | Whether this version is active | | `htmlContent` | string | HTML content | | `plainContent` | string | Plain text content | | `updatedAt` | string | Last update timestamp | --- # Buffer (/en/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 Studio, 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 Studio, 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 channels, 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 | #### Output [#output] | Parameter | Type | Description | | --------------------- | ------- | --------------------------------------------------------------------- | | `post` | object | The created post | | ↳ `id` | string | Post ID | | ↳ `text` | string | Post text content | | ↳ `status` | string | Post status (draft, needs\_approval, scheduled, sending, sent, error) | | ↳ `via` | string | How the post was created (buffer, network, api) | | ↳ `channelId` | string | Channel the post belongs to | | ↳ `channelService` | string | Social network of the channel | | ↳ `schedulingType` | string | How the post publishes (automatic or notification) | | ↳ `shareMode` | string | Share mode used for the post | | ↳ `isCustomScheduled` | boolean | Whether the post has a custom schedule | | ↳ `sharedNow` | boolean | Whether the post was shared immediately | | ↳ `createdAt` | string | Creation timestamp (ISO 8601) | | ↳ `updatedAt` | string | Last update timestamp (ISO 8601) | | ↳ `dueAt` | string | Scheduled publish time (ISO 8601) | | ↳ `sentAt` | string | Publish timestamp (ISO 8601) | | ↳ `externalLink` | string | Link to the published post on the social network | | ↳ `error` | object | Publishing error details when the post failed | | ↳ `message` | string | Error message | | ↳ `supportUrl` | string | Support article URL | | ↳ `rawError` | string | Raw error from the network | | ↳ `assets` | array | Media attached to the post | | ↳ `id` | string | Asset ID | | ↳ `type` | string | Asset type | | ↳ `mimeType` | string | MIME type of the asset | | ↳ `source` | string | Source URL of the asset | | ↳ `thumbnail` | string | Thumbnail URL of the asset | ### 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 | 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. 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 | #### Output [#output-1] | Parameter | Type | Description | | --------------------- | ------- | --------------------------------------------------------------------- | | `post` | object | The updated post | | ↳ `id` | string | Post ID | | ↳ `text` | string | Post text content | | ↳ `status` | string | Post status (draft, needs\_approval, scheduled, sending, sent, error) | | ↳ `via` | string | How the post was created (buffer, network, api) | | ↳ `channelId` | string | Channel the post belongs to | | ↳ `channelService` | string | Social network of the channel | | ↳ `schedulingType` | string | How the post publishes (automatic or notification) | | ↳ `shareMode` | string | Share mode used for the post | | ↳ `isCustomScheduled` | boolean | Whether the post has a custom schedule | | ↳ `sharedNow` | boolean | Whether the post was shared immediately | | ↳ `createdAt` | string | Creation timestamp (ISO 8601) | | ↳ `updatedAt` | string | Last update timestamp (ISO 8601) | | ↳ `dueAt` | string | Scheduled publish time (ISO 8601) | | ↳ `sentAt` | string | Publish timestamp (ISO 8601) | | ↳ `externalLink` | string | Link to the published post on the social network | | ↳ `error` | object | Publishing error details when the post failed | | ↳ `message` | string | Error message | | ↳ `supportUrl` | string | Support article URL | | ↳ `rawError` | string | Raw error from the network | | ↳ `assets` | array | Media attached to the post | | ↳ `id` | string | Asset ID | | ↳ `type` | string | Asset type | | ↳ `mimeType` | string | MIME type of the asset | | ↳ `source` | string | Source URL of the asset | | ↳ `thumbnail` | string | Thumbnail URL of the asset | ### 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) | #### Output [#output-2] | Parameter | Type | Description | | --------------------- | ------- | --------------------------------------------------------------------- | | `posts` | array | Posts matching the filters | | ↳ `id` | string | Post ID | | ↳ `text` | string | Post text content | | ↳ `status` | string | Post status (draft, needs\_approval, scheduled, sending, sent, error) | | ↳ `via` | string | How the post was created (buffer, network, api) | | ↳ `channelId` | string | Channel the post belongs to | | ↳ `channelService` | string | Social network of the channel | | ↳ `schedulingType` | string | How the post publishes (automatic or notification) | | ↳ `shareMode` | string | Share mode used for the post | | ↳ `isCustomScheduled` | boolean | Whether the post has a custom schedule | | ↳ `sharedNow` | boolean | Whether the post was shared immediately | | ↳ `createdAt` | string | Creation timestamp (ISO 8601) | | ↳ `updatedAt` | string | Last update timestamp (ISO 8601) | | ↳ `dueAt` | string | Scheduled publish time (ISO 8601) | | ↳ `sentAt` | string | Publish timestamp (ISO 8601) | | ↳ `externalLink` | string | Link to the published post on the social network | | ↳ `error` | object | Publishing error details when the post failed | | ↳ `message` | string | Error message | | ↳ `supportUrl` | string | Support article URL | | ↳ `rawError` | string | Raw error from the network | | ↳ `assets` | array | Media attached to the post | | ↳ `id` | string | Asset ID | | ↳ `type` | string | Asset type | | ↳ `mimeType` | string | MIME type of the asset | | ↳ `source` | string | Source URL of the asset | | ↳ `thumbnail` | string | Thumbnail URL of the asset | | `pageInfo` | object | Pagination info for fetching the next page | | ↳ `hasNextPage` | boolean | Whether more results are available | | ↳ `endCursor` | string | Cursor to pass as "after" for the next page | ### 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 | | ↳ `text` | string | Post text content | | ↳ `status` | string | Post status (draft, needs\_approval, scheduled, sending, sent, error) | | ↳ `via` | string | How the post was created (buffer, network, api) | | ↳ `channelId` | string | Channel the post belongs to | | ↳ `channelService` | string | Social network of the channel | | ↳ `schedulingType` | string | How the post publishes (automatic or notification) | | ↳ `shareMode` | string | Share mode used for the post | | ↳ `isCustomScheduled` | boolean | Whether the post has a custom schedule | | ↳ `sharedNow` | boolean | Whether the post was shared immediately | | ↳ `createdAt` | string | Creation timestamp (ISO 8601) | | ↳ `updatedAt` | string | Last update timestamp (ISO 8601) | | ↳ `dueAt` | string | Scheduled publish time (ISO 8601) | | ↳ `sentAt` | string | Publish timestamp (ISO 8601) | | ↳ `externalLink` | string | Link to the published post on the social network | | ↳ `error` | object | Publishing error details when the post failed | | ↳ `message` | string | Error message | | ↳ `supportUrl` | string | Support article URL | | ↳ `rawError` | string | Raw error from the network | | ↳ `assets` | array | Media attached to the post | | ↳ `id` | string | Asset ID | | ↳ `type` | string | Asset type | | ↳ `mimeType` | string | MIME type of the asset | | ↳ `source` | string | Source URL of the asset | | ↳ `thumbnail` | string | Thumbnail URL of the asset | ### 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) | #### Output [#output-5] | Parameter | Type | Description | | ------------------ | ------- | -------------------------------------------------- | | `channels` | array | Channels connected to the organization | | ↳ `id` | string | Channel ID | | ↳ `name` | string | Channel name | | ↳ `displayName` | string | Channel display name | | ↳ `service` | string | Social network (instagram, linkedin, twitter, ...) | | ↳ `serviceId` | string | ID of the account on the social network | | ↳ `avatar` | string | Channel avatar URL | | ↳ `timezone` | string | Channel timezone | | ↳ `type` | string | Channel type (page, profile, business, ...) | | ↳ `isQueuePaused` | boolean | Whether the posting queue is paused | | ↳ `isDisconnected` | boolean | Whether the channel needs reconnection | | ↳ `organizationId` | string | Organization the channel belongs to | ### Buffer Create Idea [#buffer-create-idea] Save a content idea to a Buffer organization for later drafting and scheduling #### Input [#input-6] | 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 | Yes | 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 | #### Output [#output-6] | Parameter | Type | Description | | ------------------ | ------ | -------------------------------- | | `idea` | object | The created idea | | ↳ `id` | string | Idea ID | | ↳ `organizationId` | string | Organization the idea belongs to | | ↳ `groupId` | string | Idea group ID | | ↳ `title` | string | Idea title | | ↳ `text` | string | Idea text content | ### Buffer Get Ideas [#buffer-get-ideas] List content ideas saved in a Buffer organization #### Input [#input-7] | 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) | #### Output [#output-7] | Parameter | Type | Description | | ------------------ | ------- | ------------------------------------------- | | `ideas` | array | Content ideas in the organization | | ↳ `id` | string | Idea ID | | ↳ `organizationId` | string | Organization the idea belongs to | | ↳ `groupId` | string | Idea group ID | | ↳ `title` | string | Idea title | | ↳ `text` | string | Idea text content | | `pageInfo` | object | Pagination info for fetching the next page | | ↳ `hasNextPage` | boolean | Whether more results are available | | ↳ `endCursor` | string | Cursor to pass as "after" for the next page | ### 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-8] | 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-8] | Parameter | Type | Description | | ------------ | ------- | ----------------------------------------------- | | `ideaGroups` | array | Idea groups (board columns) in the organization | | ↳ `id` | string | Idea group ID | | ↳ `name` | string | Idea group name | | ↳ `isLocked` | boolean | Whether the group is locked | ### 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-9] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------- | | `apiKey` | string | Yes | Buffer API key | #### Output [#output-9] | Parameter | Type | Description | | ----------------- | ------ | ------------------------------------ | | `account` | object | The authenticated Buffer account | | ↳ `id` | string | Account ID | | ↳ `email` | string | Account email | | ↳ `name` | string | Account holder name | | ↳ `timezone` | string | Account timezone | | ↳ `organizations` | array | Organizations the account belongs to | | ↳ `id` | string | Organization ID | | ↳ `name` | string | Organization name | | ↳ `channelCount` | number | Number of connected channels | | ↳ `ownerEmail` | string | Email of the organization owner | --- # Supabase (/en/integrations/supabase) {/* MANUAL-CONTENT-START:intro */} [Supabase](https://www.supabase.com/) provides Postgres databases and related project services. Use this integration to query, insert, update, and delete table rows, or select the storage, function, and other operations listed below. Configure your Project ID and Service Role Secret; table operations also require a table name. Use [PostgREST filter syntax](https://postgrest.org/en/stable/api.html#operators) when filtering, ordering, or limiting row queries. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate Supabase into the workflow. Supports database operations (query, insert, update, delete, upsert), full-text search, RPC functions, row counting, vector search, and complete storage management (upload, download, list, move, copy, delete files and buckets). ## Actions [#actions] ### Supabase Query [#supabase-query] Query data from a Supabase table #### Input [#input] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | -------------------------------------------------------------------------------------------- | | `projectId` | string | Yes | Your Supabase project ID (e.g., jdrkgepadsdopsntdlom) | | `table` | string | Yes | The name of the Supabase table to query | | `schema` | string | No | Database schema to query from (default: public). Use this to access tables in other schemas. | | `select` | string | No | Columns to return (comma-separated). Defaults to \* (all columns) | | `filter` | string | No | PostgREST filter (e.g., "id=eq.123") | | `orderBy` | string | No | Column to order by (add DESC for descending) | | `limit` | number | No | Maximum number of rows to return | | `offset` | number | No | Number of rows to skip (for pagination) | | `apiKey` | string | Yes | Your Supabase service role secret key | #### Output [#output] | Parameter | Type | Description | | --------- | ------ | ---------------------------------------- | | `message` | string | Operation status message | | `results` | array | Array of records returned from the query | ### Supabase Insert [#supabase-insert] Insert data into a Supabase table #### Input [#input-1] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | --------------------------------------------------------------------------------------------- | | `projectId` | string | Yes | Your Supabase project ID (e.g., jdrkgepadsdopsntdlom) | | `table` | string | Yes | The name of the Supabase table to insert data into | | `schema` | string | No | Database schema to insert into (default: public). Use this to access tables in other schemas. | | `data` | array | Yes | The data to insert (array of objects or a single object) | | `apiKey` | string | Yes | Your Supabase service role secret key | #### Output [#output-1] | Parameter | Type | Description | | --------- | ------ | ------------------------- | | `message` | string | Operation status message | | `results` | array | Array of inserted records | ### Supabase Get Row [#supabase-get-row] Get a single row from a Supabase table based on filter criteria #### Input [#input-2] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | -------------------------------------------------------------------------------------------- | | `projectId` | string | Yes | Your Supabase project ID (e.g., jdrkgepadsdopsntdlom) | | `table` | string | Yes | The name of the Supabase table to query | | `schema` | string | No | Database schema to query from (default: public). Use this to access tables in other schemas. | | `select` | string | No | Columns to return (comma-separated). Defaults to \* (all columns) | | `filter` | string | Yes | PostgREST filter to find the specific row (e.g., "id=eq.123") | | `apiKey` | string | Yes | Your Supabase service role secret key | #### Output [#output-2] | Parameter | Type | Description | | --------- | ------ | ---------------------------------------------------------------- | | `message` | string | Operation status message | | `results` | array | Array containing the row data if found, empty array if not found | ### Supabase Update Row [#supabase-update-row] Update rows in a Supabase table based on filter criteria #### Input [#input-3] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------------------------------------------------------------------------- | | `projectId` | string | Yes | Your Supabase project ID (e.g., jdrkgepadsdopsntdlom) | | `table` | string | Yes | The name of the Supabase table to update | | `schema` | string | No | Database schema to update in (default: public). Use this to access tables in other schemas. | | `filter` | string | Yes | PostgREST filter to identify rows to update (e.g., "id=eq.123") | | `data` | object | Yes | Data to update in the matching rows | | `apiKey` | string | Yes | Your Supabase service role secret key | #### Output [#output-3] | Parameter | Type | Description | | --------- | ------ | ------------------------ | | `message` | string | Operation status message | | `results` | array | Array of updated records | ### Supabase Delete Row [#supabase-delete-row] Delete rows from a Supabase table based on filter criteria #### Input [#input-4] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | --------------------------------------------------------------------------------------------- | | `projectId` | string | Yes | Your Supabase project ID (e.g., jdrkgepadsdopsntdlom) | | `table` | string | Yes | The name of the Supabase table to delete from | | `schema` | string | No | Database schema to delete from (default: public). Use this to access tables in other schemas. | | `filter` | string | Yes | PostgREST filter to identify rows to delete (e.g., "id=eq.123") | | `apiKey` | string | Yes | Your Supabase service role secret key | #### Output [#output-4] | Parameter | Type | Description | | --------- | ------ | ------------------------ | | `message` | string | Operation status message | | `results` | array | Array of deleted records | ### Supabase Upsert [#supabase-upsert] Insert or update data in a Supabase table (upsert operation) #### Input [#input-5] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------- | | `projectId` | string | Yes | Your Supabase project ID (e.g., jdrkgepadsdopsntdlom) | | `table` | string | Yes | The name of the Supabase table to upsert data into | | `schema` | string | No | Database schema to upsert into (default: public). Use this to access tables in other schemas. | | `data` | array | Yes | The data to upsert (insert or update) - array of objects or a single object | | `onConflict` | string | No | Comma-separated column(s) with a unique or primary key constraint to resolve conflicts on (e.g., "email"). Defaults to the primary key. | | `apiKey` | string | Yes | Your Supabase service role secret key | #### Output [#output-5] | Parameter | Type | Description | | --------- | ------ | ------------------------- | | `message` | string | Operation status message | | `results` | array | Array of upserted records | ### Supabase Count [#supabase-count] Count rows in a Supabase table #### Input [#input-6] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | -------------------------------------------------------------------------------------------- | | `projectId` | string | Yes | Your Supabase project ID (e.g., jdrkgepadsdopsntdlom) | | `table` | string | Yes | The name of the Supabase table to count rows from | | `schema` | string | No | Database schema to count from (default: public). Use this to access tables in other schemas. | | `filter` | string | No | PostgREST filter (e.g., "status=eq.active") | | `countType` | string | No | Count type: exact, planned, or estimated (default: exact) | | `apiKey` | string | Yes | Your Supabase service role secret key | #### Output [#output-6] | Parameter | Type | Description | | --------- | ------ | ---------------------------------- | | `message` | string | Operation status message | | `count` | number | Number of rows matching the filter | ### Supabase Text Search [#supabase-text-search] Perform full-text search on a Supabase table #### Input [#input-7] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------------------------------------------------------------------------------------- | | `projectId` | string | Yes | Your Supabase project ID (e.g., jdrkgepadsdopsntdlom) | | `table` | string | Yes | The name of the Supabase table to search | | `schema` | string | No | Database schema to search in (default: public). Use this to access tables in other schemas. | | `column` | string | Yes | The column to search in | | `query` | string | Yes | The search query | | `searchType` | string | No | Search type: plain, phrase, or websearch (default: websearch) | | `language` | string | No | Language for text search configuration (default: english) | | `limit` | number | No | Maximum number of rows to return | | `offset` | number | No | Number of rows to skip (for pagination) | | `apiKey` | string | Yes | Your Supabase service role secret key | #### Output [#output-7] | Parameter | Type | Description | | --------- | ------ | ------------------------------------------ | | `message` | string | Operation status message | | `results` | array | Array of records matching the search query | ### Supabase Vector Search [#supabase-vector-search] Perform similarity search using pgvector in a Supabase table #### Input [#input-8] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ---------------------------------------------------------------------------------------- | | `projectId` | string | Yes | Your Supabase project ID (e.g., jdrkgepadsdopsntdlom) | | `functionName` | string | Yes | The name of the PostgreSQL function that performs vector search (e.g., match\_documents) | | `queryEmbedding` | array | Yes | The query vector/embedding to search for similar items | | `matchThreshold` | number | No | Minimum similarity threshold (0-1), typically 0.7-0.9 | | `matchCount` | number | No | Maximum number of results to return (default: 10) | | `apiKey` | string | Yes | Your Supabase service role secret key | #### Output [#output-8] | Parameter | Type | Description | | --------- | ------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `message` | string | Operation status message | | `results` | array | Array of records with similarity scores from the vector search. Each record includes a similarity field (0-1) indicating how similar it is to the query vector. | ### Supabase RPC [#supabase-rpc] Call a PostgreSQL function in Supabase #### Input [#input-9] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ----------------------------------------------------- | | `projectId` | string | Yes | Your Supabase project ID (e.g., jdrkgepadsdopsntdlom) | | `functionName` | string | Yes | The name of the PostgreSQL function to call | | `params` | object | No | Parameters to pass to the function as a JSON object | | `apiKey` | string | Yes | Your Supabase service role secret key | #### Output [#output-9] | Parameter | Type | Description | | --------- | ------ | --------------------------------- | | `message` | string | Operation status message | | `results` | json | Result returned from the function | ### Supabase Invoke Edge Function [#supabase-invoke-edge-function] Invoke a Supabase Edge Function over HTTP #### Input [#input-10] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | -------------------------------------------------------------------------- | | `projectId` | string | Yes | Your Supabase project ID (e.g., jdrkgepadsdopsntdlom) | | `functionName` | string | Yes | The name of the Edge Function to invoke (e.g., "hello-world") | | `method` | string | No | HTTP method to use: GET, POST, PUT, PATCH, or DELETE (default: POST) | | `body` | json | No | Request payload to send to the function as a JSON object (ignored for GET) | | `headers` | json | No | Additional request headers as a JSON object of header name to value | | `apiKey` | string | Yes | Your Supabase service role secret key | #### Output [#output-10] | Parameter | Type | Description | | --------- | ------ | ------------------------------------------- | | `message` | string | Operation status message | | `results` | json | Response body returned by the Edge Function | ### Supabase Introspect [#supabase-introspect] Introspect Supabase database schema from its OpenAPI spec to get table and column structures (best-effort primary/foreign key detection) #### Input [#input-11] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------------------------------------------------------------- | | `projectId` | string | Yes | Your Supabase project ID (e.g., jdrkgepadsdopsntdlom) | | `schema` | string | No | Database schema to introspect (defaults to all user schemas, commonly "public") | | `apiKey` | string | Yes | Your Supabase service role secret key | #### Output [#output-11] | 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 | Database schema name | | ↳ `columns` | array | Array of column definitions | | ↳ `name` | string | Column name | | ↳ `type` | string | Column data type | | ↳ `nullable` | boolean | Whether the column allows null values — a NOT NULL column that has a default value is misreported as nullable, since the OpenAPI spec this is derived from omits it from the required list in that case | | ↳ `default` | string | Default value for the column | | ↳ `isPrimaryKey` | boolean | Best-effort guess based on the column being named "id" (not authoritative) | | ↳ `isForeignKey` | boolean | True only if the column has a "references table.column" SQL comment; most databases will show false even for real foreign keys | | ↳ `references` | object | Foreign key reference details, when detected via SQL comment | | ↳ `table` | string | Referenced table name | | ↳ `column` | string | Referenced column name | | ↳ `primaryKey` | array | Array of primary key column names | | ↳ `foreignKeys` | array | Array of foreign key relationships | | ↳ `column` | string | Local column name | | ↳ `referencesTable` | string | Referenced table name | | ↳ `referencesColumn` | string | Referenced column name | | ↳ `indexes` | array | Always empty — index definitions are not exposed by the OpenAPI spec this tool reads | | ↳ `name` | string | Index name | | ↳ `columns` | array | Columns included in the index | | ↳ `unique` | boolean | Whether the index enforces uniqueness | | `schemas` | array | List of schemas found in the database | ### Supabase Storage Upload [#supabase-storage-upload] Upload a file to a Supabase storage bucket #### Input [#input-12] | Parameter | Type | Required | Description | | -------------- | ------- | -------- | -------------------------------------------------------------------------------------------------------------------------- | | `projectId` | string | Yes | Your Supabase project ID (e.g., jdrkgepadsdopsntdlom) | | `bucket` | string | Yes | The name of the storage bucket | | `fileName` | string | Yes | The name of the file (e.g., "document.pdf", "image.jpg") | | `path` | string | No | Optional folder path (e.g., "folder/subfolder/") | | `fileData` | json | Yes | File to upload - UserFile object (basic mode) or string content (advanced mode: base64 or plain text). Supports data URLs. | | `contentType` | string | No | MIME type of the file (e.g., "image/jpeg", "text/plain") | | `cacheControl` | string | No | Cache-Control header value in seconds for the stored object (e.g., "3600"; default: "3600") | | `upsert` | boolean | No | If true, overwrites existing file (default: false) | | `apiKey` | string | Yes | Your Supabase service role secret key | #### Output [#output-12] | Parameter | Type | Description | | ------------- | ------ | --------------------------------------------------------- | | `message` | string | Operation status message | | `results` | object | Upload result including file path, bucket, and public URL | | ↳ `Id` | string | Unique identifier for the uploaded file | | ↳ `Key` | string | Full object key including bucket name | | ↳ `path` | string | Path to the uploaded file within the bucket | | ↳ `bucket` | string | Name of the bucket the file was uploaded to | | ↳ `publicUrl` | string | Public URL for the uploaded file | ### Supabase Storage Download [#supabase-storage-download] Download a file from a Supabase storage bucket #### Input [#input-13] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ---------------------------------------------------------- | | `projectId` | string | Yes | Your Supabase project ID (e.g., jdrkgepadsdopsntdlom) | | `bucket` | string | Yes | The name of the storage bucket | | `path` | string | Yes | The path to the file to download (e.g., "folder/file.jpg") | | `fileName` | string | No | Optional filename override | | `apiKey` | string | Yes | Your Supabase service role secret key | #### Output [#output-13] | Parameter | Type | Description | | --------- | ---- | ----------------------------------------- | | `file` | file | Downloaded file stored in execution files | ### Supabase Storage List [#supabase-storage-list] List files in a Supabase storage bucket #### Input [#input-14] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------------------------------------------------------------------- | | `projectId` | string | Yes | Your Supabase project ID (e.g., jdrkgepadsdopsntdlom) | | `bucket` | string | Yes | The name of the storage bucket | | `path` | string | No | The folder path to list files from (default: root) | | `limit` | number | No | Maximum number of files to return (default: 100) | | `offset` | number | No | Number of files to skip (for pagination) | | `sortBy` | string | No | Column to sort by: name, created\_at, updated\_at, last\_accessed\_at (default: name) | | `sortOrder` | string | No | Sort order: asc or desc (default: asc) | | `search` | string | No | Search term to filter files by name | | `apiKey` | string | Yes | Your Supabase service role secret key | #### Output [#output-14] | Parameter | Type | Description | | -------------------- | ------ | ------------------------------------------ | | `message` | string | Operation status message | | `results` | array | Array of file objects with metadata | | ↳ `id` | string | Unique file identifier | | ↳ `name` | string | File name | | ↳ `bucket_id` | string | Bucket identifier the file belongs to | | ↳ `owner` | string | Owner identifier | | ↳ `created_at` | string | File creation timestamp | | ↳ `updated_at` | string | Last update timestamp | | ↳ `last_accessed_at` | string | Last access timestamp | | ↳ `metadata` | object | File metadata including size and MIME type | | ↳ `size` | number | File size in bytes | | ↳ `mimetype` | string | MIME type of the file | | ↳ `cacheControl` | string | Cache control header value | | ↳ `lastModified` | string | Last modified timestamp | | ↳ `eTag` | string | Entity tag for caching | ### Supabase Storage Delete [#supabase-storage-delete] Delete files from a Supabase storage bucket #### Input [#input-15] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------------------------------------------------------------- | | `projectId` | string | Yes | Your Supabase project ID (e.g., jdrkgepadsdopsntdlom) | | `bucket` | string | Yes | The name of the storage bucket | | `paths` | array | Yes | Array of file paths to delete (e.g., \["folder/file1.jpg", "folder/file2.jpg"]) | | `apiKey` | string | Yes | Your Supabase service role secret key | #### Output [#output-15] | Parameter | Type | Description | | -------------------- | ------ | ----------------------------- | | `message` | string | Operation status message | | `results` | array | Array of deleted file objects | | ↳ `name` | string | Name of the deleted file | | ↳ `bucket_id` | string | Bucket identifier | | ↳ `owner` | string | Owner identifier | | ↳ `id` | string | Unique file identifier | | ↳ `updated_at` | string | Last update timestamp | | ↳ `created_at` | string | File creation timestamp | | ↳ `last_accessed_at` | string | Last access timestamp | ### Supabase Storage Move [#supabase-storage-move] Move a file within a Supabase storage bucket #### Input [#input-16] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------------------------------------ | | `projectId` | string | Yes | Your Supabase project ID (e.g., jdrkgepadsdopsntdlom) | | `bucket` | string | Yes | The name of the storage bucket | | `fromPath` | string | Yes | The current path of the file (e.g., "folder/old.jpg") | | `toPath` | string | Yes | The new path for the file (e.g., "newfolder/new\.jpg") | | `apiKey` | string | Yes | Your Supabase service role secret key | #### Output [#output-16] | Parameter | Type | Description | | ----------- | ------ | ------------------------------------ | | `message` | string | Operation status message | | `results` | object | Move operation result | | ↳ `message` | string | Operation status message | | ↳ `Id` | string | Identifier of the destination object | | ↳ `Key` | string | Full object key of the destination | ### Supabase Storage Copy [#supabase-storage-copy] Copy a file within a Supabase storage bucket #### Input [#input-17] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------------------------------------- | | `projectId` | string | Yes | Your Supabase project ID (e.g., jdrkgepadsdopsntdlom) | | `bucket` | string | Yes | The name of the storage bucket | | `fromPath` | string | Yes | The path of the source file (e.g., "folder/source.jpg") | | `toPath` | string | Yes | The path for the copied file (e.g., "folder/copy.jpg") | | `apiKey` | string | Yes | Your Supabase service role secret key | #### Output [#output-17] | Parameter | Type | Description | | --------- | ------ | ----------------------------------------------------- | | `message` | string | Operation status message | | `results` | object | Copy operation result with the destination object key | | ↳ `Key` | string | Full object key of the copied file | | ↳ `Id` | string | Identifier of the copied object | ### Supabase Storage Create Bucket [#supabase-storage-create-bucket] Create a new storage bucket in Supabase #### Input [#input-18] | Parameter | Type | Required | Description | | ------------------ | ------- | -------- | ----------------------------------------------------------------- | | `projectId` | string | Yes | Your Supabase project ID (e.g., jdrkgepadsdopsntdlom) | | `bucket` | string | Yes | The name of the bucket to create | | `isPublic` | boolean | No | Whether the bucket should be publicly accessible (default: false) | | `fileSizeLimit` | number | No | Maximum file size in bytes (optional) | | `allowedMimeTypes` | array | No | Array of allowed MIME types (e.g., \["image/png", "image/jpeg"]) | | `apiKey` | string | Yes | Your Supabase service role secret key | #### Output [#output-18] | Parameter | Type | Description | | --------- | ------ | ---------------------------- | | `message` | string | Operation status message | | `results` | object | Created bucket result (name) | | ↳ `name` | string | Created bucket name | ### Supabase Storage Update Bucket [#supabase-storage-update-bucket] Update the configuration of an existing Supabase storage bucket #### Input [#input-19] | Parameter | Type | Required | Description | | ------------------ | ------- | -------- | -------------------------------------------------------------------------------------------------------- | | `projectId` | string | Yes | Your Supabase project ID (e.g., jdrkgepadsdopsntdlom) | | `bucket` | string | Yes | The name of the bucket to update | | `isPublic` | boolean | No | Whether the bucket should be publicly accessible (leave unset to keep the current value) | | `fileSizeLimit` | number | No | Maximum file size in bytes (leave unset to keep the current value) | | `allowedMimeTypes` | array | No | Array of allowed MIME types (e.g., \["image/png", "image/jpeg"]) — leave unset to keep the current value | | `apiKey` | string | Yes | Your Supabase service role secret key | #### Output [#output-19] | Parameter | Type | Description | | ----------- | ------ | ------------------------ | | `message` | string | Operation status message | | `results` | object | Update operation result | | ↳ `message` | string | Operation status message | ### Supabase Storage Empty Bucket [#supabase-storage-empty-bucket] Delete all objects inside a Supabase storage bucket without deleting the bucket itself #### Input [#input-20] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ----------------------------------------------------- | | `projectId` | string | Yes | Your Supabase project ID (e.g., jdrkgepadsdopsntdlom) | | `bucket` | string | Yes | The name of the bucket to empty | | `apiKey` | string | Yes | Your Supabase service role secret key | #### Output [#output-20] | Parameter | Type | Description | | ----------- | ------ | ----------------------------- | | `message` | string | Operation status message | | `results` | object | Empty bucket operation result | | ↳ `message` | string | Operation status message | ### Supabase Storage List Buckets [#supabase-storage-list-buckets] List all storage buckets in Supabase #### Input [#input-21] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ----------------------------------------------------- | | `projectId` | string | Yes | Your Supabase project ID (e.g., jdrkgepadsdopsntdlom) | | `apiKey` | string | Yes | Your Supabase service role secret key | #### Output [#output-21] | Parameter | Type | Description | | ---------------------- | ------- | ----------------------------------------- | | `message` | string | Operation status message | | `results` | array | Array of bucket objects | | ↳ `id` | string | Unique bucket identifier | | ↳ `name` | string | Bucket name | | ↳ `owner` | string | Owner identifier | | ↳ `public` | boolean | Whether the bucket is publicly accessible | | ↳ `created_at` | string | Bucket creation timestamp | | ↳ `updated_at` | string | Last update timestamp | | ↳ `file_size_limit` | number | Maximum file size allowed in bytes | | ↳ `allowed_mime_types` | array | List of allowed MIME types for uploads | ### Supabase Storage Delete Bucket [#supabase-storage-delete-bucket] Delete a storage bucket in Supabase #### Input [#input-22] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ----------------------------------------------------- | | `projectId` | string | Yes | Your Supabase project ID (e.g., jdrkgepadsdopsntdlom) | | `bucket` | string | Yes | The name of the bucket to delete | | `apiKey` | string | Yes | Your Supabase service role secret key | #### Output [#output-22] | Parameter | Type | Description | | ----------- | ------ | ------------------------ | | `message` | string | Operation status message | | `results` | object | Delete operation result | | ↳ `message` | string | Operation status message | ### Supabase Storage Get Public URL [#supabase-storage-get-public-url] Get the public URL for a file in a Supabase storage bucket #### Input [#input-23] | Parameter | Type | Required | Description | | ----------- | ------- | -------- | ------------------------------------------------------------------- | | `projectId` | string | Yes | Your Supabase project ID (e.g., jdrkgepadsdopsntdlom) | | `bucket` | string | Yes | The name of the storage bucket | | `path` | string | Yes | The path to the file (e.g., "folder/file.jpg") | | `download` | boolean | No | If true, forces download instead of inline display (default: false) | #### Output [#output-23] | Parameter | Type | Description | | ----------- | ------ | --------------------------------- | | `message` | string | Operation status message | | `publicUrl` | string | The public URL to access the file | ### Supabase Storage Create Signed URL [#supabase-storage-create-signed-url] Create a temporary signed URL for a file in a Supabase storage bucket #### Input [#input-24] | Parameter | Type | Required | Description | | ----------- | ------- | -------- | ------------------------------------------------------------------- | | `projectId` | string | Yes | Your Supabase project ID (e.g., jdrkgepadsdopsntdlom) | | `bucket` | string | Yes | The name of the storage bucket | | `path` | string | Yes | The path to the file (e.g., "folder/file.jpg") | | `expiresIn` | number | Yes | Number of seconds until the URL expires (e.g., 3600 for 1 hour) | | `download` | boolean | No | If true, forces download instead of inline display (default: false) | | `apiKey` | string | Yes | Your Supabase service role secret key | #### Output [#output-24] | Parameter | Type | Description | | ----------- | ------ | ------------------------------------------- | | `message` | string | Operation status message | | `signedUrl` | string | The temporary signed URL to access the file | ### Supabase Storage Create Signed Upload URL [#supabase-storage-create-signed-upload-url] Create a temporary signed URL a client can use to upload directly to a Supabase storage bucket #### Input [#input-25] | Parameter | Type | Required | Description | | ----------- | ------- | -------- | -------------------------------------------------------------------------- | | `projectId` | string | Yes | Your Supabase project ID (e.g., jdrkgepadsdopsntdlom) | | `bucket` | string | Yes | The name of the storage bucket | | `path` | string | Yes | The destination path for the uploaded file (e.g., "folder/file.jpg") | | `upsert` | boolean | No | If true, allows overwriting an existing file at this path (default: false) | | `apiKey` | string | Yes | Your Supabase service role secret key | #### Output [#output-25] | Parameter | Type | Description | | ----------- | ------ | ----------------------------------------------------- | | `message` | string | Operation status message | | `signedUrl` | string | The temporary signed URL a client can PUT the file to | | `path` | string | The destination object path | | `token` | string | The upload token embedded in the signed URL | --- # Amazon RDS (/en/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 | --- # Cal.com API Keys (/en/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. `studio-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. `studio-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. Studio encrypts the key at rest. ## Adding the API Key to Studio [#adding-the-api-key-to-studio] Open **Integrations** from your workspace sidebar Search for "Cal.com" and open it, then click **Add to Studio** 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**. Studio 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. --- # Google AppSheet (/en/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 Studio 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 | --- # Knowledge (/en/integrations/knowledge) {/* MANUAL-CONTENT-START:intro */} Use the Knowledge block to search a Studio 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 apply Cohere reranking to vector search results | | `rerankerModel` | string | No | Cohere rerank model to use (one of: rerank-v4.0-pro, rerank-v4.0-fast, rerank-v3.5) | | `rerankerInputCount` | number | No | Number of vector results sent to the Cohere reranker (1–100). Defaults to topK × 4 capped at 100. | | `apiKey` | string | No | Cohere API key for reranker (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 | --- # Downdetector (/en/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 Studio, 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 | --- # Linkup (/en/integrations/linkup) {/* MANUAL-CONTENT-START:intro */} [Linkup](https://linkup.so) is a powerful web search tool that integrates seamlessly with Seeyu Agent Studio, 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 | --- # ZeroBounce (/en/integrations/zerobounce) {/* MANUAL-CONTENT-START:intro */} ZeroBounce is a real-time email validation and deliverability service. Use this integration to validate individual email addresses before outreach — it flags invalid, catch-all, spamtrap, abuse, and do-not-mail addresses so you can drop risky contacts and protect your sender reputation — and to check the validation credits remaining on your account. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate ZeroBounce to validate email deliverability in real time — detect invalid, catch-all, spamtrap, abuse, and do-not-mail addresses — and check your remaining validation credits. ## Actions [#actions] ### ZeroBounce Verify Email [#zerobounce-verify-email] Validate an email address deliverability in real time. Uses one validation credit. #### 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 | ZeroBounce API Key | #### Output [#output] | Parameter | Type | Description | | ------------- | ------- | --------------------------------------------------------------------------------------- | | `email` | string | The validated email address | | `status` | string | Validation status (valid, invalid, catch\_all, unknown, spamtrap, abuse, do\_not\_mail) | | `deliverable` | boolean | Whether the email is valid and safe to send | | `subStatus` | string | Detailed sub-status from ZeroBounce | | `freeEmail` | boolean | Whether the address is on a free email provider | | `didYouMean` | string | Suggested correction for a likely typo | ### ZeroBounce Get Credits [#zerobounce-get-credits] Retrieve the remaining validation credits for the authenticated account. #### Input [#input-1] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------ | | `apiKey` | string | Yes | ZeroBounce API Key | #### Output [#output-1] | Parameter | Type | Description | | --------- | ------ | ------------------------------------------------ | | `credits` | number | Remaining validation credits (-1 if unavailable) | --- # RevenueCat (/en/integrations/revenuecat) {/* MANUAL-CONTENT-START:intro */} Use [RevenueCat](https://www.revenuecat.com/) in Studio 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. Studio 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. Studio 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. Studio 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. Studio 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. Studio 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. Studio 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 | --- # Daytona (/en/integrations/daytona) {/* MANUAL-CONTENT-START:intro */} Use [Daytona](https://www.daytona.io/) in Studio 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 | --- # Jira (/en/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 Studio, 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 Studio, 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 | --- # SAP S4HANA (/en/integrations/sap_s4hana) {/* MANUAL-CONTENT-START:intro */} [SAP S4HANA](https://www.sap.com/products/erp/s4hana.html) exposes business records through OData services. Use this integration to work with master data, sales and purchasing documents, deliveries, invoices, and stock records. Select the deployment mode and authentication method that match your tenant; the setup details below cover Cloud Public Edition, Cloud Private Edition, and on-premise deployments. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] {/* MANUAL-CONTENT-START:usage */} Connect any SAP S4HANA tenant — **Cloud Public Edition**, **Cloud Private Edition (RISE)**, or **on-premise** — and read or write business data through the official OData v2 services. ## Deployment modes [#deployment-modes] Pick the deployment that matches your tenant in the **Deployment** dropdown: * **S4HANA Cloud Public Edition** — provide your **BTP subaccount subdomain** and **region** (e.g., `eu10`, `us10`). The host is derived automatically as `{subdomain}-api.s4hana.ondemand.com`, and OAuth tokens are fetched from the matching BTP UAA endpoint. Authentication is OAuth 2.0 client credentials configured in a Communication Arrangement. * **S4HANA Cloud Private Edition (RISE)** — provide your **OData Base URL** (e.g., `https://my-tenant.s4hana.cloud.sap`). Authenticate with **OAuth 2.0 client credentials** (provide the tenant's UAA `tokenUrl`, `clientId`, `clientSecret`) or **HTTP Basic** with a Communication User (`username`, `password`). * **On-premise S4HANA** — provide your **OData Base URL** (e.g., `https://sap.internal.company.com:44300`). Authenticate with **OAuth 2.0 client credentials** issued by your on-prem identity provider, or **HTTP Basic** with a service user. ## What you can do [#what-you-can-do] Read and create business partners, customers, suppliers, sales orders, deliveries (inbound/outbound), billing documents, products, stock and material documents, purchase requisitions, purchase orders, and supplier invoices. Update business partners, customers, suppliers, products, sales orders, purchase orders, and purchase requisitions with PATCH. Run arbitrary OData v2 queries against any whitelisted Communication Scenario or registered service. ## Optimistic concurrency [#optimistic-concurrency] All update tools accept an optional `ifMatch` ETag. When omitted, `If-Match` defaults to a wildcard (unconditional). For safe concurrent updates, fetch the entity first, capture its ETag from the response, and pass it as `ifMatch` to detect lost updates. {/* MANUAL-CONTENT-END */} Connect SAP S4HANA Cloud Public Edition, Cloud Private Edition, or an on-premise tenant using the deployment and authentication settings for that tenant. Read and manage business records through the listed OData operations. ## Actions [#actions] ### SAP S/4HANA List Business Partners [#sap-s4hana-list-business-partners] List business partners from SAP S/4HANA Cloud (API\_BUSINESS\_PARTNER, A\_BusinessPartner) with optional OData $filter, $top, $skip, $orderby, $select, $expand. #### Input [#input] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | -------------------------------------------------------------------------------------- | | `subdomain` | string | No | SAP BTP subaccount subdomain (technical name of your subaccount, not the S/4HANA host) | | `region` | string | No | BTP region (e.g. eu10, us10) | | `clientId` | string | No | OAuth client ID from the S/4HANA Communication Arrangement | | `clientSecret` | string | No | OAuth client secret from the S/4HANA Communication Arrangement | | `deploymentType` | string | No | Deployment type: cloud\_public (default), cloud\_private, or on\_premise | | `authType` | string | No | Authentication type: oauth\_client\_credentials (default) or basic | | `baseUrl` | string | No | Base URL of the S/4HANA host (Cloud Private / On-Premise) | | `tokenUrl` | string | No | OAuth token URL (Cloud Private / On-Premise + OAuth) | | `username` | string | No | Username for HTTP Basic auth | | `password` | string | No | Password for HTTP Basic auth | | `filter` | string | No | OData $filter expression (e.g., "BusinessPartnerCategory eq '1'") | | `top` | number | No | Maximum results to return ($top) | | `skip` | number | No | Number of results to skip ($skip) | | `orderBy` | string | No | OData $orderby expression | | `select` | string | No | Comma-separated fields to return ($select) | | `expand` | string | No | Comma-separated navigation properties to expand ($expand) | #### Output [#output] | Parameter | Type | Description | | ---------------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------ | | `status` | number | HTTP status code returned by SAP | | `data` | json | OData v2 envelope `\{ d: \{ results: \[...\], __count?, __next? \} \}`. Properties listed below describe each element of `data.d.results`. | | ↳ `BusinessPartner` | string | Business partner key (up to 10 chars) | | ↳ `BusinessPartnerFullName` | string | Full name (concatenated first/last or organization name) | | ↳ `BusinessPartnerCategory` | string | "1" Person, "2" Organization, "3" Group | | ↳ `BusinessPartnerGrouping` | string | Grouping / number range (tenant-configured) | | ↳ `BusinessPartnerType` | string | Business partner type (tenant-configured) | | ↳ `BusinessPartnerUUID` | string | GUID identifier for the business partner | | ↳ `BusinessPartnerIsBlocked` | boolean | Whether the business partner is centrally blocked | | ↳ `FirstName` | string | First name (Person) | | ↳ `LastName` | string | Last name (Person) | | ↳ `OrganizationBPName1` | string | Organization name line 1 | | ↳ `SearchTerm1` | string | Search term 1 | | ↳ `CreationDate` | string | Date the partner was created (OData /Date(...)/ literal) | | ↳ `CreatedByUser` | string | User who created the business partner | | ↳ `LastChangeDate` | string | Date of last change (OData /Date(...)/ literal) | | ↳ `LastChangedByUser` | string | User who last changed the business partner | ### SAP S/4HANA Get Business Partner [#sap-s4hana-get-business-partner] Retrieve a single business partner by BusinessPartner key from SAP S/4HANA Cloud (API\_BUSINESS\_PARTNER, A\_BusinessPartner). #### Input [#input-1] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | -------------------------------------------------------------------------------------- | | `subdomain` | string | No | SAP BTP subaccount subdomain (technical name of your subaccount, not the S/4HANA host) | | `region` | string | No | BTP region (e.g. eu10, us10) | | `clientId` | string | No | OAuth client ID from the S/4HANA Communication Arrangement | | `clientSecret` | string | No | OAuth client secret from the S/4HANA Communication Arrangement | | `deploymentType` | string | No | Deployment type: cloud\_public (default), cloud\_private, or on\_premise | | `authType` | string | No | Authentication type: oauth\_client\_credentials (default) or basic | | `baseUrl` | string | No | Base URL of the S/4HANA host (Cloud Private / On-Premise) | | `tokenUrl` | string | No | OAuth token URL (Cloud Private / On-Premise + OAuth) | | `username` | string | No | Username for HTTP Basic auth | | `password` | string | No | Password for HTTP Basic auth | | `businessPartner` | string | Yes | BusinessPartner key (string, up to 10 characters) | | `select` | string | No | Comma-separated fields to return ($select) | | `expand` | string | No | Comma-separated navigation properties to expand ($expand) | #### Output [#output-1] | Parameter | Type | Description | | ---------------------------- | ------- | -------------------------------------------------------- | | `status` | number | HTTP status code returned by SAP | | `data` | json | A\_BusinessPartner entity (under d in OData v2) | | ↳ `BusinessPartner` | string | Business partner key (up to 10 chars) | | ↳ `BusinessPartnerFullName` | string | Full name (concatenated first/last or organization name) | | ↳ `BusinessPartnerCategory` | string | "1" Person, "2" Organization, "3" Group | | ↳ `BusinessPartnerGrouping` | string | Grouping / number range (tenant-configured) | | ↳ `BusinessPartnerType` | string | Business partner type (tenant-configured) | | ↳ `BusinessPartnerUUID` | string | GUID identifier for the business partner | | ↳ `BusinessPartnerIsBlocked` | boolean | Whether the business partner is centrally blocked | | ↳ `FirstName` | string | First name (Person) | | ↳ `LastName` | string | Last name (Person) | | ↳ `OrganizationBPName1` | string | Organization name line 1 | | ↳ `CorrespondenceLanguage` | string | Correspondence language (2-char code, e.g. "EN") | | ↳ `SearchTerm1` | string | Search term 1 | | ↳ `SearchTerm2` | string | Search term 2 | | ↳ `CreationDate` | string | Date the partner was created (OData /Date(...)/ literal) | | ↳ `CreatedByUser` | string | User who created the business partner | | ↳ `LastChangeDate` | string | Date of last change (OData /Date(...)/ literal) | | ↳ `LastChangedByUser` | string | User who last changed the business partner | ### SAP S/4HANA Create Business Partner [#sap-s4hana-create-business-partner] Create a business partner in SAP S/4HANA Cloud (API\_BUSINESS\_PARTNER, A\_BusinessPartner). For Person category 1 provide FirstName and LastName. For Organization category 2 provide OrganizationBPName1. #### Input [#input-2] | Parameter | Type | Required | Description | | ------------------------- | ------ | -------- | ----------------------------------------------------------------------------------------- | | `subdomain` | string | No | SAP BTP subaccount subdomain (technical name of your subaccount, not the S/4HANA host) | | `region` | string | No | BTP region (e.g. eu10, us10) | | `clientId` | string | No | OAuth client ID from the S/4HANA Communication Arrangement | | `clientSecret` | string | No | OAuth client secret from the S/4HANA Communication Arrangement | | `deploymentType` | string | No | Deployment type: cloud\_public (default), cloud\_private, or on\_premise | | `authType` | string | No | Authentication type: oauth\_client\_credentials (default) or basic | | `baseUrl` | string | No | Base URL of the S/4HANA host (Cloud Private / On-Premise) | | `tokenUrl` | string | No | OAuth token URL (Cloud Private / On-Premise + OAuth) | | `username` | string | No | Username for HTTP Basic auth | | `password` | string | No | Password for HTTP Basic auth | | `businessPartnerCategory` | string | Yes | BusinessPartnerCategory: "1" Person, "2" Organization, "3" Group | | `businessPartnerGrouping` | string | Yes | BusinessPartnerGrouping (number range / role grouping configured in S/4HANA, e.g. "0001") | | `firstName` | string | No | FirstName (required for Person) | | `lastName` | string | No | LastName (required for Person) | | `organizationBPName1` | string | No | OrganizationBPName1 (required for Organization) | | `body` | json | No | Optional additional A\_BusinessPartner fields merged into the create payload | #### Output [#output-2] | Parameter | Type | Description | | --------------------------- | ------ | -------------------------------------------------------- | | `status` | number | HTTP status code returned by SAP (201 on success) | | `data` | json | Created A\_BusinessPartner entity (under d in OData v2) | | ↳ `BusinessPartner` | string | Generated business partner key (up to 10 chars) | | ↳ `BusinessPartnerFullName` | string | Full name (concatenated first/last or organization name) | | ↳ `BusinessPartnerCategory` | string | "1" Person, "2" Organization, "3" Group | | ↳ `BusinessPartnerGrouping` | string | Grouping / number range used to assign the key | | ↳ `BusinessPartnerType` | string | Business partner type (tenant-configured) | | ↳ `BusinessPartnerUUID` | string | GUID identifier for the business partner | | ↳ `FirstName` | string | First name (Person) | | ↳ `LastName` | string | Last name (Person) | | ↳ `OrganizationBPName1` | string | Organization name line 1 | | ↳ `CreationDate` | string | Date the partner was created (OData /Date(...)/ literal) | | ↳ `CreatedByUser` | string | User who created the business partner | | ↳ `LastChangeDate` | string | Date of last change (OData /Date(...)/ literal) | ### SAP S/4HANA Update Business Partner [#sap-s4hana-update-business-partner] Update fields on an A\_BusinessPartner entity in SAP S/4HANA Cloud (API\_BUSINESS\_PARTNER). Uses HTTP MERGE (OData v2 partial update) — only the fields you provide are written; existing values are preserved. If-Match defaults to a wildcard (unconditional) — for safe concurrent updates pass the ETag from a prior GET to avoid lost updates. Deep updates on nested associations (e.g. to\_BusinessPartnerAddress) are not supported by SAP (KBA 2833338) — use the dedicated child endpoints. #### Input [#input-3] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------ | | `subdomain` | string | No | SAP BTP subaccount subdomain (technical name of your subaccount, not the S/4HANA host) | | `region` | string | No | BTP region (e.g. eu10, us10) | | `clientId` | string | No | OAuth client ID from the S/4HANA Communication Arrangement | | `clientSecret` | string | No | OAuth client secret from the S/4HANA Communication Arrangement | | `deploymentType` | string | No | Deployment type: cloud\_public (default), cloud\_private, or on\_premise | | `authType` | string | No | Authentication type: oauth\_client\_credentials (default) or basic | | `baseUrl` | string | No | Base URL of the S/4HANA host (Cloud Private / On-Premise) | | `tokenUrl` | string | No | OAuth token URL (Cloud Private / On-Premise + OAuth) | | `username` | string | No | Username for HTTP Basic auth | | `password` | string | No | Password for HTTP Basic auth | | `businessPartner` | string | Yes | BusinessPartner key to update (string, up to 10 characters) | | `body` | json | Yes | JSON object with A\_BusinessPartner fields to update (e.g., \{"FirstName":"Jane","SearchTerm1":"VIP"}) | | `ifMatch` | string | No | If-Match ETag for optimistic concurrency. Defaults to "\*" (unconditional). | #### Output [#output-3] | Parameter | Type | Description | | --------------------------- | ------ | ---------------------------------------------------------------------------- | | `status` | number | HTTP status code returned by SAP (204 on success) | | `data` | json | Null on 204 success, or updated A\_BusinessPartner entity if SAP returns one | | ↳ `BusinessPartner` | string | Business partner key | | ↳ `BusinessPartnerFullName` | string | Full name (concatenated first/last or organization name) | | ↳ `BusinessPartnerCategory` | string | "1" Person, "2" Organization, "3" Group | | ↳ `BusinessPartnerGrouping` | string | Grouping / number range | | ↳ `FirstName` | string | First name (Person) | | ↳ `LastName` | string | Last name (Person) | | ↳ `OrganizationBPName1` | string | Organization name line 1 | | ↳ `LastChangeDate` | string | Date of last change (OData /Date(...)/ literal) | | ↳ `LastChangedByUser` | string | User who last changed the business partner | ### SAP S/4HANA List Customers [#sap-s4hana-list-customers] List customers from SAP S/4HANA Cloud (API\_BUSINESS\_PARTNER, A\_Customer) with optional OData $filter, $top, $skip, $orderby, $select, $expand. #### Input [#input-4] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | --------------------------------------------------------------------------------------------------- | | `subdomain` | string | No | SAP BTP subaccount subdomain (technical name of your subaccount, not the S/4HANA host) | | `region` | string | No | BTP region (e.g. eu10, us10) | | `clientId` | string | No | OAuth client ID from the S/4HANA Communication Arrangement | | `clientSecret` | string | No | OAuth client secret from the S/4HANA Communication Arrangement | | `deploymentType` | string | No | Deployment type: cloud\_public (default), cloud\_private, or on\_premise | | `authType` | string | No | Authentication type: oauth\_client\_credentials (default) or basic | | `baseUrl` | string | No | Base URL of the S/4HANA host (Cloud Private / On-Premise) | | `tokenUrl` | string | No | OAuth token URL (Cloud Private / On-Premise + OAuth) | | `username` | string | No | Username for HTTP Basic auth | | `password` | string | No | Password for HTTP Basic auth | | `filter` | string | No | OData $filter expression (e.g., "CustomerAccountGroup eq 'Z001'") | | `top` | number | No | Maximum results to return ($top) | | `skip` | number | No | Number of results to skip ($skip) | | `orderBy` | string | No | OData $orderby expression | | `select` | string | No | Comma-separated fields to return ($select) | | `expand` | string | No | Comma-separated navigation properties to expand (e.g., "to\_CustomerCompany,to\_CustomerSalesArea") | #### Output [#output-4] | Parameter | Type | Description | | -------------------------------- | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `status` | number | HTTP status code returned by SAP | | `data` | json | Array of A\_Customer entities, or `\{ results, __count?, __next? \}` when pagination metadata is present (the integration unwraps the OData v2 `d` envelope). Properties below describe each customer item. | | ↳ `Customer` | string | Customer key (up to 10 characters) | | ↳ `CustomerName` | string | Name of customer | | ↳ `CustomerFullName` | string | Full name of the customer | | ↳ `CustomerAccountGroup` | string | Customer account group | | ↳ `CustomerClassification` | string | Customer classification code | | ↳ `CustomerCorporateGroup` | string | Corporate group code | | ↳ `AuthorizationGroup` | string | Authorization group | | ↳ `Supplier` | string | Linked supplier account number | | ↳ `FiscalAddress` | string | Fiscal address ID | | ↳ `Industry` | string | Industry key | | ↳ `NielsenRegion` | string | Nielsen ID | | ↳ `ResponsibleType` | string | Responsible type | | ↳ `NFPartnerIsNaturalPerson` | string | Natural person indicator | | ↳ `InternationalLocationNumber1` | string | International location number 1 | | ↳ `TaxNumberType` | string | Tax number type | | ↳ `VATRegistration` | string | VAT registration number | | ↳ `DeletionIndicator` | boolean | Central deletion flag | | ↳ `OrderIsBlockedForCustomer` | string | Central order block reason code | | ↳ `PostingIsBlocked` | boolean | Central posting block flag | | ↳ `DeliveryIsBlocked` | string | Central delivery block reason code | | ↳ `BillingIsBlockedForCustomer` | string | Central billing block reason code | | ↳ `CreationDate` | string | Creation date (OData v2 epoch) | | ↳ `CreatedByUser` | string | User who created the customer | ### SAP S/4HANA Get Customer [#sap-s4hana-get-customer] Retrieve a single customer by Customer key from SAP S/4HANA Cloud (API\_BUSINESS\_PARTNER, A\_Customer). #### Input [#input-5] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | --------------------------------------------------------------------------------------------------- | | `subdomain` | string | No | SAP BTP subaccount subdomain (technical name of your subaccount, not the S/4HANA host) | | `region` | string | No | BTP region (e.g. eu10, us10) | | `clientId` | string | No | OAuth client ID from the S/4HANA Communication Arrangement | | `clientSecret` | string | No | OAuth client secret from the S/4HANA Communication Arrangement | | `deploymentType` | string | No | Deployment type: cloud\_public (default), cloud\_private, or on\_premise | | `authType` | string | No | Authentication type: oauth\_client\_credentials (default) or basic | | `baseUrl` | string | No | Base URL of the S/4HANA host (Cloud Private / On-Premise) | | `tokenUrl` | string | No | OAuth token URL (Cloud Private / On-Premise + OAuth) | | `username` | string | No | Username for HTTP Basic auth | | `password` | string | No | Password for HTTP Basic auth | | `customer` | string | Yes | Customer key (string, up to 10 characters) | | `select` | string | No | Comma-separated fields to return ($select) | | `expand` | string | No | Comma-separated navigation properties to expand (e.g., "to\_CustomerCompany,to\_CustomerSalesArea") | #### Output [#output-5] | Parameter | Type | Description | | -------------------------------- | ------- | ---------------------------------- | | `status` | number | HTTP status code returned by SAP | | `data` | object | A\_Customer entity | | ↳ `Customer` | string | Customer key (up to 10 characters) | | ↳ `CustomerName` | string | Name of customer | | ↳ `CustomerFullName` | string | Full name of the customer | | ↳ `CustomerAccountGroup` | string | Customer account group | | ↳ `CustomerClassification` | string | Customer classification code | | ↳ `CustomerCorporateGroup` | string | Corporate group code | | ↳ `AuthorizationGroup` | string | Authorization group | | ↳ `Supplier` | string | Linked supplier account number | | ↳ `FiscalAddress` | string | Fiscal address ID | | ↳ `Industry` | string | Industry key | | ↳ `NielsenRegion` | string | Nielsen ID | | ↳ `ResponsibleType` | string | Responsible type | | ↳ `NFPartnerIsNaturalPerson` | string | Natural person indicator | | ↳ `InternationalLocationNumber1` | string | International location number 1 | | ↳ `TaxNumberType` | string | Tax number type | | ↳ `VATRegistration` | string | VAT registration number | | ↳ `DeletionIndicator` | boolean | Central deletion flag | | ↳ `OrderIsBlockedForCustomer` | string | Central order block reason code | | ↳ `PostingIsBlocked` | boolean | Central posting block flag | | ↳ `DeliveryIsBlocked` | string | Central delivery block reason code | | ↳ `BillingIsBlockedForCustomer` | string | Central billing block reason code | | ↳ `CreationDate` | string | Creation date (OData v2 epoch) | | ↳ `CreatedByUser` | string | User who created the customer | ### SAP S/4HANA Update Customer [#sap-s4hana-update-customer] Update fields on an A\_Customer entity in SAP S/4HANA Cloud (API\_BUSINESS\_PARTNER). Uses HTTP MERGE (OData v2 partial update) — only the fields you provide are written; existing values are preserved. A\_Customer is limited to modifiable fields such as OrderIsBlockedForCustomer, DeliveryIsBlocked, BillingIsBlockedForCustomer (Edm.String reason codes like "01"), PostingIsBlocked, and DeletionIndicator (Edm.Boolean). If-Match defaults to a wildcard - for safe concurrent updates pass the ETag from a prior GET to avoid lost updates. #### Input [#input-6] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `subdomain` | string | No | SAP BTP subaccount subdomain (technical name of your subaccount, not the S/4HANA host) | | `region` | string | No | BTP region (e.g. eu10, us10) | | `clientId` | string | No | OAuth client ID from the S/4HANA Communication Arrangement | | `clientSecret` | string | No | OAuth client secret from the S/4HANA Communication Arrangement | | `deploymentType` | string | No | Deployment type: cloud\_public (default), cloud\_private, or on\_premise | | `authType` | string | No | Authentication type: oauth\_client\_credentials (default) or basic | | `baseUrl` | string | No | Base URL of the S/4HANA host (Cloud Private / On-Premise) | | `tokenUrl` | string | No | OAuth token URL (Cloud Private / On-Premise + OAuth) | | `username` | string | No | Username for HTTP Basic auth | | `password` | string | No | Password for HTTP Basic auth | | `customer` | string | Yes | Customer key to update (string, up to 10 characters) | | `body` | json | Yes | JSON object with A\_Customer fields to update (e.g., \{"OrderIsBlockedForCustomer":"01","DeletionIndicator":false}). Block-reason fields are Edm.String codes, not booleans. | | `ifMatch` | string | No | If-Match ETag for optimistic concurrency. Defaults to "\*" (unconditional). | #### Output [#output-6] | Parameter | Type | Description | | ------------------------------- | ------- | --------------------------------------------------------------------- | | `status` | number | HTTP status code returned by SAP (204 on success) | | `data` | object | Null on 204 success, or updated A\_Customer entity if SAP returns one | | ↳ `Customer` | string | Customer key (up to 10 characters) | | ↳ `CustomerName` | string | Name of customer | | ↳ `CustomerAccountGroup` | string | Customer account group | | ↳ `DeletionIndicator` | boolean | Central deletion flag | | ↳ `OrderIsBlockedForCustomer` | string | Central order block reason code | | ↳ `PostingIsBlocked` | boolean | Central posting block flag | | ↳ `DeliveryIsBlocked` | string | Central delivery block reason code | | ↳ `BillingIsBlockedForCustomer` | string | Central billing block reason code | ### SAP S/4HANA List Suppliers [#sap-s4hana-list-suppliers] List suppliers from SAP S/4HANA Cloud (API\_BUSINESS\_PARTNER, A\_Supplier) with optional OData $filter, $top, $skip, $orderby, $select, $expand. #### Input [#input-7] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------- | | `subdomain` | string | No | SAP BTP subaccount subdomain (technical name of your subaccount, not the S/4HANA host) | | `region` | string | No | BTP region (e.g. eu10, us10) | | `clientId` | string | No | OAuth client ID from the S/4HANA Communication Arrangement | | `clientSecret` | string | No | OAuth client secret from the S/4HANA Communication Arrangement | | `deploymentType` | string | No | Deployment type: cloud\_public (default), cloud\_private, or on\_premise | | `authType` | string | No | Authentication type: oauth\_client\_credentials (default) or basic | | `baseUrl` | string | No | Base URL of the S/4HANA host (Cloud Private / On-Premise) | | `tokenUrl` | string | No | OAuth token URL (Cloud Private / On-Premise + OAuth) | | `username` | string | No | Username for HTTP Basic auth | | `password` | string | No | Password for HTTP Basic auth | | `filter` | string | No | OData $filter expression (e.g., "SupplierAccountGroup eq 'BP02'") | | `top` | number | No | Maximum results to return ($top) | | `skip` | number | No | Number of results to skip ($skip) | | `orderBy` | string | No | OData $orderby expression | | `select` | string | No | Comma-separated fields to return ($select) | | `expand` | string | No | Comma-separated navigation properties to expand (e.g., "to\_SupplierCompany,to\_SupplierPurchasingOrg") | #### Output [#output-7] | Parameter | Type | Description | | ---------------------------------- | ------- | --------------------------------------------------------------- | | `status` | number | HTTP status code returned by SAP | | `data` | json | OData v2 response envelope; collection at output.data.d.results | | ↳ `d` | json | OData v2 envelope | | ↳ `results` | array | A\_Supplier entities | | ↳ `Supplier` | string | Supplier key (up to 10 characters) | | ↳ `AlternativePayeeAccountNumber` | string | Account number of the alternative payee | | ↳ `AuthorizationGroup` | string | Authorization group | | ↳ `BusinessPartner` | string | Linked BusinessPartner key | | ↳ `BR_TaxIsSplit` | boolean | Brazil-specific tax split flag | | ↳ `CreatedByUser` | string | User who created the supplier | | ↳ `CreationDate` | string | Creation date (OData v2 epoch) | | ↳ `Customer` | string | Linked customer key (if any) | | ↳ `DeletionIndicator` | boolean | Central deletion flag | | ↳ `BirthDate` | string | Date of birth (OData v2 epoch) | | ↳ `ConcatenatedInternationalLocNo` | string | Concatenated international location number | | ↳ `FiscalAddress` | string | Fiscal address number | | ↳ `Industry` | string | Industry key | | ↳ `InternationalLocationNumber1` | string | International location number, part 1 | | ↳ `InternationalLocationNumber2` | string | International location number, part 2 | | ↳ `InternationalLocationNumber3` | string | International location number, part 3 | | ↳ `IsNaturalPerson` | boolean | Indicates whether the supplier is a natural person | | ↳ `PaymentIsBlockedForSupplier` | boolean | Payment block flag | | ↳ `PostingIsBlocked` | boolean | Posting block flag | | ↳ `PurchasingIsBlocked` | boolean | Purchasing block flag | | ↳ `ResponsibleType` | string | Type of business (Brazil) | | ↳ `SupplierAccountGroup` | string | Supplier account group | | ↳ `SupplierCorporateGroup` | string | Corporate group identifier | | ↳ `SupplierFullName` | string | Full name of the supplier | | ↳ `SupplierName` | string | Supplier name | | ↳ `SupplierProcurementBlock` | string | Procurement block at supplier level | | ↳ `SuplrProofOfDelivRlvtCode` | string | Proof of delivery relevance code | | ↳ `SuplrQltyInProcmtCertfnValidTo` | string | Quality certification validity end date (OData v2 epoch) | | ↳ `SuplrQualityManagementSystem` | string | Quality management system of the supplier | | ↳ `TaxNumber1` | string | Tax number 1 | | ↳ `TaxNumber2` | string | Tax number 2 | | ↳ `TaxNumber3` | string | Tax number 3 | | ↳ `TaxNumber4` | string | Tax number 4 | | ↳ `TaxNumber5` | string | Tax number 5 | | ↳ `TaxNumberResponsible` | string | Tax number of responsible party | | ↳ `TaxNumberType` | string | Tax number type | | ↳ `VATRegistration` | string | VAT registration number | | ↳ `__next` | string | OData skiptoken URL for next page | ### SAP S/4HANA Get Supplier [#sap-s4hana-get-supplier] Retrieve a single supplier by Supplier key from SAP S/4HANA Cloud (API\_BUSINESS\_PARTNER, A\_Supplier). #### Input [#input-8] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------- | | `subdomain` | string | No | SAP BTP subaccount subdomain (technical name of your subaccount, not the S/4HANA host) | | `region` | string | No | BTP region (e.g. eu10, us10) | | `clientId` | string | No | OAuth client ID from the S/4HANA Communication Arrangement | | `clientSecret` | string | No | OAuth client secret from the S/4HANA Communication Arrangement | | `deploymentType` | string | No | Deployment type: cloud\_public (default), cloud\_private, or on\_premise | | `authType` | string | No | Authentication type: oauth\_client\_credentials (default) or basic | | `baseUrl` | string | No | Base URL of the S/4HANA host (Cloud Private / On-Premise) | | `tokenUrl` | string | No | OAuth token URL (Cloud Private / On-Premise + OAuth) | | `username` | string | No | Username for HTTP Basic auth | | `password` | string | No | Password for HTTP Basic auth | | `supplier` | string | Yes | Supplier key (string, up to 10 characters) | | `select` | string | No | Comma-separated fields to return ($select) | | `expand` | string | No | Comma-separated navigation properties to expand (e.g., "to\_SupplierCompany,to\_SupplierPurchasingOrg") | #### Output [#output-8] | Parameter | Type | Description | | ---------------------------------- | ------- | -------------------------------------------------------- | | `status` | number | HTTP status code returned by SAP | | `data` | json | OData v2 response envelope; entity at output.data.d | | ↳ `d` | json | A\_Supplier entity | | ↳ `Supplier` | string | Supplier key (up to 10 characters) | | ↳ `AlternativePayeeAccountNumber` | string | Account number of the alternative payee | | ↳ `AuthorizationGroup` | string | Authorization group | | ↳ `BusinessPartner` | string | Linked BusinessPartner key | | ↳ `BR_TaxIsSplit` | boolean | Brazil-specific tax split flag | | ↳ `CreatedByUser` | string | User who created the supplier | | ↳ `CreationDate` | string | Creation date (OData v2 epoch) | | ↳ `Customer` | string | Linked customer key (if any) | | ↳ `DeletionIndicator` | boolean | Central deletion flag | | ↳ `BirthDate` | string | Date of birth (OData v2 epoch) | | ↳ `ConcatenatedInternationalLocNo` | string | Concatenated international location number | | ↳ `FiscalAddress` | string | Fiscal address number | | ↳ `Industry` | string | Industry key | | ↳ `InternationalLocationNumber1` | string | International location number, part 1 | | ↳ `InternationalLocationNumber2` | string | International location number, part 2 | | ↳ `InternationalLocationNumber3` | string | International location number, part 3 | | ↳ `IsNaturalPerson` | boolean | Indicates whether the supplier is a natural person | | ↳ `PaymentIsBlockedForSupplier` | boolean | Payment block flag | | ↳ `PostingIsBlocked` | boolean | Posting block flag | | ↳ `PurchasingIsBlocked` | boolean | Purchasing block flag | | ↳ `ResponsibleType` | string | Type of business (Brazil) | | ↳ `SupplierAccountGroup` | string | Supplier account group | | ↳ `SupplierCorporateGroup` | string | Corporate group identifier | | ↳ `SupplierFullName` | string | Full name of the supplier | | ↳ `SupplierName` | string | Supplier name | | ↳ `SupplierProcurementBlock` | string | Procurement block at supplier level | | ↳ `SuplrProofOfDelivRlvtCode` | string | Proof of delivery relevance code | | ↳ `SuplrQltyInProcmtCertfnValidTo` | string | Quality certification validity end date (OData v2 epoch) | | ↳ `SuplrQualityManagementSystem` | string | Quality management system of the supplier | | ↳ `TaxNumber1` | string | Tax number 1 | | ↳ `TaxNumber2` | string | Tax number 2 | | ↳ `TaxNumber3` | string | Tax number 3 | | ↳ `TaxNumber4` | string | Tax number 4 | | ↳ `TaxNumber5` | string | Tax number 5 | | ↳ `TaxNumberResponsible` | string | Tax number of responsible party | | ↳ `TaxNumberType` | string | Tax number type | | ↳ `VATRegistration` | string | VAT registration number | ### SAP S/4HANA Update Supplier [#sap-s4hana-update-supplier] Update fields on an A\_Supplier entity in SAP S/4HANA Cloud (API\_BUSINESS\_PARTNER). Uses HTTP MERGE (OData v2 partial update) — only the fields you provide are written; existing values are preserved. A\_Supplier is limited to modifiable fields such as PostingIsBlocked, PurchasingIsBlocked, PaymentIsBlockedForSupplier, DeletionIndicator, and SupplierAccountGroup; company-code/purchasing-org segments must be updated via the `to_SupplierCompany` / `to_SupplierPurchasingOrg` deep-update endpoints. If-Match defaults to a wildcard - for safe concurrent updates pass the ETag from a prior GET to avoid lost updates. #### Input [#input-9] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------- | | `subdomain` | string | No | SAP BTP subaccount subdomain (technical name of your subaccount, not the S/4HANA host) | | `region` | string | No | BTP region (e.g. eu10, us10) | | `clientId` | string | No | OAuth client ID from the S/4HANA Communication Arrangement | | `clientSecret` | string | No | OAuth client secret from the S/4HANA Communication Arrangement | | `deploymentType` | string | No | Deployment type: cloud\_public (default), cloud\_private, or on\_premise | | `authType` | string | No | Authentication type: oauth\_client\_credentials (default) or basic | | `baseUrl` | string | No | Base URL of the S/4HANA host (Cloud Private / On-Premise) | | `tokenUrl` | string | No | OAuth token URL (Cloud Private / On-Premise + OAuth) | | `username` | string | No | Username for HTTP Basic auth | | `password` | string | No | Password for HTTP Basic auth | | `supplier` | string | Yes | Supplier key to update (string, up to 10 characters) | | `body` | json | Yes | JSON object with A\_Supplier fields to update (e.g., \{"PaymentIsBlockedForSupplier":true,"PostingIsBlocked":true}) | | `ifMatch` | string | No | If-Match ETag for optimistic concurrency. Defaults to "\*" (unconditional). | #### Output [#output-9] | Parameter | Type | Description | | ------------------------------- | ------- | ---------------------------------------------------------------------------------------------------------------- | | `status` | number | HTTP status code returned by SAP (204 on success) | | `data` | json | Null on 204 success, or OData v2 envelope with updated entity at output.data.d when SAP returns a representation | | ↳ `d` | json | A\_Supplier entity (when SAP returns a representation) | | ↳ `Supplier` | string | Supplier key (up to 10 characters) | | ↳ `SupplierName` | string | Supplier name | | ↳ `SupplierAccountGroup` | string | Supplier account group | | ↳ `BusinessPartner` | string | Linked BusinessPartner key | | ↳ `PaymentIsBlockedForSupplier` | boolean | Payment block flag | | ↳ `PostingIsBlocked` | boolean | Posting block flag | | ↳ `PurchasingIsBlocked` | boolean | Purchasing block flag | | ↳ `DeletionIndicator` | boolean | Central deletion flag | ### SAP S/4HANA List Sales Orders [#sap-s4hana-list-sales-orders] List sales orders from SAP S/4HANA Cloud (API\_SALES\_ORDER\_SRV, A\_SalesOrder) with optional OData $filter, $top, $skip, $orderby, $select, $expand. #### Input [#input-10] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | -------------------------------------------------------------------------------------- | | `subdomain` | string | No | SAP BTP subaccount subdomain (technical name of your subaccount, not the S/4HANA host) | | `region` | string | No | BTP region (e.g. eu10, us10) | | `clientId` | string | No | OAuth client ID from the S/4HANA Communication Arrangement | | `clientSecret` | string | No | OAuth client secret from the S/4HANA Communication Arrangement | | `deploymentType` | string | No | Deployment type: cloud\_public (default), cloud\_private, or on\_premise | | `authType` | string | No | Authentication type: oauth\_client\_credentials (default) or basic | | `baseUrl` | string | No | Base URL of the S/4HANA host (Cloud Private / On-Premise) | | `tokenUrl` | string | No | OAuth token URL (Cloud Private / On-Premise + OAuth) | | `username` | string | No | Username for HTTP Basic auth | | `password` | string | No | Password for HTTP Basic auth | | `filter` | string | No | OData $filter expression (e.g., "SalesOrganization eq '1010'") | | `top` | number | No | Maximum results to return ($top) | | `skip` | number | No | Number of results to skip ($skip) | | `orderBy` | string | No | OData $orderby expression | | `select` | string | No | Comma-separated fields to return ($select) | | `expand` | string | No | Comma-separated navigation properties to expand (e.g., "to\_Item,to\_Partner") | #### Output [#output-10] | Parameter | Type | Description | | --------------------------------- | ------ | --------------------------------------------------------------- | | `status` | number | HTTP status code returned by SAP | | `data` | json | OData v2 response envelope; collection at output.data.d.results | | ↳ `d` | json | OData v2 envelope | | ↳ `results` | array | A\_SalesOrder entities | | ↳ `SalesOrder` | string | Sales order number | | ↳ `SalesOrderType` | string | Sales document type (e.g., OR) | | ↳ `SalesOrganization` | string | Sales organization | | ↳ `DistributionChannel` | string | Distribution channel | | ↳ `OrganizationDivision` | string | Division | | ↳ `SoldToParty` | string | Sold-to business partner | | ↳ `TotalNetAmount` | string | Total net amount | | ↳ `TransactionCurrency` | string | Document currency | | ↳ `CreationDate` | string | Creation date (OData /Date(ms)/) | | ↳ `SalesOrderDate` | string | Sales order date (OData /Date(ms)/) | | ↳ `RequestedDeliveryDate` | string | Requested delivery date (OData /Date(ms)/) | | ↳ `LastChangeDate` | string | Last change date (OData /Date(ms)/) | | ↳ `PurchaseOrderByCustomer` | string | Customer purchase order reference | | ↳ `OverallSDProcessStatus` | string | Overall sales document process status | | ↳ `OverallTotalDeliveryStatus` | string | Overall total delivery status | | ↳ `OverallSDDocumentRejectionSts` | string | Overall sales document rejection status | | ↳ `__next` | string | OData skiptoken URL for next page | ### SAP S/4HANA Get Sales Order [#sap-s4hana-get-sales-order] Retrieve a single sales order by SalesOrder key from SAP S/4HANA Cloud (API\_SALES\_ORDER\_SRV, A\_SalesOrder). #### Input [#input-11] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | -------------------------------------------------------------------------------------- | | `subdomain` | string | No | SAP BTP subaccount subdomain (technical name of your subaccount, not the S/4HANA host) | | `region` | string | No | BTP region (e.g. eu10, us10) | | `clientId` | string | No | OAuth client ID from the S/4HANA Communication Arrangement | | `clientSecret` | string | No | OAuth client secret from the S/4HANA Communication Arrangement | | `deploymentType` | string | No | Deployment type: cloud\_public (default), cloud\_private, or on\_premise | | `authType` | string | No | Authentication type: oauth\_client\_credentials (default) or basic | | `baseUrl` | string | No | Base URL of the S/4HANA host (Cloud Private / On-Premise) | | `tokenUrl` | string | No | OAuth token URL (Cloud Private / On-Premise + OAuth) | | `username` | string | No | Username for HTTP Basic auth | | `password` | string | No | Password for HTTP Basic auth | | `salesOrder` | string | Yes | SalesOrder key (string, up to 10 characters) | | `select` | string | No | Comma-separated fields to return ($select) | | `expand` | string | No | Comma-separated navigation properties to expand (e.g., "to\_Item") | #### Output [#output-11] | Parameter | Type | Description | | --------------------------------- | ------ | --------------------------------------------------- | | `status` | number | HTTP status code returned by SAP | | `data` | json | OData v2 response envelope; entity at output.data.d | | ↳ `d` | json | A\_SalesOrder entity | | ↳ `SalesOrder` | string | Sales order number | | ↳ `SalesOrderType` | string | Sales document type | | ↳ `SalesOrganization` | string | Sales organization | | ↳ `DistributionChannel` | string | Distribution channel | | ↳ `OrganizationDivision` | string | Division | | ↳ `SoldToParty` | string | Sold-to business partner | | ↳ `PurchaseOrderByCustomer` | string | Customer purchase order reference | | ↳ `SalesOrderDate` | string | Sales order date (OData /Date(ms)/) | | ↳ `RequestedDeliveryDate` | string | Requested delivery date (OData /Date(ms)/) | | ↳ `PricingDate` | string | Pricing date (OData /Date(ms)/) | | ↳ `LastChangeDate` | string | Last change date (OData /Date(ms)/) | | ↳ `LastChangeDateTime` | string | Last change timestamp (OData /Date(ms)/) | | ↳ `TotalNetAmount` | string | Total net amount | | ↳ `TransactionCurrency` | string | Document currency | | ↳ `CreationDate` | string | Creation date | | ↳ `OverallSDProcessStatus` | string | Overall sales document process status | | ↳ `OverallTotalDeliveryStatus` | string | Overall total delivery status | | ↳ `OverallSDDocumentRejectionSts` | string | Overall sales document rejection status | | ↳ `to_Item` | json | Sales order items (when $expand=to\_Item) | ### SAP S/4HANA Create Sales Order [#sap-s4hana-create-sales-order] Create a sales order in SAP S/4HANA Cloud (API\_SALES\_ORDER\_SRV, A\_SalesOrder) with deep insert of sales order items via to\_Item. #### Input [#input-12] | Parameter | Type | Required | Description | | ---------------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `subdomain` | string | No | SAP BTP subaccount subdomain (technical name of your subaccount, not the S/4HANA host) | | `region` | string | No | BTP region (e.g. eu10, us10) | | `clientId` | string | No | OAuth client ID from the S/4HANA Communication Arrangement | | `clientSecret` | string | No | OAuth client secret from the S/4HANA Communication Arrangement | | `deploymentType` | string | No | Deployment type: cloud\_public (default), cloud\_private, or on\_premise | | `authType` | string | No | Authentication type: oauth\_client\_credentials (default) or basic | | `baseUrl` | string | No | Base URL of the S/4HANA host (Cloud Private / On-Premise) | | `tokenUrl` | string | No | OAuth token URL (Cloud Private / On-Premise + OAuth) | | `username` | string | No | Username for HTTP Basic auth | | `password` | string | No | Password for HTTP Basic auth | | `salesOrderType` | string | Yes | SalesOrderType (e.g., "OR" Standard Order) | | `salesOrganization` | string | Yes | SalesOrganization (4 chars, e.g., "1010") | | `distributionChannel` | string | Yes | DistributionChannel (2 chars, e.g., "10") | | `organizationDivision` | string | Yes | OrganizationDivision (2 chars, e.g., "00") | | `soldToParty` | string | Yes | SoldToParty business partner key (up to 10 chars) | | `items` | json | Yes | Array of sales order items for to\_Item deep insert. Each item should include Material and RequestedQuantity (e.g., \[\{"Material":"TG11","RequestedQuantity":"1"}]). | | `body` | json | No | Optional additional A\_SalesOrder fields merged into the create payload | #### Output [#output-12] | Parameter | Type | Description | | ------------------------------ | ------ | ----------------------------------------------------------- | | `status` | number | HTTP status code returned by SAP (201 on create) | | `data` | json | OData v2 response envelope; created entity at output.data.d | | ↳ `d` | json | Created A\_SalesOrder entity | | ↳ `SalesOrder` | string | Newly assigned sales order number | | ↳ `SalesOrderType` | string | Sales document type | | ↳ `SalesOrganization` | string | Sales organization | | ↳ `DistributionChannel` | string | Distribution channel | | ↳ `OrganizationDivision` | string | Division | | ↳ `SoldToParty` | string | Sold-to business partner | | ↳ `TotalNetAmount` | string | Total net amount | | ↳ `TransactionCurrency` | string | Document currency | | ↳ `CreationDate` | string | Creation date | | ↳ `OverallSDProcessStatus` | string | Overall sales document process status | | ↳ `OverallTotalDeliveryStatus` | string | Overall total delivery status | | ↳ `to_Item` | json | Deep-inserted sales order items as returned by SAP | ### SAP S/4HANA Update Sales Order [#sap-s4hana-update-sales-order] Update fields on an A\_SalesOrder header in SAP S/4HANA Cloud (API\_SALES\_ORDER\_SRV). Uses HTTP MERGE (OData v2 partial update) — only the fields you provide are written; existing values are preserved. Header-only — deep updates to to\_Item / to\_Partner / to\_PricingElement navigations are not supported (see SAP KBA 2833338); use A\_SalesOrderItem operations for line-level changes. If-Match defaults to a wildcard (unconditional) — for safe concurrent updates pass the ETag from a prior GET to avoid lost updates. #### Input [#input-13] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------- | | `subdomain` | string | No | SAP BTP subaccount subdomain (technical name of your subaccount, not the S/4HANA host) | | `region` | string | No | BTP region (e.g. eu10, us10) | | `clientId` | string | No | OAuth client ID from the S/4HANA Communication Arrangement | | `clientSecret` | string | No | OAuth client secret from the S/4HANA Communication Arrangement | | `deploymentType` | string | No | Deployment type: cloud\_public (default), cloud\_private, or on\_premise | | `authType` | string | No | Authentication type: oauth\_client\_credentials (default) or basic | | `baseUrl` | string | No | Base URL of the S/4HANA host (Cloud Private / On-Premise) | | `tokenUrl` | string | No | OAuth token URL (Cloud Private / On-Premise + OAuth) | | `username` | string | No | Username for HTTP Basic auth | | `password` | string | No | Password for HTTP Basic auth | | `salesOrder` | string | Yes | SalesOrder key to update (string, up to 10 characters) | | `body` | json | Yes | JSON object with A\_SalesOrder fields to update (e.g., \{"PurchaseOrderByCustomer":"PO-12345","HeaderBillingBlockReason":"01"}) | | `ifMatch` | string | No | If-Match ETag for optimistic concurrency. Defaults to "\*" (unconditional). | #### Output [#output-13] | Parameter | Type | Description | | ------------------------------ | ------ | ----------------------------------------------------------------------------------------- | | `status` | number | HTTP status code returned by SAP (204 on success) | | `data` | json | Null on 204 success; otherwise OData v2 envelope with the updated entity at output.data.d | | ↳ `d` | json | Updated A\_SalesOrder entity (when SAP returns one) | | ↳ `SalesOrder` | string | Sales order number | | ↳ `SalesOrderType` | string | Sales document type | | ↳ `PurchaseOrderByCustomer` | string | Customer purchase order reference | | ↳ `OverallSDProcessStatus` | string | Overall sales document process status | | ↳ `OverallTotalDeliveryStatus` | string | Overall total delivery status | ### SAP S/4HANA Delete Sales Order [#sap-s4hana-delete-sales-order] Delete an A\_SalesOrder entity in SAP S/4HANA Cloud (API\_SALES\_ORDER\_SRV). Only orders without subsequent documents (deliveries, invoices) can be deleted; otherwise reject items via update instead. #### Input [#input-14] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | -------------------------------------------------------------------------------------- | | `subdomain` | string | No | SAP BTP subaccount subdomain (technical name of your subaccount, not the S/4HANA host) | | `region` | string | No | BTP region (e.g. eu10, us10) | | `clientId` | string | No | OAuth client ID from the S/4HANA Communication Arrangement | | `clientSecret` | string | No | OAuth client secret from the S/4HANA Communication Arrangement | | `deploymentType` | string | No | Deployment type: cloud\_public (default), cloud\_private, or on\_premise | | `authType` | string | No | Authentication type: oauth\_client\_credentials (default) or basic | | `baseUrl` | string | No | Base URL of the S/4HANA host (Cloud Private / On-Premise) | | `tokenUrl` | string | No | OAuth token URL (Cloud Private / On-Premise + OAuth) | | `username` | string | No | Username for HTTP Basic auth | | `password` | string | No | Password for HTTP Basic auth | | `salesOrder` | string | Yes | SalesOrder key to delete (string, up to 10 characters) | | `ifMatch` | string | No | If-Match ETag for optimistic concurrency. Defaults to "\*" (unconditional). | #### Output [#output-14] | Parameter | Type | Description | | --------- | ------ | -------------------------------------------------------- | | `status` | number | HTTP status code returned by SAP (204 on success) | | `data` | json | Null on successful deletion (SAP returns 204 No Content) | ### SAP S/4HANA List Outbound Deliveries [#sap-s4hana-list-outbound-deliveries] List outbound deliveries from SAP S/4HANA Cloud (API\_OUTBOUND\_DELIVERY\_SRV;v=0002, A\_OutbDeliveryHeader) with optional OData $filter, $top, $skip, $orderby, $select, $expand. #### Input [#input-15] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | -------------------------------------------------------------------------------------- | | `subdomain` | string | No | SAP BTP subaccount subdomain (technical name of your subaccount, not the S/4HANA host) | | `region` | string | No | BTP region (e.g. eu10, us10) | | `clientId` | string | No | OAuth client ID from the S/4HANA Communication Arrangement | | `clientSecret` | string | No | OAuth client secret from the S/4HANA Communication Arrangement | | `deploymentType` | string | No | Deployment type: cloud\_public (default), cloud\_private, or on\_premise | | `authType` | string | No | Authentication type: oauth\_client\_credentials (default) or basic | | `baseUrl` | string | No | Base URL of the S/4HANA host (Cloud Private / On-Premise) | | `tokenUrl` | string | No | OAuth token URL (Cloud Private / On-Premise + OAuth) | | `username` | string | No | Username for HTTP Basic auth | | `password` | string | No | Password for HTTP Basic auth | | `filter` | string | No | OData $filter expression (e.g., "OverallDeliveryStatus eq 'C'") | | `top` | number | No | Maximum results to return ($top) | | `skip` | number | No | Number of results to skip ($skip) | | `orderBy` | string | No | OData $orderby expression | | `select` | string | No | Comma-separated fields to return ($select) | | `expand` | string | No | Comma-separated navigation properties to expand (e.g., "to\_DeliveryDocumentItem") | #### Output [#output-15] | Parameter | Type | Description | | ------------------------------ | ------ | --------------------------------------------------------------- | | `status` | number | HTTP status code returned by SAP | | `data` | json | OData v2 response envelope; collection at output.data.d.results | | ↳ `d` | json | OData v2 envelope | | ↳ `results` | array | A\_OutbDeliveryHeader entities | | ↳ `DeliveryDocument` | string | Outbound delivery number | | ↳ `DeliveryDocumentType` | string | Delivery document type (e.g., LF) | | ↳ `SDDocumentCategory` | string | SD document category (e.g., J = outbound delivery) | | ↳ `ShippingPoint` | string | Shipping point | | ↳ `ShippingType` | string | Shipping type | | ↳ `ShipToParty` | string | Ship-to business partner | | ↳ `SoldToParty` | string | Sold-to business partner | | ↳ `DeliveryDate` | string | Delivery date (Edm.DateTime) | | ↳ `ActualGoodsMovementDate` | string | Actual goods issue date (Edm.DateTime) | | ↳ `PlannedGoodsIssueDate` | string | Planned goods issue date (Edm.DateTime) | | ↳ `OverallSDProcessStatus` | string | Overall SD process (delivery) status | | ↳ `OverallGoodsMovementStatus` | string | Overall goods movement status | | ↳ `TransactionCurrency` | string | Document currency | | ↳ `DocumentDate` | string | Document date (Edm.DateTime) | | ↳ `CreationDate` | string | Creation date (Edm.DateTime) | | ↳ `LastChangeDate` | string | Last change date (Edm.DateTime) | | ↳ `__next` | string | OData skiptoken URL for next page | | ↳ `__count` | string | Total count when $inlinecount=allpages is used | ### SAP S/4HANA Get Outbound Delivery [#sap-s4hana-get-outbound-delivery] Retrieve a single outbound delivery by DeliveryDocument key from SAP S/4HANA Cloud (API\_OUTBOUND\_DELIVERY\_SRV;v=0002, A\_OutbDeliveryHeader). #### Input [#input-16] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | -------------------------------------------------------------------------------------- | | `subdomain` | string | No | SAP BTP subaccount subdomain (technical name of your subaccount, not the S/4HANA host) | | `region` | string | No | BTP region (e.g. eu10, us10) | | `clientId` | string | No | OAuth client ID from the S/4HANA Communication Arrangement | | `clientSecret` | string | No | OAuth client secret from the S/4HANA Communication Arrangement | | `deploymentType` | string | No | Deployment type: cloud\_public (default), cloud\_private, or on\_premise | | `authType` | string | No | Authentication type: oauth\_client\_credentials (default) or basic | | `baseUrl` | string | No | Base URL of the S/4HANA host (Cloud Private / On-Premise) | | `tokenUrl` | string | No | OAuth token URL (Cloud Private / On-Premise + OAuth) | | `username` | string | No | Username for HTTP Basic auth | | `password` | string | No | Password for HTTP Basic auth | | `deliveryDocument` | string | Yes | DeliveryDocument key (string, up to 10 characters) | | `select` | string | No | Comma-separated fields to return ($select) | | `expand` | string | No | Comma-separated navigation properties to expand (e.g., "to\_DeliveryDocumentItem") | #### Output [#output-16] | Parameter | Type | Description | | ------------------------------ | ------ | ------------------------------------------------------------ | | `status` | number | HTTP status code returned by SAP | | `data` | json | OData v2 response envelope; entity at output.data.d | | ↳ `d` | json | A\_OutbDeliveryHeader entity | | ↳ `DeliveryDocument` | string | Outbound delivery number | | ↳ `DeliveryDocumentType` | string | Delivery document type | | ↳ `SDDocumentCategory` | string | SD document category (e.g., J = outbound delivery) | | ↳ `ShippingPoint` | string | Shipping point | | ↳ `ShippingType` | string | Shipping type | | ↳ `ShipToParty` | string | Ship-to business partner | | ↳ `SoldToParty` | string | Sold-to business partner | | ↳ `DeliveryDate` | string | Delivery date (Edm.DateTime) | | ↳ `ActualGoodsMovementDate` | string | Actual goods issue date (Edm.DateTime) | | ↳ `PlannedGoodsIssueDate` | string | Planned goods issue date (Edm.DateTime) | | ↳ `OverallSDProcessStatus` | string | Overall SD process (delivery) status | | ↳ `OverallGoodsMovementStatus` | string | Overall goods movement status | | ↳ `TransactionCurrency` | string | Document currency | | ↳ `DocumentDate` | string | Document date (Edm.DateTime) | | ↳ `CreationDate` | string | Creation date (Edm.DateTime) | | ↳ `LastChangeDate` | string | Last change date (Edm.DateTime) | | ↳ `to_DeliveryDocumentItem` | json | Delivery items (when $expand=to\_DeliveryDocumentItem) | | ↳ `to_DeliveryDocumentPartner` | json | Delivery partners (when $expand=to\_DeliveryDocumentPartner) | ### SAP S/4HANA List Inbound Deliveries [#sap-s4hana-list-inbound-deliveries] List inbound deliveries from SAP S/4HANA Cloud (API\_INBOUND\_DELIVERY\_SRV;v=0002, A\_InbDeliveryHeader) with optional OData $filter, $top, $skip, $orderby, $select, $expand. #### Input [#input-17] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | -------------------------------------------------------------------------------------- | | `subdomain` | string | No | SAP BTP subaccount subdomain (technical name of your subaccount, not the S/4HANA host) | | `region` | string | No | BTP region (e.g. eu10, us10) | | `clientId` | string | No | OAuth client ID from the S/4HANA Communication Arrangement | | `clientSecret` | string | No | OAuth client secret from the S/4HANA Communication Arrangement | | `deploymentType` | string | No | Deployment type: cloud\_public (default), cloud\_private, or on\_premise | | `authType` | string | No | Authentication type: oauth\_client\_credentials (default) or basic | | `baseUrl` | string | No | Base URL of the S/4HANA host (Cloud Private / On-Premise) | | `tokenUrl` | string | No | OAuth token URL (Cloud Private / On-Premise + OAuth) | | `username` | string | No | Username for HTTP Basic auth | | `password` | string | No | Password for HTTP Basic auth | | `filter` | string | No | OData $filter expression (e.g., "ReceivingPlant eq '1010'") | | `top` | number | No | Maximum results to return ($top) | | `skip` | number | No | Number of results to skip ($skip) | | `orderBy` | string | No | OData $orderby expression | | `select` | string | No | Comma-separated fields to return ($select) | | `expand` | string | No | Comma-separated navigation properties to expand (e.g., "to\_DeliveryDocumentItem") | #### Output [#output-17] | Parameter | Type | Description | | ------------------------------ | ------ | --------------------------------------------------------------- | | `status` | number | HTTP status code returned by SAP | | `data` | json | OData v2 response envelope; collection at output.data.d.results | | ↳ `d` | json | OData v2 envelope | | ↳ `results` | array | A\_InbDeliveryHeader entities | | ↳ `DeliveryDocument` | string | Inbound delivery number | | ↳ `DeliveryDocumentType` | string | Delivery document type (e.g., EL) | | ↳ `SDDocumentCategory` | string | SD document category (e.g., 7 = inbound delivery) | | ↳ `ReceivingPlant` | string | Receiving plant | | ↳ `Supplier` | string | Supplier business partner | | ↳ `ShipToParty` | string | Ship-to business partner | | ↳ `DeliveryDate` | string | Delivery date (Edm.DateTime) | | ↳ `ActualGoodsMovementDate` | string | Actual goods movement (receipt) date (Edm.DateTime) | | ↳ `PlannedGoodsMovementDate` | string | Planned goods movement date (Edm.DateTime) | | ↳ `OverallSDProcessStatus` | string | Overall SD process (delivery) status | | ↳ `OverallGoodsMovementStatus` | string | Overall goods movement status | | ↳ `DocumentDate` | string | Document date (Edm.DateTime) | | ↳ `CreationDate` | string | Creation date (Edm.DateTime) | | ↳ `LastChangeDate` | string | Last change date (Edm.DateTime) | | ↳ `__next` | string | OData skiptoken URL for next page | | ↳ `__count` | string | Total count when $inlinecount=allpages is used | ### SAP S/4HANA Get Inbound Delivery [#sap-s4hana-get-inbound-delivery] Retrieve a single inbound delivery by DeliveryDocument key from SAP S/4HANA Cloud (API\_INBOUND\_DELIVERY\_SRV;v=0002, A\_InbDeliveryHeader). #### Input [#input-18] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | -------------------------------------------------------------------------------------- | | `subdomain` | string | No | SAP BTP subaccount subdomain (technical name of your subaccount, not the S/4HANA host) | | `region` | string | No | BTP region (e.g. eu10, us10) | | `clientId` | string | No | OAuth client ID from the S/4HANA Communication Arrangement | | `clientSecret` | string | No | OAuth client secret from the S/4HANA Communication Arrangement | | `deploymentType` | string | No | Deployment type: cloud\_public (default), cloud\_private, or on\_premise | | `authType` | string | No | Authentication type: oauth\_client\_credentials (default) or basic | | `baseUrl` | string | No | Base URL of the S/4HANA host (Cloud Private / On-Premise) | | `tokenUrl` | string | No | OAuth token URL (Cloud Private / On-Premise + OAuth) | | `username` | string | No | Username for HTTP Basic auth | | `password` | string | No | Password for HTTP Basic auth | | `deliveryDocument` | string | Yes | DeliveryDocument key (string, up to 10 characters) | | `select` | string | No | Comma-separated fields to return ($select) | | `expand` | string | No | Comma-separated navigation properties to expand (e.g., "to\_DeliveryDocumentItem") | #### Output [#output-18] | Parameter | Type | Description | | ------------------------------ | ------ | ------------------------------------------------------------ | | `status` | number | HTTP status code returned by SAP | | `data` | json | OData v2 response envelope; entity at output.data.d | | ↳ `d` | json | A\_InbDeliveryHeader entity | | ↳ `DeliveryDocument` | string | Inbound delivery number | | ↳ `DeliveryDocumentType` | string | Delivery document type | | ↳ `SDDocumentCategory` | string | SD document category (e.g., 7 = inbound delivery) | | ↳ `ReceivingPlant` | string | Receiving plant | | ↳ `Supplier` | string | Supplier business partner | | ↳ `ShipToParty` | string | Ship-to business partner | | ↳ `DeliveryDate` | string | Delivery date (Edm.DateTime) | | ↳ `ActualGoodsMovementDate` | string | Actual goods movement (receipt) date (Edm.DateTime) | | ↳ `PlannedGoodsMovementDate` | string | Planned goods movement date (Edm.DateTime) | | ↳ `OverallSDProcessStatus` | string | Overall SD process (delivery) status | | ↳ `OverallGoodsMovementStatus` | string | Overall goods movement status | | ↳ `DocumentDate` | string | Document date (Edm.DateTime) | | ↳ `CreationDate` | string | Creation date (Edm.DateTime) | | ↳ `LastChangeDate` | string | Last change date (Edm.DateTime) | | ↳ `to_DeliveryDocumentItem` | json | Delivery items (when $expand=to\_DeliveryDocumentItem) | | ↳ `to_DeliveryDocumentPartner` | json | Delivery partners (when $expand=to\_DeliveryDocumentPartner) | ### SAP S/4HANA List Billing Documents [#sap-s4hana-list-billing-documents] List billing documents (customer invoices) from SAP S/4HANA Cloud (API\_BILLING\_DOCUMENT\_SRV, A\_BillingDocument) with optional OData $filter, $top, $skip, $orderby, $select, $expand. #### Input [#input-19] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ------------------------------------------------------------------------------------------------- | | `subdomain` | string | No | SAP BTP subaccount subdomain (technical name of your subaccount, not the S/4HANA host) | | `region` | string | No | BTP region (e.g. eu10, us10) | | `clientId` | string | No | OAuth client ID from the S/4HANA Communication Arrangement | | `clientSecret` | string | No | OAuth client secret from the S/4HANA Communication Arrangement | | `deploymentType` | string | No | Deployment type: cloud\_public (default), cloud\_private, or on\_premise | | `authType` | string | No | Authentication type: oauth\_client\_credentials (default) or basic | | `baseUrl` | string | No | Base URL of the S/4HANA host (Cloud Private / On-Premise) | | `tokenUrl` | string | No | OAuth token URL (Cloud Private / On-Premise + OAuth) | | `username` | string | No | Username for HTTP Basic auth | | `password` | string | No | Password for HTTP Basic auth | | `filter` | string | No | OData $filter expression (e.g., "SoldToParty eq '10100001'") | | `top` | number | No | Maximum results to return ($top) | | `skip` | number | No | Number of results to skip ($skip) | | `orderBy` | string | No | OData $orderby expression | | `select` | string | No | Comma-separated fields to return ($select) | | `expand` | string | No | Comma-separated navigation properties to expand (e.g., "to\_Item,to\_Partner,to\_PricingElement") | #### Output [#output-19] | Parameter | Type | Description | | ------------------------------ | ------- | --------------------------------------------------------------- | | `status` | number | HTTP status code returned by SAP | | `data` | json | OData v2 response envelope; collection at output.data.d.results | | ↳ `d` | json | OData v2 envelope | | ↳ `results` | array | A\_BillingDocument entities | | ↳ `BillingDocument` | string | Billing document number | | ↳ `SDDocumentCategory` | string | SD document category | | ↳ `BillingDocumentCategory` | string | Billing document category | | ↳ `BillingDocumentType` | string | Billing document type (e.g., F2) | | ↳ `BillingDocumentDate` | string | Billing document date (OData /Date(ms)/) | | ↳ `BillingDocumentIsCancelled` | boolean | Whether the billing document is cancelled | | ↳ `CancelledBillingDocument` | string | Cancelled billing document number | | ↳ `TotalNetAmount` | string | Total net amount (Edm.Decimal as string) | | ↳ `TaxAmount` | string | Tax amount (Edm.Decimal as string) | | ↳ `TotalGrossAmount` | string | Total gross amount (Edm.Decimal as string) | | ↳ `TransactionCurrency` | string | Document currency | | ↳ `SoldToParty` | string | Sold-to business partner | | ↳ `PayerParty` | string | Payer party | | ↳ `SalesOrganization` | string | Sales organization | | ↳ `DistributionChannel` | string | Distribution channel | | ↳ `Division` | string | Division | | ↳ `CompanyCode` | string | Company code | | ↳ `FiscalYear` | string | Fiscal year | | ↳ `OverallBillingStatus` | string | Overall billing status | | ↳ `AccountingPostingStatus` | string | Accounting posting status | | ↳ `AccountingTransferStatus` | string | Accounting transfer status | | ↳ `InvoiceClearingStatus` | string | Invoice clearing status | | ↳ `AccountingDocument` | string | Linked accounting document | | ↳ `CustomerPaymentTerms` | string | Customer payment terms | | ↳ `PaymentMethod` | string | Payment method | | ↳ `DocumentReferenceID` | string | Document reference ID | | ↳ `CreationDate` | string | Creation date (OData /Date(ms)/) | | ↳ `LastChangeDate` | string | Last change date (OData /Date(ms)/) | | ↳ `LastChangeDateTime` | string | Last change date-time (Edm.DateTimeOffset) | | ↳ `__next` | string | OData skiptoken URL for next page | | ↳ `__count` | string | Total count when $inlinecount=allpages is used | ### SAP S/4HANA Get Billing Document [#sap-s4hana-get-billing-document] Retrieve a single billing document (customer invoice) by BillingDocument key from SAP S/4HANA Cloud (API\_BILLING\_DOCUMENT\_SRV, A\_BillingDocument). #### Input [#input-20] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ------------------------------------------------------------------------------------------------- | | `subdomain` | string | No | SAP BTP subaccount subdomain (technical name of your subaccount, not the S/4HANA host) | | `region` | string | No | BTP region (e.g. eu10, us10) | | `clientId` | string | No | OAuth client ID from the S/4HANA Communication Arrangement | | `clientSecret` | string | No | OAuth client secret from the S/4HANA Communication Arrangement | | `deploymentType` | string | No | Deployment type: cloud\_public (default), cloud\_private, or on\_premise | | `authType` | string | No | Authentication type: oauth\_client\_credentials (default) or basic | | `baseUrl` | string | No | Base URL of the S/4HANA host (Cloud Private / On-Premise) | | `tokenUrl` | string | No | OAuth token URL (Cloud Private / On-Premise + OAuth) | | `username` | string | No | Username for HTTP Basic auth | | `password` | string | No | Password for HTTP Basic auth | | `billingDocument` | string | Yes | BillingDocument key (string, up to 10 characters) | | `select` | string | No | Comma-separated fields to return ($select) | | `expand` | string | No | Comma-separated navigation properties to expand (e.g., "to\_Item,to\_Partner,to\_PricingElement") | #### Output [#output-20] | Parameter | Type | Description | | ------------------------------ | ------- | ------------------------------------------------------------------- | | `status` | number | HTTP status code returned by SAP | | `data` | json | OData v2 response envelope; entity at output.data.d | | ↳ `d` | json | A\_BillingDocument entity | | ↳ `BillingDocument` | string | Billing document number | | ↳ `SDDocumentCategory` | string | SD document category | | ↳ `BillingDocumentCategory` | string | Billing document category | | ↳ `BillingDocumentType` | string | Billing document type | | ↳ `BillingDocumentDate` | string | Billing document date (OData /Date(ms)/) | | ↳ `BillingDocumentIsCancelled` | boolean | Whether the billing document is cancelled | | ↳ `CancelledBillingDocument` | string | Cancelled billing document number | | ↳ `TotalNetAmount` | string | Total net amount (Edm.Decimal as string) | | ↳ `TaxAmount` | string | Tax amount (Edm.Decimal as string) | | ↳ `TotalGrossAmount` | string | Total gross amount (Edm.Decimal as string) | | ↳ `TransactionCurrency` | string | Document currency | | ↳ `SoldToParty` | string | Sold-to business partner | | ↳ `PayerParty` | string | Payer party | | ↳ `SalesOrganization` | string | Sales organization | | ↳ `DistributionChannel` | string | Distribution channel | | ↳ `Division` | string | Division | | ↳ `CompanyCode` | string | Company code | | ↳ `FiscalYear` | string | Fiscal year | | ↳ `OverallBillingStatus` | string | Overall billing status | | ↳ `AccountingPostingStatus` | string | Accounting posting status | | ↳ `AccountingTransferStatus` | string | Accounting transfer status | | ↳ `InvoiceClearingStatus` | string | Invoice clearing status | | ↳ `AccountingDocument` | string | Linked accounting document | | ↳ `CustomerPaymentTerms` | string | Customer payment terms | | ↳ `PaymentMethod` | string | Payment method | | ↳ `DocumentReferenceID` | string | Document reference ID | | ↳ `CreationDate` | string | Creation date (OData /Date(ms)/) | | ↳ `LastChangeDate` | string | Last change date (OData /Date(ms)/) | | ↳ `LastChangeDateTime` | string | Last change date-time (Edm.DateTimeOffset) | | ↳ `to_Item` | json | Billing document items (when $expand=to\_Item) | | ↳ `to_Partner` | json | Billing document partners (when $expand=to\_Partner) | | ↳ `to_PricingElement` | json | Billing document pricing elements (when $expand=to\_PricingElement) | ### SAP S/4HANA List Products [#sap-s4hana-list-products] List products (materials) from SAP S/4HANA Cloud (API\_PRODUCT\_SRV, A\_Product) with optional OData $filter, $top, $skip, $orderby, $select, $expand. #### Input [#input-21] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | -------------------------------------------------------------------------------------- | | `subdomain` | string | No | SAP BTP subaccount subdomain (technical name of your subaccount, not the S/4HANA host) | | `region` | string | No | BTP region (e.g. eu10, us10) | | `clientId` | string | No | OAuth client ID from the S/4HANA Communication Arrangement | | `clientSecret` | string | No | OAuth client secret from the S/4HANA Communication Arrangement | | `deploymentType` | string | No | Deployment type: cloud\_public (default), cloud\_private, or on\_premise | | `authType` | string | No | Authentication type: oauth\_client\_credentials (default) or basic | | `baseUrl` | string | No | Base URL of the S/4HANA host (Cloud Private / On-Premise) | | `tokenUrl` | string | No | OAuth token URL (Cloud Private / On-Premise + OAuth) | | `username` | string | No | Username for HTTP Basic auth | | `password` | string | No | Password for HTTP Basic auth | | `filter` | string | No | OData $filter expression (e.g., "ProductType eq 'FERT'") | | `top` | number | No | Maximum results to return ($top) | | `skip` | number | No | Number of results to skip ($skip) | | `orderBy` | string | No | OData $orderby expression | | `select` | string | No | Comma-separated fields to return ($select) | | `expand` | string | No | Comma-separated navigation properties to expand ($expand) | #### Output [#output-21] | Parameter | Type | Description | | ----------------------- | ------- | --------------------------------------------------------------- | | `status` | number | HTTP status code returned by SAP | | `data` | json | OData v2 response envelope; collection at output.data.d.results | | ↳ `d` | json | OData v2 envelope | | ↳ `results` | array | A\_Product entities | | ↳ `Product` | string | Product (material) number | | ↳ `ProductType` | string | Product type (e.g., FERT, HAWA) | | ↳ `ProductGroup` | string | Material group | | ↳ `BaseUnit` | string | Base unit of measure | | ↳ `Brand` | string | Brand | | ↳ `Division` | string | Division | | ↳ `GrossWeight` | string | Gross weight | | ↳ `NetWeight` | string | Net weight | | ↳ `WeightUnit` | string | Weight unit of measure | | ↳ `CrossPlantStatus` | string | Cross-plant material status | | ↳ `IsMarkedForDeletion` | boolean | Deletion flag | | ↳ `ProductStandardID` | string | Standard product ID (e.g., GTIN) | | ↳ `ItemCategoryGroup` | string | Item category group | | ↳ `ProductOldID` | string | Legacy/old product ID | | ↳ `CreatedByUser` | string | User who created the product | | ↳ `CreationDate` | string | Creation date (OData /Date(ms)/) | | ↳ `LastChangedByUser` | string | User who last changed the product | | ↳ `LastChangeDate` | string | Last change date | | ↳ `LastChangeDateTime` | string | Last change timestamp (Edm.DateTimeOffset) | | ↳ `__next` | string | OData skiptoken URL for next page | | ↳ `__count` | string | Total count when $inlinecount=allpages is used | ### SAP S/4HANA Get Product [#sap-s4hana-get-product] Retrieve a single product (material) by Product key from SAP S/4HANA Cloud (API\_PRODUCT\_SRV, A\_Product). #### Input [#input-22] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | -------------------------------------------------------------------------------------- | | `subdomain` | string | No | SAP BTP subaccount subdomain (technical name of your subaccount, not the S/4HANA host) | | `region` | string | No | BTP region (e.g. eu10, us10) | | `clientId` | string | No | OAuth client ID from the S/4HANA Communication Arrangement | | `clientSecret` | string | No | OAuth client secret from the S/4HANA Communication Arrangement | | `deploymentType` | string | No | Deployment type: cloud\_public (default), cloud\_private, or on\_premise | | `authType` | string | No | Authentication type: oauth\_client\_credentials (default) or basic | | `baseUrl` | string | No | Base URL of the S/4HANA host (Cloud Private / On-Premise) | | `tokenUrl` | string | No | OAuth token URL (Cloud Private / On-Premise + OAuth) | | `username` | string | No | Username for HTTP Basic auth | | `password` | string | No | Password for HTTP Basic auth | | `product` | string | Yes | Product key (string, up to 40 characters) | | `select` | string | No | Comma-separated fields to return ($select) | | `expand` | string | No | Comma-separated navigation properties to expand (e.g., "to\_Description") | #### Output [#output-22] | Parameter | Type | Description | | ----------------------- | ------- | --------------------------------------------------- | | `status` | number | HTTP status code returned by SAP | | `data` | json | OData v2 response envelope; entity at output.data.d | | ↳ `d` | json | A\_Product entity | | ↳ `Product` | string | Product (material) number | | ↳ `ProductType` | string | Product type (e.g., FERT, HAWA) | | ↳ `ProductGroup` | string | Material group | | ↳ `BaseUnit` | string | Base unit of measure | | ↳ `Brand` | string | Brand | | ↳ `Division` | string | Division | | ↳ `GrossWeight` | string | Gross weight | | ↳ `NetWeight` | string | Net weight | | ↳ `WeightUnit` | string | Weight unit of measure | | ↳ `CrossPlantStatus` | string | Cross-plant material status | | ↳ `IsMarkedForDeletion` | boolean | Deletion flag | | ↳ `ProductStandardID` | string | Standard product ID (e.g., GTIN) | | ↳ `ItemCategoryGroup` | string | Item category group | | ↳ `ProductOldID` | string | Legacy/old product ID | | ↳ `CreatedByUser` | string | User who created the product | | ↳ `CreationDate` | string | Creation date (OData /Date(ms)/) | | ↳ `LastChangedByUser` | string | User who last changed the product | | ↳ `LastChangeDate` | string | Last change date | | ↳ `LastChangeDateTime` | string | Last change timestamp (Edm.DateTimeOffset) | | ↳ `to_Description` | json | Product descriptions (when $expand=to\_Description) | | ↳ `to_Plant` | json | Plant-level data (when $expand=to\_Plant) | | ↳ `to_ProductSales` | json | Sales data (when $expand=to\_ProductSales) | ### SAP S/4HANA Update Product [#sap-s4hana-update-product] Update fields on an A\_Product entity in SAP S/4HANA Cloud (API\_PRODUCT\_SRV). Uses HTTP MERGE (OData v2 partial update) — only the fields you provide are written; existing values are preserved. Flat scalar header fields only — deep/multi-entity updates across navigation properties are not supported by API\_PRODUCT\_SRV MERGE/PUT (see SAP KBA 2833338); update child entities (plant, valuation, sales data, etc.) via their own endpoints. If-Match defaults to a wildcard (unconditional) — for safe concurrent updates pass the ETag from a prior GET. #### Input [#input-23] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------- | | `subdomain` | string | No | SAP BTP subaccount subdomain (technical name of your subaccount, not the S/4HANA host) | | `region` | string | No | BTP region (e.g. eu10, us10) | | `clientId` | string | No | OAuth client ID from the S/4HANA Communication Arrangement | | `clientSecret` | string | No | OAuth client secret from the S/4HANA Communication Arrangement | | `deploymentType` | string | No | Deployment type: cloud\_public (default), cloud\_private, or on\_premise | | `authType` | string | No | Authentication type: oauth\_client\_credentials (default) or basic | | `baseUrl` | string | No | Base URL of the S/4HANA host (Cloud Private / On-Premise) | | `tokenUrl` | string | No | OAuth token URL (Cloud Private / On-Premise + OAuth) | | `username` | string | No | Username for HTTP Basic auth | | `password` | string | No | Password for HTTP Basic auth | | `product` | string | Yes | Product key to update (string, up to 40 characters) | | `body` | json | Yes | JSON object with A\_Product fields to update (e.g., \{"ProductGroup":"L001","IsMarkedForDeletion":false}) | | `ifMatch` | string | No | If-Match ETag for optimistic concurrency. Defaults to "\*" (unconditional). | #### Output [#output-23] | Parameter | Type | Description | | ----------------------- | ------- | --------------------------------------------------------------------------------------------- | | `status` | number | HTTP status code returned by SAP (204 on success) | | `data` | json | Null on 204 success, or OData v2 envelope with the updated A\_Product entity at output.data.d | | ↳ `d` | json | Updated A\_Product entity (only present if SAP returns a body) | | ↳ `Product` | string | Product (material) number | | ↳ `ProductType` | string | Product type | | ↳ `ProductGroup` | string | Material group | | ↳ `BaseUnit` | string | Base unit of measure | | ↳ `IsMarkedForDeletion` | boolean | Deletion flag | | ↳ `LastChangeDate` | string | Last change date | ### SAP S/4HANA List Material Stock [#sap-s4hana-list-material-stock] List material stock quantities from SAP S/4HANA Cloud (API\_MATERIAL\_STOCK\_SRV, A\_MatlStkInAcctMod). The entity uses an 11-field composite key (Material, Plant, StorageLocation, Batch, Supplier, Customer, WBSElementInternalID, SDDocument, SDDocumentItem, InventorySpecialStockType, InventoryStockType) — query with $filter on these fields instead of a direct key lookup. #### Input [#input-24] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------- | | `subdomain` | string | No | SAP BTP subaccount subdomain (technical name of your subaccount, not the S/4HANA host) | | `region` | string | No | BTP region (e.g. eu10, us10) | | `clientId` | string | No | OAuth client ID from the S/4HANA Communication Arrangement | | `clientSecret` | string | No | OAuth client secret from the S/4HANA Communication Arrangement | | `deploymentType` | string | No | Deployment type: cloud\_public (default), cloud\_private, or on\_premise | | `authType` | string | No | Authentication type: oauth\_client\_credentials (default) or basic | | `baseUrl` | string | No | Base URL of the S/4HANA host (Cloud Private / On-Premise) | | `tokenUrl` | string | No | OAuth token URL (Cloud Private / On-Premise + OAuth) | | `username` | string | No | Username for HTTP Basic auth | | `password` | string | No | Password for HTTP Basic auth | | `filter` | string | No | OData $filter expression (e.g., "Material eq 'TG10' and Plant eq '1010' and InventoryStockType eq '01'") | | `top` | number | No | Maximum results to return ($top) | | `skip` | number | No | Number of results to skip ($skip) | | `orderBy` | string | No | OData $orderby expression | | `select` | string | No | Comma-separated fields to return ($select) | | `expand` | string | No | Comma-separated navigation properties to expand ($expand) | #### Output [#output-24] | Parameter | Type | Description | | -------------------------------- | ------ | -------------------------------------------------------------------------------------------- | | `status` | number | HTTP status code returned by SAP | | `data` | json | OData payload containing the array of A\_MatlStkInAcctMod stock entries | | ↳ `Material` | string | Material number | | ↳ `Plant` | string | Plant identifier | | ↳ `StorageLocation` | string | Storage location identifier | | ↳ `Batch` | string | Batch identifier | | ↳ `Supplier` | string | Supplier business partner key | | ↳ `Customer` | string | Customer business partner key | | ↳ `WBSElementInternalID` | string | WBS element internal ID | | ↳ `SDDocument` | string | SD document number | | ↳ `SDDocumentItem` | string | SD document item | | ↳ `InventorySpecialStockType` | string | Special stock type indicator | | ↳ `InventoryStockType` | string | Stock type (e.g., 01 unrestricted-use, 02 quality inspection, 03 blocked, 04 restricted-use) | | ↳ `MatlWrhsStkQtyInMatlBaseUnit` | string | Material warehouse stock quantity in material base unit (Edm.Decimal serialized as string) | | ↳ `MaterialBaseUnit` | string | Material base unit of measure | ### SAP S/4HANA List Material Documents [#sap-s4hana-list-material-documents] List material document headers (goods movements) from SAP S/4HANA Cloud (API\_MATERIAL\_DOCUMENT\_SRV, A\_MaterialDocumentHeader) with optional OData $filter, $top, $skip, $orderby, $select, $expand. #### Input [#input-25] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------ | | `subdomain` | string | No | SAP BTP subaccount subdomain (technical name of your subaccount, not the S/4HANA host) | | `region` | string | No | BTP region (e.g. eu10, us10) | | `clientId` | string | No | OAuth client ID from the S/4HANA Communication Arrangement | | `clientSecret` | string | No | OAuth client secret from the S/4HANA Communication Arrangement | | `deploymentType` | string | No | Deployment type: cloud\_public (default), cloud\_private, or on\_premise | | `authType` | string | No | Authentication type: oauth\_client\_credentials (default) or basic | | `baseUrl` | string | No | Base URL of the S/4HANA host (Cloud Private / On-Premise) | | `tokenUrl` | string | No | OAuth token URL (Cloud Private / On-Premise + OAuth) | | `username` | string | No | Username for HTTP Basic auth | | `password` | string | No | Password for HTTP Basic auth | | `filter` | string | No | OData $filter expression (e.g., "MaterialDocumentYear eq '2024' and PostingDate ge datetime'2024-01-01T00:00:00'") | | `top` | number | No | Maximum results to return ($top) | | `skip` | number | No | Number of results to skip ($skip) | | `orderBy` | string | No | OData $orderby expression | | `select` | string | No | Comma-separated fields to return ($select) | | `expand` | string | No | Comma-separated navigation properties to expand (e.g., "to\_MaterialDocumentItem") | #### Output [#output-25] | Parameter | Type | Description | | ------------------------------- | ------- | ---------------------------------------------------------------------------------------- | | `status` | number | HTTP status code returned by SAP | | `data` | json | OData payload containing the array of A\_MaterialDocumentHeader entities | | ↳ `MaterialDocumentYear` | string | Material document year (4-digit fiscal year) | | ↳ `MaterialDocument` | string | Material document number | | ↳ `DocumentDate` | string | Document date (OData /Date(...)/ string) | | ↳ `PostingDate` | string | Posting date (OData /Date(...)/ string) | | ↳ `MaterialDocumentHeaderText` | string | Header text describing the material document | | ↳ `ReferenceDocument` | string | Reference document number | | ↳ `GoodsMovementCode` | string | Goods movement code (e.g., 01 GR for PO, 03 GI to cost center) | | ↳ `InventoryTransactionType` | string | Inventory transaction type indicator | | ↳ `CreatedByUser` | string | User who created the material document | | ↳ `CreationDate` | string | Creation date (OData /Date(...)/ string) | | ↳ `CreationTime` | string | Creation time (OData PT...S string) | | ↳ `VersionForPrintingSlip` | string | Version for printing the goods movement slip | | ↳ `ManualPrintIsTriggered` | boolean | Indicates whether manual print was triggered for this document | | ↳ `CtrlPostgForExtWhseMgmtSyst` | string | Control posting for external warehouse management system | | ↳ `to_MaterialDocumentItem` | json | Material document items (only present when $expand=to\_MaterialDocumentItem is supplied) | ### SAP S/4HANA Get Material Document [#sap-s4hana-get-material-document] Retrieve a single material document header by composite key (MaterialDocument + MaterialDocumentYear) from SAP S/4HANA Cloud (API\_MATERIAL\_DOCUMENT\_SRV, A\_MaterialDocumentHeader). #### Input [#input-26] | Parameter | Type | Required | Description | | ---------------------- | ------ | -------- | -------------------------------------------------------------------------------------- | | `subdomain` | string | No | SAP BTP subaccount subdomain (technical name of your subaccount, not the S/4HANA host) | | `region` | string | No | BTP region (e.g. eu10, us10) | | `clientId` | string | No | OAuth client ID from the S/4HANA Communication Arrangement | | `clientSecret` | string | No | OAuth client secret from the S/4HANA Communication Arrangement | | `deploymentType` | string | No | Deployment type: cloud\_public (default), cloud\_private, or on\_premise | | `authType` | string | No | Authentication type: oauth\_client\_credentials (default) or basic | | `baseUrl` | string | No | Base URL of the S/4HANA host (Cloud Private / On-Premise) | | `tokenUrl` | string | No | OAuth token URL (Cloud Private / On-Premise + OAuth) | | `username` | string | No | Username for HTTP Basic auth | | `password` | string | No | Password for HTTP Basic auth | | `materialDocumentYear` | string | Yes | MaterialDocumentYear (4-character year, e.g., "2024") | | `materialDocument` | string | Yes | MaterialDocument key (string, up to 10 characters) | | `select` | string | No | Comma-separated fields to return ($select) | | `expand` | string | No | Comma-separated navigation properties to expand (e.g., "to\_MaterialDocumentItem") | #### Output [#output-26] | Parameter | Type | Description | | ------------------------------- | ------- | --------------------------------------------------------------------------------------------------------------------- | | `status` | number | HTTP status code returned by SAP | | `data` | json | OData payload containing the A\_MaterialDocumentHeader entity (and optionally to\_MaterialDocumentItem when expanded) | | ↳ `MaterialDocumentYear` | string | Material document year (4-digit fiscal year) | | ↳ `MaterialDocument` | string | Material document number | | ↳ `DocumentDate` | string | Document date (OData /Date(...)/ string) | | ↳ `PostingDate` | string | Posting date (OData /Date(...)/ string) | | ↳ `MaterialDocumentHeaderText` | string | Header text describing the material document | | ↳ `ReferenceDocument` | string | Reference document number | | ↳ `GoodsMovementCode` | string | Goods movement code (e.g., 01 GR for PO, 03 GI to cost center) | | ↳ `InventoryTransactionType` | string | Inventory transaction type indicator | | ↳ `CreatedByUser` | string | User who created the material document | | ↳ `CreationDate` | string | Creation date (OData /Date(...)/ string) | | ↳ `CreationTime` | string | Creation time (OData PT...S string) | | ↳ `VersionForPrintingSlip` | string | Version for printing the goods movement slip | | ↳ `ManualPrintIsTriggered` | boolean | Indicates whether manual print was triggered for this document | | ↳ `CtrlPostgForExtWhseMgmtSyst` | string | Control posting for external warehouse management system | | ↳ `to_MaterialDocumentItem` | json | Material document items (only present when $expand=to\_MaterialDocumentItem is supplied) | ### SAP S/4HANA List Purchase Requisitions [#sap-s4hana-list-purchase-requisitions] List purchase requisitions from SAP S/4HANA Cloud (API\_PURCHASEREQ\_PROCESS\_SRV, A\_PurchaseRequisitionHeader) with optional OData $filter, $top, $skip, $orderby, $select, $expand. Note: API\_PURCHASEREQ\_PROCESS\_SRV is deprecated since S/4HANA Cloud Public Edition 2402; the successor is API\_PURCHASEREQUISITION\_2 (OData v4). This tool still works against tenants where the legacy service is enabled. #### Input [#input-27] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | -------------------------------------------------------------------------------------- | | `subdomain` | string | No | SAP BTP subaccount subdomain (technical name of your subaccount, not the S/4HANA host) | | `region` | string | No | BTP region (e.g. eu10, us10) | | `clientId` | string | No | OAuth client ID from the S/4HANA Communication Arrangement | | `clientSecret` | string | No | OAuth client secret from the S/4HANA Communication Arrangement | | `deploymentType` | string | No | Deployment type: cloud\_public (default), cloud\_private, or on\_premise | | `authType` | string | No | Authentication type: oauth\_client\_credentials (default) or basic | | `baseUrl` | string | No | Base URL of the S/4HANA host (Cloud Private / On-Premise) | | `tokenUrl` | string | No | OAuth token URL (Cloud Private / On-Premise + OAuth) | | `username` | string | No | Username for HTTP Basic auth | | `password` | string | No | Password for HTTP Basic auth | | `filter` | string | No | OData $filter expression (e.g., "PurchaseRequisitionType eq 'NB'") | | `top` | number | No | Maximum results to return ($top) | | `skip` | number | No | Number of results to skip ($skip) | | `orderBy` | string | No | OData $orderby expression | | `select` | string | No | Comma-separated fields to return ($select) | | `expand` | string | No | Comma-separated navigation properties to expand (e.g., "to\_PurchaseReqnItem") | #### Output [#output-27] | Parameter | Type | Description | | --------------------------- | ------ | --------------------------------------------------------------- | | `status` | number | HTTP status code returned by SAP | | `data` | json | OData v2 response envelope; collection at output.data.d.results | | ↳ `d` | json | OData v2 envelope | | ↳ `results` | array | A\_PurchaseRequisitionHeader entities | | ↳ `PurchaseRequisition` | string | Purchase requisition number | | ↳ `PurchaseRequisitionType` | string | Purchase requisition document type (e.g., NB) | | ↳ `PurReqnDescription` | string | Purchase requisition description | | ↳ `SourceDetermination` | string | Source-of-supply determination flag | | ↳ `__next` | string | OData skiptoken URL for next page | ### SAP S/4HANA Get Purchase Requisition [#sap-s4hana-get-purchase-requisition] Retrieve a single purchase requisition by PurchaseRequisition key from SAP S/4HANA Cloud (API\_PURCHASEREQ\_PROCESS\_SRV, A\_PurchaseRequisitionHeader). Note: API\_PURCHASEREQ\_PROCESS\_SRV is deprecated since S/4HANA Cloud Public Edition 2402; the successor is API\_PURCHASEREQUISITION\_2 (OData v4). This tool still works against tenants where the legacy service is enabled. #### Input [#input-28] | Parameter | Type | Required | Description | | --------------------- | ------ | -------- | -------------------------------------------------------------------------------------- | | `subdomain` | string | No | SAP BTP subaccount subdomain (technical name of your subaccount, not the S/4HANA host) | | `region` | string | No | BTP region (e.g. eu10, us10) | | `clientId` | string | No | OAuth client ID from the S/4HANA Communication Arrangement | | `clientSecret` | string | No | OAuth client secret from the S/4HANA Communication Arrangement | | `deploymentType` | string | No | Deployment type: cloud\_public (default), cloud\_private, or on\_premise | | `authType` | string | No | Authentication type: oauth\_client\_credentials (default) or basic | | `baseUrl` | string | No | Base URL of the S/4HANA host (Cloud Private / On-Premise) | | `tokenUrl` | string | No | OAuth token URL (Cloud Private / On-Premise + OAuth) | | `username` | string | No | Username for HTTP Basic auth | | `password` | string | No | Password for HTTP Basic auth | | `purchaseRequisition` | string | Yes | PurchaseRequisition key (string, up to 10 characters) | | `select` | string | No | Comma-separated fields to return ($select) | | `expand` | string | No | Comma-separated navigation properties to expand (e.g., "to\_PurchaseReqnItem") | #### Output [#output-28] | Parameter | Type | Description | | --------------------------- | ------ | ----------------------------------------------------- | | `status` | number | HTTP status code returned by SAP | | `data` | json | OData v2 response envelope; entity at output.data.d | | ↳ `d` | json | A\_PurchaseRequisitionHeader entity | | ↳ `PurchaseRequisition` | string | Purchase requisition number | | ↳ `PurchaseRequisitionType` | string | PR document type (e.g., NB) | | ↳ `PurReqnDescription` | string | Purchase requisition description | | ↳ `SourceDetermination` | string | Source-of-supply determination flag | | ↳ `to_PurchaseReqnItem` | json | Expanded PR items (when $expand=to\_PurchaseReqnItem) | ### SAP S/4HANA Create Purchase Requisition [#sap-s4hana-create-purchase-requisition] Create a purchase requisition in SAP S/4HANA Cloud (API\_PURCHASEREQ\_PROCESS\_SRV, A\_PurchaseRequisitionHeader). PurchaseRequisition is auto-assigned by SAP from the document number range; provide line items via the to\_PurchaseReqnItem deep-insert array. Note: API\_PURCHASEREQ\_PROCESS\_SRV is deprecated since S/4HANA Cloud Public Edition 2402; the successor is API\_PURCHASEREQUISITION\_2 (OData v4). This tool still works against tenants where the legacy service is enabled. #### Input [#input-29] | Parameter | Type | Required | Description | | ------------------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `subdomain` | string | No | SAP BTP subaccount subdomain (technical name of your subaccount, not the S/4HANA host) | | `region` | string | No | BTP region (e.g. eu10, us10) | | `clientId` | string | No | OAuth client ID from the S/4HANA Communication Arrangement | | `clientSecret` | string | No | OAuth client secret from the S/4HANA Communication Arrangement | | `deploymentType` | string | No | Deployment type: cloud\_public (default), cloud\_private, or on\_premise | | `authType` | string | No | Authentication type: oauth\_client\_credentials (default) or basic | | `baseUrl` | string | No | Base URL of the S/4HANA host (Cloud Private / On-Premise) | | `tokenUrl` | string | No | OAuth token URL (Cloud Private / On-Premise + OAuth) | | `username` | string | No | Username for HTTP Basic auth | | `password` | string | No | Password for HTTP Basic auth | | `purchaseRequisitionType` | string | Yes | PurchaseRequisitionType (e.g., "NB" Standard PR) | | `items` | json | Yes | to\_PurchaseReqnItem deep-insert array (e.g., \[\{"PurchaseRequisitionItem":"10","Material":"TG11","RequestedQuantity":"5","Plant":"1010","BaseUnit":"PC","DeliveryDate":"/Date(1735689600000)/"}]) | | `body` | json | No | Additional A\_PurchaseRequisitionHeader fields merged into the create payload (e.g., \{"PurReqnDescription":"Office supplies"}) | #### Output [#output-29] | Parameter | Type | Description | | --------------------------- | ------ | ----------------------------------------------------------- | | `status` | number | HTTP status code returned by SAP | | `data` | json | OData v2 response envelope; created entity at output.data.d | | ↳ `d` | json | Created A\_PurchaseRequisitionHeader entity | | ↳ `PurchaseRequisition` | string | Auto-assigned purchase requisition number | | ↳ `PurchaseRequisitionType` | string | PR document type (e.g., NB) | | ↳ `PurReqnDescription` | string | Purchase requisition description | | ↳ `SourceDetermination` | string | Source-of-supply determination flag | | ↳ `to_PurchaseReqnItem` | json | Created PR items returned in deep insert | ### SAP S/4HANA Update Purchase Requisition [#sap-s4hana-update-purchase-requisition] Update fields on an A\_PurchaseRequisitionHeader entity in SAP S/4HANA Cloud (API\_PURCHASEREQ\_PROCESS\_SRV; deprecated since S/4HANA 2402, successor is API\_PURCHASEREQUISITION\_2 OData v4). Uses HTTP MERGE (OData v2 partial update) — only the fields you provide are written; existing values are preserved. Header-only — deep updates across navigations are not supported (SAP KBA 2833338); use the A\_PurchaseReqnItem entity directly to modify items. If-Match defaults to a wildcard - for safe concurrent updates pass the ETag from a prior GET to avoid lost updates. #### Input [#input-30] | Parameter | Type | Required | Description | | --------------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------- | | `subdomain` | string | No | SAP BTP subaccount subdomain (technical name of your subaccount, not the S/4HANA host) | | `region` | string | No | BTP region (e.g. eu10, us10) | | `clientId` | string | No | OAuth client ID from the S/4HANA Communication Arrangement | | `clientSecret` | string | No | OAuth client secret from the S/4HANA Communication Arrangement | | `deploymentType` | string | No | Deployment type: cloud\_public (default), cloud\_private, or on\_premise | | `authType` | string | No | Authentication type: oauth\_client\_credentials (default) or basic | | `baseUrl` | string | No | Base URL of the S/4HANA host (Cloud Private / On-Premise) | | `tokenUrl` | string | No | OAuth token URL (Cloud Private / On-Premise + OAuth) | | `username` | string | No | Username for HTTP Basic auth | | `password` | string | No | Password for HTTP Basic auth | | `purchaseRequisition` | string | Yes | PurchaseRequisition key to update (string, up to 10 characters) | | `body` | json | Yes | JSON object with A\_PurchaseRequisitionHeader fields to update (e.g., \{"PurchaseRequisitionType":"NB"}) | | `ifMatch` | string | No | If-Match ETag for optimistic concurrency. Defaults to "\*" (unconditional). | #### Output [#output-30] | Parameter | Type | Description | | --------------------------- | ------ | ---------------------------------------------------------------------------------------------------- | | `status` | number | HTTP status code returned by SAP (204 on success) | | `data` | json | Null on 204 success, or OData v2 envelope with updated A\_PurchaseRequisitionHeader at output.data.d | | ↳ `d` | json | Updated A\_PurchaseRequisitionHeader entity (if returned) | | ↳ `PurchaseRequisition` | string | Purchase requisition number | | ↳ `PurchaseRequisitionType` | string | PR document type | | ↳ `PurReqnDescription` | string | Purchase requisition description | | ↳ `SourceDetermination` | string | Source-of-supply determination flag | ### SAP S/4HANA List Purchase Orders [#sap-s4hana-list-purchase-orders] List purchase orders from SAP S/4HANA Cloud (API\_PURCHASEORDER\_PROCESS\_SRV, A\_PurchaseOrder) with optional OData $filter, $top, $skip, $orderby, $select, $expand. #### Input [#input-31] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | -------------------------------------------------------------------------------------- | | `subdomain` | string | No | SAP BTP subaccount subdomain (technical name of your subaccount, not the S/4HANA host) | | `region` | string | No | BTP region (e.g. eu10, us10) | | `clientId` | string | No | OAuth client ID from the S/4HANA Communication Arrangement | | `clientSecret` | string | No | OAuth client secret from the S/4HANA Communication Arrangement | | `deploymentType` | string | No | Deployment type: cloud\_public (default), cloud\_private, or on\_premise | | `authType` | string | No | Authentication type: oauth\_client\_credentials (default) or basic | | `baseUrl` | string | No | Base URL of the S/4HANA host (Cloud Private / On-Premise) | | `tokenUrl` | string | No | OAuth token URL (Cloud Private / On-Premise + OAuth) | | `username` | string | No | Username for HTTP Basic auth | | `password` | string | No | Password for HTTP Basic auth | | `filter` | string | No | OData $filter expression (e.g., "CompanyCode eq '1010'") | | `top` | number | No | Maximum results to return ($top) | | `skip` | number | No | Number of results to skip ($skip) | | `orderBy` | string | No | OData $orderby expression | | `select` | string | No | Comma-separated fields to return ($select) | | `expand` | string | No | Comma-separated navigation properties to expand (e.g., "to\_PurchaseOrderItem") | #### Output [#output-31] | Parameter | Type | Description | | -------------------------- | ------ | --------------------------------------------------------------- | | `status` | number | HTTP status code returned by SAP | | `data` | json | OData v2 response envelope; collection at output.data.d.results | | ↳ `d` | json | OData v2 envelope | | ↳ `results` | array | A\_PurchaseOrder entities | | ↳ `PurchaseOrder` | string | Purchase order number | | ↳ `PurchaseOrderType` | string | PO document type (e.g., NB) | | ↳ `CompanyCode` | string | Company code | | ↳ `PurchasingOrganization` | string | Purchasing organization | | ↳ `PurchasingGroup` | string | Purchasing group | | ↳ `Supplier` | string | Supplier business partner key | | ↳ `DocumentCurrency` | string | Document currency | | ↳ `NetAmount` | string | Net amount of the purchase order | | ↳ `CreationDate` | string | Creation date (OData /Date(ms)/) | | ↳ `CreatedByUser` | string | User who created the PO | | ↳ `PurchaseOrderDate` | string | Purchase order date | | ↳ `__next` | string | OData skiptoken URL for next page | | ↳ `__count` | string | Total count when $inlinecount=allpages is used | ### SAP S/4HANA Get Purchase Order [#sap-s4hana-get-purchase-order] Retrieve a single purchase order by PurchaseOrder key from SAP S/4HANA Cloud (API\_PURCHASEORDER\_PROCESS\_SRV, A\_PurchaseOrder). #### Input [#input-32] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | -------------------------------------------------------------------------------------- | | `subdomain` | string | No | SAP BTP subaccount subdomain (technical name of your subaccount, not the S/4HANA host) | | `region` | string | No | BTP region (e.g. eu10, us10) | | `clientId` | string | No | OAuth client ID from the S/4HANA Communication Arrangement | | `clientSecret` | string | No | OAuth client secret from the S/4HANA Communication Arrangement | | `deploymentType` | string | No | Deployment type: cloud\_public (default), cloud\_private, or on\_premise | | `authType` | string | No | Authentication type: oauth\_client\_credentials (default) or basic | | `baseUrl` | string | No | Base URL of the S/4HANA host (Cloud Private / On-Premise) | | `tokenUrl` | string | No | OAuth token URL (Cloud Private / On-Premise + OAuth) | | `username` | string | No | Username for HTTP Basic auth | | `password` | string | No | Password for HTTP Basic auth | | `purchaseOrder` | string | Yes | PurchaseOrder key (string, up to 10 characters) | | `select` | string | No | Comma-separated fields to return ($select) | | `expand` | string | No | Comma-separated navigation properties to expand (e.g., "to\_PurchaseOrderItem") | #### Output [#output-32] | Parameter | Type | Description | | --------------------------- | ------ | ------------------------------------------------------ | | `status` | number | HTTP status code returned by SAP | | `data` | json | OData v2 response envelope; entity at output.data.d | | ↳ `d` | json | A\_PurchaseOrder entity | | ↳ `PurchaseOrder` | string | Purchase order number | | ↳ `PurchaseOrderType` | string | PO document type | | ↳ `CompanyCode` | string | Company code | | ↳ `PurchasingOrganization` | string | Purchasing organization | | ↳ `PurchasingGroup` | string | Purchasing group | | ↳ `Supplier` | string | Supplier business partner key | | ↳ `DocumentCurrency` | string | Document currency | | ↳ `NetAmount` | string | Net amount of the purchase order | | ↳ `CreationDate` | string | Creation date (OData /Date(ms)/) | | ↳ `CreatedByUser` | string | User who created the PO | | ↳ `PurchaseOrderDate` | string | Purchase order date | | ↳ `ValidityStartDate` | string | Validity start date | | ↳ `ValidityEndDate` | string | Validity end date | | ↳ `IncotermsClassification` | string | Incoterms classification (e.g., FOB) | | ↳ `PaymentTerms` | string | Payment terms key | | ↳ `LastChangeDateTime` | string | Last change timestamp (OData /Date(ms)/) | | ↳ `to_PurchaseOrderItem` | json | Expanded PO items (when $expand=to\_PurchaseOrderItem) | ### SAP S/4HANA Create Purchase Order [#sap-s4hana-create-purchase-order] Create a purchase order in SAP S/4HANA Cloud (API\_PURCHASEORDER\_PROCESS\_SRV, A\_PurchaseOrder). PurchaseOrder is auto-assigned by SAP from the document number range; provide line items via the body parameter. #### Input [#input-33] | Parameter | Type | Required | Description | | ------------------------ | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `subdomain` | string | No | SAP BTP subaccount subdomain (technical name of your subaccount, not the S/4HANA host) | | `region` | string | No | BTP region (e.g. eu10, us10) | | `clientId` | string | No | OAuth client ID from the S/4HANA Communication Arrangement | | `clientSecret` | string | No | OAuth client secret from the S/4HANA Communication Arrangement | | `deploymentType` | string | No | Deployment type: cloud\_public (default), cloud\_private, or on\_premise | | `authType` | string | No | Authentication type: oauth\_client\_credentials (default) or basic | | `baseUrl` | string | No | Base URL of the S/4HANA host (Cloud Private / On-Premise) | | `tokenUrl` | string | No | OAuth token URL (Cloud Private / On-Premise + OAuth) | | `username` | string | No | Username for HTTP Basic auth | | `password` | string | No | Password for HTTP Basic auth | | `purchaseOrderType` | string | Yes | PurchaseOrderType (e.g., "NB" Standard PO) | | `companyCode` | string | Yes | CompanyCode (4 chars, e.g., "1010") | | `purchasingOrganization` | string | Yes | PurchasingOrganization (4 chars) | | `purchasingGroup` | string | Yes | PurchasingGroup (3 chars) | | `supplier` | string | Yes | Supplier business partner key (up to 10 chars) | | `body` | json | Yes | A\_PurchaseOrder body containing to\_PurchaseOrderItem deep-insert items (required by SAP) plus any additional header fields, e.g., \{"to\_PurchaseOrderItem":\[\{"PurchaseOrderItem":"10","Material":"TG11","OrderQuantity":"5","Plant":"1010","PurchaseOrderQuantityUnit":"PC","NetPriceAmount":"100.00","DocumentCurrency":"USD"}]}. | #### Output [#output-33] | Parameter | Type | Description | | -------------------------- | ------ | ----------------------------------------------------------- | | `status` | number | HTTP status code returned by SAP | | `data` | json | OData v2 response envelope; created entity at output.data.d | | ↳ `d` | json | Created A\_PurchaseOrder entity | | ↳ `PurchaseOrder` | string | Auto-assigned purchase order number | | ↳ `PurchaseOrderType` | string | PO document type | | ↳ `CompanyCode` | string | Company code | | ↳ `PurchasingOrganization` | string | Purchasing organization | | ↳ `PurchasingGroup` | string | Purchasing group | | ↳ `Supplier` | string | Supplier business partner key | | ↳ `DocumentCurrency` | string | Document currency | | ↳ `NetAmount` | string | Net amount of the purchase order | | ↳ `CreationDate` | string | Creation date (OData /Date(ms)/) | | ↳ `to_PurchaseOrderItem` | json | Created PO items returned in deep insert | ### SAP S/4HANA Update Purchase Order [#sap-s4hana-update-purchase-order] Update fields on an A\_PurchaseOrder header in SAP S/4HANA Cloud (API\_PURCHASEORDER\_PROCESS\_SRV). Uses HTTP MERGE (OData v2 partial update) — only the fields you provide are written; existing values are preserved. Header-only — line-item changes are not supported via deep update on the header (SAP KBA 2833338); use the A\_PurchaseOrderItem entity directly to modify items. If-Match defaults to a wildcard - for safe concurrent updates pass the ETag from a prior GET to avoid lost updates. #### Input [#input-34] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------- | | `subdomain` | string | No | SAP BTP subaccount subdomain (technical name of your subaccount, not the S/4HANA host) | | `region` | string | No | BTP region (e.g. eu10, us10) | | `clientId` | string | No | OAuth client ID from the S/4HANA Communication Arrangement | | `clientSecret` | string | No | OAuth client secret from the S/4HANA Communication Arrangement | | `deploymentType` | string | No | Deployment type: cloud\_public (default), cloud\_private, or on\_premise | | `authType` | string | No | Authentication type: oauth\_client\_credentials (default) or basic | | `baseUrl` | string | No | Base URL of the S/4HANA host (Cloud Private / On-Premise) | | `tokenUrl` | string | No | OAuth token URL (Cloud Private / On-Premise + OAuth) | | `username` | string | No | Username for HTTP Basic auth | | `password` | string | No | Password for HTTP Basic auth | | `purchaseOrder` | string | Yes | PurchaseOrder key to update (string, up to 10 characters) | | `body` | json | Yes | JSON object with A\_PurchaseOrder fields to update (e.g., \{"PurchasingGroup":"002","PurchaseOrderDate":"/Date(1735689600000)/"}) | | `ifMatch` | string | No | If-Match ETag for optimistic concurrency. Defaults to "\*" (unconditional). | #### Output [#output-34] | Parameter | Type | Description | | ---------------------- | ------ | ---------------------------------------------------------------------------------------- | | `status` | number | HTTP status code returned by SAP (204 on success) | | `data` | json | Null on 204 success, or OData v2 envelope with updated A\_PurchaseOrder at output.data.d | | ↳ `d` | json | Updated A\_PurchaseOrder entity (if returned) | | ↳ `PurchaseOrder` | string | Purchase order number | | ↳ `PurchaseOrderType` | string | PO document type | | ↳ `CompanyCode` | string | Company code | | ↳ `PurchasingGroup` | string | Purchasing group | | ↳ `Supplier` | string | Supplier key | | ↳ `NetAmount` | string | Net amount | | ↳ `DocumentCurrency` | string | Document currency | | ↳ `LastChangeDateTime` | string | Last change timestamp | ### SAP S/4HANA List Supplier Invoices [#sap-s4hana-list-supplier-invoices] List supplier invoices from SAP S/4HANA Cloud (API\_SUPPLIERINVOICE\_PROCESS\_SRV, A\_SupplierInvoice) with optional OData $filter, $top, $skip, $orderby, $select, $expand. #### Input [#input-35] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | -------------------------------------------------------------------------------------- | | `subdomain` | string | No | SAP BTP subaccount subdomain (technical name of your subaccount, not the S/4HANA host) | | `region` | string | No | BTP region (e.g. eu10, us10) | | `clientId` | string | No | OAuth client ID from the S/4HANA Communication Arrangement | | `clientSecret` | string | No | OAuth client secret from the S/4HANA Communication Arrangement | | `deploymentType` | string | No | Deployment type: cloud\_public (default), cloud\_private, or on\_premise | | `authType` | string | No | Authentication type: oauth\_client\_credentials (default) or basic | | `baseUrl` | string | No | Base URL of the S/4HANA host (Cloud Private / On-Premise) | | `tokenUrl` | string | No | OAuth token URL (Cloud Private / On-Premise + OAuth) | | `username` | string | No | Username for HTTP Basic auth | | `password` | string | No | Password for HTTP Basic auth | | `filter` | string | No | OData $filter expression (e.g., "InvoicingParty eq '17300001'") | | `top` | number | No | Maximum results to return ($top) | | `skip` | number | No | Number of results to skip ($skip) | | `orderBy` | string | No | OData $orderby expression | | `select` | string | No | Comma-separated fields to return ($select) | | `expand` | string | No | Comma-separated navigation properties to expand ($expand) | #### Output [#output-35] | Parameter | Type | Description | | --------------------------------- | ------- | --------------------------------------------------------------- | | `status` | number | HTTP status code returned by SAP | | `data` | json | OData v2 response envelope; collection at output.data.d.results | | ↳ `d` | json | OData v2 envelope | | ↳ `results` | array | A\_SupplierInvoice entities | | ↳ `SupplierInvoice` | string | Supplier invoice number | | ↳ `FiscalYear` | string | Fiscal year | | ↳ `CompanyCode` | string | Company code | | ↳ `DocumentDate` | string | Invoice document date | | ↳ `PostingDate` | string | Posting date | | ↳ `InvoicingParty` | string | Invoicing party (supplier key) | | ↳ `InvoiceGrossAmount` | string | Gross invoice amount | | ↳ `DocumentCurrency` | string | Document currency | | ↳ `AccountingDocumentType` | string | Accounting document type | | ↳ `PaymentTerms` | string | Payment terms key | | ↳ `DueCalculationBaseDate` | string | Baseline date for due-date calculation | | ↳ `SupplierInvoiceIDByInvcgParty` | string | Reference number used by the invoicing party | | ↳ `PaymentMethod` | string | Payment method | | ↳ `TaxIsCalculatedAutomatically` | boolean | Whether tax is calculated automatically | | ↳ `ManualCashDiscount` | string | Manually entered cash discount amount | | ↳ `BusinessPlace` | string | Business place (jurisdiction code) | | ↳ `__next` | string | OData skiptoken URL for next page | ### SAP S/4HANA Get Supplier Invoice [#sap-s4hana-get-supplier-invoice] Retrieve a single supplier invoice by composite key (SupplierInvoice + FiscalYear) from SAP S/4HANA Cloud (API\_SUPPLIERINVOICE\_PROCESS\_SRV, A\_SupplierInvoice). #### Input [#input-36] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | -------------------------------------------------------------------------------------- | | `subdomain` | string | No | SAP BTP subaccount subdomain (technical name of your subaccount, not the S/4HANA host) | | `region` | string | No | BTP region (e.g. eu10, us10) | | `clientId` | string | No | OAuth client ID from the S/4HANA Communication Arrangement | | `clientSecret` | string | No | OAuth client secret from the S/4HANA Communication Arrangement | | `deploymentType` | string | No | Deployment type: cloud\_public (default), cloud\_private, or on\_premise | | `authType` | string | No | Authentication type: oauth\_client\_credentials (default) or basic | | `baseUrl` | string | No | Base URL of the S/4HANA host (Cloud Private / On-Premise) | | `tokenUrl` | string | No | OAuth token URL (Cloud Private / On-Premise + OAuth) | | `username` | string | No | Username for HTTP Basic auth | | `password` | string | No | Password for HTTP Basic auth | | `supplierInvoice` | string | Yes | SupplierInvoice key (string, up to 10 characters) | | `fiscalYear` | string | Yes | FiscalYear (4-character year, e.g., "2024") | | `select` | string | No | Comma-separated fields to return ($select) | | `expand` | string | No | Comma-separated navigation properties to expand ($expand) | #### Output [#output-36] | Parameter | Type | Description | | --------------------------------- | ------- | --------------------------------------------------- | | `status` | number | HTTP status code returned by SAP | | `data` | json | OData v2 response envelope; entity at output.data.d | | ↳ `d` | json | A\_SupplierInvoice entity | | ↳ `SupplierInvoice` | string | Supplier invoice number | | ↳ `FiscalYear` | string | Fiscal year | | ↳ `CompanyCode` | string | Company code | | ↳ `DocumentDate` | string | Invoice document date | | ↳ `PostingDate` | string | Posting date | | ↳ `InvoicingParty` | string | Invoicing party (supplier key) | | ↳ `InvoiceGrossAmount` | string | Gross invoice amount | | ↳ `DocumentCurrency` | string | Document currency | | ↳ `AccountingDocumentType` | string | Accounting document type | | ↳ `PaymentTerms` | string | Payment terms key | | ↳ `DueCalculationBaseDate` | string | Baseline date for due-date calculation | | ↳ `SupplierInvoiceIDByInvcgParty` | string | Reference number used by the invoicing party | | ↳ `PaymentMethod` | string | Payment method | | ↳ `TaxIsCalculatedAutomatically` | boolean | Whether tax is calculated automatically | | ↳ `ManualCashDiscount` | string | Manually entered cash discount amount | | ↳ `BusinessPlace` | string | Business place (jurisdiction code) | ### SAP S/4HANA OData Query [#sap-s4hana-odata-query] Make an arbitrary OData v2 call against any SAP S/4HANA Cloud whitelisted Communication Scenario. Use when no dedicated tool exists for the entity. The integration handles auth, CSRF, and OData unwrapping. For write operations (POST/PUT/PATCH/MERGE/DELETE), pass an If-Match ETag obtained from a prior GET to avoid lost updates; misuse will mutate production data. #### Input [#input-37] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `subdomain` | string | No | SAP BTP subaccount subdomain (technical name of your subaccount, not the S/4HANA host) | | `region` | string | No | BTP region (e.g. eu10, us10) | | `clientId` | string | No | OAuth client ID from the S/4HANA Communication Arrangement | | `clientSecret` | string | No | OAuth client secret from the S/4HANA Communication Arrangement | | `deploymentType` | string | No | Deployment type: cloud\_public (default), cloud\_private, or on\_premise | | `authType` | string | No | Authentication type: oauth\_client\_credentials (default) or basic | | `baseUrl` | string | No | Base URL of the S/4HANA host (Cloud Private / On-Premise) | | `tokenUrl` | string | No | OAuth token URL (Cloud Private / On-Premise + OAuth) | | `username` | string | No | Username for HTTP Basic auth | | `password` | string | No | Password for HTTP Basic auth | | `service` | string | Yes | OData service name (e.g., "API\_BUSINESS\_PARTNER", "API\_SALES\_ORDER\_SRV") | | `path` | string | Yes | Path inside the service (e.g., "/A\_BusinessPartner" or "/A\_BusinessPartner('1000123')") | | `method` | string | No | HTTP method: GET (default), POST, PATCH, PUT, DELETE, MERGE | | `query` | json | No | OData query parameters as JSON object or query string (e.g., \{"$filter":"BusinessPartnerCategory eq '1'","$top":10}). $format=json is added automatically when omitted. | | `body` | json | No | JSON request body for write operations | | `ifMatch` | string | No | ETag value for the If-Match header (required by SAP for PATCH/PUT/DELETE on existing entities) | #### Output [#output-37] | Parameter | Type | Description | | --------- | ------ | --------------------------------------------------------- | | `status` | number | HTTP status code returned by SAP | | `data` | json | Parsed OData payload (entity, collection, or null on 204) | --- # Snowflake (/en/integrations/snowflake) {/* MANUAL-CONTENT-START:intro */} [Snowflake](https://www.snowflake.com/) stores data in databases and schemas and uses virtual warehouses to run queries. Studio connects over the SQL API with a programmatic access token. Use the block to execute SQL, synchronize rows, move staged data, manage warehouses and tasks, and inspect history. To unload a query result, first materialize it as a view or with `CREATE TABLE AS SELECT`. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Connect with a Snowflake programmatic access token to execute SQL, synchronize structured rows, load and unload staged data, browse databases and schemas, size and control warehouses, run and schedule tasks, review query and load history, inspect schemas, and call stored procedures. ## Actions [#actions] ### Snowflake Execute SQL [#snowflake-execute-sql] Execute one parameterized SQL statement through the Snowflake SQL API. #### Input [#input] | Parameter | Type | Required | Description | | ------------------------- | ------- | -------- | ----------------------------------------------------------------------------- | | `oauthCredential` | string | Yes | Snowflake credential (account host and programmatic access token) | | `role` | string | No | Snowflake role to use for this statement | | `statementTimeoutSeconds` | number | No | Statement timeout in seconds; 0 uses Snowflake maximum of 604800 seconds | | `warehouse` | string | No | Warehouse to use for this statement; defaults to the PAT user setting | | `maxRows` | number | No | Maximum result rows; defaults to 1000 with a Studio safety limit of 10000 | | `database` | string | No | Database context for this statement | | `schema` | string | No | Schema context for this statement | | `statement` | string | Yes | One Snowflake SQL statement to execute | | `bindings` | json | No | Snowflake bindings keyed by 1-based position, each with type and string value | | `async` | boolean | No | Return immediately with a statement handle | #### Output [#output] | Parameter | Type | Description | | ------------------------ | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `statementHandle` | string | Snowflake statement handle | | `status` | string | Statement status: SUCCEEDED, RUNNING, or CANCELED | | `message` | string | Snowflake response message | | `result` | object | Completed result partition, or null while running or when no result is available | | ↳ `columns` | array | Documented Snowflake result column metadata, or null when Snowflake returned a metadata-less partition response | | ↳ `name` | string | Column name | | ↳ `type` | string | Snowflake data type | | ↳ `length` | number | Column length | | ↳ `precision` | number | Numeric precision | | ↳ `scale` | number | Numeric scale | | ↳ `nullable` | boolean | Whether the column is nullable | | ↳ `rows` | array | One complete Snowflake result partition as string or null arrays | | ↳ `totalRows` | number | Total result rows | | ↳ `currentPartition` | number | Zero-based partition returned | | ↳ `partitionCount` | number | Total partitions in the result set. Snowflake reports this only on the first partition, so pass it back to Get Statement when fetching later partitions | | ↳ `nextPartition` | number | Next partition to request with Get Statement, if one exists | | ↳ `truncated` | boolean | Whether more result partitions remain to fetch with Get Statement, or null when Snowflake returned a metadata-less partition response and partitionCount was not supplied. Snowflake does not report when the requested row limit capped the result set, so that cap is never reflected here | | `dml` | object | Completed DML statistics, or null when the statement has no DML statistics | | ↳ `rowsInserted` | number | Rows inserted by the statement | | ↳ `rowsUpdated` | number | Rows updated by the statement | | ↳ `rowsDeleted` | number | Rows deleted by the statement | | ↳ `duplicateRowsUpdated` | number | Duplicate rows updated by the statement | | ↳ `rowsAffected` | number | Total inserted, updated, and deleted rows | ### Snowflake Get Statement [#snowflake-get-statement] Check a running or completed statement and retrieve exactly one result partition. Canceled or failed statements are returned as errors. #### Input [#input-1] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `oauthCredential` | string | Yes | Snowflake credential (account host and programmatic access token) | | `statementHandle` | string | Yes | Statement handle returned by Snowflake | | `partition` | number | No | Zero-based result partition to retrieve; defaults to 0 | | `partitionCount` | number | No | Total number of result partitions, taken from the partitionCount of the first partition. Snowflake omits metadata from every later partition response, so supply this when fetching partition 1 or higher to keep truncated and nextPartition accurate | #### Output [#output-1] | Parameter | Type | Description | | ------------------------ | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `statementHandle` | string | Snowflake statement handle | | `status` | string | Statement status: SUCCEEDED, RUNNING, or CANCELED | | `message` | string | Snowflake response message | | `result` | object | Completed result partition, or null while running or when no result is available | | ↳ `columns` | array | Documented Snowflake result column metadata, or null when Snowflake returned a metadata-less partition response | | ↳ `name` | string | Column name | | ↳ `type` | string | Snowflake data type | | ↳ `length` | number | Column length | | ↳ `precision` | number | Numeric precision | | ↳ `scale` | number | Numeric scale | | ↳ `nullable` | boolean | Whether the column is nullable | | ↳ `rows` | array | One complete Snowflake result partition as string or null arrays | | ↳ `totalRows` | number | Total result rows | | ↳ `currentPartition` | number | Zero-based partition returned | | ↳ `partitionCount` | number | Total partitions in the result set. Snowflake reports this only on the first partition, so pass it back to Get Statement when fetching later partitions | | ↳ `nextPartition` | number | Next partition to request with Get Statement, if one exists | | ↳ `truncated` | boolean | Whether more result partitions remain to fetch with Get Statement, or null when Snowflake returned a metadata-less partition response and partitionCount was not supplied. Snowflake does not report when the requested row limit capped the result set, so that cap is never reflected here | | `dml` | object | Completed DML statistics, or null when the statement has no DML statistics | | ↳ `rowsInserted` | number | Rows inserted by the statement | | ↳ `rowsUpdated` | number | Rows updated by the statement | | ↳ `rowsDeleted` | number | Rows deleted by the statement | | ↳ `duplicateRowsUpdated` | number | Duplicate rows updated by the statement | | ↳ `rowsAffected` | number | Total inserted, updated, and deleted rows | ### Snowflake Cancel Statement [#snowflake-cancel-statement] Cancel a running Snowflake SQL API statement. #### Input [#input-2] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ----------------------------------------------------------------- | | `oauthCredential` | string | Yes | Snowflake credential (account host and programmatic access token) | | `statementHandle` | string | Yes | Statement handle returned by Snowflake | #### Output [#output-2] | Parameter | Type | Description | | ------------------------ | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `statementHandle` | string | Snowflake statement handle | | `status` | string | Statement status: SUCCEEDED, RUNNING, or CANCELED | | `message` | string | Snowflake response message | | `result` | object | Completed result partition, or null while running or when no result is available | | ↳ `columns` | array | Documented Snowflake result column metadata, or null when Snowflake returned a metadata-less partition response | | ↳ `name` | string | Column name | | ↳ `type` | string | Snowflake data type | | ↳ `length` | number | Column length | | ↳ `precision` | number | Numeric precision | | ↳ `scale` | number | Numeric scale | | ↳ `nullable` | boolean | Whether the column is nullable | | ↳ `rows` | array | One complete Snowflake result partition as string or null arrays | | ↳ `totalRows` | number | Total result rows | | ↳ `currentPartition` | number | Zero-based partition returned | | ↳ `partitionCount` | number | Total partitions in the result set. Snowflake reports this only on the first partition, so pass it back to Get Statement when fetching later partitions | | ↳ `nextPartition` | number | Next partition to request with Get Statement, if one exists | | ↳ `truncated` | boolean | Whether more result partitions remain to fetch with Get Statement, or null when Snowflake returned a metadata-less partition response and partitionCount was not supplied. Snowflake does not report when the requested row limit capped the result set, so that cap is never reflected here | | `dml` | object | Completed DML statistics, or null when the statement has no DML statistics | | ↳ `rowsInserted` | number | Rows inserted by the statement | | ↳ `rowsUpdated` | number | Rows updated by the statement | | ↳ `rowsDeleted` | number | Rows deleted by the statement | | ↳ `duplicateRowsUpdated` | number | Duplicate rows updated by the statement | | ↳ `rowsAffected` | number | Total inserted, updated, and deleted rows | ### Snowflake Insert Rows [#snowflake-insert-rows] Insert structured JSON rows using bound values. #### Input [#input-3] | Parameter | Type | Required | Description | | ------------------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------ | | `oauthCredential` | string | Yes | Snowflake credential (account host and programmatic access token) | | `role` | string | No | Snowflake role to use for this statement | | `statementTimeoutSeconds` | number | No | Statement timeout in seconds; 0 uses Snowflake maximum of 604800 seconds | | `warehouse` | string | No | Warehouse to use for this statement; defaults to the PAT user setting | | `database` | string | Yes | Database name | | `schema` | string | Yes | Schema name | | `table` | string | Yes | Target Snowflake table name within the selected database and schema context | | `rows` | json | Yes | Non-empty JSON array of row objects with matching keys. For bulk loads, stage the files and use Load Data instead. | #### Output [#output-3] | Parameter | Type | Description | | ------------------------ | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `statementHandle` | string | Snowflake statement handle | | `status` | string | Statement status: SUCCEEDED, RUNNING, or CANCELED | | `message` | string | Snowflake response message | | `result` | object | Completed result partition, or null while running or when no result is available | | ↳ `columns` | array | Documented Snowflake result column metadata, or null when Snowflake returned a metadata-less partition response | | ↳ `name` | string | Column name | | ↳ `type` | string | Snowflake data type | | ↳ `length` | number | Column length | | ↳ `precision` | number | Numeric precision | | ↳ `scale` | number | Numeric scale | | ↳ `nullable` | boolean | Whether the column is nullable | | ↳ `rows` | array | One complete Snowflake result partition as string or null arrays | | ↳ `totalRows` | number | Total result rows | | ↳ `currentPartition` | number | Zero-based partition returned | | ↳ `partitionCount` | number | Total partitions in the result set. Snowflake reports this only on the first partition, so pass it back to Get Statement when fetching later partitions | | ↳ `nextPartition` | number | Next partition to request with Get Statement, if one exists | | ↳ `truncated` | boolean | Whether more result partitions remain to fetch with Get Statement, or null when Snowflake returned a metadata-less partition response and partitionCount was not supplied. Snowflake does not report when the requested row limit capped the result set, so that cap is never reflected here | | `dml` | object | Completed DML statistics, or null when the statement has no DML statistics | | ↳ `rowsInserted` | number | Rows inserted by the statement | | ↳ `rowsUpdated` | number | Rows updated by the statement | | ↳ `rowsDeleted` | number | Rows deleted by the statement | | ↳ `duplicateRowsUpdated` | number | Duplicate rows updated by the statement | | ↳ `rowsAffected` | number | Total inserted, updated, and deleted rows | ### Snowflake Update Rows [#snowflake-update-rows] Update matching rows with a bound MERGE statement without inserting new rows. #### Input [#input-4] | Parameter | Type | Required | Description | | ------------------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------ | | `oauthCredential` | string | Yes | Snowflake credential (account host and programmatic access token) | | `role` | string | No | Snowflake role to use for this statement | | `statementTimeoutSeconds` | number | No | Statement timeout in seconds; 0 uses Snowflake maximum of 604800 seconds | | `warehouse` | string | No | Warehouse to use for this statement; defaults to the PAT user setting | | `database` | string | Yes | Database name | | `schema` | string | Yes | Schema name | | `table` | string | Yes | Target Snowflake table name within the selected database and schema context | | `rows` | json | Yes | Non-empty JSON array of row objects with matching keys. For bulk loads, stage the files and use Load Data instead. | | `matchColumns` | array | Yes | Columns used to match target rows. Match values must be non-null and unique across the submitted rows. | #### Output [#output-4] | Parameter | Type | Description | | ------------------------ | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `statementHandle` | string | Snowflake statement handle | | `status` | string | Statement status: SUCCEEDED, RUNNING, or CANCELED | | `message` | string | Snowflake response message | | `result` | object | Completed result partition, or null while running or when no result is available | | ↳ `columns` | array | Documented Snowflake result column metadata, or null when Snowflake returned a metadata-less partition response | | ↳ `name` | string | Column name | | ↳ `type` | string | Snowflake data type | | ↳ `length` | number | Column length | | ↳ `precision` | number | Numeric precision | | ↳ `scale` | number | Numeric scale | | ↳ `nullable` | boolean | Whether the column is nullable | | ↳ `rows` | array | One complete Snowflake result partition as string or null arrays | | ↳ `totalRows` | number | Total result rows | | ↳ `currentPartition` | number | Zero-based partition returned | | ↳ `partitionCount` | number | Total partitions in the result set. Snowflake reports this only on the first partition, so pass it back to Get Statement when fetching later partitions | | ↳ `nextPartition` | number | Next partition to request with Get Statement, if one exists | | ↳ `truncated` | boolean | Whether more result partitions remain to fetch with Get Statement, or null when Snowflake returned a metadata-less partition response and partitionCount was not supplied. Snowflake does not report when the requested row limit capped the result set, so that cap is never reflected here | | `dml` | object | Completed DML statistics, or null when the statement has no DML statistics | | ↳ `rowsInserted` | number | Rows inserted by the statement | | ↳ `rowsUpdated` | number | Rows updated by the statement | | ↳ `rowsDeleted` | number | Rows deleted by the statement | | ↳ `duplicateRowsUpdated` | number | Duplicate rows updated by the statement | | ↳ `rowsAffected` | number | Total inserted, updated, and deleted rows | ### Snowflake Upsert Rows [#snowflake-upsert-rows] Update matching rows and insert unmatched rows with a bound MERGE statement. #### Input [#input-5] | Parameter | Type | Required | Description | | ------------------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------ | | `oauthCredential` | string | Yes | Snowflake credential (account host and programmatic access token) | | `role` | string | No | Snowflake role to use for this statement | | `statementTimeoutSeconds` | number | No | Statement timeout in seconds; 0 uses Snowflake maximum of 604800 seconds | | `warehouse` | string | No | Warehouse to use for this statement; defaults to the PAT user setting | | `database` | string | Yes | Database name | | `schema` | string | Yes | Schema name | | `table` | string | Yes | Target Snowflake table name within the selected database and schema context | | `rows` | json | Yes | Non-empty JSON array of row objects with matching keys. For bulk loads, stage the files and use Load Data instead. | | `matchColumns` | array | Yes | Columns used to match target rows. Match values must be non-null and unique across the submitted rows. | #### Output [#output-5] | Parameter | Type | Description | | ------------------------ | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `statementHandle` | string | Snowflake statement handle | | `status` | string | Statement status: SUCCEEDED, RUNNING, or CANCELED | | `message` | string | Snowflake response message | | `result` | object | Completed result partition, or null while running or when no result is available | | ↳ `columns` | array | Documented Snowflake result column metadata, or null when Snowflake returned a metadata-less partition response | | ↳ `name` | string | Column name | | ↳ `type` | string | Snowflake data type | | ↳ `length` | number | Column length | | ↳ `precision` | number | Numeric precision | | ↳ `scale` | number | Numeric scale | | ↳ `nullable` | boolean | Whether the column is nullable | | ↳ `rows` | array | One complete Snowflake result partition as string or null arrays | | ↳ `totalRows` | number | Total result rows | | ↳ `currentPartition` | number | Zero-based partition returned | | ↳ `partitionCount` | number | Total partitions in the result set. Snowflake reports this only on the first partition, so pass it back to Get Statement when fetching later partitions | | ↳ `nextPartition` | number | Next partition to request with Get Statement, if one exists | | ↳ `truncated` | boolean | Whether more result partitions remain to fetch with Get Statement, or null when Snowflake returned a metadata-less partition response and partitionCount was not supplied. Snowflake does not report when the requested row limit capped the result set, so that cap is never reflected here | | `dml` | object | Completed DML statistics, or null when the statement has no DML statistics | | ↳ `rowsInserted` | number | Rows inserted by the statement | | ↳ `rowsUpdated` | number | Rows updated by the statement | | ↳ `rowsDeleted` | number | Rows deleted by the statement | | ↳ `duplicateRowsUpdated` | number | Duplicate rows updated by the statement | | ↳ `rowsAffected` | number | Total inserted, updated, and deleted rows | ### Snowflake Delete Rows [#snowflake-delete-rows] Delete rows matching a required set of bound column filters. #### Input [#input-6] | Parameter | Type | Required | Description | | ------------------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `oauthCredential` | string | Yes | Snowflake credential (account host and programmatic access token) | | `role` | string | No | Snowflake role to use for this statement | | `statementTimeoutSeconds` | number | No | Statement timeout in seconds; 0 uses Snowflake maximum of 604800 seconds | | `warehouse` | string | No | Warehouse to use for this statement; defaults to the PAT user setting | | `database` | string | Yes | Database name | | `schema` | string | Yes | Schema name | | `table` | string | Yes | Target Snowflake table name within the selected database and schema context | | `filters` | json | Yes | Non-empty JSON object of column filters combined with AND. A null value matches rows where that column IS NULL; every other value is compared for equality against a bound parameter. | #### Output [#output-6] | Parameter | Type | Description | | ------------------------ | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `statementHandle` | string | Snowflake statement handle | | `status` | string | Statement status: SUCCEEDED, RUNNING, or CANCELED | | `message` | string | Snowflake response message | | `result` | object | Completed result partition, or null while running or when no result is available | | ↳ `columns` | array | Documented Snowflake result column metadata, or null when Snowflake returned a metadata-less partition response | | ↳ `name` | string | Column name | | ↳ `type` | string | Snowflake data type | | ↳ `length` | number | Column length | | ↳ `precision` | number | Numeric precision | | ↳ `scale` | number | Numeric scale | | ↳ `nullable` | boolean | Whether the column is nullable | | ↳ `rows` | array | One complete Snowflake result partition as string or null arrays | | ↳ `totalRows` | number | Total result rows | | ↳ `currentPartition` | number | Zero-based partition returned | | ↳ `partitionCount` | number | Total partitions in the result set. Snowflake reports this only on the first partition, so pass it back to Get Statement when fetching later partitions | | ↳ `nextPartition` | number | Next partition to request with Get Statement, if one exists | | ↳ `truncated` | boolean | Whether more result partitions remain to fetch with Get Statement, or null when Snowflake returned a metadata-less partition response and partitionCount was not supplied. Snowflake does not report when the requested row limit capped the result set, so that cap is never reflected here | | `dml` | object | Completed DML statistics, or null when the statement has no DML statistics | | ↳ `rowsInserted` | number | Rows inserted by the statement | | ↳ `rowsUpdated` | number | Rows updated by the statement | | ↳ `rowsDeleted` | number | Rows deleted by the statement | | ↳ `duplicateRowsUpdated` | number | Duplicate rows updated by the statement | | ↳ `rowsAffected` | number | Total inserted, updated, and deleted rows | ### Snowflake Load Data [#snowflake-load-data] Load files from an existing Snowflake stage with COPY INTO. #### Input [#input-7] | Parameter | Type | Required | Description | | ------------------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------- | | `oauthCredential` | string | Yes | Snowflake credential (account host and programmatic access token) | | `role` | string | No | Snowflake role to use for this statement | | `statementTimeoutSeconds` | number | No | Statement timeout in seconds; 0 uses Snowflake maximum of 604800 seconds | | `warehouse` | string | No | Warehouse to use for this statement; defaults to the PAT user setting | | `maxRows` | number | No | Maximum result rows; defaults to 1000 with a Studio safety limit of 10000 | | `database` | string | Yes | Target database name | | `schema` | string | Yes | Target schema name | | `table` | string | Yes | Target table name | | `stagePath` | string | Yes | Existing stage path, for example @my\_stage/path | | `fileFormat` | string | No | Optional named file format | | `pattern` | string | No | Optional regular expression used to select staged files | | `onError` | string | No | COPY error handling: ABORT\_STATEMENT, CONTINUE, SKIP\_FILE, SKIP\_FILE\_\, or SKIP\_FILE\_\% | | `purge` | boolean | No | Remove successfully loaded files from the stage | | `force` | boolean | No | Reload files even when Snowflake has loaded them before | | `matchByColumnName` | string | No | CASE\_SENSITIVE, CASE\_INSENSITIVE, or NONE | #### Output [#output-7] | Parameter | Type | Description | | ------------------------ | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `statementHandle` | string | Snowflake statement handle | | `status` | string | Statement status: SUCCEEDED, RUNNING, or CANCELED | | `message` | string | Snowflake response message | | `result` | object | Completed result partition, or null while running or when no result is available | | ↳ `columns` | array | Documented Snowflake result column metadata, or null when Snowflake returned a metadata-less partition response | | ↳ `name` | string | Column name | | ↳ `type` | string | Snowflake data type | | ↳ `length` | number | Column length | | ↳ `precision` | number | Numeric precision | | ↳ `scale` | number | Numeric scale | | ↳ `nullable` | boolean | Whether the column is nullable | | ↳ `rows` | array | One complete Snowflake result partition as string or null arrays | | ↳ `totalRows` | number | Total result rows | | ↳ `currentPartition` | number | Zero-based partition returned | | ↳ `partitionCount` | number | Total partitions in the result set. Snowflake reports this only on the first partition, so pass it back to Get Statement when fetching later partitions | | ↳ `nextPartition` | number | Next partition to request with Get Statement, if one exists | | ↳ `truncated` | boolean | Whether more result partitions remain to fetch with Get Statement, or null when Snowflake returned a metadata-less partition response and partitionCount was not supplied. Snowflake does not report when the requested row limit capped the result set, so that cap is never reflected here | | `dml` | object | Completed DML statistics, or null when the statement has no DML statistics | | ↳ `rowsInserted` | number | Rows inserted by the statement | | ↳ `rowsUpdated` | number | Rows updated by the statement | | ↳ `rowsDeleted` | number | Rows deleted by the statement | | ↳ `duplicateRowsUpdated` | number | Duplicate rows updated by the statement | | ↳ `rowsAffected` | number | Total inserted, updated, and deleted rows | ### Snowflake Unload Data [#snowflake-unload-data] Export a Snowflake table to files in a stage with COPY INTO. #### Input [#input-8] | Parameter | Type | Required | Description | | ------------------------- | ------- | -------- | --------------------------------------------------------------------------------------------------------------------------------- | | `oauthCredential` | string | Yes | Snowflake credential (account host and programmatic access token) | | `role` | string | No | Snowflake role to use for this statement | | `statementTimeoutSeconds` | number | No | Statement timeout in seconds; 0 uses Snowflake maximum of 604800 seconds | | `warehouse` | string | No | Warehouse to use for this statement; defaults to the PAT user setting | | `maxRows` | number | No | Maximum result rows; defaults to 1000 with a Studio safety limit of 10000 | | `database` | string | Yes | Database name | | `schema` | string | Yes | Schema name | | `stagePath` | string | Yes | Destination stage reference, for example @EXPORTS/daily | | `table` | string | Yes | Source table to unload. To export a query result, materialize it first as a view or with CREATE TABLE AS SELECT, then unload that | | `fileFormat` | string | No | Named file format applied to the unloaded files | | `header` | boolean | No | Whether to write column headings into the unloaded files; supported for CSV and Parquet only | | `overwrite` | boolean | No | Whether to replace existing files with matching names in the stage | | `singleFile` | boolean | No | Whether to write one file instead of splitting the output across files | | `maxFileSizeBytes` | number | No | Upper size limit per unloaded file in bytes; Snowflake defaults to 16777216 (16 MB) and allows up to 5368709120 (5 GB) | #### Output [#output-8] | Parameter | Type | Description | | ------------------------ | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `statementHandle` | string | Snowflake statement handle | | `status` | string | Statement status: SUCCEEDED, RUNNING, or CANCELED | | `message` | string | Snowflake response message | | `result` | object | Completed result partition, or null while running or when no result is available | | ↳ `columns` | array | Documented Snowflake result column metadata, or null when Snowflake returned a metadata-less partition response | | ↳ `name` | string | Column name | | ↳ `type` | string | Snowflake data type | | ↳ `length` | number | Column length | | ↳ `precision` | number | Numeric precision | | ↳ `scale` | number | Numeric scale | | ↳ `nullable` | boolean | Whether the column is nullable | | ↳ `rows` | array | One complete Snowflake result partition as string or null arrays | | ↳ `totalRows` | number | Total result rows | | ↳ `currentPartition` | number | Zero-based partition returned | | ↳ `partitionCount` | number | Total partitions in the result set. Snowflake reports this only on the first partition, so pass it back to Get Statement when fetching later partitions | | ↳ `nextPartition` | number | Next partition to request with Get Statement, if one exists | | ↳ `truncated` | boolean | Whether more result partitions remain to fetch with Get Statement, or null when Snowflake returned a metadata-less partition response and partitionCount was not supplied. Snowflake does not report when the requested row limit capped the result set, so that cap is never reflected here | | `dml` | object | Completed DML statistics, or null when the statement has no DML statistics | | ↳ `rowsInserted` | number | Rows inserted by the statement | | ↳ `rowsUpdated` | number | Rows updated by the statement | | ↳ `rowsDeleted` | number | Rows deleted by the statement | | ↳ `duplicateRowsUpdated` | number | Duplicate rows updated by the statement | | ↳ `rowsAffected` | number | Total inserted, updated, and deleted rows | ### Snowflake List Databases [#snowflake-list-databases] List the databases the credential can access. #### Input [#input-9] | Parameter | Type | Required | Description | | ------------------------- | ------ | -------- | ------------------------------------------------------------------------ | | `oauthCredential` | string | Yes | Snowflake credential (account host and programmatic access token) | | `role` | string | No | Snowflake role to use for this statement | | `statementTimeoutSeconds` | number | No | Statement timeout in seconds; 0 uses Snowflake maximum of 604800 seconds | | `nameLike` | string | No | Optional SQL LIKE pattern for object names | | `limit` | number | No | Maximum rows, from 1 to 10000 | #### Output [#output-9] | Parameter | Type | Description | | ------------------------ | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `statementHandle` | string | Snowflake statement handle | | `status` | string | Statement status: SUCCEEDED, RUNNING, or CANCELED | | `message` | string | Snowflake response message | | `result` | object | Completed result partition, or null while running or when no result is available | | ↳ `columns` | array | Documented Snowflake result column metadata, or null when Snowflake returned a metadata-less partition response | | ↳ `name` | string | Column name | | ↳ `type` | string | Snowflake data type | | ↳ `length` | number | Column length | | ↳ `precision` | number | Numeric precision | | ↳ `scale` | number | Numeric scale | | ↳ `nullable` | boolean | Whether the column is nullable | | ↳ `rows` | array | One complete Snowflake result partition as string or null arrays | | ↳ `totalRows` | number | Total result rows | | ↳ `currentPartition` | number | Zero-based partition returned | | ↳ `partitionCount` | number | Total partitions in the result set. Snowflake reports this only on the first partition, so pass it back to Get Statement when fetching later partitions | | ↳ `nextPartition` | number | Next partition to request with Get Statement, if one exists | | ↳ `truncated` | boolean | Whether more result partitions remain to fetch with Get Statement, or null when Snowflake returned a metadata-less partition response and partitionCount was not supplied. Snowflake does not report when the requested row limit capped the result set, so that cap is never reflected here | | `dml` | object | Completed DML statistics, or null when the statement has no DML statistics | | ↳ `rowsInserted` | number | Rows inserted by the statement | | ↳ `rowsUpdated` | number | Rows updated by the statement | | ↳ `rowsDeleted` | number | Rows deleted by the statement | | ↳ `duplicateRowsUpdated` | number | Duplicate rows updated by the statement | | ↳ `rowsAffected` | number | Total inserted, updated, and deleted rows | ### Snowflake List Schemas [#snowflake-list-schemas] List the schemas in a Snowflake database. #### Input [#input-10] | Parameter | Type | Required | Description | | ------------------------- | ------ | -------- | ------------------------------------------------------------------------ | | `oauthCredential` | string | Yes | Snowflake credential (account host and programmatic access token) | | `role` | string | No | Snowflake role to use for this statement | | `statementTimeoutSeconds` | number | No | Statement timeout in seconds; 0 uses Snowflake maximum of 604800 seconds | | `database` | string | Yes | Database name | | `nameLike` | string | No | Optional SQL LIKE pattern for object names | | `limit` | number | No | Maximum rows, from 1 to 10000 | #### Output [#output-10] | Parameter | Type | Description | | ------------------------ | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `statementHandle` | string | Snowflake statement handle | | `status` | string | Statement status: SUCCEEDED, RUNNING, or CANCELED | | `message` | string | Snowflake response message | | `result` | object | Completed result partition, or null while running or when no result is available | | ↳ `columns` | array | Documented Snowflake result column metadata, or null when Snowflake returned a metadata-less partition response | | ↳ `name` | string | Column name | | ↳ `type` | string | Snowflake data type | | ↳ `length` | number | Column length | | ↳ `precision` | number | Numeric precision | | ↳ `scale` | number | Numeric scale | | ↳ `nullable` | boolean | Whether the column is nullable | | ↳ `rows` | array | One complete Snowflake result partition as string or null arrays | | ↳ `totalRows` | number | Total result rows | | ↳ `currentPartition` | number | Zero-based partition returned | | ↳ `partitionCount` | number | Total partitions in the result set. Snowflake reports this only on the first partition, so pass it back to Get Statement when fetching later partitions | | ↳ `nextPartition` | number | Next partition to request with Get Statement, if one exists | | ↳ `truncated` | boolean | Whether more result partitions remain to fetch with Get Statement, or null when Snowflake returned a metadata-less partition response and partitionCount was not supplied. Snowflake does not report when the requested row limit capped the result set, so that cap is never reflected here | | `dml` | object | Completed DML statistics, or null when the statement has no DML statistics | | ↳ `rowsInserted` | number | Rows inserted by the statement | | ↳ `rowsUpdated` | number | Rows updated by the statement | | ↳ `rowsDeleted` | number | Rows deleted by the statement | | ↳ `duplicateRowsUpdated` | number | Duplicate rows updated by the statement | | ↳ `rowsAffected` | number | Total inserted, updated, and deleted rows | ### Snowflake List Tables [#snowflake-list-tables] List the tables in a Snowflake schema. #### Input [#input-11] | Parameter | Type | Required | Description | | ------------------------- | ------ | -------- | ------------------------------------------------------------------------ | | `oauthCredential` | string | Yes | Snowflake credential (account host and programmatic access token) | | `role` | string | No | Snowflake role to use for this statement | | `statementTimeoutSeconds` | number | No | Statement timeout in seconds; 0 uses Snowflake maximum of 604800 seconds | | `database` | string | Yes | Database name | | `schema` | string | Yes | Schema name | | `nameLike` | string | No | Optional SQL LIKE pattern for object names | | `limit` | number | No | Maximum rows, from 1 to 10000 | #### Output [#output-11] | Parameter | Type | Description | | ------------------------ | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `statementHandle` | string | Snowflake statement handle | | `status` | string | Statement status: SUCCEEDED, RUNNING, or CANCELED | | `message` | string | Snowflake response message | | `result` | object | Completed result partition, or null while running or when no result is available | | ↳ `columns` | array | Documented Snowflake result column metadata, or null when Snowflake returned a metadata-less partition response | | ↳ `name` | string | Column name | | ↳ `type` | string | Snowflake data type | | ↳ `length` | number | Column length | | ↳ `precision` | number | Numeric precision | | ↳ `scale` | number | Numeric scale | | ↳ `nullable` | boolean | Whether the column is nullable | | ↳ `rows` | array | One complete Snowflake result partition as string or null arrays | | ↳ `totalRows` | number | Total result rows | | ↳ `currentPartition` | number | Zero-based partition returned | | ↳ `partitionCount` | number | Total partitions in the result set. Snowflake reports this only on the first partition, so pass it back to Get Statement when fetching later partitions | | ↳ `nextPartition` | number | Next partition to request with Get Statement, if one exists | | ↳ `truncated` | boolean | Whether more result partitions remain to fetch with Get Statement, or null when Snowflake returned a metadata-less partition response and partitionCount was not supplied. Snowflake does not report when the requested row limit capped the result set, so that cap is never reflected here | | `dml` | object | Completed DML statistics, or null when the statement has no DML statistics | | ↳ `rowsInserted` | number | Rows inserted by the statement | | ↳ `rowsUpdated` | number | Rows updated by the statement | | ↳ `rowsDeleted` | number | Rows deleted by the statement | | ↳ `duplicateRowsUpdated` | number | Duplicate rows updated by the statement | | ↳ `rowsAffected` | number | Total inserted, updated, and deleted rows | ### Snowflake List Warehouses [#snowflake-list-warehouses] List warehouses visible to the active Snowflake role. #### Input [#input-12] | Parameter | Type | Required | Description | | ------------------------- | ------ | -------- | ------------------------------------------------------------------------- | | `oauthCredential` | string | Yes | Snowflake credential (account host and programmatic access token) | | `role` | string | No | Snowflake role to use for this statement | | `statementTimeoutSeconds` | number | No | Statement timeout in seconds; 0 uses Snowflake maximum of 604800 seconds | | `maxRows` | number | No | Maximum result rows; defaults to 1000 with a Studio safety limit of 10000 | | `nameLike` | string | No | Optional SQL LIKE pattern for warehouse names | #### Output [#output-12] | Parameter | Type | Description | | ------------------------ | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `statementHandle` | string | Snowflake statement handle | | `status` | string | Statement status: SUCCEEDED, RUNNING, or CANCELED | | `message` | string | Snowflake response message | | `result` | object | Completed result partition, or null while running or when no result is available | | ↳ `columns` | array | Documented Snowflake result column metadata, or null when Snowflake returned a metadata-less partition response | | ↳ `name` | string | Column name | | ↳ `type` | string | Snowflake data type | | ↳ `length` | number | Column length | | ↳ `precision` | number | Numeric precision | | ↳ `scale` | number | Numeric scale | | ↳ `nullable` | boolean | Whether the column is nullable | | ↳ `rows` | array | One complete Snowflake result partition as string or null arrays | | ↳ `totalRows` | number | Total result rows | | ↳ `currentPartition` | number | Zero-based partition returned | | ↳ `partitionCount` | number | Total partitions in the result set. Snowflake reports this only on the first partition, so pass it back to Get Statement when fetching later partitions | | ↳ `nextPartition` | number | Next partition to request with Get Statement, if one exists | | ↳ `truncated` | boolean | Whether more result partitions remain to fetch with Get Statement, or null when Snowflake returned a metadata-less partition response and partitionCount was not supplied. Snowflake does not report when the requested row limit capped the result set, so that cap is never reflected here | | `dml` | object | Completed DML statistics, or null when the statement has no DML statistics | | ↳ `rowsInserted` | number | Rows inserted by the statement | | ↳ `rowsUpdated` | number | Rows updated by the statement | | ↳ `rowsDeleted` | number | Rows deleted by the statement | | ↳ `duplicateRowsUpdated` | number | Duplicate rows updated by the statement | | ↳ `rowsAffected` | number | Total inserted, updated, and deleted rows | ### Snowflake Get Warehouse [#snowflake-get-warehouse] Get the full details for a Snowflake virtual warehouse. #### Input [#input-13] | Parameter | Type | Required | Description | | ------------------------- | ------ | -------- | ------------------------------------------------------------------------ | | `oauthCredential` | string | Yes | Snowflake credential (account host and programmatic access token) | | `role` | string | No | Snowflake role to use for this statement | | `statementTimeoutSeconds` | number | No | Statement timeout in seconds; 0 uses Snowflake maximum of 604800 seconds | | `warehouseName` | string | Yes | Warehouse name | #### Output [#output-13] | Parameter | Type | Description | | ------------------------ | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `statementHandle` | string | Snowflake statement handle | | `status` | string | Statement status: SUCCEEDED, RUNNING, or CANCELED | | `message` | string | Snowflake response message | | `result` | object | Completed result partition, or null while running or when no result is available | | ↳ `columns` | array | Documented Snowflake result column metadata, or null when Snowflake returned a metadata-less partition response | | ↳ `name` | string | Column name | | ↳ `type` | string | Snowflake data type | | ↳ `length` | number | Column length | | ↳ `precision` | number | Numeric precision | | ↳ `scale` | number | Numeric scale | | ↳ `nullable` | boolean | Whether the column is nullable | | ↳ `rows` | array | One complete Snowflake result partition as string or null arrays | | ↳ `totalRows` | number | Total result rows | | ↳ `currentPartition` | number | Zero-based partition returned | | ↳ `partitionCount` | number | Total partitions in the result set. Snowflake reports this only on the first partition, so pass it back to Get Statement when fetching later partitions | | ↳ `nextPartition` | number | Next partition to request with Get Statement, if one exists | | ↳ `truncated` | boolean | Whether more result partitions remain to fetch with Get Statement, or null when Snowflake returned a metadata-less partition response and partitionCount was not supplied. Snowflake does not report when the requested row limit capped the result set, so that cap is never reflected here | | `dml` | object | Completed DML statistics, or null when the statement has no DML statistics | | ↳ `rowsInserted` | number | Rows inserted by the statement | | ↳ `rowsUpdated` | number | Rows updated by the statement | | ↳ `rowsDeleted` | number | Rows deleted by the statement | | ↳ `duplicateRowsUpdated` | number | Duplicate rows updated by the statement | | ↳ `rowsAffected` | number | Total inserted, updated, and deleted rows | ### Snowflake Resume Warehouse [#snowflake-resume-warehouse] Resume a Snowflake virtual warehouse if it is suspended. #### Input [#input-14] | Parameter | Type | Required | Description | | ------------------------- | ------ | -------- | ------------------------------------------------------------------------ | | `oauthCredential` | string | Yes | Snowflake credential (account host and programmatic access token) | | `role` | string | No | Snowflake role to use for this statement | | `statementTimeoutSeconds` | number | No | Statement timeout in seconds; 0 uses Snowflake maximum of 604800 seconds | | `warehouseName` | string | Yes | Warehouse name | #### Output [#output-14] | Parameter | Type | Description | | ------------------------ | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `statementHandle` | string | Snowflake statement handle | | `status` | string | Statement status: SUCCEEDED, RUNNING, or CANCELED | | `message` | string | Snowflake response message | | `result` | object | Completed result partition, or null while running or when no result is available | | ↳ `columns` | array | Documented Snowflake result column metadata, or null when Snowflake returned a metadata-less partition response | | ↳ `name` | string | Column name | | ↳ `type` | string | Snowflake data type | | ↳ `length` | number | Column length | | ↳ `precision` | number | Numeric precision | | ↳ `scale` | number | Numeric scale | | ↳ `nullable` | boolean | Whether the column is nullable | | ↳ `rows` | array | One complete Snowflake result partition as string or null arrays | | ↳ `totalRows` | number | Total result rows | | ↳ `currentPartition` | number | Zero-based partition returned | | ↳ `partitionCount` | number | Total partitions in the result set. Snowflake reports this only on the first partition, so pass it back to Get Statement when fetching later partitions | | ↳ `nextPartition` | number | Next partition to request with Get Statement, if one exists | | ↳ `truncated` | boolean | Whether more result partitions remain to fetch with Get Statement, or null when Snowflake returned a metadata-less partition response and partitionCount was not supplied. Snowflake does not report when the requested row limit capped the result set, so that cap is never reflected here | | `dml` | object | Completed DML statistics, or null when the statement has no DML statistics | | ↳ `rowsInserted` | number | Rows inserted by the statement | | ↳ `rowsUpdated` | number | Rows updated by the statement | | ↳ `rowsDeleted` | number | Rows deleted by the statement | | ↳ `duplicateRowsUpdated` | number | Duplicate rows updated by the statement | | ↳ `rowsAffected` | number | Total inserted, updated, and deleted rows | ### Snowflake Suspend Warehouse [#snowflake-suspend-warehouse] Suspend a Snowflake virtual warehouse. #### Input [#input-15] | Parameter | Type | Required | Description | | ------------------------- | ------ | -------- | ------------------------------------------------------------------------ | | `oauthCredential` | string | Yes | Snowflake credential (account host and programmatic access token) | | `role` | string | No | Snowflake role to use for this statement | | `statementTimeoutSeconds` | number | No | Statement timeout in seconds; 0 uses Snowflake maximum of 604800 seconds | | `warehouseName` | string | Yes | Warehouse name | #### Output [#output-15] | Parameter | Type | Description | | ------------------------ | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `statementHandle` | string | Snowflake statement handle | | `status` | string | Statement status: SUCCEEDED, RUNNING, or CANCELED | | `message` | string | Snowflake response message | | `result` | object | Completed result partition, or null while running or when no result is available | | ↳ `columns` | array | Documented Snowflake result column metadata, or null when Snowflake returned a metadata-less partition response | | ↳ `name` | string | Column name | | ↳ `type` | string | Snowflake data type | | ↳ `length` | number | Column length | | ↳ `precision` | number | Numeric precision | | ↳ `scale` | number | Numeric scale | | ↳ `nullable` | boolean | Whether the column is nullable | | ↳ `rows` | array | One complete Snowflake result partition as string or null arrays | | ↳ `totalRows` | number | Total result rows | | ↳ `currentPartition` | number | Zero-based partition returned | | ↳ `partitionCount` | number | Total partitions in the result set. Snowflake reports this only on the first partition, so pass it back to Get Statement when fetching later partitions | | ↳ `nextPartition` | number | Next partition to request with Get Statement, if one exists | | ↳ `truncated` | boolean | Whether more result partitions remain to fetch with Get Statement, or null when Snowflake returned a metadata-less partition response and partitionCount was not supplied. Snowflake does not report when the requested row limit capped the result set, so that cap is never reflected here | | `dml` | object | Completed DML statistics, or null when the statement has no DML statistics | | ↳ `rowsInserted` | number | Rows inserted by the statement | | ↳ `rowsUpdated` | number | Rows updated by the statement | | ↳ `rowsDeleted` | number | Rows deleted by the statement | | ↳ `duplicateRowsUpdated` | number | Duplicate rows updated by the statement | | ↳ `rowsAffected` | number | Total inserted, updated, and deleted rows | ### Snowflake Alter Warehouse [#snowflake-alter-warehouse] Resize a Snowflake warehouse or change its auto-suspend and auto-resume settings. #### Input [#input-16] | Parameter | Type | Required | Description | | ------------------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `oauthCredential` | string | Yes | Snowflake credential (account host and programmatic access token) | | `role` | string | No | Snowflake role to use for this statement | | `statementTimeoutSeconds` | number | No | Statement timeout in seconds; 0 uses Snowflake maximum of 604800 seconds | | `warehouseName` | string | Yes | Warehouse name | | `warehouseSize` | string | No | New warehouse size, one of XSMALL, SMALL, MEDIUM, LARGE, XLARGE, XXLARGE, XXXLARGE, X4LARGE, X5LARGE, X6LARGE | | `autoSuspendSeconds` | number | No | Seconds of inactivity before the warehouse suspends. Snowflake polls every 30 seconds, so values under 30 or not a multiple of 30 may not behave as expected. 0 means the warehouse never suspends and keeps consuming credits | | `autoResume` | boolean | No | Whether the warehouse resumes automatically when a statement is submitted | #### Output [#output-16] | Parameter | Type | Description | | ------------------------ | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `statementHandle` | string | Snowflake statement handle | | `status` | string | Statement status: SUCCEEDED, RUNNING, or CANCELED | | `message` | string | Snowflake response message | | `result` | object | Completed result partition, or null while running or when no result is available | | ↳ `columns` | array | Documented Snowflake result column metadata, or null when Snowflake returned a metadata-less partition response | | ↳ `name` | string | Column name | | ↳ `type` | string | Snowflake data type | | ↳ `length` | number | Column length | | ↳ `precision` | number | Numeric precision | | ↳ `scale` | number | Numeric scale | | ↳ `nullable` | boolean | Whether the column is nullable | | ↳ `rows` | array | One complete Snowflake result partition as string or null arrays | | ↳ `totalRows` | number | Total result rows | | ↳ `currentPartition` | number | Zero-based partition returned | | ↳ `partitionCount` | number | Total partitions in the result set. Snowflake reports this only on the first partition, so pass it back to Get Statement when fetching later partitions | | ↳ `nextPartition` | number | Next partition to request with Get Statement, if one exists | | ↳ `truncated` | boolean | Whether more result partitions remain to fetch with Get Statement, or null when Snowflake returned a metadata-less partition response and partitionCount was not supplied. Snowflake does not report when the requested row limit capped the result set, so that cap is never reflected here | | `dml` | object | Completed DML statistics, or null when the statement has no DML statistics | | ↳ `rowsInserted` | number | Rows inserted by the statement | | ↳ `rowsUpdated` | number | Rows updated by the statement | | ↳ `rowsDeleted` | number | Rows deleted by the statement | | ↳ `duplicateRowsUpdated` | number | Duplicate rows updated by the statement | | ↳ `rowsAffected` | number | Total inserted, updated, and deleted rows | ### Snowflake List Tasks [#snowflake-list-tasks] List tasks in a Snowflake schema. #### Input [#input-17] | Parameter | Type | Required | Description | | ------------------------- | ------ | -------- | ------------------------------------------------------------------------ | | `oauthCredential` | string | Yes | Snowflake credential (account host and programmatic access token) | | `role` | string | No | Snowflake role to use for this statement | | `statementTimeoutSeconds` | number | No | Statement timeout in seconds; 0 uses Snowflake maximum of 604800 seconds | | `database` | string | Yes | Database name | | `schema` | string | Yes | Schema name | | `nameLike` | string | No | Optional SQL LIKE pattern for task names | | `limit` | number | No | Maximum task rows, from 1 to 10000 | #### Output [#output-17] | Parameter | Type | Description | | ------------------------ | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `statementHandle` | string | Snowflake statement handle | | `status` | string | Statement status: SUCCEEDED, RUNNING, or CANCELED | | `message` | string | Snowflake response message | | `result` | object | Completed result partition, or null while running or when no result is available | | ↳ `columns` | array | Documented Snowflake result column metadata, or null when Snowflake returned a metadata-less partition response | | ↳ `name` | string | Column name | | ↳ `type` | string | Snowflake data type | | ↳ `length` | number | Column length | | ↳ `precision` | number | Numeric precision | | ↳ `scale` | number | Numeric scale | | ↳ `nullable` | boolean | Whether the column is nullable | | ↳ `rows` | array | One complete Snowflake result partition as string or null arrays | | ↳ `totalRows` | number | Total result rows | | ↳ `currentPartition` | number | Zero-based partition returned | | ↳ `partitionCount` | number | Total partitions in the result set. Snowflake reports this only on the first partition, so pass it back to Get Statement when fetching later partitions | | ↳ `nextPartition` | number | Next partition to request with Get Statement, if one exists | | ↳ `truncated` | boolean | Whether more result partitions remain to fetch with Get Statement, or null when Snowflake returned a metadata-less partition response and partitionCount was not supplied. Snowflake does not report when the requested row limit capped the result set, so that cap is never reflected here | | `dml` | object | Completed DML statistics, or null when the statement has no DML statistics | | ↳ `rowsInserted` | number | Rows inserted by the statement | | ↳ `rowsUpdated` | number | Rows updated by the statement | | ↳ `rowsDeleted` | number | Rows deleted by the statement | | ↳ `duplicateRowsUpdated` | number | Duplicate rows updated by the statement | | ↳ `rowsAffected` | number | Total inserted, updated, and deleted rows | ### Snowflake Get Task [#snowflake-get-task] Describe a Snowflake task. #### Input [#input-18] | Parameter | Type | Required | Description | | ------------------------- | ------ | -------- | ------------------------------------------------------------------------ | | `oauthCredential` | string | Yes | Snowflake credential (account host and programmatic access token) | | `role` | string | No | Snowflake role to use for this statement | | `statementTimeoutSeconds` | number | No | Statement timeout in seconds; 0 uses Snowflake maximum of 604800 seconds | | `database` | string | Yes | Database name | | `schema` | string | Yes | Schema name | | `taskName` | string | Yes | Task name | #### Output [#output-18] | Parameter | Type | Description | | ------------------------ | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `statementHandle` | string | Snowflake statement handle | | `status` | string | Statement status: SUCCEEDED, RUNNING, or CANCELED | | `message` | string | Snowflake response message | | `result` | object | Completed result partition, or null while running or when no result is available | | ↳ `columns` | array | Documented Snowflake result column metadata, or null when Snowflake returned a metadata-less partition response | | ↳ `name` | string | Column name | | ↳ `type` | string | Snowflake data type | | ↳ `length` | number | Column length | | ↳ `precision` | number | Numeric precision | | ↳ `scale` | number | Numeric scale | | ↳ `nullable` | boolean | Whether the column is nullable | | ↳ `rows` | array | One complete Snowflake result partition as string or null arrays | | ↳ `totalRows` | number | Total result rows | | ↳ `currentPartition` | number | Zero-based partition returned | | ↳ `partitionCount` | number | Total partitions in the result set. Snowflake reports this only on the first partition, so pass it back to Get Statement when fetching later partitions | | ↳ `nextPartition` | number | Next partition to request with Get Statement, if one exists | | ↳ `truncated` | boolean | Whether more result partitions remain to fetch with Get Statement, or null when Snowflake returned a metadata-less partition response and partitionCount was not supplied. Snowflake does not report when the requested row limit capped the result set, so that cap is never reflected here | | `dml` | object | Completed DML statistics, or null when the statement has no DML statistics | | ↳ `rowsInserted` | number | Rows inserted by the statement | | ↳ `rowsUpdated` | number | Rows updated by the statement | | ↳ `rowsDeleted` | number | Rows deleted by the statement | | ↳ `duplicateRowsUpdated` | number | Duplicate rows updated by the statement | | ↳ `rowsAffected` | number | Total inserted, updated, and deleted rows | ### Snowflake Run Task [#snowflake-run-task] Run a Snowflake task immediately, optionally retrying its last failed graph. #### Input [#input-19] | Parameter | Type | Required | Description | | ------------------------- | ------- | -------- | ------------------------------------------------------------------------ | | `oauthCredential` | string | Yes | Snowflake credential (account host and programmatic access token) | | `role` | string | No | Snowflake role to use for this statement | | `statementTimeoutSeconds` | number | No | Statement timeout in seconds; 0 uses Snowflake maximum of 604800 seconds | | `database` | string | Yes | Database name | | `schema` | string | Yes | Schema name | | `taskName` | string | Yes | Task name | | `retryLast` | boolean | No | Retry the last failed task graph run | #### Output [#output-19] | Parameter | Type | Description | | ------------------------ | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `statementHandle` | string | Snowflake statement handle | | `status` | string | Statement status: SUCCEEDED, RUNNING, or CANCELED | | `message` | string | Snowflake response message | | `result` | object | Completed result partition, or null while running or when no result is available | | ↳ `columns` | array | Documented Snowflake result column metadata, or null when Snowflake returned a metadata-less partition response | | ↳ `name` | string | Column name | | ↳ `type` | string | Snowflake data type | | ↳ `length` | number | Column length | | ↳ `precision` | number | Numeric precision | | ↳ `scale` | number | Numeric scale | | ↳ `nullable` | boolean | Whether the column is nullable | | ↳ `rows` | array | One complete Snowflake result partition as string or null arrays | | ↳ `totalRows` | number | Total result rows | | ↳ `currentPartition` | number | Zero-based partition returned | | ↳ `partitionCount` | number | Total partitions in the result set. Snowflake reports this only on the first partition, so pass it back to Get Statement when fetching later partitions | | ↳ `nextPartition` | number | Next partition to request with Get Statement, if one exists | | ↳ `truncated` | boolean | Whether more result partitions remain to fetch with Get Statement, or null when Snowflake returned a metadata-less partition response and partitionCount was not supplied. Snowflake does not report when the requested row limit capped the result set, so that cap is never reflected here | | `dml` | object | Completed DML statistics, or null when the statement has no DML statistics | | ↳ `rowsInserted` | number | Rows inserted by the statement | | ↳ `rowsUpdated` | number | Rows updated by the statement | | ↳ `rowsDeleted` | number | Rows deleted by the statement | | ↳ `duplicateRowsUpdated` | number | Duplicate rows updated by the statement | | ↳ `rowsAffected` | number | Total inserted, updated, and deleted rows | ### Snowflake Resume Task [#snowflake-resume-task] Resume a suspended Snowflake task so its schedule runs again. #### Input [#input-20] | Parameter | Type | Required | Description | | ------------------------- | ------ | -------- | ------------------------------------------------------------------------ | | `oauthCredential` | string | Yes | Snowflake credential (account host and programmatic access token) | | `role` | string | No | Snowflake role to use for this statement | | `statementTimeoutSeconds` | number | No | Statement timeout in seconds; 0 uses Snowflake maximum of 604800 seconds | | `database` | string | Yes | Database name | | `schema` | string | Yes | Schema name | | `taskName` | string | Yes | Task name without a database or schema prefix | #### Output [#output-20] | Parameter | Type | Description | | ------------------------ | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `statementHandle` | string | Snowflake statement handle | | `status` | string | Statement status: SUCCEEDED, RUNNING, or CANCELED | | `message` | string | Snowflake response message | | `result` | object | Completed result partition, or null while running or when no result is available | | ↳ `columns` | array | Documented Snowflake result column metadata, or null when Snowflake returned a metadata-less partition response | | ↳ `name` | string | Column name | | ↳ `type` | string | Snowflake data type | | ↳ `length` | number | Column length | | ↳ `precision` | number | Numeric precision | | ↳ `scale` | number | Numeric scale | | ↳ `nullable` | boolean | Whether the column is nullable | | ↳ `rows` | array | One complete Snowflake result partition as string or null arrays | | ↳ `totalRows` | number | Total result rows | | ↳ `currentPartition` | number | Zero-based partition returned | | ↳ `partitionCount` | number | Total partitions in the result set. Snowflake reports this only on the first partition, so pass it back to Get Statement when fetching later partitions | | ↳ `nextPartition` | number | Next partition to request with Get Statement, if one exists | | ↳ `truncated` | boolean | Whether more result partitions remain to fetch with Get Statement, or null when Snowflake returned a metadata-less partition response and partitionCount was not supplied. Snowflake does not report when the requested row limit capped the result set, so that cap is never reflected here | | `dml` | object | Completed DML statistics, or null when the statement has no DML statistics | | ↳ `rowsInserted` | number | Rows inserted by the statement | | ↳ `rowsUpdated` | number | Rows updated by the statement | | ↳ `rowsDeleted` | number | Rows deleted by the statement | | ↳ `duplicateRowsUpdated` | number | Duplicate rows updated by the statement | | ↳ `rowsAffected` | number | Total inserted, updated, and deleted rows | ### Snowflake Suspend Task [#snowflake-suspend-task] Suspend a Snowflake task so its schedule stops triggering runs. #### Input [#input-21] | Parameter | Type | Required | Description | | ------------------------- | ------ | -------- | ------------------------------------------------------------------------ | | `oauthCredential` | string | Yes | Snowflake credential (account host and programmatic access token) | | `role` | string | No | Snowflake role to use for this statement | | `statementTimeoutSeconds` | number | No | Statement timeout in seconds; 0 uses Snowflake maximum of 604800 seconds | | `database` | string | Yes | Database name | | `schema` | string | Yes | Schema name | | `taskName` | string | Yes | Task name without a database or schema prefix | #### Output [#output-21] | Parameter | Type | Description | | ------------------------ | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `statementHandle` | string | Snowflake statement handle | | `status` | string | Statement status: SUCCEEDED, RUNNING, or CANCELED | | `message` | string | Snowflake response message | | `result` | object | Completed result partition, or null while running or when no result is available | | ↳ `columns` | array | Documented Snowflake result column metadata, or null when Snowflake returned a metadata-less partition response | | ↳ `name` | string | Column name | | ↳ `type` | string | Snowflake data type | | ↳ `length` | number | Column length | | ↳ `precision` | number | Numeric precision | | ↳ `scale` | number | Numeric scale | | ↳ `nullable` | boolean | Whether the column is nullable | | ↳ `rows` | array | One complete Snowflake result partition as string or null arrays | | ↳ `totalRows` | number | Total result rows | | ↳ `currentPartition` | number | Zero-based partition returned | | ↳ `partitionCount` | number | Total partitions in the result set. Snowflake reports this only on the first partition, so pass it back to Get Statement when fetching later partitions | | ↳ `nextPartition` | number | Next partition to request with Get Statement, if one exists | | ↳ `truncated` | boolean | Whether more result partitions remain to fetch with Get Statement, or null when Snowflake returned a metadata-less partition response and partitionCount was not supplied. Snowflake does not report when the requested row limit capped the result set, so that cap is never reflected here | | `dml` | object | Completed DML statistics, or null when the statement has no DML statistics | | ↳ `rowsInserted` | number | Rows inserted by the statement | | ↳ `rowsUpdated` | number | Rows updated by the statement | | ↳ `rowsDeleted` | number | Rows deleted by the statement | | ↳ `duplicateRowsUpdated` | number | Duplicate rows updated by the statement | | ↳ `rowsAffected` | number | Total inserted, updated, and deleted rows | ### Snowflake List Task Runs [#snowflake-list-task-runs] Query up to seven days of Snowflake task history, capped at 10000 rows. #### Input [#input-22] | Parameter | Type | Required | Description | | ------------------------- | ------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------- | | `oauthCredential` | string | Yes | Snowflake credential (account host and programmatic access token) | | `role` | string | No | Snowflake role to use for this statement | | `statementTimeoutSeconds` | number | No | Statement timeout in seconds; 0 uses Snowflake maximum of 604800 seconds | | `warehouse` | string | No | Warehouse to use for this statement; defaults to the PAT user setting | | `taskName` | string | No | Optional task name filter. TASK\_HISTORY supports only non-qualified task names, so pass DAILY\_LOAD rather than DB.SCHEMA.DAILY\_LOAD | | `startTime` | string | No | Optional scheduled-time range start as an ISO timestamp within the last seven days | | `endTime` | string | No | Optional scheduled-time range end as an ISO timestamp within the last seven days | | `errorOnly` | boolean | No | Return only task runs that failed or were cancelled | | `limit` | number | No | Maximum task runs, from 1 to 10000 | #### Output [#output-22] | Parameter | Type | Description | | ------------------------ | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `statementHandle` | string | Snowflake statement handle | | `status` | string | Statement status: SUCCEEDED, RUNNING, or CANCELED | | `message` | string | Snowflake response message | | `result` | object | Completed result partition, or null while running or when no result is available | | ↳ `columns` | array | Documented Snowflake result column metadata, or null when Snowflake returned a metadata-less partition response | | ↳ `name` | string | Column name | | ↳ `type` | string | Snowflake data type | | ↳ `length` | number | Column length | | ↳ `precision` | number | Numeric precision | | ↳ `scale` | number | Numeric scale | | ↳ `nullable` | boolean | Whether the column is nullable | | ↳ `rows` | array | One complete Snowflake result partition as string or null arrays | | ↳ `totalRows` | number | Total result rows | | ↳ `currentPartition` | number | Zero-based partition returned | | ↳ `partitionCount` | number | Total partitions in the result set. Snowflake reports this only on the first partition, so pass it back to Get Statement when fetching later partitions | | ↳ `nextPartition` | number | Next partition to request with Get Statement, if one exists | | ↳ `truncated` | boolean | Whether more result partitions remain to fetch with Get Statement, or null when Snowflake returned a metadata-less partition response and partitionCount was not supplied. Snowflake does not report when the requested row limit capped the result set, so that cap is never reflected here | | `dml` | object | Completed DML statistics, or null when the statement has no DML statistics | | ↳ `rowsInserted` | number | Rows inserted by the statement | | ↳ `rowsUpdated` | number | Rows updated by the statement | | ↳ `rowsDeleted` | number | Rows deleted by the statement | | ↳ `duplicateRowsUpdated` | number | Duplicate rows updated by the statement | | ↳ `rowsAffected` | number | Total inserted, updated, and deleted rows | ### Snowflake Get Task Run [#snowflake-get-task-run] Find one task history record by query ID within Snowflake’s seven-day window and 10000 most recent records after optional filters. #### Input [#input-23] | Parameter | Type | Required | Description | | ------------------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `oauthCredential` | string | Yes | Snowflake credential (account host and programmatic access token) | | `role` | string | No | Snowflake role to use for this statement | | `statementTimeoutSeconds` | number | No | Statement timeout in seconds; 0 uses Snowflake maximum of 604800 seconds | | `warehouse` | string | No | Warehouse to use for this statement; defaults to the PAT user setting | | `queryId` | string | Yes | Task run query ID from TASK\_HISTORY | | `taskName` | string | No | Optional task name used to narrow the 10000-record history window. TASK\_HISTORY supports only non-qualified task names, so pass DAILY\_LOAD rather than DB.SCHEMA.DAILY\_LOAD | | `startTime` | string | No | Optional scheduled-time range start as an ISO timestamp within the last seven days | | `endTime` | string | No | Optional scheduled-time range end as an ISO timestamp within the last seven days | #### Output [#output-23] | Parameter | Type | Description | | ------------------------ | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `statementHandle` | string | Snowflake statement handle | | `status` | string | Statement status: SUCCEEDED, RUNNING, or CANCELED | | `message` | string | Snowflake response message | | `result` | object | Completed result partition, or null while running or when no result is available | | ↳ `columns` | array | Documented Snowflake result column metadata, or null when Snowflake returned a metadata-less partition response | | ↳ `name` | string | Column name | | ↳ `type` | string | Snowflake data type | | ↳ `length` | number | Column length | | ↳ `precision` | number | Numeric precision | | ↳ `scale` | number | Numeric scale | | ↳ `nullable` | boolean | Whether the column is nullable | | ↳ `rows` | array | One complete Snowflake result partition as string or null arrays | | ↳ `totalRows` | number | Total result rows | | ↳ `currentPartition` | number | Zero-based partition returned | | ↳ `partitionCount` | number | Total partitions in the result set. Snowflake reports this only on the first partition, so pass it back to Get Statement when fetching later partitions | | ↳ `nextPartition` | number | Next partition to request with Get Statement, if one exists | | ↳ `truncated` | boolean | Whether more result partitions remain to fetch with Get Statement, or null when Snowflake returned a metadata-less partition response and partitionCount was not supplied. Snowflake does not report when the requested row limit capped the result set, so that cap is never reflected here | | `dml` | object | Completed DML statistics, or null when the statement has no DML statistics | | ↳ `rowsInserted` | number | Rows inserted by the statement | | ↳ `rowsUpdated` | number | Rows updated by the statement | | ↳ `rowsDeleted` | number | Rows deleted by the statement | | ↳ `duplicateRowsUpdated` | number | Duplicate rows updated by the statement | | ↳ `rowsAffected` | number | Total inserted, updated, and deleted rows | ### Snowflake Cancel Task Query [#snowflake-cancel-task-query] Cancel one running task query by query ID with SYSTEM$CANCEL\_QUERY. Task runs already in flight are unaffected and must be cancelled individually; a cancelled child marks the task graph run failed, so downstream tasks are skipped. #### Input [#input-24] | Parameter | Type | Required | Description | | ------------------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------- | | `oauthCredential` | string | Yes | Snowflake credential (account host and programmatic access token) | | `role` | string | No | Snowflake role to use for this statement | | `statementTimeoutSeconds` | number | No | Statement timeout in seconds; 0 uses Snowflake maximum of 604800 seconds | | `warehouse` | string | No | Warehouse to use for this statement; defaults to the PAT user setting | | `queryId` | string | Yes | Query ID of the single running task query to cancel, taken from TASK\_HISTORY. Cancels only that query. | #### Output [#output-24] | Parameter | Type | Description | | ------------------------ | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `statementHandle` | string | Snowflake statement handle | | `status` | string | Statement status: SUCCEEDED, RUNNING, or CANCELED | | `message` | string | Snowflake response message | | `result` | object | Completed result partition, or null while running or when no result is available | | ↳ `columns` | array | Documented Snowflake result column metadata, or null when Snowflake returned a metadata-less partition response | | ↳ `name` | string | Column name | | ↳ `type` | string | Snowflake data type | | ↳ `length` | number | Column length | | ↳ `precision` | number | Numeric precision | | ↳ `scale` | number | Numeric scale | | ↳ `nullable` | boolean | Whether the column is nullable | | ↳ `rows` | array | One complete Snowflake result partition as string or null arrays | | ↳ `totalRows` | number | Total result rows | | ↳ `currentPartition` | number | Zero-based partition returned | | ↳ `partitionCount` | number | Total partitions in the result set. Snowflake reports this only on the first partition, so pass it back to Get Statement when fetching later partitions | | ↳ `nextPartition` | number | Next partition to request with Get Statement, if one exists | | ↳ `truncated` | boolean | Whether more result partitions remain to fetch with Get Statement, or null when Snowflake returned a metadata-less partition response and partitionCount was not supplied. Snowflake does not report when the requested row limit capped the result set, so that cap is never reflected here | | `dml` | object | Completed DML statistics, or null when the statement has no DML statistics | | ↳ `rowsInserted` | number | Rows inserted by the statement | | ↳ `rowsUpdated` | number | Rows updated by the statement | | ↳ `rowsDeleted` | number | Rows deleted by the statement | | ↳ `duplicateRowsUpdated` | number | Duplicate rows updated by the statement | | ↳ `rowsAffected` | number | Total inserted, updated, and deleted rows | ### Snowflake Get Task Run Output [#snowflake-get-task-run-output] Read a task query result with RESULT\_SCAN during Snowflake’s 24-hour retention window using the task owner role. #### Input [#input-25] | Parameter | Type | Required | Description | | ------------------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------- | | `oauthCredential` | string | Yes | Snowflake credential (account host and programmatic access token) | | `role` | string | No | Snowflake role to use for this statement | | `statementTimeoutSeconds` | number | No | Statement timeout in seconds; 0 uses Snowflake maximum of 604800 seconds | | `warehouse` | string | No | Warehouse to use for this statement; defaults to the PAT user setting | | `maxRows` | number | No | Maximum result rows; defaults to 1000 with a Studio safety limit of 10000 | | `queryId` | string | Yes | Completed task query ID; task results require the task owner role, while manual query results require the same user | #### Output [#output-25] | Parameter | Type | Description | | ------------------------ | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `statementHandle` | string | Snowflake statement handle | | `status` | string | Statement status: SUCCEEDED, RUNNING, or CANCELED | | `message` | string | Snowflake response message | | `result` | object | Completed result partition, or null while running or when no result is available | | ↳ `columns` | array | Documented Snowflake result column metadata, or null when Snowflake returned a metadata-less partition response | | ↳ `name` | string | Column name | | ↳ `type` | string | Snowflake data type | | ↳ `length` | number | Column length | | ↳ `precision` | number | Numeric precision | | ↳ `scale` | number | Numeric scale | | ↳ `nullable` | boolean | Whether the column is nullable | | ↳ `rows` | array | One complete Snowflake result partition as string or null arrays | | ↳ `totalRows` | number | Total result rows | | ↳ `currentPartition` | number | Zero-based partition returned | | ↳ `partitionCount` | number | Total partitions in the result set. Snowflake reports this only on the first partition, so pass it back to Get Statement when fetching later partitions | | ↳ `nextPartition` | number | Next partition to request with Get Statement, if one exists | | ↳ `truncated` | boolean | Whether more result partitions remain to fetch with Get Statement, or null when Snowflake returned a metadata-less partition response and partitionCount was not supplied. Snowflake does not report when the requested row limit capped the result set, so that cap is never reflected here | | `dml` | object | Completed DML statistics, or null when the statement has no DML statistics | | ↳ `rowsInserted` | number | Rows inserted by the statement | | ↳ `rowsUpdated` | number | Rows updated by the statement | | ↳ `rowsDeleted` | number | Rows deleted by the statement | | ↳ `duplicateRowsUpdated` | number | Duplicate rows updated by the statement | | ↳ `rowsAffected` | number | Total inserted, updated, and deleted rows | ### Snowflake List Query History [#snowflake-list-query-history] List queries that completed in the last seven days, optionally filtered. #### Input [#input-26] | Parameter | Type | Required | Description | | ------------------------- | ------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `oauthCredential` | string | Yes | Snowflake credential (account host and programmatic access token) | | `role` | string | No | Snowflake role to use for this statement | | `statementTimeoutSeconds` | number | No | Statement timeout in seconds; 0 uses Snowflake maximum of 604800 seconds | | `warehouse` | string | No | Warehouse to use for this statement; defaults to the PAT user setting | | `userName` | string | No | Only queries run by this user; cannot be combined with warehouseName | | `warehouseName` | string | No | Only queries run on this warehouse; cannot be combined with userName | | `startTime` | string | No | ISO-8601 start of the query completion window, within the last seven days | | `endTime` | string | No | ISO-8601 end of the query completion window, within the last seven days | | `errorOnly` | boolean | No | Whether to return only queries that failed (execution status FAILED\_WITH\_ERROR or FAILED\_WITH\_INCIDENT). Snowflake applies the limit before this filter, so it selects the failures among the most recent queries rather than the most recent failures | | `limit` | number | No | Maximum query rows, from 1 to 10000 | #### Output [#output-26] | Parameter | Type | Description | | ------------------------ | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `statementHandle` | string | Snowflake statement handle | | `status` | string | Statement status: SUCCEEDED, RUNNING, or CANCELED | | `message` | string | Snowflake response message | | `result` | object | Completed result partition, or null while running or when no result is available | | ↳ `columns` | array | Documented Snowflake result column metadata, or null when Snowflake returned a metadata-less partition response | | ↳ `name` | string | Column name | | ↳ `type` | string | Snowflake data type | | ↳ `length` | number | Column length | | ↳ `precision` | number | Numeric precision | | ↳ `scale` | number | Numeric scale | | ↳ `nullable` | boolean | Whether the column is nullable | | ↳ `rows` | array | One complete Snowflake result partition as string or null arrays | | ↳ `totalRows` | number | Total result rows | | ↳ `currentPartition` | number | Zero-based partition returned | | ↳ `partitionCount` | number | Total partitions in the result set. Snowflake reports this only on the first partition, so pass it back to Get Statement when fetching later partitions | | ↳ `nextPartition` | number | Next partition to request with Get Statement, if one exists | | ↳ `truncated` | boolean | Whether more result partitions remain to fetch with Get Statement, or null when Snowflake returned a metadata-less partition response and partitionCount was not supplied. Snowflake does not report when the requested row limit capped the result set, so that cap is never reflected here | | `dml` | object | Completed DML statistics, or null when the statement has no DML statistics | | ↳ `rowsInserted` | number | Rows inserted by the statement | | ↳ `rowsUpdated` | number | Rows updated by the statement | | ↳ `rowsDeleted` | number | Rows deleted by the statement | | ↳ `duplicateRowsUpdated` | number | Duplicate rows updated by the statement | | ↳ `rowsAffected` | number | Total inserted, updated, and deleted rows | ### Snowflake List Copy History [#snowflake-list-copy-history] List staged-file load results for a table over the last fourteen days. #### Input [#input-27] | Parameter | Type | Required | Description | | ------------------------- | ------ | -------- | ------------------------------------------------------------------------------- | | `oauthCredential` | string | Yes | Snowflake credential (account host and programmatic access token) | | `role` | string | No | Snowflake role to use for this statement | | `statementTimeoutSeconds` | number | No | Statement timeout in seconds; 0 uses Snowflake maximum of 604800 seconds | | `warehouse` | string | No | Warehouse to use for this statement; defaults to the PAT user setting | | `database` | string | Yes | Database name | | `schema` | string | Yes | Schema name | | `table` | string | Yes | Table whose load history to return | | `startTime` | string | Yes | ISO-8601 start of the load window, within the last fourteen days | | `endTime` | string | No | ISO-8601 end of the load window, within the last fourteen days; defaults to now | | `limit` | number | No | Maximum load rows, from 1 to 10000 | #### Output [#output-27] | Parameter | Type | Description | | ------------------------ | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `statementHandle` | string | Snowflake statement handle | | `status` | string | Statement status: SUCCEEDED, RUNNING, or CANCELED | | `message` | string | Snowflake response message | | `result` | object | Completed result partition, or null while running or when no result is available | | ↳ `columns` | array | Documented Snowflake result column metadata, or null when Snowflake returned a metadata-less partition response | | ↳ `name` | string | Column name | | ↳ `type` | string | Snowflake data type | | ↳ `length` | number | Column length | | ↳ `precision` | number | Numeric precision | | ↳ `scale` | number | Numeric scale | | ↳ `nullable` | boolean | Whether the column is nullable | | ↳ `rows` | array | One complete Snowflake result partition as string or null arrays | | ↳ `totalRows` | number | Total result rows | | ↳ `currentPartition` | number | Zero-based partition returned | | ↳ `partitionCount` | number | Total partitions in the result set. Snowflake reports this only on the first partition, so pass it back to Get Statement when fetching later partitions | | ↳ `nextPartition` | number | Next partition to request with Get Statement, if one exists | | ↳ `truncated` | boolean | Whether more result partitions remain to fetch with Get Statement, or null when Snowflake returned a metadata-less partition response and partitionCount was not supplied. Snowflake does not report when the requested row limit capped the result set, so that cap is never reflected here | | `dml` | object | Completed DML statistics, or null when the statement has no DML statistics | | ↳ `rowsInserted` | number | Rows inserted by the statement | | ↳ `rowsUpdated` | number | Rows updated by the statement | | ↳ `rowsDeleted` | number | Rows deleted by the statement | | ↳ `duplicateRowsUpdated` | number | Duplicate rows updated by the statement | | ↳ `rowsAffected` | number | Total inserted, updated, and deleted rows | ### Snowflake Introspect Schema [#snowflake-introspect-schema] Inspect table and column metadata through Snowflake INFORMATION\_SCHEMA views. #### Input [#input-28] | Parameter | Type | Required | Description | | ------------------------- | ------- | -------- | ------------------------------------------------------------------------- | | `oauthCredential` | string | Yes | Snowflake credential (account host and programmatic access token) | | `role` | string | No | Snowflake role to use for this statement | | `statementTimeoutSeconds` | number | No | Statement timeout in seconds; 0 uses Snowflake maximum of 604800 seconds | | `warehouse` | string | No | Warehouse to use for this statement; defaults to the PAT user setting | | `maxRows` | number | No | Maximum result rows; defaults to 1000 with a Studio safety limit of 10000 | | `database` | string | Yes | Database containing the INFORMATION\_SCHEMA views | | `schema` | string | No | Optional exact schema name filter | | `table` | string | No | Optional exact table name filter | | `includeViews` | boolean | No | Include views and materialized views alongside tables | #### Output [#output-28] | Parameter | Type | Description | | ------------------------ | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `statementHandle` | string | Snowflake statement handle | | `status` | string | Statement status: SUCCEEDED, RUNNING, or CANCELED | | `message` | string | Snowflake response message | | `result` | object | Completed result partition, or null while running or when no result is available | | ↳ `columns` | array | Documented Snowflake result column metadata, or null when Snowflake returned a metadata-less partition response | | ↳ `name` | string | Column name | | ↳ `type` | string | Snowflake data type | | ↳ `length` | number | Column length | | ↳ `precision` | number | Numeric precision | | ↳ `scale` | number | Numeric scale | | ↳ `nullable` | boolean | Whether the column is nullable | | ↳ `rows` | array | One complete Snowflake result partition as string or null arrays | | ↳ `totalRows` | number | Total result rows | | ↳ `currentPartition` | number | Zero-based partition returned | | ↳ `partitionCount` | number | Total partitions in the result set. Snowflake reports this only on the first partition, so pass it back to Get Statement when fetching later partitions | | ↳ `nextPartition` | number | Next partition to request with Get Statement, if one exists | | ↳ `truncated` | boolean | Whether more result partitions remain to fetch with Get Statement, or null when Snowflake returned a metadata-less partition response and partitionCount was not supplied. Snowflake does not report when the requested row limit capped the result set, so that cap is never reflected here | | `dml` | object | Completed DML statistics, or null when the statement has no DML statistics | | ↳ `rowsInserted` | number | Rows inserted by the statement | | ↳ `rowsUpdated` | number | Rows updated by the statement | | ↳ `rowsDeleted` | number | Rows deleted by the statement | | ↳ `duplicateRowsUpdated` | number | Duplicate rows updated by the statement | | ↳ `rowsAffected` | number | Total inserted, updated, and deleted rows | ### Snowflake Call Procedure [#snowflake-call-procedure] Call a stored procedure with explicitly typed Snowflake bindings. #### Input [#input-29] | Parameter | Type | Required | Description | | ------------------------- | ------ | -------- | ------------------------------------------------------------------------- | | `oauthCredential` | string | Yes | Snowflake credential (account host and programmatic access token) | | `role` | string | No | Snowflake role to use for this statement | | `statementTimeoutSeconds` | number | No | Statement timeout in seconds; 0 uses Snowflake maximum of 604800 seconds | | `warehouse` | string | No | Warehouse to use for this statement; defaults to the PAT user setting | | `maxRows` | number | No | Maximum result rows; defaults to 1000 with a Studio safety limit of 10000 | | `database` | string | Yes | Database name | | `schema` | string | Yes | Schema name | | `procedureName` | string | Yes | Stored procedure name | | `procedureArguments` | array | No | Ordered argument bindings with a Snowflake type and string value | #### Output [#output-29] | Parameter | Type | Description | | ------------------------ | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `statementHandle` | string | Snowflake statement handle | | `status` | string | Statement status: SUCCEEDED, RUNNING, or CANCELED | | `message` | string | Snowflake response message | | `result` | object | Completed result partition, or null while running or when no result is available | | ↳ `columns` | array | Documented Snowflake result column metadata, or null when Snowflake returned a metadata-less partition response | | ↳ `name` | string | Column name | | ↳ `type` | string | Snowflake data type | | ↳ `length` | number | Column length | | ↳ `precision` | number | Numeric precision | | ↳ `scale` | number | Numeric scale | | ↳ `nullable` | boolean | Whether the column is nullable | | ↳ `rows` | array | One complete Snowflake result partition as string or null arrays | | ↳ `totalRows` | number | Total result rows | | ↳ `currentPartition` | number | Zero-based partition returned | | ↳ `partitionCount` | number | Total partitions in the result set. Snowflake reports this only on the first partition, so pass it back to Get Statement when fetching later partitions | | ↳ `nextPartition` | number | Next partition to request with Get Statement, if one exists | | ↳ `truncated` | boolean | Whether more result partitions remain to fetch with Get Statement, or null when Snowflake returned a metadata-less partition response and partitionCount was not supplied. Snowflake does not report when the requested row limit capped the result set, so that cap is never reflected here | | `dml` | object | Completed DML statistics, or null when the statement has no DML statistics | | ↳ `rowsInserted` | number | Rows inserted by the statement | | ↳ `rowsUpdated` | number | Rows updated by the statement | | ↳ `rowsDeleted` | number | Rows deleted by the statement | | ↳ `duplicateRowsUpdated` | number | Duplicate rows updated by the statement | | ↳ `rowsAffected` | number | Total inserted, updated, and deleted rows | --- # Webflow Site Tokens (/en/integrations/webflow-service-account) Connect one Webflow site with a site API token. Choose its scopes in the site settings, then add the token to Studio. ## Prerequisites [#prerequisites] Only **site administrators** can generate site tokens. Each site allows a maximum of **5 tokens** — if you're at the cap, revoke an unused one before creating a token for Studio. ## Setting Up the Site Token [#setting-up-the-site-token] Open your site's **Site settings** and go to **Apps & integrations** → **API access** {/* TODO(screenshot): Webflow Site settings "Apps & integrations" page with the API access section highlighted */} Click **Generate API token** and give it a recognizable name (e.g. `studio-workflows`) Select the scopes the token needs. The minimum set for Studio's Webflow blocks is: ``` Sites: Read-only CMS: Read and write ``` The picker offers **no access**, **read-only**, or **read and write** per category. `Sites: Read-only` (`sites:read`) is required for Studio to verify the token when you connect it. `CMS: Read and write` (`cms:read` + `cms:write`) covers Studio's Webflow tools — listing, getting, creating, updating, and deleting CMS items. Add other scopes only if you need them {/* TODO(screenshot): Webflow token scope picker with Sites read and CMS read/write selected */} Copy the token when it's shown. Webflow only displays it once — if you close the dialog, you'll have to generate a new token. Site tokens expire after **365 consecutive days of inactivity**. Any API call resets the clock, so a workflow that runs regularly keeps its token alive indefinitely — but a workflow that sits dormant for a year will start failing silently with authentication errors. If a workflow runs rarely, set a calendar reminder to run it (or any Webflow block) at least once a year, or check the credential periodically in Studio. ## Adding the Site Token to Studio [#adding-the-site-token-to-studio] Open **Integrations** from your workspace sidebar Search for "Webflow" and open it, then click **Add to Studio** and choose **Add site token** {/* TODO(screenshot): Webflow integration page with the service-account connect option */} Paste the site API token and optionally set a display name and description {/* TODO(screenshot): Add Webflow site token dialog with the site API token filled in */} Click **Add site token**. Studio verifies the token by listing the sites it can access — if it fails, you'll see a specific error explaining what went wrong. A token created without the `sites:read` scope fails this check even if its CMS scopes are correct. The token is encrypted before being stored, along with the site it grants access to. ## Using the Credential in Workflows [#using-the-credential-in-workflows] Add a Webflow block to your workflow. In the credential dropdown, select the saved Webflow site token. Select it and configure the block as you normally would. {/* TODO(screenshot): Webflow block in a workflow with the service account selected as the credential */} The block calls Webflow's Data API (`api.webflow.com/v2/...`) using the token. It can only reach collections and items belonging to the token's site — pointing a block at a different site's collection fails with an access error. --- # Amazon DynamoDB (/en/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 | --- # Attio (/en/integrations/attio) {/* MANUAL-CONTENT-START:intro */} Use [Attio](https://www.attio.com/) in Studio 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 | | ↳ `type` | string | The actor type (e.g. workspace-member, api-token, system) | | ↳ `id` | string | The actor ID | | `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 | --- # Twilio Voice (/en/integrations/twilio_voice) {/* MANUAL-CONTENT-START:intro */} [Twilio Voice](https://www.twilio.com/en-us/voice) connects phone calls to workflows. Use this integration to place outbound calls, list calls, retrieve recordings, and receive call events through a webhook. Supply the call instructions and phone numbers required by the selected operation. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate Twilio Voice into the workflow. Make outbound calls and retrieve call recordings. ## Actions [#actions] ### Twilio Voice Make Call [#twilio-voice-make-call] Make an outbound phone call using Twilio Voice API. #### Input [#input] | Parameter | Type | Required | Description | | ------------------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------ | | `to` | string | Yes | Phone number to call in E.164 format (e.g., +14155551234) | | `from` | string | Yes | Your Twilio phone number to call from in E.164 format (e.g., +14155559876) | | `url` | string | No | Webhook URL that returns TwiML instructions for the call (e.g., [https://example.com/twiml](https://example.com/twiml)) | | `twiml` | string | No | TwiML instructions to execute. Use square brackets instead of angle brackets (e.g., \[Response]\[Say]Hello\[/Say]\[/Response]) | | `statusCallback` | string | No | Webhook URL for call status updates | | `statusCallbackMethod` | string | No | HTTP method for status callback (GET or POST) | | `accountSid` | string | Yes | Twilio Account SID | | `authToken` | string | Yes | Twilio Auth Token | | `record` | boolean | No | Whether to record the call | | `recordingStatusCallback` | string | No | Webhook URL for recording status updates | | `timeout` | number | No | Time to wait for answer before giving up (seconds, default: 60) | | `machineDetection` | string | No | Answering machine detection: Enable or DetectMessageEnd | #### Output [#output] | Parameter | Type | Description | | ----------- | ------- | ----------------------------------------------------------- | | `success` | boolean | Whether the call was successfully initiated | | `callSid` | string | Unique identifier for the call | | `status` | string | Call status (queued, ringing, in-progress, completed, etc.) | | `direction` | string | Call direction (outbound-api) | | `from` | string | Phone number the call is from | | `to` | string | Phone number the call is to | | `duration` | number | Call duration in seconds | | `price` | string | Cost of the call | | `priceUnit` | string | Currency of the price | | `error` | string | Error message if call failed | ### Twilio Voice List Calls [#twilio-voice-list-calls] Retrieve a list of calls made to and from an account. #### Input [#input-1] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------- | | `accountSid` | string | Yes | Twilio Account SID | | `authToken` | string | Yes | Twilio Auth Token | | `to` | string | No | Filter by calls to this phone number in E.164 format (e.g., +14155551234) | | `from` | string | No | Filter by calls from this phone number in E.164 format (e.g., +14155559876) | | `status` | string | No | Filter by call status (e.g., queued, ringing, in-progress, completed, busy, failed, no-answer, canceled) | | `startTimeAfter` | string | No | Filter calls that started on or after this date (YYYY-MM-DD) | | `startTimeBefore` | string | No | Filter calls that started on or before this date (YYYY-MM-DD) | | `pageSize` | number | No | Number of records to return (max 1000, default 50) | #### Output [#output-1] | Parameter | Type | Description | | ---------- | ------- | --------------------------------------------- | | `success` | boolean | Whether the calls were successfully retrieved | | `calls` | array | Array of call objects | | `total` | number | Total number of calls returned | | `page` | number | Current page number | | `pageSize` | number | Number of calls per page | | `error` | string | Error message if retrieval failed | ### Twilio Voice Get Recording [#twilio-voice-get-recording] Retrieve call recording information and transcription (if enabled via TwiML). #### Input [#input-2] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | -------------------------------------------------------------------- | | `recordingSid` | string | Yes | Recording SID to retrieve (e.g., RExxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx) | | `accountSid` | string | Yes | Twilio Account SID | | `authToken` | string | Yes | Twilio Auth Token | #### Output [#output-2] | Parameter | Type | Description | | ------------------------ | ------- | ----------------------------------------------------- | | `success` | boolean | Whether the recording was successfully retrieved | | `recordingSid` | string | Unique identifier for the recording | | `callSid` | string | Call SID this recording belongs to | | `duration` | number | Duration of the recording in seconds | | `status` | string | Recording status (completed, processing, etc.) | | `channels` | number | Number of channels (1 for mono, 2 for dual) | | `source` | string | How the recording was created | | `mediaUrl` | string | URL to download the recording media file | | `file` | file | Downloaded recording media file | | `price` | string | Cost of the recording | | `priceUnit` | string | Currency of the price | | `uri` | string | Relative URI of the recording resource | | `transcriptionText` | string | Transcribed text from the recording (if available) | | `transcriptionStatus` | string | Transcription status (completed, in-progress, failed) | | `transcriptionPrice` | string | Cost of the transcription | | `transcriptionPriceUnit` | string | Currency of the transcription price | | `error` | string | Error message if retrieval failed | ## Triggers [#triggers] A **Trigger** is a block that starts a workflow when an event happens in this service. ### Twilio Voice Webhook [#twilio-voice-webhook] Trigger workflow when phone calls are received via Twilio Voice #### Configuration [#configuration] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `accountSid` | string | Yes | Your Twilio Account SID from the Twilio Console | | `authToken` | string | Yes | Your Twilio Auth Token for webhook signature verification | | `twimlResponse` | string | No | TwiML instructions to return immediately to Twilio. Use square brackets instead of angle brackets (e.g., \[Response] instead of \). This controls what happens when the call comes in (e.g., play a message, record, gather input). Your workflow will execute in the background. | #### Output [#output-3] | Parameter | Type | Description | | --------------- | ------ | ------------------------------------------------------------------ | | `callSid` | string | Unique identifier for this call | | `accountSid` | string | Twilio Account SID | | `from` | string | Caller's phone number (E.164 format) | | `to` | string | Recipient phone number (your Twilio number) | | `callStatus` | string | Status of the call (queued, ringing, in-progress, completed, etc.) | | `direction` | string | Call direction: inbound or outbound | | `apiVersion` | string | Twilio API version | | `callerName` | string | Caller ID name if available | | `forwardedFrom` | string | Phone number that forwarded this call | | `digits` | string | DTMF digits entered by caller (from \) | | `speechResult` | string | Speech recognition result (if using \ with speech) | | `recordingUrl` | string | URL of call recording if available | | `recordingSid` | string | Recording SID if available | | `called` | string | Phone number that was called (same as "to") | | `caller` | string | Phone number of the caller (same as "from") | | `toCity` | string | City of the called number | | `toState` | string | State/province of the called number | | `toZip` | string | Zip/postal code of the called number | | `toCountry` | string | Country of the called number | | `fromCity` | string | City of the caller | | `fromState` | string | State/province of the caller | | `fromZip` | string | Zip/postal code of the caller | | `fromCountry` | string | Country of the caller | | `calledCity` | string | City of the called number (same as toCity) | | `calledState` | string | State of the called number (same as toState) | | `calledZip` | string | Zip code of the called number (same as toZip) | | `calledCountry` | string | Country of the called number (same as toCountry) | | `callerCity` | string | City of the caller (same as fromCity) | | `callerState` | string | State of the caller (same as fromState) | | `callerZip` | string | Zip code of the caller (same as fromZip) | | `callerCountry` | string | Country of the caller (same as fromCountry) | | `callToken` | string | Twilio call token for authentication | | `raw` | string | Complete raw webhook payload from Twilio as JSON string | --- # Thrive (/en/integrations/thrive) {/* MANUAL-CONTENT-START:intro */} Use [Thrive Learning](https://thrivelearning.com/) in Studio to manage learners, audiences, assignments, enrolments, and completion records. Workflows can look up users by ID or ref, manage audience members and managers, and retrieve content and activity data. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate Thrive Learning into the workflow. Manage user lifecycle, audiences and their members and managers, content assignments and enrolments, learning completions, content and activity records, CPD, tags, and skills. ## Actions [#actions] ### Thrive Create User [#thrive-create-user] Create a new user in Thrive. #### Input [#input] | Parameter | Type | Required | Description | | ------------------ | ------- | -------- | ------------------------------------------------------------------------------------ | | `tenantId` | string | Yes | Thrive Tenant ID (used as the Basic auth username) | | `apiKey` | string | Yes | Thrive API key (used as the Basic auth password) | | `host` | string | No | Region-specific API host | | `ref` | string | Yes | Your organisation's unique identifier for this individual | | `firstName` | string | Yes | The given name of the individual | | `lastName` | string | Yes | The family name of the individual | | `email` | string | No | The email address for the user (required unless loginMethod is 'ref') | | `loginMethod` | string | No | How the user logs in: 'email' or 'ref' (defaults to 'email') | | `role` | string | No | Role assigned: 'administrator', 'learneradmin', or 'learner' (defaults to 'learner') | | `jobTitle` | string | No | Name of this individual's role in your organisation | | `managerRef` | string | No | Your organisation's unique identifier for this individual's line manager | | `startDate` | string | No | Date this individual started with your organisation (ISO 8601) | | `endDate` | string | No | Date this individual left your organisation (ISO 8601) | | `timeZone` | string | No | The user's preferred timezone (tenant default if omitted) | | `languageCode` | string | No | The user's preferred language (e.g. 'en-gb') | | `sso` | boolean | No | Whether the account is managed by an authentication provider | | `domain` | string | No | Domain this individual is associated with | | `additionalFields` | string | No | JSON object of custom field key-value pairs. Example: \{"department":"Sales"} | #### Output [#output] | Parameter | Type | Description | | -------------------- | ------- | -------------------------------------------------- | | `user` | object | The created user | | ↳ `id` | string | The user ID | | ↳ `loginMethod` | string | How the user logs in | | ↳ `ref` | string | Your organisation's unique identifier for the user | | ↳ `email` | string | The email address for the user | | ↳ `firstName` | string | The given name of the individual | | ↳ `lastName` | string | The family name of the individual | | ↳ `role` | string | Role assigned to this individual | | ↳ `jobTitle` | string | Name of this individual's role | | ↳ `managerRef` | string | The line manager's ref | | ↳ `startDate` | string | Date started with the organisation | | ↳ `endDate` | string | Date left the organisation | | ↳ `timeZone` | string | The user's preferred timezone | | ↳ `languageCode` | string | The user's preferred language | | ↳ `active` | boolean | Whether the account is active or suspended | | ↳ `createdAt` | string | Date/time the user was created | | ↳ `updatedAt` | string | Date/time the user was last modified | | ↳ `sso` | boolean | Whether the account is managed by an auth provider | | ↳ `domain` | string | Domain this individual is associated with | | ↳ `additionalFields` | json | Custom field values for this user | ### Thrive Update User [#thrive-update-user] Update an existing user in Thrive by ref. Only the fields provided are changed. #### Input [#input-1] | Parameter | Type | Required | Description | | ------------------ | ------- | -------- | ----------------------------------------------------------------------------- | | `tenantId` | string | Yes | Thrive Tenant ID (used as the Basic auth username) | | `apiKey` | string | Yes | Thrive API key (used as the Basic auth password) | | `host` | string | No | Region-specific API host | | `ref` | string | Yes | The user ref to update | | `firstName` | string | No | The given name of the individual | | `lastName` | string | No | The family name of the individual | | `email` | string | No | The email address for the user | | `loginMethod` | string | No | How the user logs in: 'email' or 'ref' | | `role` | string | No | Role assigned: 'administrator', 'learneradmin', or 'learner' | | `jobTitle` | string | No | Name of this individual's role in your organisation | | `managerRef` | string | No | Your organisation's unique identifier for this individual's line manager | | `startDate` | string | No | Date this individual started with your organisation (ISO 8601) | | `endDate` | string | No | Date this individual left your organisation (ISO 8601) | | `timeZone` | string | No | The user's preferred timezone | | `languageCode` | string | No | The user's preferred language (e.g. 'en-gb') | | `sso` | boolean | No | Whether the account is managed by an authentication provider | | `domain` | string | No | Domain this individual is associated with | | `additionalFields` | string | No | JSON object of custom field key-value pairs. Example: \{"department":"Sales"} | #### Output [#output-1] | Parameter | Type | Description | | -------------------- | ------- | -------------------------------------------------- | | `user` | object | The updated user | | ↳ `id` | string | The user ID | | ↳ `loginMethod` | string | How the user logs in | | ↳ `ref` | string | Your organisation's unique identifier for the user | | ↳ `email` | string | The email address for the user | | ↳ `firstName` | string | The given name of the individual | | ↳ `lastName` | string | The family name of the individual | | ↳ `role` | string | Role assigned to this individual | | ↳ `jobTitle` | string | Name of this individual's role | | ↳ `managerRef` | string | The line manager's ref | | ↳ `startDate` | string | Date started with the organisation | | ↳ `endDate` | string | Date left the organisation | | ↳ `timeZone` | string | The user's preferred timezone | | ↳ `languageCode` | string | The user's preferred language | | ↳ `active` | boolean | Whether the account is active or suspended | | ↳ `createdAt` | string | Date/time the user was created | | ↳ `updatedAt` | string | Date/time the user was last modified | | ↳ `sso` | boolean | Whether the account is managed by an auth provider | | ↳ `domain` | string | Domain this individual is associated with | | ↳ `additionalFields` | json | Custom field values for this user | ### Thrive Delete User [#thrive-delete-user] Permanently delete (obfuscate) a user in Thrive by ref while retaining training history. #### Input [#input-2] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | -------------------------------------------------- | | `tenantId` | string | Yes | Thrive Tenant ID (used as the Basic auth username) | | `apiKey` | string | Yes | Thrive API key (used as the Basic auth password) | | `host` | string | No | Region-specific API host | | `ref` | string | Yes | The user ref to delete | #### Output [#output-2] | Parameter | Type | Description | | --------- | ------- | ---------------------------- | | `success` | boolean | Whether the user was deleted | ### Thrive Suspend User [#thrive-suspend-user] Suspend a user in Thrive by ref, marking the account inactive. #### Input [#input-3] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ---------------------------------------------------------- | | `tenantId` | string | Yes | Thrive Tenant ID (used as the Basic auth username) | | `apiKey` | string | Yes | Thrive API key (used as the Basic auth password) | | `host` | string | No | Region-specific API host | | `ref` | string | Yes | The user ref to suspend | | `endDate` | string | No | The date this individual left your organisation (ISO 8601) | #### Output [#output-3] | Parameter | Type | Description | | -------------------- | ------- | -------------------------------------------------- | | `user` | object | The suspended user | | ↳ `id` | string | The user ID | | ↳ `loginMethod` | string | How the user logs in | | ↳ `ref` | string | Your organisation's unique identifier for the user | | ↳ `email` | string | The email address for the user | | ↳ `firstName` | string | The given name of the individual | | ↳ `lastName` | string | The family name of the individual | | ↳ `role` | string | Role assigned to this individual | | ↳ `jobTitle` | string | Name of this individual's role | | ↳ `managerRef` | string | The line manager's ref | | ↳ `startDate` | string | Date started with the organisation | | ↳ `endDate` | string | Date left the organisation | | ↳ `timeZone` | string | The user's preferred timezone | | ↳ `languageCode` | string | The user's preferred language | | ↳ `active` | boolean | Whether the account is active or suspended | | ↳ `createdAt` | string | Date/time the user was created | | ↳ `updatedAt` | string | Date/time the user was last modified | | ↳ `sso` | boolean | Whether the account is managed by an auth provider | | ↳ `domain` | string | Domain this individual is associated with | | ↳ `additionalFields` | json | Custom field values for this user | ### Thrive Search Users [#thrive-search-users] Search users in Thrive and return basic user information with pagination. #### Input [#input-4] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ------------------------------------------------------------------- | | `tenantId` | string | Yes | Thrive Tenant ID (used as the Basic auth username) | | `apiKey` | string | Yes | Thrive API key (used as the Basic auth password) | | `host` | string | No | Region-specific API host | | `page` | number | No | Page number for pagination (default 1) | | `perPage` | number | No | Number of results per page (1-1000, default 100) | | `updatedSince` | string | No | Return only users updated on or after this date/time (ISO 8601) | | `statuses` | string | No | Comma-separated statuses to include: active, inactive, expired, new | | `omitStatuses` | string | No | Comma-separated statuses to exclude: active, inactive, expired, new | | `status` | string | No | Filter by a single status: active, inactive, expired, or new | #### Output [#output-4] | Parameter | Type | Description | | -------------------- | ------- | ------------------------------------------ | | `results` | array | The matching users | | ↳ `id` | string | The user's ID | | ↳ `ref` | string | The user's ref | | ↳ `firstName` | string | The user's first name | | ↳ `lastName` | string | The user's last name | | ↳ `email` | string | The user's email | | ↳ `role` | string | The user's role | | ↳ `status` | string | The user's status | | ↳ `positions` | array | The user's positions | | ↳ `additionalFields` | json | Custom field values | | ↳ `languageCode` | string | The user's language code | | ↳ `deleted` | boolean | Whether the user has been deleted | | ↳ `compliance` | number | The user's compliance score | | ↳ `level` | number | The user's level | | ↳ `firstLogin` | string | First login timestamp (ISO 8601) | | ↳ `lastLogin` | string | Last login timestamp (ISO 8601) | | ↳ `tags` | json | Tag membership (e.g. skills) | | ↳ `usersFollowing` | array | IDs of users this user follows | | ↳ `tagsFollowing` | array | Tags this user follows | | ↳ `createdAt` | string | Creation timestamp (ISO 8601) | | ↳ `updatedAt` | string | Last-update timestamp (ISO 8601) | | ↳ `hasPicture` | boolean | Whether the user has a profile picture | | ↳ `timeZone` | string | The user's time zone | | ↳ `summary` | string | The user's summary | | ↳ `relevancy` | number | The user's relevancy score | | ↳ `rank` | json | The user's rank details | | ↳ `agreedTerms` | boolean | Whether the user agreed to the terms | | ↳ `onboarded` | boolean | Whether the user has been onboarded | | ↳ `audiences` | array | Audience IDs the user belongs to | | ↳ `singleSignOn` | boolean | Whether the user uses single sign-on | | `pagination` | object | Pagination details | | ↳ `totalResults` | number | Total number of results matching the query | | ↳ `totalPages` | number | Total number of pages available | | ↳ `page` | number | Current page number | | ↳ `perPage` | number | Number of results per page | ### Thrive Get User by ID [#thrive-get-user-by-id] Get a single user in Thrive by their ID and return basic user information. #### Input [#input-5] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | -------------------------------------------------- | | `tenantId` | string | Yes | Thrive Tenant ID (used as the Basic auth username) | | `apiKey` | string | Yes | Thrive API key (used as the Basic auth password) | | `host` | string | No | Region-specific API host | | `id` | string | Yes | The user ID | #### Output [#output-5] | Parameter | Type | Description | | -------------------- | ------- | -------------------------------------- | | `user` | object | The user | | ↳ `id` | string | The user's ID | | ↳ `ref` | string | The user's ref | | ↳ `firstName` | string | The user's first name | | ↳ `lastName` | string | The user's last name | | ↳ `email` | string | The user's email | | ↳ `role` | string | The user's role | | ↳ `status` | string | The user's status | | ↳ `positions` | array | The user's positions | | ↳ `additionalFields` | json | Custom field values | | ↳ `languageCode` | string | The user's language code | | ↳ `deleted` | boolean | Whether the user has been deleted | | ↳ `compliance` | number | The user's compliance score | | ↳ `level` | number | The user's level | | ↳ `firstLogin` | string | First login timestamp (ISO 8601) | | ↳ `lastLogin` | string | Last login timestamp (ISO 8601) | | ↳ `tags` | json | Tag membership (e.g. skills) | | ↳ `usersFollowing` | array | IDs of users this user follows | | ↳ `tagsFollowing` | array | Tags this user follows | | ↳ `createdAt` | string | Creation timestamp (ISO 8601) | | ↳ `updatedAt` | string | Last-update timestamp (ISO 8601) | | ↳ `hasPicture` | boolean | Whether the user has a profile picture | | ↳ `timeZone` | string | The user's time zone | | ↳ `summary` | string | The user's summary | | ↳ `relevancy` | number | The user's relevancy score | | ↳ `rank` | json | The user's rank details | | ↳ `agreedTerms` | boolean | Whether the user agreed to the terms | | ↳ `onboarded` | boolean | Whether the user has been onboarded | | ↳ `audiences` | array | Audience IDs the user belongs to | | ↳ `singleSignOn` | boolean | Whether the user uses single sign-on | ### Thrive Get User by Ref [#thrive-get-user-by-ref] Get a single user in Thrive by their ref and return basic user information. #### Input [#input-6] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | -------------------------------------------------- | | `tenantId` | string | Yes | Thrive Tenant ID (used as the Basic auth username) | | `apiKey` | string | Yes | Thrive API key (used as the Basic auth password) | | `host` | string | No | Region-specific API host | | `ref` | string | Yes | The user ref | #### Output [#output-6] | Parameter | Type | Description | | -------------------- | ------ | ---------------------------- | | `user` | object | The user (basic information) | | ↳ `id` | string | The user's ID | | ↳ `ref` | string | The user's ref | | ↳ `firstName` | string | The user's first name | | ↳ `lastName` | string | The user's last name | | ↳ `email` | string | The user's email | | ↳ `role` | string | The user's role | | ↳ `status` | string | The user's status | | ↳ `positions` | array | The user's positions | | ↳ `additionalFields` | json | Custom field values | | ↳ `languageCode` | string | The user's language code | ### Thrive List Audiences [#thrive-list-audiences] List audiences and structures in Thrive with pagination. #### Input [#input-7] | Parameter | Type | Required | Description | | --------------- | ------- | -------- | ------------------------------------------------------------------- | | `tenantId` | string | Yes | Thrive Tenant ID (used as the Basic auth username) | | `apiKey` | string | Yes | Thrive API key (used as the Basic auth password) | | `host` | string | No | Region-specific API host | | `apiControlled` | boolean | No | Filter to only return audiences which are / are not API controlled | | `updatedSince` | string | No | Return only audiences updated on or after this date/time (ISO 8601) | | `page` | number | No | Page number for pagination (default 1) | | `perPage` | number | No | Number of results per page (1-1000, default 100) | #### Output [#output-7] | Parameter | Type | Description | | ----------------- | ------- | ------------------------------------------ | | `results` | array | The matching audiences | | ↳ `id` | string | The id of the audience | | ↳ `name` | string | The name of the audience | | ↳ `reference` | string | The external reference for the audience | | ↳ `apiControlled` | boolean | Whether the audience is API controlled | | ↳ `category` | string | Either "audience" or "structure" | | ↳ `type` | string | Either "manual" or "smart" | | ↳ `parent` | object | Parent audience/structure information | | ↳ `name` | string | The name of the parent audience | | ↳ `reference` | string | The external reference for the parent | | ↳ `id` | string | The id of the parent audience/structure | | ↳ `createdAt` | string | Creation timestamp (ISO 8601) | | ↳ `updatedAt` | string | Last-update timestamp (ISO 8601) | | `pagination` | object | Pagination details | | ↳ `totalResults` | number | Total number of results matching the query | | ↳ `totalPages` | number | Total number of pages available | | ↳ `page` | number | Current page number | | ↳ `perPage` | number | Number of results per page | ### Thrive Create Audience [#thrive-create-audience] Create a new audience or structure in Thrive. #### Input [#input-8] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------------------------------------------------------------------------------- | | `tenantId` | string | Yes | Thrive Tenant ID (used as the Basic auth username) | | `apiKey` | string | Yes | Thrive API key (used as the Basic auth password) | | `host` | string | No | Region-specific API host | | `name` | string | No | The name of the audience (max 100 characters) | | `reference` | string | No | The external reference for the audience (max 100 characters) | | `parentId` | string | No | The id or reference of the parent audience/structure; leave blank for a parent audience/structure | | `category` | string | No | The audience category: 'audience' or 'structure' | #### Output [#output-8] | Parameter | Type | Description | | ----------------- | ------- | --------------------------------------- | | `audience` | object | The created audience | | ↳ `id` | string | The id of the audience | | ↳ `name` | string | The name of the audience | | ↳ `reference` | string | The external reference for the audience | | ↳ `apiControlled` | boolean | Whether the audience is API controlled | | ↳ `category` | string | Either "audience" or "structure" | | ↳ `type` | string | Either "manual" or "smart" | | ↳ `parent` | object | Parent audience/structure information | | ↳ `name` | string | The name of the parent audience | | ↳ `reference` | string | The external reference for the parent | | ↳ `id` | string | The id of the parent audience/structure | | ↳ `createdAt` | string | Creation timestamp (ISO 8601) | | ↳ `updatedAt` | string | Last-update timestamp (ISO 8601) | ### Thrive Get Audience [#thrive-get-audience] Get a single audience or structure in Thrive by id or reference. #### Input [#input-9] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | -------------------------------------------------- | | `tenantId` | string | Yes | Thrive Tenant ID (used as the Basic auth username) | | `apiKey` | string | Yes | Thrive API key (used as the Basic auth password) | | `host` | string | No | Region-specific API host | | `audienceId` | string | Yes | The audience id or audience reference | #### Output [#output-9] | Parameter | Type | Description | | ----------------- | ------- | --------------------------------------- | | `audience` | object | The audience | | ↳ `id` | string | The id of the audience | | ↳ `name` | string | The name of the audience | | ↳ `reference` | string | The external reference for the audience | | ↳ `apiControlled` | boolean | Whether the audience is API controlled | | ↳ `category` | string | Either "audience" or "structure" | | ↳ `type` | string | Either "manual" or "smart" | | ↳ `parent` | object | Parent audience/structure information | | ↳ `name` | string | The name of the parent audience | | ↳ `reference` | string | The external reference for the parent | | ↳ `id` | string | The id of the parent audience/structure | | ↳ `createdAt` | string | Creation timestamp (ISO 8601) | | ↳ `updatedAt` | string | Last-update timestamp (ISO 8601) | ### Thrive Update Audience [#thrive-update-audience] Update an audience in Thrive, optionally moving it to a new parent. #### Input [#input-10] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | --------------------------------------------------------------- | | `tenantId` | string | Yes | Thrive Tenant ID (used as the Basic auth username) | | `apiKey` | string | Yes | Thrive API key (used as the Basic auth password) | | `host` | string | No | Region-specific API host | | `audienceId` | string | Yes | The audience id or audience reference | | `name` | string | No | The name of the audience (max 100 characters) | | `reference` | string | No | The external reference for the audience (max 100 characters) | | `parentId` | string | No | The id of the parent audience/structure to move the audience to | #### Output [#output-10] | Parameter | Type | Description | | ----------------- | ------- | --------------------------------------- | | `audience` | object | The updated audience | | ↳ `id` | string | The id of the audience | | ↳ `name` | string | The name of the audience | | ↳ `reference` | string | The external reference for the audience | | ↳ `apiControlled` | boolean | Whether the audience is API controlled | | ↳ `category` | string | Either "audience" or "structure" | | ↳ `type` | string | Either "manual" or "smart" | | ↳ `parent` | object | Parent audience/structure information | | ↳ `name` | string | The name of the parent audience | | ↳ `reference` | string | The external reference for the parent | | ↳ `id` | string | The id of the parent audience/structure | | ↳ `createdAt` | string | Creation timestamp (ISO 8601) | | ↳ `updatedAt` | string | Last-update timestamp (ISO 8601) | ### Thrive Delete Audience [#thrive-delete-audience] Delete an audience in Thrive (only if it has no child audiences). #### Input [#input-11] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | -------------------------------------------------- | | `tenantId` | string | Yes | Thrive Tenant ID (used as the Basic auth username) | | `apiKey` | string | Yes | Thrive API key (used as the Basic auth password) | | `host` | string | No | Region-specific API host | | `audienceId` | string | Yes | The audience id or audience reference | #### Output [#output-11] | Parameter | Type | Description | | --------- | ------- | -------------------------------- | | `success` | boolean | Whether the audience was deleted | ### Thrive List Audience Members [#thrive-list-audience-members] List the members of a Thrive audience with pagination. #### Input [#input-12] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | -------------------------------------------------- | | `tenantId` | string | Yes | Thrive Tenant ID (used as the Basic auth username) | | `apiKey` | string | Yes | Thrive API key (used as the Basic auth password) | | `host` | string | No | Region-specific API host | | `audienceId` | string | Yes | The audience id or audience reference | | `page` | number | No | Page number for pagination (default 1) | | `perPage` | number | No | Number of results per page (1-1000, default 100) | #### Output [#output-12] | Parameter | Type | Description | | ---------------- | ------ | ------------------------------------------ | | `results` | array | The audience members | | ↳ `userId` | string | The user's id | | ↳ `reference` | string | The user's reference | | ↳ `email` | string | The user's email | | `pagination` | object | Pagination details | | ↳ `totalResults` | number | Total number of results matching the query | | ↳ `totalPages` | number | Total number of pages available | | ↳ `page` | number | Current page number | | ↳ `perPage` | number | Number of results per page | ### Thrive Add Audience Members [#thrive-add-audience-members] Add members to a Thrive audience by email, ref, or id. #### Input [#input-13] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------------------------------------------------------------------------------------------------------ | | `tenantId` | string | Yes | Thrive Tenant ID (used as the Basic auth username) | | `apiKey` | string | Yes | Thrive API key (used as the Basic auth password) | | `host` | string | No | Region-specific API host | | `audienceId` | string | Yes | The audience id or audience reference | | `users` | string | Yes | JSON array of user emails/refs/ids to add (1-100). Example: \["[user@example.com](mailto:user@example.com)"] | #### Output [#output-13] | Parameter | Type | Description | | ------------- | ------ | ------------------------------------------------------------------------------- | | `result` | object | The add/replace result, with successfully and unsuccessfully processed entities | | ↳ `success` | object | Successfully processed entities | | ↳ `count` | number | Number of successfully processed entities | | ↳ `entities` | array | The successfully processed entities | | ↳ `reference` | string | The entity reference | | ↳ `failure` | object | Unsuccessfully processed entities | | ↳ `count` | number | Number of unsuccessfully processed entities | | ↳ `entities` | array | The unsuccessfully processed entities | | ↳ `reason` | string | The reason for the failure | | ↳ `reference` | string | The entity reference | ### Thrive Replace Audience Members [#thrive-replace-audience-members] Replace a Thrive audience's entire members list with the given users (does not support an empty array). #### Input [#input-14] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | | `tenantId` | string | Yes | Thrive Tenant ID (used as the Basic auth username) | | `apiKey` | string | Yes | Thrive API key (used as the Basic auth password) | | `host` | string | No | Region-specific API host | | `audienceId` | string | Yes | The audience id or audience reference | | `users` | string | Yes | JSON array of user emails/refs/ids that replaces the whole members list (1-100, no empty array). Example: \["[user@example.com](mailto:user@example.com)"] | #### Output [#output-14] | Parameter | Type | Description | | ------------- | ------ | ------------------------------------------------------------------------------- | | `result` | object | The add/replace result, with successfully and unsuccessfully processed entities | | ↳ `success` | object | Successfully processed entities | | ↳ `count` | number | Number of successfully processed entities | | ↳ `entities` | array | The successfully processed entities | | ↳ `reference` | string | The entity reference | | ↳ `failure` | object | Unsuccessfully processed entities | | ↳ `count` | number | Number of unsuccessfully processed entities | | ↳ `entities` | array | The unsuccessfully processed entities | | ↳ `reason` | string | The reason for the failure | | ↳ `reference` | string | The entity reference | ### Thrive Remove Audience Member [#thrive-remove-audience-member] Remove a single member from a Thrive audience. #### Input [#input-15] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | -------------------------------------------------- | | `tenantId` | string | Yes | Thrive Tenant ID (used as the Basic auth username) | | `apiKey` | string | Yes | Thrive API key (used as the Basic auth password) | | `host` | string | No | Region-specific API host | | `audienceId` | string | Yes | The audience id or audience reference | | `userRef` | string | Yes | The user email, ref, or id to remove | #### Output [#output-15] | Parameter | Type | Description | | --------- | ------- | --------------------------------------- | | `success` | boolean | Whether the audience member was removed | ### Thrive List Audience Managers [#thrive-list-audience-managers] List the managers of a Thrive audience. #### Input [#input-16] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | -------------------------------------------------- | | `tenantId` | string | Yes | Thrive Tenant ID (used as the Basic auth username) | | `apiKey` | string | Yes | Thrive API key (used as the Basic auth password) | | `host` | string | No | Region-specific API host | | `audienceId` | string | Yes | The audience id or audience reference | #### Output [#output-16] | Parameter | Type | Description | | ------------------- | ------ | ------------------------------------------- | | `managers` | array | The audience managers | | ↳ `userId` | string | The user's id | | ↳ `reference` | string | The user's reference | | ↳ `email` | string | The user's email | | ↳ `permissions` | object | The manager permissions | | ↳ `audienceManager` | json | Audience manager permissions | | ↳ `peopleManager` | json | People manager permissions | | ↳ `administrator` | json | Administrator permissions (structures only) | ### Thrive Add Audience Managers [#thrive-add-audience-managers] Add managers to a Thrive audience with their permissions. #### Input [#input-17] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `tenantId` | string | Yes | Thrive Tenant ID (used as the Basic auth username) | | `apiKey` | string | Yes | Thrive API key (used as the Basic auth password) | | `host` | string | No | Region-specific API host | | `audienceId` | string | Yes | The audience id or audience reference | | `managers` | string | Yes | JSON array of manager objects (1-100). Each: \{"reference":"[user@example.com](mailto:user@example.com)","permissions":\{"audienceManager":\{"manageContent":true,"assignments":true},"peopleManager":\{"canViewLearnPage":true,"insights":false,"manage":false},"administrator":\{"canAddAudienceManagers":false}}} | #### Output [#output-17] | Parameter | Type | Description | | ------------- | ------ | ------------------------------------------------------------------------------- | | `result` | object | The add/replace result, with successfully and unsuccessfully processed entities | | ↳ `success` | object | Successfully processed entities | | ↳ `count` | number | Number of successfully processed entities | | ↳ `entities` | array | The successfully processed entities | | ↳ `reference` | string | The entity reference | | ↳ `failure` | object | Unsuccessfully processed entities | | ↳ `count` | number | Number of unsuccessfully processed entities | | ↳ `entities` | array | The unsuccessfully processed entities | | ↳ `reason` | string | The reason for the failure | | ↳ `reference` | string | The entity reference | ### Thrive Replace Audience Managers [#thrive-replace-audience-managers] Replace a Thrive audience's entire manager list with the given managers (does not support an empty array). #### Input [#input-18] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `tenantId` | string | Yes | Thrive Tenant ID (used as the Basic auth username) | | `apiKey` | string | Yes | Thrive API key (used as the Basic auth password) | | `host` | string | No | Region-specific API host | | `audienceId` | string | Yes | The audience id or audience reference | | `managers` | string | Yes | JSON array of manager objects that replaces the whole manager list (1-100, no empty array). Each: \{"reference":"[user@example.com](mailto:user@example.com)","permissions":\{"audienceManager":\{"manageContent":true,"assignments":true},"peopleManager":\{"canViewLearnPage":true,"insights":false,"manage":false},"administrator":\{"canAddAudienceManagers":false}}} | #### Output [#output-18] | Parameter | Type | Description | | ------------- | ------ | ------------------------------------------------------------------------------- | | `result` | object | The add/replace result, with successfully and unsuccessfully processed entities | | ↳ `success` | object | Successfully processed entities | | ↳ `count` | number | Number of successfully processed entities | | ↳ `entities` | array | The successfully processed entities | | ↳ `reference` | string | The entity reference | | ↳ `failure` | object | Unsuccessfully processed entities | | ↳ `count` | number | Number of unsuccessfully processed entities | | ↳ `entities` | array | The unsuccessfully processed entities | | ↳ `reason` | string | The reason for the failure | | ↳ `reference` | string | The entity reference | ### Thrive Remove Audience Manager [#thrive-remove-audience-manager] Remove a single manager from a Thrive audience. #### Input [#input-19] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | -------------------------------------------------- | | `tenantId` | string | Yes | Thrive Tenant ID (used as the Basic auth username) | | `apiKey` | string | Yes | Thrive API key (used as the Basic auth password) | | `host` | string | No | Region-specific API host | | `audienceId` | string | Yes | The audience id or audience reference | | `userId` | string | Yes | The user email, ref, or id to remove as a manager | #### Output [#output-19] | Parameter | Type | Description | | --------- | ------- | ---------------------------------------- | | `success` | boolean | Whether the audience manager was removed | ### Thrive List Assignments [#thrive-list-assignments] List compliance assignments in Thrive, optionally filtered by audience. #### Input [#input-20] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | --------------------------------------------------------------- | | `tenantId` | string | Yes | Thrive Tenant ID (used as the Basic auth username) | | `apiKey` | string | Yes | Thrive API key (used as the Basic auth password) | | `host` | string | No | Region-specific API host | | `audienceId` | string | No | Filter by audience ID or audience reference | | `updatedSince` | string | No | Return only items updated on or after this date/time (ISO 8601) | | `page` | number | No | Page number for pagination (default 1) | | `perPage` | number | No | Number of results per page (1-100, default 100) | #### Output [#output-20] | Parameter | Type | Description | | -------------------------- | ------- | -------------------------------------------------- | | `assignments` | array | The matching assignments | | ↳ `id` | string | The assignment ID | | ↳ `audienceId` | string | The audience ID | | ↳ `primaryContentId` | string | The content ID for the primary content | | ↳ `alternativeContentIds` | array | Content IDs that can also complete the assignment | | ↳ `hideAlternativeContent` | boolean | Whether to hide the alternative content | | ↳ `completionPeriod` | number | Number of days required to complete the assignment | | ↳ `recurrence` | number | Number of days until the assignment reoccurs | | ↳ `isActive` | boolean | Whether the assignment is active | | ↳ `isDeleted` | boolean | Whether the assignment is deleted | | ↳ `createdAt` | string | Creation timestamp (ISO 8601) | | ↳ `deletedAt` | string | Deletion timestamp (ISO 8601) | | ↳ `updatedAt` | string | Last-update timestamp (ISO 8601) | ### Thrive Create Assignment [#thrive-create-assignment] Create a compliance assignment in Thrive for an audience and content item. #### Input [#input-21] | Parameter | Type | Required | Description | | ------------------------ | ------- | -------- | ------------------------------------------------------------------- | | `tenantId` | string | Yes | Thrive Tenant ID (used as the Basic auth username) | | `apiKey` | string | Yes | Thrive API key (used as the Basic auth password) | | `host` | string | No | Region-specific API host | | `audienceId` | string | Yes | The audience ID | | `contentId` | string | Yes | The content ID for the primary content | | `alternativeContentIds` | string | No | JSON array of content IDs that can also complete the assignment | | `hideAlternativeContent` | boolean | No | Whether to hide the alternative content | | `completionPeriod` | number | No | The number of days required to complete the assignment (default 30) | | `recurrence` | number | No | The number of days until the assignment will reoccur | #### Output [#output-21] | Parameter | Type | Description | | -------------------------- | ------- | -------------------------------------------------- | | `assignment` | object | The created assignment | | ↳ `id` | string | The assignment ID | | ↳ `audienceId` | string | The audience ID | | ↳ `primaryContentId` | string | The content ID for the primary content | | ↳ `alternativeContentIds` | array | Content IDs that can also complete the assignment | | ↳ `hideAlternativeContent` | boolean | Whether to hide the alternative content | | ↳ `completionPeriod` | number | Number of days required to complete the assignment | | ↳ `recurrence` | number | Number of days until the assignment reoccurs | | ↳ `isActive` | boolean | Whether the assignment is active | | ↳ `isDeleted` | boolean | Whether the assignment is deleted | | ↳ `createdAt` | string | Creation timestamp (ISO 8601) | | ↳ `deletedAt` | string | Deletion timestamp (ISO 8601) | | ↳ `updatedAt` | string | Last-update timestamp (ISO 8601) | ### Thrive Get Assignment [#thrive-get-assignment] Get a single compliance assignment in Thrive by its ID. #### Input [#input-22] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | -------------------------------------------------- | | `tenantId` | string | Yes | Thrive Tenant ID (used as the Basic auth username) | | `apiKey` | string | Yes | Thrive API key (used as the Basic auth password) | | `host` | string | No | Region-specific API host | | `assignmentId` | string | Yes | The assignment ID | #### Output [#output-22] | Parameter | Type | Description | | -------------------------- | ------- | -------------------------------------------------- | | `assignment` | object | The assignment | | ↳ `id` | string | The assignment ID | | ↳ `audienceId` | string | The audience ID | | ↳ `primaryContentId` | string | The content ID for the primary content | | ↳ `alternativeContentIds` | array | Content IDs that can also complete the assignment | | ↳ `hideAlternativeContent` | boolean | Whether to hide the alternative content | | ↳ `completionPeriod` | number | Number of days required to complete the assignment | | ↳ `recurrence` | number | Number of days until the assignment reoccurs | | ↳ `isActive` | boolean | Whether the assignment is active | | ↳ `isDeleted` | boolean | Whether the assignment is deleted | | ↳ `createdAt` | string | Creation timestamp (ISO 8601) | | ↳ `deletedAt` | string | Deletion timestamp (ISO 8601) | | ↳ `updatedAt` | string | Last-update timestamp (ISO 8601) | ### Thrive Update Assignment [#thrive-update-assignment] Update a compliance assignment in Thrive. #### Input [#input-23] | Parameter | Type | Required | Description | | ----------------------- | ------ | -------- | --------------------------------------------------------------- | | `tenantId` | string | Yes | Thrive Tenant ID (used as the Basic auth username) | | `apiKey` | string | Yes | Thrive API key (used as the Basic auth password) | | `host` | string | No | Region-specific API host | | `assignmentId` | string | Yes | The assignment ID | | `audienceId` | string | Yes | The audience ID | | `contentId` | string | No | The content ID for the primary content | | `completionPeriod` | number | No | The number of days required to complete the assignment | | `recurrence` | number | No | The number of days until the assignment will reoccur | | `alternativeContentIds` | string | No | JSON array of content IDs that can also complete the assignment | #### Output [#output-23] | Parameter | Type | Description | | -------------------------- | ------- | -------------------------------------------------- | | `assignment` | object | The updated assignment | | ↳ `id` | string | The assignment ID | | ↳ `audienceId` | string | The audience ID | | ↳ `primaryContentId` | string | The content ID for the primary content | | ↳ `alternativeContentIds` | array | Content IDs that can also complete the assignment | | ↳ `hideAlternativeContent` | boolean | Whether to hide the alternative content | | ↳ `completionPeriod` | number | Number of days required to complete the assignment | | ↳ `recurrence` | number | Number of days until the assignment reoccurs | | ↳ `isActive` | boolean | Whether the assignment is active | | ↳ `isDeleted` | boolean | Whether the assignment is deleted | | ↳ `createdAt` | string | Creation timestamp (ISO 8601) | | ↳ `deletedAt` | string | Deletion timestamp (ISO 8601) | | ↳ `updatedAt` | string | Last-update timestamp (ISO 8601) | ### Thrive Delete Assignment [#thrive-delete-assignment] Delete a compliance assignment in Thrive. #### Input [#input-24] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | -------------------------------------------------- | | `tenantId` | string | Yes | Thrive Tenant ID (used as the Basic auth username) | | `apiKey` | string | Yes | Thrive API key (used as the Basic auth password) | | `host` | string | No | Region-specific API host | | `assignmentId` | string | Yes | The assignment ID | | `audienceId` | string | Yes | The audience ID | #### Output [#output-24] | Parameter | Type | Description | | --------- | ------- | ---------------------------------- | | `success` | boolean | Whether the assignment was deleted | ### Thrive List Enrolments [#thrive-list-enrolments] List enrolments for a compliance assignment in Thrive. #### Input [#input-25] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | --------------------------------------------------------------------------------------- | | `tenantId` | string | Yes | Thrive Tenant ID (used as the Basic auth username) | | `apiKey` | string | Yes | Thrive API key (used as the Basic auth password) | | `host` | string | No | Region-specific API host | | `assignmentId` | string | Yes | The assignment ID | | `updatedAtFrom` | string | No | Start date to filter enrolments from (ISO 8601) | | `updatedAtTo` | string | No | Date to filter enrolments up to (ISO 8601). Requires updatedAtFrom. | | `status` | string | No | Filter by enrolment status: archived, complete, open, overdue, scheduled, or unassigned | | `page` | number | No | Page number for pagination (default 1) | | `perPage` | number | No | Number of results per page (1-100, default 100) | #### Output [#output-25] | Parameter | Type | Description | | -------------------- | ------ | ------------------------------------------------- | | `enrolments` | array | The matching enrolments | | ↳ `id` | string | The enrolment ID | | ↳ `userId` | string | The assignee user ID | | ↳ `assignmentId` | string | The assignment ID | | ↳ `audienceId` | string | The audience ID | | ↳ `primaryContentId` | string | The assigned content ID | | ↳ `status` | string | Enrolment status | | ↳ `availableDate` | string | Date a scheduled enrolment becomes open | | ↳ `dueDate` | string | Date after which a scheduled enrolment is overdue | | ↳ `lastCompletedAt` | string | Date a scheduled enrolment was last completed | | ↳ `history` | array | Event-log history entries | | ↳ `type` | string | The type of the logged event | | ↳ `completionId` | string | The completion ID | | ↳ `previousStatus` | string | The previous enrolment status | | ↳ `nextStatus` | string | The next enrolment status | | ↳ `createdAt` | string | Date the event was logged | | ↳ `updatedAt` | string | Date the event was last modified | | ↳ `updatedAt` | string | Date the enrolment was last updated | ### Thrive Get Enrolment [#thrive-get-enrolment] Get a single enrolment for a compliance assignment in Thrive. #### Input [#input-26] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | -------------------------------------------------- | | `tenantId` | string | Yes | Thrive Tenant ID (used as the Basic auth username) | | `apiKey` | string | Yes | Thrive API key (used as the Basic auth password) | | `host` | string | No | Region-specific API host | | `assignmentId` | string | Yes | The assignment ID | | `enrolmentId` | string | Yes | The enrolment ID | #### Output [#output-26] | Parameter | Type | Description | | -------------------- | ------ | ------------------------------------------------- | | `enrolment` | object | The enrolment | | ↳ `id` | string | The enrolment ID | | ↳ `userId` | string | The assignee user ID | | ↳ `assignmentId` | string | The assignment ID | | ↳ `audienceId` | string | The audience ID | | ↳ `primaryContentId` | string | The assigned content ID | | ↳ `status` | string | Enrolment status | | ↳ `availableDate` | string | Date a scheduled enrolment becomes open | | ↳ `dueDate` | string | Date after which a scheduled enrolment is overdue | | ↳ `lastCompletedAt` | string | Date a scheduled enrolment was last completed | | ↳ `history` | array | Event-log history entries | | ↳ `type` | string | The type of the logged event | | ↳ `completionId` | string | The completion ID | | ↳ `previousStatus` | string | The previous enrolment status | | ↳ `nextStatus` | string | The next enrolment status | | ↳ `createdAt` | string | Date the event was logged | | ↳ `updatedAt` | string | Date the event was last modified | | ↳ `updatedAt` | string | Date the enrolment was last updated | ### Thrive List Completions [#thrive-list-completions] List learning completion records in Thrive, optionally filtered by user or content. #### Input [#input-27] | Parameter | Type | Required | Description | | ------------------------- | ------- | -------- | ---------------------------------------------------------------------- | | `tenantId` | string | Yes | Thrive Tenant ID (used as the Basic auth username) | | `apiKey` | string | Yes | Thrive API key (used as the Basic auth password) | | `host` | string | No | Region-specific API host | | `contentId` | string | No | Filter by content | | `isRPL` | boolean | No | Filter by completions imported via Recognition of Prior Learning (RPL) | | `userId` | string | No | Filter by user | | `completedDateRangeStart` | string | No | Filter by completedDate (completedDate >= this date/date-time) | | `completedDateRangeEnd` | string | No | Filter by completedDate (completedDate \<= this date/date-time) | | `page` | number | No | Page number for pagination (default 1) | | `perPage` | number | No | Number of results per page (1-1000, default 1000) | #### Output [#output-27] | Parameter | Type | Description | | ------------------ | ------- | -------------------------------------------------- | | `completions` | array | The matching completion records | | ↳ `id` | string | The completion ID | | ↳ `userId` | string | The user ID | | ↳ `contentId` | string | The content ID for the content completed | | ↳ `contentVersion` | number | The version of the content | | ↳ `skills` | array | The skills acquired by completing this content | | ↳ `completionType` | string | The type of completion record | | ↳ `hadDueDate` | boolean | Whether the completion had a due date | | ↳ `isRPL` | boolean | Whether the completion was imported via RPL | | ↳ `completedAt` | string | Timestamp when the completion occurred (ISO 8601) | | ↳ `activeUntil` | string | Timestamp the completion is valid until (ISO 8601) | ### Thrive Get Completion [#thrive-get-completion] Get a single learning completion record in Thrive by its ID. #### Input [#input-28] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | -------------------------------------------------- | | `tenantId` | string | Yes | Thrive Tenant ID (used as the Basic auth username) | | `apiKey` | string | Yes | Thrive API key (used as the Basic auth password) | | `host` | string | No | Region-specific API host | | `id` | string | Yes | The completion ID | #### Output [#output-28] | Parameter | Type | Description | | ------------------ | ------- | -------------------------------------------------- | | `completion` | object | The completion record | | ↳ `id` | string | The completion ID | | ↳ `userId` | string | The user ID | | ↳ `contentId` | string | The content ID for the content completed | | ↳ `contentVersion` | number | The version of the content | | ↳ `skills` | array | The skills acquired by completing this content | | ↳ `completionType` | string | The type of completion record | | ↳ `hadDueDate` | boolean | Whether the completion had a due date | | ↳ `isRPL` | boolean | Whether the completion was imported via RPL | | ↳ `completedAt` | string | Timestamp when the completion occurred (ISO 8601) | | ↳ `activeUntil` | string | Timestamp the completion is valid until (ISO 8601) | ### Thrive Create Completion [#thrive-create-completion] Record a learning completion in Thrive for a user and content item. #### Input [#input-29] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | -------------------------------------------------- | | `tenantId` | string | Yes | Thrive Tenant ID (used as the Basic auth username) | | `apiKey` | string | Yes | Thrive API key (used as the Basic auth password) | | `host` | string | No | Region-specific API host | | `userId` | string | Yes | The user ID | | `contentId` | string | Yes | The content ID for the content completed | | `completedAt` | string | Yes | ISO8601 timestamp when the completion occurred | #### Output [#output-29] | Parameter | Type | Description | | ------------- | ------ | --------------------------- | | `statementId` | string | The completion statement ID | ### Thrive Get Content [#thrive-get-content] Get a single content record in Thrive by its ID. #### Input [#input-30] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | -------------------------------------------------- | | `tenantId` | string | Yes | Thrive Tenant ID (used as the Basic auth username) | | `apiKey` | string | Yes | Thrive API key (used as the Basic auth password) | | `host` | string | No | Region-specific API host | | `id` | string | Yes | Unique identifier of the content item | #### Output [#output-30] | Parameter | Type | Description | | ------------------ | ------- | ------------------------------------------------- | | `content` | object | The content record | | ↳ `id` | string | Unique identifier for the content | | ↳ `title` | string | Title of the content | | ↳ `description` | string | Detailed description (may contain HTML) | | ↳ `tags` | array | Tags associated with this content | | ↳ `type` | string | The kind of artifact associated with this content | | ↳ `createdAt` | string | Creation timestamp (ISO 8601) | | ↳ `updatedAt` | string | Last-update timestamp (ISO 8601) | | ↳ `author` | string | User ID who authored the content | | ↳ `isOfficial` | boolean | Whether the content is recognised as official | | ↳ `duration` | object | Expected time to complete the content | | ↳ `value` | number | Duration value | | ↳ `unit` | string | The unit of the duration (always 'minutes') | | ↳ `contentHistory` | array | Chronological history of actions on this content | ### Thrive Query Content [#thrive-query-content] Query content records in Thrive with pagination and filtering options. #### Input [#input-31] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `tenantId` | string | Yes | Thrive Tenant ID (used as the Basic auth username) | | `apiKey` | string | Yes | Thrive API key (used as the Basic auth password) | | `host` | string | No | Region-specific API host | | `page` | number | No | Page number for pagination (default 1) | | `perPage` | number | No | Number of results per page (1-1000, default 20) | | `types` | string | No | Comma-separated content types (article, assessment, broadcast, cmi5, elearning, event, file, pathway, question, quiz, scorm, url, video, mixed). If both set, omitTypes is ignored. | | `omitTypes` | string | No | Comma-separated content types (article, assessment, broadcast, cmi5, elearning, event, file, pathway, question, quiz, scorm, url, video, mixed). If both set, omitTypes is ignored. | | `updatedSince` | string | No | Return only items updated on or after this date/time (ISO 8601) | #### Output [#output-31] | Parameter | Type | Description | | ------------------ | ------- | ------------------------------------------------- | | `results` | array | The matching content records | | ↳ `id` | string | Unique identifier for the content | | ↳ `title` | string | Title of the content | | ↳ `description` | string | Detailed description (may contain HTML) | | ↳ `tags` | array | Tags associated with this content | | ↳ `type` | string | The kind of artifact associated with this content | | ↳ `createdAt` | string | Creation timestamp (ISO 8601) | | ↳ `updatedAt` | string | Last-update timestamp (ISO 8601) | | ↳ `author` | string | User ID who authored the content | | ↳ `isOfficial` | boolean | Whether the content is recognised as official | | ↳ `duration` | object | Expected time to complete the content | | ↳ `value` | number | Duration value | | ↳ `unit` | string | The unit of the duration (always 'minutes') | | ↳ `contentHistory` | array | Chronological history of actions on this content | | `pagination` | object | Pagination details | | ↳ `totalResults` | number | Total number of results matching the query | | ↳ `totalPages` | number | Total number of pages available | | ↳ `page` | number | Current page number | | ↳ `perPage` | number | Number of results per page | ### Thrive Get Activity [#thrive-get-activity] Get a single activity record in Thrive by its ID. #### Input [#input-32] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | -------------------------------------------------- | | `tenantId` | string | Yes | Thrive Tenant ID (used as the Basic auth username) | | `apiKey` | string | Yes | Thrive API key (used as the Basic auth password) | | `host` | string | No | Region-specific API host | | `id` | string | Yes | Unique identifier of the activity | #### Output [#output-32] | Parameter | Type | Description | | --------------- | ------ | ------------------------------------------------ | | `activity` | object | The activity record | | ↳ `type` | string | The activity action type | | ↳ `name` | string | The name of the activity | | ↳ `id` | string | Unique ID for this activity record | | ↳ `user` | string | User ID who triggered the activity | | ↳ `date` | string | Timestamp when the activity occurred (ISO 8601) | | ↳ `contextId` | string | Identifier for the context item | | ↳ `contextType` | string | What this activity was in relation to | | ↳ `data` | json | Unstructured activity data; shape varies by type | | ↳ `with` | json | Additional context information | ### Thrive Query Activities [#thrive-query-activities] Query activity records in Thrive with pagination and filtering options. #### Input [#input-33] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ---------------------------------------------------- | | `tenantId` | string | Yes | Thrive Tenant ID (used as the Basic auth username) | | `apiKey` | string | Yes | Thrive API key (used as the Basic auth password) | | `host` | string | No | Region-specific API host | | `page` | number | No | Page number for pagination (default 1) | | `perPage` | number | No | Number of results per page (1-1000, default 20) | | `actions` | string | No | comma-separated activity types e.g. viewed,completed | | `omitActions` | string | No | comma-separated activity types e.g. viewed,completed | | `contentIds` | string | No | comma-separated content IDs | | `contentType` | string | No | Filter by content type | | `timestampFrom` | string | No | format YYYY-MM-DD hh:mm:ss | | `timestampTo` | string | No | format YYYY-MM-DD hh:mm:ss | #### Output [#output-33] | Parameter | Type | Description | | ---------------- | ------ | ------------------------------------------------ | | `results` | array | The matching activity records | | ↳ `type` | string | The activity action type | | ↳ `name` | string | The name of the activity | | ↳ `id` | string | Unique ID for this activity record | | ↳ `user` | string | User ID who triggered the activity | | ↳ `date` | string | Timestamp when the activity occurred (ISO 8601) | | ↳ `contextId` | string | Identifier for the context item | | ↳ `contextType` | string | What this activity was in relation to | | ↳ `data` | json | Unstructured activity data; shape varies by type | | ↳ `with` | json | Additional context information | | `pagination` | object | Pagination details | | ↳ `totalResults` | number | Total number of results matching the query | | ↳ `totalPages` | number | Total number of pages available | | ↳ `page` | number | Current page number | | ↳ `perPage` | number | Number of results per page | ### Thrive Get CPD Category [#thrive-get-cpd-category] Get a single CPD category in Thrive by its ID. #### Input [#input-34] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | -------------------------------------------------- | | `tenantId` | string | Yes | Thrive Tenant ID (used as the Basic auth username) | | `apiKey` | string | Yes | Thrive API key (used as the Basic auth password) | | `host` | string | No | Region-specific API host | | `categoryId` | string | Yes | The CPD category ID | #### Output [#output-34] | Parameter | Type | Description | | -------------- | ------ | ------------------------------------ | | `category` | object | The CPD category | | ↳ `categoryId` | string | Unique ID for this category record | | ↳ `name` | string | Name of the category of CPD activity | ### Thrive Query CPD Categories [#thrive-query-cpd-categories] Query CPD categories in Thrive and return results with pagination. #### Input [#input-35] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | --------------------------------------------------------------- | | `tenantId` | string | Yes | Thrive Tenant ID (used as the Basic auth username) | | `apiKey` | string | Yes | Thrive API key (used as the Basic auth password) | | `host` | string | No | Region-specific API host | | `page` | number | No | Page number for pagination (default 1) | | `perPage` | number | No | Number of results per page (1-1000, default 100) | | `updatedSince` | string | No | Return only items updated on or after this date/time (ISO 8601) | #### Output [#output-35] | Parameter | Type | Description | | ---------------- | ------ | ------------------------------------------ | | `results` | array | The matching CPD categories | | ↳ `categoryId` | string | Unique ID for this category record | | ↳ `name` | string | Name of the category of CPD activity | | `pagination` | object | Pagination details | | ↳ `totalResults` | number | Total number of results matching the query | | ↳ `totalPages` | number | Total number of pages available | | ↳ `page` | number | Current page number | | ↳ `perPage` | number | Number of results per page | ### Thrive Get CPD Entry [#thrive-get-cpd-entry] Get a single CPD log entry in Thrive by its ID. #### Input [#input-36] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | -------------------------------------------------- | | `tenantId` | string | Yes | Thrive Tenant ID (used as the Basic auth username) | | `apiKey` | string | Yes | Thrive API key (used as the Basic auth password) | | `host` | string | No | Region-specific API host | | `logEntryId` | string | Yes | The CPD log entry ID | #### Output [#output-36] | Parameter | Type | Description | | ------------------- | ------- | ---------------------------------------------------------------- | | `entry` | object | The CPD entry | | ↳ `logEntryId` | string | Unique ID for this activity record | | ↳ `userId` | string | User ID who triggered this activity record | | ↳ `activity` | object | The content item associated with the CPD log entry | | ↳ `type` | string | The type of content (e.g. file, article, video) | | ↳ `name` | string | The name of the content item | | ↳ `category` | object | The CPD category | | ↳ `categoryId` | string | Unique ID for this category record | | ↳ `name` | string | Name of the category of CPD activity | | ↳ `entryDate` | string | The date and time the CPD entry was logged (ISO 8601) | | ↳ `durationMinutes` | number | Minutes logged as CPD from this activity | | ↳ `description` | string | Summary or reflective statement | | ↳ `isVerified` | boolean | Whether the activity was generated from verified system activity | ### Thrive Query CPD Entries [#thrive-query-cpd-entries] Query CPD log entries in Thrive and return results with pagination. #### Input [#input-37] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ------------------------------------------------------------ | | `tenantId` | string | Yes | Thrive Tenant ID (used as the Basic auth username) | | `apiKey` | string | Yes | Thrive API key (used as the Basic auth password) | | `host` | string | No | Region-specific API host | | `page` | number | No | Page number for pagination (default 1) | | `perPage` | number | No | Number of results per page (1-1000, default 100) | | `entryDateFrom` | string | No | Filter entries after this date (format YYYY-MM-DD hh:mm:ss) | | `entryDateTo` | string | No | Filter entries before this date (format YYYY-MM-DD hh:mm:ss) | #### Output [#output-37] | Parameter | Type | Description | | ------------------- | ------- | ---------------------------------------------------------------- | | `results` | array | The matching CPD entries | | ↳ `logEntryId` | string | Unique ID for this activity record | | ↳ `userId` | string | User ID who triggered this activity record | | ↳ `activity` | object | The content item associated with the CPD log entry | | ↳ `type` | string | The type of content (e.g. file, article, video) | | ↳ `name` | string | The name of the content item | | ↳ `category` | object | The CPD category | | ↳ `categoryId` | string | Unique ID for this category record | | ↳ `name` | string | Name of the category of CPD activity | | ↳ `entryDate` | string | The date and time the CPD entry was logged (ISO 8601) | | ↳ `durationMinutes` | number | Minutes logged as CPD from this activity | | ↳ `description` | string | Summary or reflective statement | | ↳ `isVerified` | boolean | Whether the activity was generated from verified system activity | | `pagination` | object | Pagination details | | ↳ `totalResults` | number | Total number of results matching the query | | ↳ `totalPages` | number | Total number of pages available | | ↳ `page` | number | Current page number | | ↳ `perPage` | number | Number of results per page | ### Thrive Get CPD Requirement [#thrive-get-cpd-requirement] Get a single CPD requirement summary in Thrive by its ID. #### Input [#input-38] | Parameter | Type | Required | Description | | ----------------------- | ------ | -------- | -------------------------------------------------- | | `tenantId` | string | Yes | Thrive Tenant ID (used as the Basic auth username) | | `apiKey` | string | Yes | Thrive API key (used as the Basic auth password) | | `host` | string | No | Region-specific API host | | `audienceRequirementId` | string | Yes | The CPD requirement ID | #### Output [#output-38] | Parameter | Type | Description | | ------------------------- | ------ | ---------------------------------------------- | | `requirement` | object | The CPD requirement | | ↳ `audienceRequirementId` | string | Unique ID for this requirement record | | ↳ `audienceId` | string | ID of the audience this requirement applies to | | ↳ `requiredMinutes` | number | Number of minutes required for CPD completion | | ↳ `createdAt` | string | Creation timestamp (ISO 8601) | | ↳ `updatedAt` | string | Last-update timestamp (ISO 8601) | ### Thrive Query CPD Requirements [#thrive-query-cpd-requirements] Query CPD requirement summaries in Thrive and return results with pagination. #### Input [#input-39] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | --------------------------------------------------------------- | | `tenantId` | string | Yes | Thrive Tenant ID (used as the Basic auth username) | | `apiKey` | string | Yes | Thrive API key (used as the Basic auth password) | | `host` | string | No | Region-specific API host | | `page` | number | No | Page number for pagination (default 1) | | `perPage` | number | No | Number of results per page (1-1000, default 100) | | `updatedSince` | string | No | Return only items updated on or after this date/time (ISO 8601) | #### Output [#output-39] | Parameter | Type | Description | | ------------------------- | ------ | ---------------------------------------------- | | `results` | array | The matching CPD requirements | | ↳ `audienceRequirementId` | string | Unique ID for this requirement record | | ↳ `audienceId` | string | ID of the audience this requirement applies to | | ↳ `requiredMinutes` | number | Number of minutes required for CPD completion | | ↳ `createdAt` | string | Creation timestamp (ISO 8601) | | ↳ `updatedAt` | string | Last-update timestamp (ISO 8601) | | `pagination` | object | Pagination details | | ↳ `totalResults` | number | Total number of results matching the query | | ↳ `totalPages` | number | Total number of pages available | | ↳ `page` | number | Current page number | | ↳ `perPage` | number | Number of results per page | ### Thrive Query CPD User Summaries [#thrive-query-cpd-user-summaries] Query CPD user log summaries in Thrive and return results with pagination. #### Input [#input-40] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ------------------------------------------------------------ | | `tenantId` | string | Yes | Thrive Tenant ID (used as the Basic auth username) | | `apiKey` | string | Yes | Thrive API key (used as the Basic auth password) | | `host` | string | No | Region-specific API host | | `entryDateFrom` | string | Yes | Filter entries after this date (format YYYY-MM-DDThh:mm:ss) | | `entryDateTo` | string | Yes | Filter entries before this date (format YYYY-MM-DDThh:mm:ss) | | `userIds` | string | No | Comma-separated user IDs to filter by | | `page` | number | No | Page number for pagination (default 1) | | `perPage` | number | No | Number of results per page (1-1000, default 100) | #### Output [#output-40] | Parameter | Type | Description | | ------------------- | ------ | -------------------------------------------------- | | `results` | array | The matching CPD user summaries | | ↳ `userId` | string | ID of the user this summary is for | | ↳ `durationMinutes` | number | Total CPD minutes logged by the user in the period | | `pagination` | object | Pagination details | | ↳ `totalResults` | number | Total number of results matching the query | | ↳ `totalPages` | number | Total number of pages available | | ↳ `page` | number | Current page number | | ↳ `perPage` | number | Number of results per page | ### Thrive List Tags [#thrive-list-tags] List tags in Thrive and return tag information with pagination. #### Input [#input-41] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | -------------------------------------------------------------- | | `tenantId` | string | Yes | Thrive Tenant ID (used as the Basic auth username) | | `apiKey` | string | Yes | Thrive API key (used as the Basic auth password) | | `host` | string | No | Region-specific API host | | `page` | number | No | Page number for pagination (default 1) | | `perPage` | number | No | Number of results per page (1-1000, default 100) | | `updatedSince` | string | No | Return only tags updated on or after this date/time (ISO 8601) | #### Output [#output-41] | Parameter | Type | Description | | ---------------- | ------ | ------------------------------------------ | | `results` | array | The tags | | ↳ `tag` | string | The name of the tag | | ↳ `id` | string | The ID of the tag | | ↳ `contents` | array | IDs of contents using this tag | | ↳ `campaigns` | array | IDs of campaigns using this tag | | ↳ `interests` | array | IDs of users interested in this tag | | ↳ `skills` | array | IDs of users skilled in this tag | | `pagination` | object | Pagination details | | ↳ `totalResults` | number | Total number of results matching the query | | ↳ `totalPages` | number | Total number of pages available | | ↳ `page` | number | Current page number | | ↳ `perPage` | number | Number of results per page | ### Thrive Get Tag [#thrive-get-tag] Get a single tag in Thrive by its ID. #### Input [#input-42] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | -------------------------------------------------- | | `tenantId` | string | Yes | Thrive Tenant ID (used as the Basic auth username) | | `apiKey` | string | Yes | Thrive API key (used as the Basic auth password) | | `host` | string | No | Region-specific API host | | `tagId` | string | Yes | The tag ID | #### Output [#output-42] | Parameter | Type | Description | | ------------- | ------ | ----------------------------------- | | `tag` | object | The tag | | ↳ `tag` | string | The name of the tag | | ↳ `id` | string | The ID of the tag | | ↳ `contents` | array | IDs of contents using this tag | | ↳ `campaigns` | array | IDs of campaigns using this tag | | ↳ `interests` | array | IDs of users interested in this tag | | ↳ `skills` | array | IDs of users skilled in this tag | ### Thrive Add User Tags [#thrive-add-user-tags] Add one or more tags to a learner in Thrive. #### Input [#input-43] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ---------------------------------------------------------------- | | `tenantId` | string | Yes | Thrive Tenant ID (used as the Basic auth username) | | `apiKey` | string | Yes | Thrive API key (used as the Basic auth password) | | `host` | string | No | Region-specific API host | | `userId` | string | Yes | The learner ID | | `tags` | string | Yes | JSON array of tag names to add (1-100). Example: \["leadership"] | #### Output [#output-43] | Parameter | Type | Description | | --------- | ------ | ------------------------------------- | | `status` | number | The HTTP status code of the operation | | `message` | string | A human-readable result message | ### Thrive Remove User Tags [#thrive-remove-user-tags] Remove one or more tags from a learner in Thrive. #### Input [#input-44] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ------------------------------------------------------------------- | | `tenantId` | string | Yes | Thrive Tenant ID (used as the Basic auth username) | | `apiKey` | string | Yes | Thrive API key (used as the Basic auth password) | | `host` | string | No | Region-specific API host | | `userId` | string | Yes | The learner ID | | `tags` | string | Yes | JSON array of tag names to remove (1-100). Example: \["leadership"] | #### Output [#output-44] | Parameter | Type | Description | | --------- | ------ | ------------------------------------- | | `status` | number | The HTTP status code of the operation | | `message` | string | A human-readable result message | ### Thrive Update User Skills [#thrive-update-user-skills] Update skills and levels for a learner in Thrive. #### Input [#input-45] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------ | | `tenantId` | string | Yes | Thrive Tenant ID (used as the Basic auth username) | | `apiKey` | string | Yes | Thrive API key (used as the Basic auth password) | | `host` | string | No | Region-specific API host | | `userId` | string | Yes | The learner ID | | `skills` | string | Yes | JSON array of skill objects (1-100). Each: \{"tagName":"leadership","level":1,"targetLevel":3}. level/targetLevel optional (min -1). | #### Output [#output-45] | Parameter | Type | Description | | --------- | ------ | ------------------------------------- | | `status` | number | The HTTP status code of the operation | | `message` | string | A human-readable result message | ### Thrive Get Skill Levels [#thrive-get-skill-levels] Get the available skill levels configured in Thrive. #### Input [#input-46] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | -------------------------------------------------- | | `tenantId` | string | Yes | Thrive Tenant ID (used as the Basic auth username) | | `apiKey` | string | Yes | Thrive API key (used as the Basic auth password) | | `host` | string | No | Region-specific API host | #### Output [#output-46] | Parameter | Type | Description | | ------------- | ------- | ------------------------------------ | | `levels` | array | The available skill levels | | ↳ `name` | string | The name of the skill level | | ↳ `isEnabled` | boolean | Whether the skill level is enabled | | ↳ `value` | number | The numeric value of the skill level | --- # File (/en/integrations/file) {/* MANUAL-CONTENT-START:intro */} The File block is a built-in Studio 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 Studio, 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 the text content of workspace files selected directly, identified by canonical file ID, or collected from one or more workspace folders. #### 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 or partial 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; skipped and partial coverage is reported separately. | | `indexStatus` | object | Current workspace search-index coverage by file status. | | ↳ `readyFiles` | number | Files whose current revision is searchable. | | ↳ `pendingFiles` | number | Files still waiting to be indexed. | | ↳ `failedFiles` | number | Files whose current indexing attempt failed. | | ↳ `skippedFiles` | number | Files intentionally excluded because they are unsupported or oversized. | | ↳ `partialFiles` | number | Searchable files whose extracted text was truncated by the parser or cap. | ### 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. | #### 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 | ### 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 | ### 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. | #### 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 | ### 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. | --- # Dynatrace (/en/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 Studio** * **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** — Studio 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 Studio 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 Studio 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 Studio 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 | --- # Gong (/en/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 Studio, your agents can access conversation data, user analytics, coaching metrics, and more through automated workflows. The Gong integration in Studio 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**. Studio 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**. Studio 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`) | --- # incident.io (/en/integrations/incidentio) {/* MANUAL-CONTENT-START:intro */} Use [incident.io](https://incident.io) in Studio 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_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 | | ↳ `creator` | object | Who created the follow-up | | ↳ `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_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 | | ↳ `creator` | object | Who created the follow-up | | ↳ `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) | | ↳ `creator` | object | Who created the action | | ↳ `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) | | ↳ `creator` | object | Who created the action | | ↳ `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). | --- # Context.dev (/en/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 Studio, 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 | --- # 1Password (/en/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 | --- # Memory (/en/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 | --- # Zoho Desk (/en/integrations/zoho_desk) {/* MANUAL-CONTENT-START:intro */} [Zoho Desk](https://www.zoho.com/desk/) is Zoho's customer support help desk. Support teams use it to receive tickets from email, web forms, chat, phone, and social channels, route them to the right department and agent, and track every customer conversation through to resolution. With the Studio Zoho Desk integration, you can: * **Read and filter tickets**: List tickets across an organization filtered by department, status, or priority, or fetch a single ticket by ID with its related contact, assignee, and department. * **Update tickets**: Change subject, status, priority, assignee, department, category, due date, and custom fields — useful for AI triage that classifies an incoming ticket and writes the result back. * **Work with conversations**: List and read ticket threads (the customer-facing email/chat exchange) and comments (internal agent notes), then add your own comment as public or private. * **Look up contacts**: Retrieve the contact behind a ticket to enrich it with data from your CRM or knowledge base. * **Download attachments**: Pull an attachment from a thread or comment into a Studio file you can pass to downstream blocks. * **Trigger on events**: Start a workflow when a ticket, comment, thread, contact, agent, task, or article changes in Zoho Desk. **How it works in Studio:** Add a Zoho Desk block to your workflow, connect your Zoho account, and pick the Organization (portal) to work in — Studio loads the list for you from the connected account. Choose an operation and fill in its parameters; the block calls the Zoho Desk API and returns structured data for downstream blocks. For comment and thread bodies, Studio adds a derived plain-text `contentText` field alongside Zoho's raw HTML `content`, so an AI agent can read the message without HTML markup. To trigger on Zoho Desk activity instead, use the block's trigger mode. Studio creates the webhook subscription in Zoho Desk for you and removes it automatically when the workflow is undeployed. **Requirements and limitations** > Zoho Desk webhooks require a Zoho Desk edition of **Professional or higher** — Free and Standard plans cannot create webhook subscriptions, so the trigger will fail to deploy on those plans. > > Connecting a Zoho account with **OAuth** — which the trigger requires — works only for the **US data center** (`accounts.zoho.com`). To use Zoho Desk blocks from the EU, India, or Australia data centers, connect a [Self Client](/integrations/zoho-desk-service-account) instead and set its data center. The Japan, Canada, Saudi Arabia, China, and UK data centers are not supported by either path. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Read and update Zoho Desk tickets, manage comments and threads, look up contacts, and download attachments. Can also trigger workflows from Zoho Desk webhook events. ## Actions [#actions] ### Zoho Desk List Tickets [#zoho-desk-list-tickets] List tickets from a Zoho Desk organization with optional filters. Returns a list projection: description, resolution, statusType and classification are only available from Get Ticket. #### Input [#input] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------- | | `orgId` | string | Yes | Zoho Desk organization ID | | `from` | number | No | Pagination start index (0-based) | | `limit` | number | No | Number of tickets to return (1-100) | | `departmentIds` | string | No | Filter by department ID (comma-separated for multiple) | | `status` | string | No | Filter by status, including custom statuses. Comma-separate to match multiple (e.g. "Open,On Hold") | | `priority` | string | No | Filter by priority. Comma-separate to match multiple (e.g. "High,Urgent") | | `assignee` | string | No | Filter by assignee: an agent ID, or "Unassigned". Comma-separate to match multiple. | | `channel` | string | No | Filter by origin channel, spelled as your portal spells it. Comma-separate to match multiple. | | `receivedInDays` | number | No | Only tickets whose last customer response was within the last 15, 30, or 90 days (Zoho filters on customerResponseTime, despite the name) | | `sortBy` | string | No | Sort field: createdTime, customerResponseTime, or responseDueDate. Prefix with - for descending. | | `include` | string | No | Comma-separated related data to embed. Allowed: contacts, products, departments, team, isRead, assignee | #### Output [#output] | Parameter | Type | Description | | ------------------------ | ------- | ------------------------------------------------------------------------------------------------------------------------ | | `tickets` | array | List of tickets | | ↳ `id` | string | Ticket ID | | ↳ `ticketNumber` | string | Human-readable ticket number | | ↳ `subject` | string | Ticket subject | | ↳ `description` | string | Ticket description (raw; may be HTML) | | ↳ `descriptionText` | string | Plain-text rendering of the description: HTML stripped when the body contains markup, otherwise the description verbatim | | ↳ `status` | string | Ticket status | | ↳ `statusType` | string | Status category (Open/Closed/On Hold) | | ↳ `priority` | string | Ticket priority | | ↳ `category` | string | Ticket category | | ↳ `subCategory` | string | Ticket sub-category | | ↳ `classification` | string | Ticket classification | | ↳ `channel` | string | Origin channel | | ↳ `departmentId` | string | Department ID | | ↳ `contactId` | string | Contact ID | | ↳ `accountId` | string | Account ID | | ↳ `assigneeId` | string | Assignee ID | | ↳ `email` | string | Contact email | | ↳ `phone` | string | Contact phone | | ↳ `dueDate` | string | Due date | | ↳ `responseDueDate` | string | Response due date | | ↳ `createdTime` | string | Created timestamp | | ↳ `modifiedTime` | string | Last modified timestamp | | ↳ `customerResponseTime` | string | Time the last customer response was received | | ↳ `closedTime` | string | Closed timestamp | | ↳ `resolution` | string | Resolution text | | ↳ `threadCount` | string | Number of threads | | ↳ `commentCount` | string | Number of comments | | ↳ `webUrl` | string | Web URL to the ticket | | ↳ `isEscalated` | boolean | Whether the ticket is escalated | | ↳ `isOverDue` | boolean | Whether the ticket is overdue | | ↳ `isSpam` | boolean | Whether the ticket is marked spam | | ↳ `cf` | json | Custom field values, keyed by custom field API name | | `count` | number | Number of tickets returned | ### Zoho Desk Get Ticket [#zoho-desk-get-ticket] Retrieve a single Zoho Desk ticket by ID. #### Input [#input-1] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------- | | `orgId` | string | Yes | Zoho Desk organization ID | | `ticketId` | string | Yes | Ticket ID to retrieve | | `include` | string | No | Comma-separated related data to embed. Allowed: contacts, products, assignee, departments, contract, isRead, team, skills | #### Output [#output-1] | Parameter | Type | Description | | ------------------------ | ------- | ------------------------------------------------------------------------------------------------------------------------ | | `ticket` | object | The ticket | | ↳ `id` | string | Ticket ID | | ↳ `ticketNumber` | string | Human-readable ticket number | | ↳ `subject` | string | Ticket subject | | ↳ `description` | string | Ticket description (raw; may be HTML) | | ↳ `descriptionText` | string | Plain-text rendering of the description: HTML stripped when the body contains markup, otherwise the description verbatim | | ↳ `status` | string | Ticket status | | ↳ `statusType` | string | Status category (Open/Closed/On Hold) | | ↳ `priority` | string | Ticket priority | | ↳ `category` | string | Ticket category | | ↳ `subCategory` | string | Ticket sub-category | | ↳ `classification` | string | Ticket classification | | ↳ `channel` | string | Origin channel | | ↳ `departmentId` | string | Department ID | | ↳ `contactId` | string | Contact ID | | ↳ `accountId` | string | Account ID | | ↳ `assigneeId` | string | Assignee ID | | ↳ `email` | string | Contact email | | ↳ `phone` | string | Contact phone | | ↳ `dueDate` | string | Due date | | ↳ `responseDueDate` | string | Response due date | | ↳ `createdTime` | string | Created timestamp | | ↳ `modifiedTime` | string | Last modified timestamp | | ↳ `customerResponseTime` | string | Time the last customer response was received | | ↳ `closedTime` | string | Closed timestamp | | ↳ `resolution` | string | Resolution text | | ↳ `threadCount` | string | Number of threads | | ↳ `commentCount` | string | Number of comments | | ↳ `webUrl` | string | Web URL to the ticket | | ↳ `isEscalated` | boolean | Whether the ticket is escalated | | ↳ `isOverDue` | boolean | Whether the ticket is overdue | | ↳ `isSpam` | boolean | Whether the ticket is marked spam | | ↳ `cf` | json | Custom field values, keyed by custom field API name | ### Zoho Desk Update Ticket [#zoho-desk-update-ticket] Update fields on an existing Zoho Desk ticket. #### Input [#input-2] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------- | | `orgId` | string | Yes | Zoho Desk organization ID | | `ticketId` | string | Yes | Ticket ID to update | | `subject` | string | No | Ticket subject | | `status` | string | No | Ticket status (e.g. Open, Closed) | | `priority` | string | No | Ticket priority (e.g. High) | | `assigneeId` | string | No | Assignee (agent) ID | | `departmentId` | string | No | Department ID | | `category` | string | No | Ticket category | | `subCategory` | string | No | Ticket sub-category | | `dueDate` | string | No | Due date (ISO 8601) | | `description` | string | No | Ticket description | | `resolution` | string | No | Resolution notes recorded on the ticket | | `classification` | string | No | Ticket classification. Zoho's system-defined values are Problem, Request, and Question; portals can define custom values. Pass "" to clear it. | | `customFields` | json | No | Custom field values as a JSON object, keyed by custom field API name | #### Output [#output-2] | Parameter | Type | Description | | ------------------------ | ------- | ------------------------------------------------------------------------------------------------------------------------ | | `ticket` | object | The updated ticket | | ↳ `id` | string | Ticket ID | | ↳ `ticketNumber` | string | Human-readable ticket number | | ↳ `subject` | string | Ticket subject | | ↳ `description` | string | Ticket description (raw; may be HTML) | | ↳ `descriptionText` | string | Plain-text rendering of the description: HTML stripped when the body contains markup, otherwise the description verbatim | | ↳ `status` | string | Ticket status | | ↳ `statusType` | string | Status category (Open/Closed/On Hold) | | ↳ `priority` | string | Ticket priority | | ↳ `category` | string | Ticket category | | ↳ `subCategory` | string | Ticket sub-category | | ↳ `classification` | string | Ticket classification | | ↳ `channel` | string | Origin channel | | ↳ `departmentId` | string | Department ID | | ↳ `contactId` | string | Contact ID | | ↳ `accountId` | string | Account ID | | ↳ `assigneeId` | string | Assignee ID | | ↳ `email` | string | Contact email | | ↳ `phone` | string | Contact phone | | ↳ `dueDate` | string | Due date | | ↳ `responseDueDate` | string | Response due date | | ↳ `createdTime` | string | Created timestamp | | ↳ `modifiedTime` | string | Last modified timestamp | | ↳ `customerResponseTime` | string | Time the last customer response was received | | ↳ `closedTime` | string | Closed timestamp | | ↳ `resolution` | string | Resolution text | | ↳ `threadCount` | string | Number of threads | | ↳ `commentCount` | string | Number of comments | | ↳ `webUrl` | string | Web URL to the ticket | | ↳ `isEscalated` | boolean | Whether the ticket is escalated | | ↳ `isOverDue` | boolean | Whether the ticket is overdue | | ↳ `isSpam` | boolean | Whether the ticket is marked spam | | ↳ `cf` | json | Custom field values, keyed by custom field API name | ### Zoho Desk List Comments [#zoho-desk-list-comments] List comments on a Zoho Desk ticket. #### Input [#input-3] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ------------------------------------------------------------------------------------------- | | `orgId` | string | Yes | Zoho Desk organization ID | | `ticketId` | string | Yes | Ticket ID | | `from` | number | No | Pagination start index (0-based) | | `limit` | number | No | Number of comments to return (1-100, default 50) | | `sortBy` | string | No | Sort by commentedTime. Ascending by default; prefix with - for descending (-commentedTime). | #### Output [#output-3] | Parameter | Type | Description | | ----------------- | ------- | ------------------------------------------------------------------------ | | `comments` | array | List of comments | | ↳ `id` | string | Comment ID | | ↳ `content` | string | Comment content (raw; may be HTML) | | ↳ `contentType` | string | Content type (plainText/html) | | ↳ `contentText` | string | Plain-text rendering of content (HTML stripped when contentType is html) | | ↳ `isPublic` | boolean | Whether the comment is public | | ↳ `commenterId` | string | Commenter ID | | ↳ `commenter` | object | Who wrote the comment | | ↳ `name` | string | Display name | | ↳ `firstName` | string | First name | | ↳ `lastName` | string | Last name | | ↳ `email` | string | Email address | | ↳ `type` | string | Commenter type (AGENT/END\_USER) | | ↳ `roleName` | string | Role name | | ↳ `photoURL` | string | Avatar URL | | ↳ `commentedTime` | string | Commented timestamp | | ↳ `modifiedTime` | string | Modified timestamp | | ↳ `attachments` | array | Comment attachments | | ↳ `id` | string | Attachment ID | | ↳ `name` | string | File name | | ↳ `size` | string | File size as reported by Zoho | | ↳ `href` | string | Download href | | `count` | number | Number of comments returned | ### Zoho Desk Add Comment [#zoho-desk-add-comment] Add a comment to a Zoho Desk ticket. #### Input [#input-4] | Parameter | Type | Required | Description | | ------------- | ------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | | `orgId` | string | Yes | Zoho Desk organization ID | | `ticketId` | string | Yes | Ticket ID | | `content` | string | Yes | Comment content | | `contentType` | string | No | Content type: plainText or html. Defaults to plainText so agent-written text posts literally; pass 'html' to send markup (Zoho's own API default is html). | | `isPublic` | boolean | No | Whether the comment is public | #### Output [#output-4] | Parameter | Type | Description | | ----------------- | ------- | ------------------------------------------------------------------------ | | `comment` | object | The created comment | | ↳ `id` | string | Comment ID | | ↳ `content` | string | Comment content (raw; may be HTML) | | ↳ `contentType` | string | Content type (plainText/html) | | ↳ `contentText` | string | Plain-text rendering of content (HTML stripped when contentType is html) | | ↳ `isPublic` | boolean | Whether the comment is public | | ↳ `commenterId` | string | Commenter ID | | ↳ `commenter` | object | Who wrote the comment | | ↳ `name` | string | Display name | | ↳ `firstName` | string | First name | | ↳ `lastName` | string | Last name | | ↳ `email` | string | Email address | | ↳ `type` | string | Commenter type (AGENT/END\_USER) | | ↳ `roleName` | string | Role name | | ↳ `photoURL` | string | Avatar URL | | ↳ `commentedTime` | string | Commented timestamp | | ↳ `modifiedTime` | string | Modified timestamp | | ↳ `attachments` | array | Comment attachments | | ↳ `id` | string | Attachment ID | | ↳ `name` | string | File name | | ↳ `size` | string | File size as reported by Zoho | | ↳ `href` | string | Download href | ### Zoho Desk List Threads [#zoho-desk-list-threads] List conversation threads on a Zoho Desk ticket, newest first (Zoho sorts by sendDateTime descending by default). Returns a list projection: message bodies (content, summary, to/cc/bcc) come back only from Get Thread. #### Input [#input-5] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------- | | `orgId` | string | Yes | Zoho Desk organization ID | | `ticketId` | string | Yes | Ticket ID | | `from` | number | No | Pagination start index (0-based) | | `limit` | number | No | Number of threads to return (1-200, default 100) | | `sortBy` | string | No | Sort by sendDateTime. Zoho sorts descending (newest first) when unset; pass sendDateTime for oldest first. | #### Output [#output-5] | Parameter | Type | Description | | ----------------------- | ------- | ---------------------------------------------------------------------------- | | `threads` | array | List of threads | | ↳ `id` | string | Thread ID | | ↳ `channel` | string | Thread channel | | ↳ `direction` | string | Direction (in/out) | | ↳ `content` | string | Thread content (raw; may be HTML) | | ↳ `contentType` | string | Content type | | ↳ `contentText` | string | Plain-text rendering of content (HTML stripped when contentType is html) | | ↳ `summary` | string | Thread summary | | ↳ `responderId` | string | Responder ID | | ↳ `createdTime` | string | Created timestamp | | ↳ `hasAttach` | boolean | Whether the thread has attachments | | ↳ `attachmentCount` | string | Number of attachments | | ↳ `fromEmailAddress` | string | From email address | | ↳ `to` | string | To email address | | ↳ `cc` | string | CC email address | | ↳ `bcc` | string | BCC email address | | ↳ `replyTo` | string | Reply-to email address | | ↳ `isForward` | boolean | Whether the thread is a forward | | ↳ `isContentTruncated` | boolean | Whether Zoho truncated the thread content; fetch fullContentURL for the rest | | ↳ `fullContentURL` | string | URL returning the untruncated thread content | | ↳ `plainText` | string | Zoho's own plain-text rendering of the thread, when it supplies one | | ↳ `status` | string | Delivery status of the thread (e.g. SUCCESS, PENDING, FAILED, DRAFT) | | ↳ `isDescriptionThread` | boolean | Whether this thread is the ticket's original description | | ↳ `visibility` | string | Thread visibility (e.g. public) | | ↳ `canReply` | boolean | Whether the thread can be replied to | | ↳ `author` | object | Who sent the thread | | ↳ `name` | string | Display name | | ↳ `firstName` | string | First name | | ↳ `lastName` | string | Last name | | ↳ `email` | string | Email address | | ↳ `type` | string | Author type (AGENT/END\_USER) | | ↳ `photoURL` | string | Avatar URL | | ↳ `attachments` | array | Thread attachments | | ↳ `id` | string | Attachment ID | | ↳ `name` | string | File name | | ↳ `size` | string | File size as reported by Zoho | | ↳ `href` | string | Download href | | `count` | number | Number of threads returned | ### Zoho Desk Get Thread [#zoho-desk-get-thread] Retrieve the full content of a single Zoho Desk ticket thread. #### Input [#input-6] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ----------------------------------------------------------------------------------------- | | `orgId` | string | Yes | Zoho Desk organization ID | | `ticketId` | string | Yes | Ticket ID | | `threadId` | string | Yes | Thread ID | | `include` | string | No | Related data to embed. Allowed: plainText — Zoho's own plain-text rendering of the thread | #### Output [#output-6] | Parameter | Type | Description | | ----------------------- | ------- | ---------------------------------------------------------------------------- | | `thread` | object | The thread | | ↳ `id` | string | Thread ID | | ↳ `channel` | string | Thread channel | | ↳ `direction` | string | Direction (in/out) | | ↳ `content` | string | Thread content (raw; may be HTML) | | ↳ `contentType` | string | Content type | | ↳ `contentText` | string | Plain-text rendering of content (HTML stripped when contentType is html) | | ↳ `summary` | string | Thread summary | | ↳ `responderId` | string | Responder ID | | ↳ `createdTime` | string | Created timestamp | | ↳ `hasAttach` | boolean | Whether the thread has attachments | | ↳ `attachmentCount` | string | Number of attachments | | ↳ `fromEmailAddress` | string | From email address | | ↳ `to` | string | To email address | | ↳ `cc` | string | CC email address | | ↳ `bcc` | string | BCC email address | | ↳ `replyTo` | string | Reply-to email address | | ↳ `isForward` | boolean | Whether the thread is a forward | | ↳ `isContentTruncated` | boolean | Whether Zoho truncated the thread content; fetch fullContentURL for the rest | | ↳ `fullContentURL` | string | URL returning the untruncated thread content | | ↳ `plainText` | string | Zoho's own plain-text rendering of the thread, when it supplies one | | ↳ `status` | string | Delivery status of the thread (e.g. SUCCESS, PENDING, FAILED, DRAFT) | | ↳ `isDescriptionThread` | boolean | Whether this thread is the ticket's original description | | ↳ `visibility` | string | Thread visibility (e.g. public) | | ↳ `canReply` | boolean | Whether the thread can be replied to | | ↳ `author` | object | Who sent the thread | | ↳ `name` | string | Display name | | ↳ `firstName` | string | First name | | ↳ `lastName` | string | Last name | | ↳ `email` | string | Email address | | ↳ `type` | string | Author type (AGENT/END\_USER) | | ↳ `photoURL` | string | Avatar URL | | ↳ `attachments` | array | Thread attachments | | ↳ `id` | string | Attachment ID | | ↳ `name` | string | File name | | ↳ `size` | string | File size as reported by Zoho | | ↳ `href` | string | Download href | ### Zoho Desk Get Contact [#zoho-desk-get-contact] Retrieve a Zoho Desk contact by ID. #### Input [#input-7] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | --------------------------------------------------------------- | | `orgId` | string | Yes | Zoho Desk organization ID | | `contactId` | string | Yes | Contact ID to retrieve | | `include` | string | No | Comma-separated related data to embed. Allowed: accounts, owner | #### Output [#output-7] | Parameter | Type | Description | | ------------------ | ------ | --------------------------------------------------- | | `contact` | object | The contact | | ↳ `id` | string | Contact ID | | ↳ `firstName` | string | First name | | ↳ `lastName` | string | Last name | | ↳ `email` | string | Primary email | | ↳ `secondaryEmail` | string | Secondary email | | ↳ `phone` | string | Phone number | | ↳ `mobile` | string | Mobile number | | ↳ `accountId` | string | Associated account ID | | ↳ `ownerId` | string | Owner ID | | ↳ `type` | string | Contact type | | ↳ `title` | string | Job title | | ↳ `street` | string | Street | | ↳ `city` | string | City | | ↳ `state` | string | State | | ↳ `country` | string | Country | | ↳ `zip` | string | ZIP / postal code | | ↳ `description` | string | Description | | ↳ `cf` | json | Custom field values, keyed by custom field API name | ### Zoho Desk Get Attachment [#zoho-desk-get-attachment] Download a Zoho Desk ticket attachment (from its href) as a file. #### Input [#input-8] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | -------------------------------------------------------------- | | `orgId` | string | Yes | Zoho Desk organization ID | | `href` | string | Yes | Attachment download href (from a thread or comment attachment) | | `fileName` | string | No | Optional file name for the downloaded file | #### Output [#output-8] | Parameter | Type | Description | | --------- | ---- | ------------------------------ | | `file` | file | The downloaded attachment file | ### Zoho Desk List Organizations [#zoho-desk-list-organizations] List the Zoho Desk organizations (portals) the connected account can access. #### Input [#input-9] | Parameter | Type | Required | Description | | --------- | ---- | -------- | ----------- | #### Output [#output-9] | Parameter | Type | Description | | --------------- | ------ | -------------------------------- | | `organizations` | array | Accessible organizations | | ↳ `id` | string | Organization ID | | ↳ `companyName` | string | Company name | | ↳ `portalName` | string | Portal name | | `count` | number | Number of organizations returned | ## Triggers [#triggers] A **Trigger** is a block that starts a workflow when an event happens in this service. ### Zoho Desk Event [#zoho-desk-event] Trigger a workflow when a Zoho Desk event occurs (ticket, comment, thread, contact, agent, task, or article changes). #### Configuration [#configuration] | Parameter | Type | Required | Description | | ---------------------- | ---------------- | -------- | -------------------------------------------------------------------------------------------------------------------- | | `triggerCredentials` | string | Yes | This trigger creates and manages a webhook subscription in your Zoho Desk account. | | `orgId` | project-selector | Yes | The Zoho Desk organization (portal) to subscribe in. | | `manualOrgId` | string | Yes | Type an organization ID instead of picking one from the list. | | `eventType` | string | Yes | Event | | `triggerDepartmentIds` | string | No | Restrict events to these departments. Leave empty for all departments. | | `fields` | string | No | For Ticket Updated: only fire when one of these fields changes (max 5). Previous values are included in the payload. | | `direction` | string | No | Thread Direction | #### Output [#output-10] | Parameter | Type | Description | | ----------- | ------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `eventType` | string | The Zoho Desk event type (e.g. Ticket\_Add) | | `eventTime` | string | Event time in milliseconds since epoch | | `orgId` | string | Zoho Desk organization ID | | `payload` | json | The full resource that changed (ticket, comment, thread, etc.). Comment and thread events gain a derived plain-text `contentText` alongside the raw `content` + `contentType`; ticket events gain `descriptionText` alongside `description`. | | `prevState` | json | Previous state of the resource (update events only) | --- # Google Contacts (/en/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 | --- # Rippling (/en/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 | --- # Deployments (/en/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) | --- # Pipedrive API Tokens (/en/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. Studio encrypts the token at rest. ## Adding the API Token to Studio [#adding-the-api-token-to-studio] Open **Integrations** from your workspace sidebar Search for "Pipedrive" and open it, then click **Add to Studio** and choose **Add API token** Paste the **API token**, and optionally set a display name and description Click **Add API token**. Studio 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. Studio 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 Studio right away — the old token stops working the moment a new one is generated. --- # OneDrive (/en/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 | --- # Greptile (/en/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 | --- # Granola (/en/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 Studio, 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. | --- # HubSpot Private App Tokens (/en/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. `studio-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 Studio'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 Studio. Studio'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 — Studio 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. Studio encrypts the token at rest. ## Adding the Private App Token to Studio [#adding-the-private-app-token-to-studio] Open **Integrations** from your workspace sidebar Search for "HubSpot" and open it, then click **Add to Studio** 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**. Studio 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 Studio, confirm your workflows run, and let the old token lapse. --- # Dropcontact (/en/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; Studio 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 Studio 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 | --- # CodePipeline (/en/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) | --- # Integrations (/en/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. Studio 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 current Integrations page with search, featured services, and categorized integrations The page's second tab, **Skills**, holds your workspace's [agent skills](/agents/skills). Open a service to see what it offers: * **Skills** — ready-made capabilities you add with one click, like *upsert-contact* for HubSpot. * **Templates** — starter workflows built around the service. * **+ Add to Studio** — connects your account. A service page (HubSpot) with its skills, templates, and the Add to Studio button ## Connecting with OAuth [#connecting-with-oauth] 1. Open the service's page and click **Add to Studio**. 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 Studio will ask the provider for. 4. Click **Connect** and complete the provider's sign-in and approval flow. The connect dialog (HubSpot shown) with display name, description, and the permissions requested When the provider redirects you back, the connection appears under **Connected**. For API tokens and service accounts, select the corresponding option from **Add to Studio** and follow the setup guide under that service. These connections have different fields and rotation requirements. ## 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. --- # Quartr (/en/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) | --- # Google PageSpeed (/en/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 Studio, 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 Studio, 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 Studio 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 | --- # Dagster (/en/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 Studio, 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 | --- # Google Translate (/en/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 | --- # Parallel AI (/en/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 Studio 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 Studio, 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 Studio 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) | --- # Convex (/en/integrations/convex) {/* MANUAL-CONTENT-START:intro */} Studio'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 | --- # Google Ads (/en/integrations/google_ads) {/* MANUAL-CONTENT-START:intro */} Use [Google Ads](https://ads.google.com) in Studio 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 accessible accounts, list campaigns, view ad group details, get performance metrics, and run custom GAQL queries. ## 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 | Yes | Google Ads API developer token | #### 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 | Yes | Google Ads API developer token | | `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 | Yes | Google Ads API developer token | | `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 | Yes | Google Ads API developer token | | `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 | Yes | Google Ads API developer token | | `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 | Yes | Google Ads API developer token | | `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 | --- # SFTP (/en/integrations/sftp) {/* MANUAL-CONTENT-START:intro */} SFTP (SSH File Transfer Protocol) is a secure file transfer protocol that runs over an SSH connection, letting you move and manage files on a remote server without exposing credentials or data in plaintext. It supports authentication via password or private key, making it a standard choice for secure file exchange with servers, hosting providers, and legacy systems. With this block, you can: * **Upload files**: Send files or direct text content to a directory on a remote server * **Download files**: Retrieve a file from the remote server as text or base64-encoded content * **List directory contents**: Browse files and folders, optionally with detailed metadata like size and permissions * **Delete files or directories**: Remove remote files, with optional recursive deletion for directories * **Create directories**: Make new directories on the remote server, optionally creating parent directories as needed In Seeyu Agent Studio, the SFTP block allows your agents to upload, download, list, delete, and create files and directories on a remote server, all authenticated with a password or private key. This enables workflows that move generated files to a remote destination, pull files from a server for processing, sync directory contents, or manage remote file structures as part of a larger automation. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Upload, download, list, and manage files on remote servers via SFTP. Supports both password and private key authentication for secure file transfers. ## Actions [#actions] ### SFTP Upload [#sftp-upload] Upload files to a remote SFTP server #### Input [#input] | Parameter | Type | Required | Description | | ------------- | ------- | -------- | ------------------------------------------------------ | | `host` | string | Yes | SFTP server hostname or IP address | | `port` | number | Yes | SFTP server port (default: 22) | | `username` | string | Yes | SFTP username | | `password` | string | No | Password for authentication (if not using private key) | | `privateKey` | string | No | Private key for authentication (OpenSSH format) | | `passphrase` | string | No | Passphrase for encrypted private key | | `remotePath` | string | Yes | Destination directory on the remote server | | `files` | file\[] | No | Files to upload | | `fileContent` | string | No | Direct file content to upload (for text files) | | `fileName` | string | No | File name when using direct content | | `overwrite` | boolean | No | Whether to overwrite existing files (default: true) | | `permissions` | string | No | File permissions (e.g., 0644) | #### Output [#output] | Parameter | Type | Description | | --------------- | ------- | ------------------------------------------------------- | | `success` | boolean | Whether the upload was successful | | `uploadedFiles` | json | Array of uploaded file details (name, remotePath, size) | | `message` | string | Operation status message | ### SFTP Download [#sftp-download] Download a file from a remote SFTP server #### Input [#input-1] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------------------------------------------------ | | `host` | string | Yes | SFTP server hostname or IP address | | `port` | number | Yes | SFTP server port (default: 22) | | `username` | string | Yes | SFTP username | | `password` | string | No | Password for authentication (if not using private key) | | `privateKey` | string | No | Private key for authentication (OpenSSH format) | | `passphrase` | string | No | Passphrase for encrypted private key | | `remotePath` | string | Yes | Path to the file on the remote server | #### Output [#output-1] | Parameter | Type | Description | | --------- | ---- | ----------------------------------------- | | `file` | file | Downloaded file stored in execution files | ### SFTP List Directory [#sftp-list-directory] List files and directories on a remote SFTP server #### Input [#input-2] | Parameter | Type | Required | Description | | ------------ | ------- | -------- | -------------------------------------------------------------------- | | `host` | string | Yes | SFTP server hostname or IP address | | `port` | number | Yes | SFTP server port (default: 22) | | `username` | string | Yes | SFTP username | | `password` | string | No | Password for authentication (if not using private key) | | `privateKey` | string | No | Private key for authentication (OpenSSH format) | | `passphrase` | string | No | Passphrase for encrypted private key | | `remotePath` | string | Yes | Directory path on the remote server | | `detailed` | boolean | No | Include detailed file information (size, permissions, modified date) | #### Output [#output-2] | Parameter | Type | Description | | --------- | ------- | ------------------------------------------------------------------------- | | `success` | boolean | Whether the operation was successful | | `path` | string | Directory path that was listed | | `entries` | json | Array of directory entries with name, type, size, permissions, modifiedAt | | `count` | number | Number of entries in the directory | | `message` | string | Operation status message | ### SFTP Delete [#sftp-delete] Delete a file or directory on a remote SFTP server #### Input [#input-3] | Parameter | Type | Required | Description | | ------------ | ------- | -------- | ------------------------------------------------------ | | `host` | string | Yes | SFTP server hostname or IP address | | `port` | number | Yes | SFTP server port (default: 22) | | `username` | string | Yes | SFTP username | | `password` | string | No | Password for authentication (if not using private key) | | `privateKey` | string | No | Private key for authentication (OpenSSH format) | | `passphrase` | string | No | Passphrase for encrypted private key | | `remotePath` | string | Yes | Path to the file or directory to delete | | `recursive` | boolean | No | Delete directories recursively | #### Output [#output-3] | Parameter | Type | Description | | ------------- | ------- | ----------------------------------- | | `success` | boolean | Whether the deletion was successful | | `deletedPath` | string | Path that was deleted | | `message` | string | Operation status message | ### SFTP Create Directory [#sftp-create-directory] Create a directory on a remote SFTP server #### Input [#input-4] | Parameter | Type | Required | Description | | ------------ | ------- | -------- | ------------------------------------------------------ | | `host` | string | Yes | SFTP server hostname or IP address | | `port` | number | Yes | SFTP server port (default: 22) | | `username` | string | Yes | SFTP username | | `password` | string | No | Password for authentication (if not using private key) | | `privateKey` | string | No | Private key for authentication (OpenSSH format) | | `passphrase` | string | No | Passphrase for encrypted private key | | `remotePath` | string | Yes | Path for the new directory | | `recursive` | boolean | No | Create parent directories if they do not exist | #### Output [#output-4] | Parameter | Type | Description | | ------------- | ------- | ---------------------------------------------- | | `success` | boolean | Whether the directory was created successfully | | `createdPath` | string | Path of the created directory | | `message` | string | Operation status message | --- # AWS STS (/en/integrations/sts) {/* MANUAL-CONTENT-START:intro */} Use [AWS STS](https://docs.aws.amazon.com/STS/latest/APIReference/welcome.html) to request temporary credentials, assume roles, verify the calling identity, and identify the AWS account associated with an access key. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate AWS STS into the workflow. Assume roles, get temporary credentials, verify caller identity, and look up access key information. ## Actions [#actions] ### STS Assume Role [#sts-assume-role] Assume an IAM role and receive temporary security credentials #### 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 | | `roleArn` | string | Yes | ARN of the IAM role to assume | | `roleSessionName` | string | Yes | Identifier for the assumed role session | | `durationSeconds` | number | No | Duration of the session in seconds (900-43200, default 3600) | | `policy` | string | No | JSON IAM policy to further restrict session permissions (max 2048 chars) | | `externalId` | string | No | External ID for cross-account access | | `serialNumber` | string | No | MFA device serial number or ARN | | `tokenCode` | string | No | MFA token code (6 digits) | | `policyArns` | string | No | Comma-separated ARNs of up to 10 IAM managed policies to use as session policies | | `tags` | string | No | JSON object of up to 50 session tag key/value pairs for attribute-based access control | | `transitiveTagKeys` | string | No | Comma-separated tag keys that propagate through role chaining | #### Output [#output] | Parameter | Type | Description | | ------------------ | ------ | ----------------------------------------------- | | `accessKeyId` | string | Temporary access key ID | | `secretAccessKey` | string | Temporary secret access key | | `sessionToken` | string | Temporary session token | | `expiration` | string | Credential expiration timestamp | | `assumedRoleArn` | string | ARN of the assumed role | | `assumedRoleId` | string | Assumed role ID with session name | | `packedPolicySize` | number | Percentage of allowed policy size used | | `sourceIdentity` | string | Source identity set on the role session, if any | ### STS Assume Role With Web Identity [#sts-assume-role-with-web-identity] Assume an IAM role using an OIDC/OAuth 2.0 web identity token (e.g. GitHub Actions OIDC, EKS IRSA, Google/Facebook federation) and receive temporary security credentials #### Input [#input-1] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------- | | `region` | string | Yes | AWS region (e.g., us-east-1) | | `roleArn` | string | Yes | ARN of the IAM role to assume | | `roleSessionName` | string | Yes | Identifier for the assumed role session | | `webIdentityToken` | string | Yes | OAuth 2.0 access token or OpenID Connect ID token from the identity provider (up to 20000 chars) | | `providerId` | string | No | Fully qualified host of a legacy OAuth 2.0 provider (e.g. [www.amazon.com](http://www.amazon.com)); omit for OpenID Connect providers | | `policyArns` | string | No | Comma-separated ARNs of up to 10 IAM managed policies to use as session policies | | `policy` | string | No | JSON IAM policy to further restrict session permissions (max 2048 chars) | | `durationSeconds` | number | No | Duration of the session in seconds (900-43200, default 3600) | #### Output [#output-1] | Parameter | Type | Description | | ----------------------------- | ------ | ----------------------------------------------------------------------- | | `accessKeyId` | string | Temporary access key ID | | `secretAccessKey` | string | Temporary secret access key | | `sessionToken` | string | Temporary session token | | `expiration` | string | Credential expiration timestamp | | `assumedRoleArn` | string | ARN of the assumed role | | `assumedRoleId` | string | Assumed role ID with session name | | `subjectFromWebIdentityToken` | string | Unique user identifier from the identity provider's token subject claim | | `audience` | string | Intended audience (client ID) of the web identity token | | `provider` | string | Issuing authority of the presented web identity token | | `packedPolicySize` | number | Percentage of allowed policy size used | | `sourceIdentity` | string | Source identity set on the role session, if any | ### STS Assume Role With SAML [#sts-assume-role-with-saml] Assume an IAM role using a SAML 2.0 authentication response from an enterprise identity provider and receive temporary security credentials #### Input [#input-2] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | -------------------------------------------------------------------------------- | | `region` | string | Yes | AWS region (e.g., us-east-1) | | `roleArn` | string | Yes | ARN of the IAM role to assume | | `principalArn` | string | Yes | ARN of the SAML provider in IAM that describes the identity provider | | `samlAssertion` | string | Yes | Base64-encoded SAML authentication response from the identity provider | | `policyArns` | string | No | Comma-separated ARNs of up to 10 IAM managed policies to use as session policies | | `policy` | string | No | JSON IAM policy to further restrict session permissions (max 2048 chars) | | `durationSeconds` | number | No | Duration of the session in seconds (900-43200, default 3600) | #### Output [#output-2] | Parameter | Type | Description | | ------------------ | ------ | ------------------------------------------------------------------------- | | `accessKeyId` | string | Temporary access key ID | | `secretAccessKey` | string | Temporary secret access key | | `sessionToken` | string | Temporary session token | | `expiration` | string | Credential expiration timestamp | | `assumedRoleArn` | string | ARN of the assumed role | | `assumedRoleId` | string | Assumed role ID with session name | | `subject` | string | Value of the NameID element in the Subject of the SAML assertion | | `subjectType` | string | Format of the name ID (e.g. transient, persistent) | | `issuer` | string | Value of the Issuer element of the SAML assertion | | `audience` | string | Value of the SAML assertion's SubjectConfirmationData Recipient attribute | | `nameQualifier` | string | Hash uniquely identifying the issuer, account, and SAML provider | | `packedPolicySize` | number | Percentage of allowed policy size used | | `sourceIdentity` | string | Source identity set on the role session, if any | ### STS Get Caller Identity [#sts-get-caller-identity] Get details about the IAM user or role whose credentials are used to call the 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 | #### Output [#output-3] | Parameter | Type | Description | | --------- | ------ | --------------------------------------- | | `account` | string | AWS account ID | | `arn` | string | ARN of the calling entity | | `userId` | string | Unique identifier of the calling entity | ### STS Get Session Token [#sts-get-session-token] Get temporary security credentials for an IAM user, optionally with MFA #### 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 | | `durationSeconds` | number | No | Duration of the session in seconds (900-129600, default 43200) | | `serialNumber` | string | No | MFA device serial number or ARN | | `tokenCode` | string | No | MFA token code (6 digits) | #### Output [#output-4] | Parameter | Type | Description | | ----------------- | ------ | ------------------------------- | | `accessKeyId` | string | Temporary access key ID | | `secretAccessKey` | string | Temporary secret access key | | `sessionToken` | string | Temporary session token | | `expiration` | string | Credential expiration timestamp | ### STS Get Access Key Info [#sts-get-access-key-info] Get the AWS account ID associated with an access key #### 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 | | `targetAccessKeyId` | string | Yes | The access key ID to look up | #### Output [#output-5] | Parameter | Type | Description | | --------- | ------ | --------------------------------------- | | `account` | string | AWS account ID that owns the access key | --- # AWS AppConfig (/en/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 | --- # TwoWay (/en/integrations/twoway) ## Usage Instructions [#usage-instructions] Integrate TwoWay hotel management system into your workflow. Create, modify, cancel, and search bookings. Manage inventory, rate prices, and rate plans. ## Actions [#actions] ### twoway\_booking\_insert [#twoway_booking_insert] Create a new booking in TWO WAY hotel management system #### Input [#input] | Parameter | Type | Required | Description | | ------------------------ | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `tokenClient` | string | Yes | Client authentication token | | `tokenApplication` | string | Yes | Application authentication token | | `hotelCode` | string | Yes | Hotel identification code (sent in header) | | `creatorId` | string | Yes | Partner system name (e.g., "CRS HIGS") | | `sourceOfBusiness` | string | Yes | Booking source code, max 7 chars (e.g., "BOOKING") | | `idHotel` | number | Yes | Hotel ID number in HIGS | | `checkin` | string | Yes | Check-in date (YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss) | | `checkout` | string | Yes | Check-out date (YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss) | | `dateTimeInclusion` | string | Yes | Booking creation datetime (YYYY-MM-DDTHH:mm:ss) | | `guestCount` | number | Yes | Total number of adult guests | | `mainGuestGivenName` | string | Yes | Main guest first name (max 30 chars) | | `mainGuestSurename` | string | Yes | Main guest surname (max 30 chars) | | `mainGuestEmail` | string | Yes | Main guest email (max 50 chars) | | `roomTypeCode` | string | Yes | Room type identifier code (e.g., "201", "602") | | `hotelReservationNumber` | string | Yes | Reservation number in integrator system | | `typeReservation` | number | Yes | Booking type identifier code | | `currencyCode` | string | Yes | Currency code ISO 4217 (e.g., "BRL", "USD") | | `numberChildren` | number | No | Number of children (default: 0) | | `mainGuestTelephone` | string | No | Main guest phone (max 20 chars) | | `mainGuestAddressLine` | string | No | Main guest address (max 70 chars) | | `mainGuestCity` | string | No | Main guest city (max 255 chars) | | `mainGuestState` | string | No | Main guest state/province (max 255 chars) | | `mainGuestZipCode` | string | No | Main guest postal code (max 12 chars) | | `mainGuestCountry` | string | No | Main guest country (max 255 chars) | | `guests` | array | No | Additional guests: \[\{givenName, lastName, age, ageQualifyingCode}]. AgeQualifyingCode: 10=Adult, 6=ChildZone2, 8=Child | | `comment` | string | No | Reservation remarks (max 1400 chars) | | `ratePlanCode` | string | No | Rate plan identifier code | | `commission` | number | No | Commission value (25 for commissioned, 0 for non-commissioned) | | `typePayment` | number | No | Payment type: 1=Credit Card, 2=Direct in Hotel, 3=Invoiced | | `typeInvoice` | string | No | Invoice types as JSON array when typePayment=3 (e.g., \["Ty","Tx"]). Options: Ty, Tt, Tx, An, Di, Cf, Tl, Tu, Bu, Fb, Lv | | `creditCardFlag` | string | No | Card flag: VI=Visa, IK=Mastercard, DC=Diners, AX=Amex, EL=Elo, DS=Discover | | `creditCardName` | string | No | Name printed on card (max 30 chars) | | `creditCardNumber` | string | No | Card number (max 24 chars) | | `creditCardSecurityCode` | string | No | Card security code/CVV (max 8 chars) | | `creditCardExpiration` | string | No | Card expiration date (MM/YY) | | `companyId` | string | No | Company/Agency ID in integrator (max 30 chars) | | `companyName` | string | No | Company/Agency name (max 60 chars) | | `companyAddress` | string | No | Company street address (max 60 chars) | | `companyAddressNumber` | string | No | Company address number (max 20 chars) | | `companyComplement` | string | No | Company address complement (max 60 chars) | | `companyCity` | string | No | Company city (max 60 chars) | | `companyState` | string | No | Company state (max 60 chars) | | `companyCountry` | string | No | Company country (max 60 chars) | | `companyEmail` | string | No | Company email (max 100 chars) | | `companyPhone` | string | No | Company phone (max 30 chars) | | `rates` | array | No | Daily rates: \[\{effectiveDate: "YYYY-MM-DD", amount: 150.00}] | | `totalAmountBeforeTax` | number | No | Total amount without fees and taxes | | `taxes` | array | No | Taxes: \[\{codeTax, value, description}]. CodeTax: 1=Service charge, 2=Service Tax, 3=Tourist tax, 4=Ecological, 5=Circulation, 6=Added, 18=Food\&Bev, 28=Juiz de Fora | | `extraServices` | array | No | Extra services: \[\{date, serviceCode, serviceType, service, place, comment, currency, amountAfterTax, amountBeforeTax, quantity, guestList}] | #### Output [#output] | Parameter | Type | Description | | --------- | ------ | ------------------------------------ | | `data` | json | Response data from booking insertion | | `status` | number | HTTP status code | | `headers` | json | Response headers | ### twoway\_booking\_modify [#twoway_booking_modify] Modify an existing booking in TWO WAY hotel management system #### Input [#input-1] | Parameter | Type | Required | Description | | ------------------------ | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `tokenClient` | string | Yes | Client authentication token | | `tokenApplication` | string | Yes | Application authentication token | | `hotelCode` | string | Yes | Hotel identification code (sent in header) | | `creatorId` | string | Yes | Partner system name (e.g., "CRS HIGS") | | `sourceOfBusiness` | string | Yes | Booking source code, max 7 chars (e.g., "BOOKING") | | `idHotel` | number | Yes | Hotel ID number in HIGS | | `checkin` | string | Yes | Check-in date (YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss) | | `checkout` | string | Yes | Check-out date (YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss) | | `dateTimeInclusion` | string | Yes | Booking creation datetime (YYYY-MM-DDTHH:mm:ss) | | `guestCount` | number | Yes | Total number of adult guests | | `mainGuestGivenName` | string | Yes | Main guest first name (max 30 chars) | | `mainGuestSurename` | string | Yes | Main guest surname (max 30 chars) | | `mainGuestEmail` | string | Yes | Main guest email (max 50 chars) | | `roomTypeCode` | string | Yes | Room type identifier code (e.g., "201", "602") | | `hotelReservationNumber` | string | Yes | Reservation number in integrator system | | `typeReservation` | number | Yes | Booking type identifier code | | `currencyCode` | string | Yes | Currency code ISO 4217 (e.g., "BRL", "USD") | | `numberChildren` | number | No | Number of children (default: 0) | | `mainGuestTelephone` | string | No | Main guest phone (max 20 chars) | | `mainGuestAddressLine` | string | No | Main guest address (max 70 chars) | | `mainGuestCity` | string | No | Main guest city (max 255 chars) | | `mainGuestState` | string | No | Main guest state/province (max 255 chars) | | `mainGuestZipCode` | string | No | Main guest postal code (max 12 chars) | | `mainGuestCountry` | string | No | Main guest country (max 255 chars) | | `guests` | array | No | Additional guests: \[\{givenName, lastName, age, ageQualifyingCode}]. AgeQualifyingCode: 10=Adult, 6=ChildZone2, 8=Child | | `comment` | string | No | Reservation remarks (max 1400 chars) | | `ratePlanCode` | string | No | Rate plan identifier code | | `commission` | number | No | Commission value (25 for commissioned, 0 for non-commissioned) | | `typePayment` | number | No | Payment type: 1=Credit Card, 2=Direct in Hotel, 3=Invoiced | | `typeInvoice` | string | No | Invoice types as JSON array when typePayment=3 (e.g., \["Ty","Tx"]). Options: Ty, Tt, Tx, An, Di, Cf, Tl, Tu, Bu, Fb, Lv | | `creditCardFlag` | string | No | Card flag: VI=Visa, IK=Mastercard, DC=Diners, AX=Amex, EL=Elo, DS=Discover | | `creditCardName` | string | No | Name printed on card (max 30 chars) | | `creditCardNumber` | string | No | Card number (max 24 chars) | | `creditCardSecurityCode` | string | No | Card security code/CVV (max 8 chars) | | `creditCardExpiration` | string | No | Card expiration date (MM/YY) | | `companyId` | string | No | Company/Agency ID in integrator (max 30 chars) | | `companyName` | string | No | Company/Agency name (max 60 chars) | | `companyAddress` | string | No | Company street address (max 60 chars) | | `companyAddressNumber` | string | No | Company address number (max 20 chars) | | `companyComplement` | string | No | Company address complement (max 60 chars) | | `companyCity` | string | No | Company city (max 60 chars) | | `companyState` | string | No | Company state (max 60 chars) | | `companyCountry` | string | No | Company country (max 60 chars) | | `companyEmail` | string | No | Company email (max 100 chars) | | `companyPhone` | string | No | Company phone (max 30 chars) | | `rates` | array | No | Daily rates: \[\{effectiveDate: "YYYY-MM-DD", amount: 150.00}] | | `totalAmountBeforeTax` | number | No | Total amount without fees and taxes | | `taxes` | array | No | Taxes: \[\{codeTax, value, description}]. CodeTax: 1=Service charge, 2=Service Tax, 3=Tourist tax, 4=Ecological, 5=Circulation, 6=Added, 18=Food\&Bev, 28=Juiz de Fora | | `extraServices` | array | No | Extra services: \[\{date, serviceCode, serviceType, service, place, comment, currency, amountAfterTax, amountBeforeTax, quantity, guestList}] | #### Output [#output-1] | Parameter | Type | Description | | --------- | ------ | --------------------------------------- | | `data` | json | Response data from booking modification | | `status` | number | HTTP status code | | `headers` | json | Response headers | ### twoway\_booking\_cancel [#twoway_booking_cancel] Cancel an existing booking in TWO WAY hotel management system #### Input [#input-2] | Parameter | Type | Required | Description | | ------------------------ | ------ | -------- | -------------------------------- | | `tokenClient` | string | Yes | Client authentication token | | `tokenApplication` | string | Yes | Application authentication token | | `hotelCode` | string | Yes | Hotel identification code | | `reservationNumberCmNet` | string | Yes | Reservation number to cancel | #### Output [#output-2] | Parameter | Type | Description | | --------- | ------ | --------------------------------------- | | `data` | json | Response data from booking cancellation | | `status` | number | HTTP status code | | `headers` | object | Response headers | ### twoway\_booking\_search [#twoway_booking_search] Search for a booking by reservation ID in TWO WAY hotel management system #### Input [#input-3] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | -------------------------------- | | `tokenClient` | string | Yes | Client authentication token | | `tokenApplication` | string | Yes | Application authentication token | | `hotelCode` | string | Yes | Hotel identification code | | `reservationId` | string | Yes | Reservation ID to search for | #### Output [#output-3] | Parameter | Type | Description | | --------- | ------ | ------------------- | | `data` | json | Booking information | | `status` | number | HTTP status code | | `headers` | object | Response headers | ### twoway\_inventory\_load [#twoway_inventory_load] Load inventory data for a hotel in TWO WAY hotel management system #### Input [#input-4] | Parameter | Type | Required | Description | | ------------------ | ------- | -------- | ------------------------------------------------- | | `tokenClient` | string | Yes | Client authentication token | | `tokenApplication` | string | Yes | Application authentication token | | `hotelCode` | string | Yes | Hotel identification code | | `startDate` | string | Yes | Start date for inventory load (YYYY-MM-DD format) | | `endDate` | string | Yes | End date for inventory load (YYYY-MM-DD format) | | `idHotel` | number | Yes | Hotel ID number | | `propagation` | boolean | No | Enable propagation | #### Output [#output-4] | Parameter | Type | Description | | --------- | ------ | ------------------------------------------- | | `data` | json | Inventory data for the specified date range | | `status` | number | HTTP status code | | `headers` | object | Response headers | ### twoway\_rate\_prices\_load [#twoway_rate_prices_load] Load rate prices data for a hotel in TWO WAY hotel management system #### Input [#input-5] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | ---------------------------------------------- | | `tokenClient` | string | Yes | Client authentication token | | `tokenApplication` | string | Yes | Application authentication token | | `hotelCode` | string | Yes | Hotel identification code | | `startDate` | string | Yes | Start date for rate prices (YYYY-MM-DD format) | | `endDate` | string | Yes | End date for rate prices (YYYY-MM-DD format) | | `idHotel` | number | Yes | Hotel ID number | #### Output [#output-5] | Parameter | Type | Description | | --------- | ------ | --------------------------------------------- | | `data` | json | Rate prices data for the specified date range | | `status` | number | HTTP status code | | `headers` | object | Response headers | ### twoway\_rateplan\_list [#twoway_rateplan_list] Download rateplan list for a hotel in TWO WAY hotel management system #### Input [#input-6] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | -------------------------------- | | `tokenClient` | string | Yes | Client authentication token | | `tokenApplication` | string | Yes | Application authentication token | | `idHotel` | number | Yes | Hotel ID number | | `typeList` | number | No | Type of list (e.g., 2) | | `id` | string | No | Optional ID parameter | #### Output [#output-6] | Parameter | Type | Description | | --------- | ------ | ------------------------------- | | `data` | json | List of rateplans for the hotel | | `status` | number | HTTP status code | | `headers` | object | Response headers | --- # Railway (/en/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 Studio, 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 | --- # Firecrawl (/en/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 | --- # Amplitude (/en/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 | --- # Trello (/en/integrations/trello) {/* MANUAL-CONTENT-START:intro */} Use [Trello](https://trello.com) to manage boards, lists, cards, checklists, labels, and members, or retrieve activity and add comments. Complete the OAuth Allowed Origins setup below before connecting your account. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] {/* MANUAL-CONTENT-START:usage */} ## Trello OAuth Setup [#trello-oauth-setup] Before connecting Trello in Studio, add your Studio app origin to the **Allowed Origins** list for your Trello API key in the Trello Power-Up admin settings. Trello's authorization flow redirects back to Studio using a `return_url`. If your Studio origin is not whitelisted in Trello, Trello will block the redirect and the connection flow will fail before Studio can save the token. {/* MANUAL-CONTENT-END */} Integrate with Trello to list, search, create, update, and delete cards and lists, manage checklists and checklist items, assign labels and members, review activity, and add comments. ## Actions [#actions] ### Trello Get Lists [#trello-get-lists] List all lists on a Trello board #### Input [#input] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------------------------------------------- | | `boardId` | string | Yes | Trello board ID (24-character hex string) | | `filter` | string | No | Which lists to return: open, closed, or all (defaults to open) | #### Output [#output] | Parameter | Type | Description | | ----------- | ------- | ---------------------------- | | `lists` | array | Lists on the selected board | | ↳ `id` | string | List ID | | ↳ `name` | string | List name | | ↳ `closed` | boolean | Whether the list is archived | | ↳ `pos` | number | List position on the board | | ↳ `idBoard` | string | Board ID containing the list | | `count` | number | Number of lists returned | ### Trello List Cards [#trello-list-cards] List cards from a Trello board or list #### Input [#input-1] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------------------------- | | `boardId` | string | No | Trello board ID to list open cards from. Provide either boardId or listId | | `listId` | string | No | Trello list ID to list cards from. Provide either boardId or listId | | `filter` | string | No | Which cards to return: open, closed, or all (defaults to open) | #### Output [#output-1] | Parameter | Type | Description | | --------------- | ------- | ----------------------------------------------------- | | `cards` | array | Cards returned from the selected Trello board or list | | ↳ `id` | string | Card ID | | ↳ `name` | string | Card name | | ↳ `desc` | string | Card description | | ↳ `url` | string | Full card URL | | ↳ `idBoard` | string | Board ID containing the card | | ↳ `idList` | string | List ID containing the card | | ↳ `closed` | boolean | Whether the card is archived | | ↳ `labelIds` | array | Label IDs applied to the card | | ↳ `labels` | array | Labels applied to the card | | ↳ `id` | string | Label ID | | ↳ `name` | string | Label name | | ↳ `color` | string | Label color | | ↳ `due` | string | Card due date in ISO 8601 format | | ↳ `dueComplete` | boolean | Whether the due date is complete | | `count` | number | Number of cards returned | ### Trello Search [#trello-search] Search Trello cards and boards by keyword #### Input [#input-2] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | --------------------------------------------------------------------------- | | `query` | string | Yes | Search text, supports Trello search operators (e.g. board:, list:, due:) | | `idBoards` | array | No | Restrict the search to these board IDs | | `modelTypes` | string | No | Comma-separated result types to search: cards, boards, or all (default all) | | `cardsLimit` | number | No | Maximum number of cards to return (1-1000, default 10) | #### Output [#output-2] | Parameter | Type | Description | | ------------------ | ------- | --------------------------------------------- | | `cards` | array | Cards matching the search query | | ↳ `id` | string | Card ID | | ↳ `name` | string | Card name | | ↳ `desc` | string | Card description | | ↳ `url` | string | Full card URL | | ↳ `idBoard` | string | Board ID containing the card | | ↳ `idList` | string | List ID containing the card | | ↳ `closed` | boolean | Whether the card is archived | | `boards` | array | Boards matching the search query | | ↳ `id` | string | Board ID | | ↳ `name` | string | Board name | | ↳ `desc` | string | Board description | | ↳ `url` | string | Full board URL | | ↳ `closed` | boolean | Whether the board is archived | | ↳ `idOrganization` | string | Workspace/organization ID that owns the board | | `count` | number | Total number of cards and boards returned | ### Trello Create Card [#trello-create-card] Create a new card in a Trello list #### Input [#input-3] | Parameter | Type | Required | Description | | ------------- | ------- | -------- | ----------------------------------------------------- | | `listId` | string | Yes | Trello list ID (24-character hex string) | | `name` | string | Yes | Name/title of the card | | `desc` | string | No | Description of the card | | `pos` | string | No | Position of the card (top, bottom, or positive float) | | `due` | string | No | Due date (ISO 8601 format) | | `dueComplete` | boolean | No | Whether the due date should be marked complete | | `labelIds` | array | No | Label IDs to attach to the card | | `memberIds` | array | No | Member IDs to assign to the card | #### Output [#output-3] | Parameter | Type | Description | | --------------- | ------- | ----------------------------------------------------------------------------------------------- | | `card` | json | Created card (id, name, desc, url, idBoard, idList, closed, labelIds, labels, due, dueComplete) | | ↳ `id` | string | Card ID | | ↳ `name` | string | Card name | | ↳ `desc` | string | Card description | | ↳ `url` | string | Full card URL | | ↳ `idBoard` | string | Board ID containing the card | | ↳ `idList` | string | List ID containing the card | | ↳ `closed` | boolean | Whether the card is archived | | ↳ `labelIds` | array | Label IDs applied to the card | | ↳ `labels` | array | Labels applied to the card | | ↳ `id` | string | Label ID | | ↳ `name` | string | Label name | | ↳ `color` | string | Label color | | ↳ `due` | string | Card due date in ISO 8601 format | | ↳ `dueComplete` | boolean | Whether the due date is complete | ### Trello Update Card [#trello-update-card] Update an existing card on Trello #### Input [#input-4] | Parameter | Type | Required | Description | | ------------- | ------- | -------- | -------------------------------------------------------- | | `cardId` | string | Yes | Trello card ID (24-character hex string) | | `name` | string | No | New name/title of the card | | `desc` | string | No | New description of the card | | `closed` | boolean | No | Archive/close the card (true) or reopen it (false) | | `idList` | string | No | Trello list ID to move card to (24-character hex string) | | `due` | string | No | Due date (ISO 8601 format) | | `dueComplete` | boolean | No | Mark the due date as complete | #### Output [#output-4] | Parameter | Type | Description | | --------------- | ------- | ----------------------------------------------------------------------------------------------- | | `card` | json | Updated card (id, name, desc, url, idBoard, idList, closed, labelIds, labels, due, dueComplete) | | ↳ `id` | string | Card ID | | ↳ `name` | string | Card name | | ↳ `desc` | string | Card description | | ↳ `url` | string | Full card URL | | ↳ `idBoard` | string | Board ID containing the card | | ↳ `idList` | string | List ID containing the card | | ↳ `closed` | boolean | Whether the card is archived | | ↳ `labelIds` | array | Label IDs applied to the card | | ↳ `labels` | array | Labels applied to the card | | ↳ `id` | string | Label ID | | ↳ `name` | string | Label name | | ↳ `color` | string | Label color | | ↳ `due` | string | Card due date in ISO 8601 format | | ↳ `dueComplete` | boolean | Whether the due date is complete | ### Trello Delete Card [#trello-delete-card] Permanently delete a Trello card #### Input [#input-5] | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------------------------------------------- | | `cardId` | string | Yes | Trello card ID to permanently delete (24-character hex string) | #### Output [#output-5] | Parameter | Type | Description | | --------- | ------- | ---------------------------- | | `success` | boolean | Whether the card was deleted | ### Trello Get Actions [#trello-get-actions] Get activity/actions from a board or card #### Input [#input-6] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------------------------------------------------------------------------------------------------- | | `boardId` | string | No | Trello board ID (24-character hex string). Either boardId or cardId required | | `cardId` | string | No | Trello card ID (24-character hex string). Either boardId or cardId required | | `filter` | string | No | Filter actions by type (e.g., "commentCard,updateCard,createCard" or "all") | | `limit` | number | No | Maximum number of board actions to return | | `page` | number | No | Page number for action results | | `since` | string | No | Only return actions after this date (ISO 8601 timestamp) or action ID, for paging through long histories | | `before` | string | No | Only return actions before this date (ISO 8601 timestamp) or action ID, for paging through long histories | #### Output [#output-6] | Parameter | Type | Description | | ------------------- | ------ | -------------------------------------------------------------------------------------- | | `actions` | array | Action items (id, type, date, idMemberCreator, text, memberCreator, card, board, list) | | ↳ `id` | string | Action ID | | ↳ `type` | string | Action type | | ↳ `date` | string | Action timestamp | | ↳ `idMemberCreator` | string | ID of the member who created the action | | ↳ `text` | string | Comment text when present | | ↳ `memberCreator` | object | Member who created the action | | ↳ `id` | string | Member ID | | ↳ `fullName` | string | Member full name | | ↳ `username` | string | Member username | | ↳ `card` | object | Card referenced by the action | | ↳ `id` | string | Card ID | | ↳ `name` | string | Card name | | ↳ `shortLink` | string | Short card link | | ↳ `idShort` | number | Board-local card number | | ↳ `due` | string | Card due date | | ↳ `board` | object | Board referenced by the action | | ↳ `id` | string | Board ID | | ↳ `name` | string | Board name | | ↳ `shortLink` | string | Short board link | | ↳ `list` | object | List referenced by the action | | ↳ `id` | string | List ID | | ↳ `name` | string | List name | | `count` | number | Number of actions returned | ### Trello Add Comment [#trello-add-comment] Add a comment to a Trello card #### Input [#input-7] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------------------- | | `cardId` | string | Yes | Trello card ID (24-character hex string) | | `text` | string | Yes | Comment text | #### Output [#output-7] | Parameter | Type | Description | | ------------------- | ------ | ------------------------------------------------------------------------------------------------ | | `comment` | json | Created comment action (id, type, date, idMemberCreator, text, memberCreator, card, board, list) | | ↳ `id` | string | Action ID | | ↳ `type` | string | Action type | | ↳ `date` | string | Action timestamp | | ↳ `idMemberCreator` | string | ID of the member who created the comment | | ↳ `text` | string | Comment text | | ↳ `memberCreator` | object | Member who created the comment | | ↳ `id` | string | Member ID | | ↳ `fullName` | string | Member full name | | ↳ `username` | string | Member username | | ↳ `card` | object | Card referenced by the comment | | ↳ `id` | string | Card ID | | ↳ `name` | string | Card name | | ↳ `shortLink` | string | Short card link | | ↳ `idShort` | number | Board-local card number | | ↳ `due` | string | Card due date | | ↳ `board` | object | Board referenced by the comment | | ↳ `id` | string | Board ID | | ↳ `name` | string | Board name | | ↳ `shortLink` | string | Short board link | | ↳ `list` | object | List referenced by the comment | | ↳ `id` | string | List ID | | ↳ `name` | string | List name | ### Trello Create Board [#trello-create-board] Create a new Trello board #### Input [#input-8] | Parameter | Type | Required | Description | | ---------------- | ------- | -------- | ------------------------------------------------------------------------- | | `name` | string | Yes | Name of the board | | `desc` | string | No | Description of the board | | `idOrganization` | string | No | ID or name of the workspace/organization the board belongs to | | `defaultLists` | boolean | No | Whether to create the default lists (To Do, Doing, Done) on the new board | #### Output [#output-8] | Parameter | Type | Description | | ------------------ | ------- | ----------------------------------------------------------- | | `board` | json | Created board (id, name, desc, url, closed, idOrganization) | | ↳ `id` | string | Board ID | | ↳ `name` | string | Board name | | ↳ `desc` | string | Board description | | ↳ `url` | string | Full board URL | | ↳ `closed` | boolean | Whether the board is closed | | ↳ `idOrganization` | string | ID of the workspace/organization the board belongs to | ### Trello Get Board [#trello-get-board] Retrieve a single Trello board by ID #### Input [#input-9] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------------------------------------- | | `boardId` | string | Yes | Trello board ID (24-character hex string) | #### Output [#output-9] | Parameter | Type | Description | | ------------------ | ------- | ----------------------------------------------------- | | `board` | json | Board (id, name, desc, url, closed, idOrganization) | | ↳ `id` | string | Board ID | | ↳ `name` | string | Board name | | ↳ `desc` | string | Board description | | ↳ `url` | string | Full board URL | | ↳ `closed` | boolean | Whether the board is closed | | ↳ `idOrganization` | string | ID of the workspace/organization the board belongs to | ### Trello Create List [#trello-create-list] Create a new list on a Trello board #### Input [#input-10] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------------- | | `boardId` | string | Yes | Trello board ID the list belongs to (24-character hex string) | | `name` | string | Yes | Name of the list | | `pos` | string | No | Position of the list (top, bottom, or positive float) | #### Output [#output-10] | Parameter | Type | Description | | ----------- | ------- | --------------------------------------------- | | `list` | json | Created list (id, name, closed, pos, idBoard) | | ↳ `id` | string | List ID | | ↳ `name` | string | List name | | ↳ `closed` | boolean | Whether the list is archived | | ↳ `pos` | number | List position on the board | | ↳ `idBoard` | string | Board ID containing the list | ### Trello Update List [#trello-update-list] Rename, move, archive, or reopen a Trello list #### Input [#input-11] | Parameter | Type | Required | Description | | --------- | ------- | -------- | --------------------------------------------------------- | | `listId` | string | Yes | Trello list ID (24-character hex string) | | `name` | string | No | New name of the list | | `closed` | boolean | No | Archive the list (true) or reopen it (false) | | `idBoard` | string | No | Board ID to move the list to (24-character hex string) | | `pos` | string | No | New position of the list (top, bottom, or positive float) | #### Output [#output-11] | Parameter | Type | Description | | ----------- | ------- | --------------------------------------------- | | `list` | json | Updated list (id, name, closed, pos, idBoard) | | ↳ `id` | string | List ID | | ↳ `name` | string | List name | | ↳ `closed` | boolean | Whether the list is archived | | ↳ `pos` | number | List position on the board | | ↳ `idBoard` | string | Board ID containing the list | ### Trello Get Card [#trello-get-card] Retrieve a single Trello card by ID #### Input [#input-12] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------------------- | | `cardId` | string | Yes | Trello card ID (24-character hex string) | #### Output [#output-12] | Parameter | Type | Description | | --------------- | ------- | --------------------------------------------------------------------------------------- | | `card` | json | Card (id, name, desc, url, idBoard, idList, closed, labelIds, labels, due, dueComplete) | | ↳ `id` | string | Card ID | | ↳ `name` | string | Card name | | ↳ `desc` | string | Card description | | ↳ `url` | string | Full card URL | | ↳ `idBoard` | string | Board ID containing the card | | ↳ `idList` | string | List ID containing the card | | ↳ `closed` | boolean | Whether the card is archived | | ↳ `labelIds` | array | Label IDs applied to the card | | ↳ `labels` | array | Labels applied to the card | | ↳ `id` | string | Label ID | | ↳ `name` | string | Label name | | ↳ `color` | string | Label color | | ↳ `due` | string | Card due date in ISO 8601 format | | ↳ `dueComplete` | boolean | Whether the due date is complete | ### Trello Add Checklist [#trello-add-checklist] Add a checklist to a Trello card #### Input [#input-13] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------------------------------------------- | | `cardId` | string | Yes | Trello card ID to add the checklist to (24-character hex string) | | `name` | string | Yes | Name of the checklist | | `pos` | string | No | Position of the checklist (top, bottom, or positive float) | #### Output [#output-13] | Parameter | Type | Description | | ----------- | ------ | -------------------------------------------------- | | `checklist` | json | Created checklist (id, name, idCard, idBoard, pos) | | ↳ `id` | string | Checklist ID | | ↳ `name` | string | Checklist name | | ↳ `idCard` | string | Card ID containing the checklist | | ↳ `idBoard` | string | Board ID containing the checklist | | ↳ `pos` | number | Checklist position on the card | ### Trello Add Checklist Item [#trello-add-checklist-item] Add an item to a Trello checklist #### Input [#input-14] | Parameter | Type | Required | Description | | ------------- | ------- | -------- | ---------------------------------------------------------------- | | `checklistId` | string | Yes | Trello checklist ID to add the item to (24-character hex string) | | `name` | string | Yes | Name of the checklist item | | `pos` | string | No | Position of the item (top, bottom, or positive float) | | `checked` | boolean | No | Whether the item should start checked off | #### Output [#output-14] | Parameter | Type | Description | | --------------- | ------ | ---------------------------------------------------------- | | `item` | json | Created checklist item (id, name, state, pos, idChecklist) | | ↳ `id` | string | Checklist item ID | | ↳ `name` | string | Checklist item name | | ↳ `state` | string | Item state (complete or incomplete) | | ↳ `pos` | number | Item position on the checklist | | ↳ `idChecklist` | string | Checklist ID containing the item | ### Trello Update Checklist Item [#trello-update-checklist-item] Check off, uncheck, or rename a Trello checklist item #### Input [#input-15] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | --------------------------------------------------------------------- | | `cardId` | string | Yes | Trello card ID that owns the checklist item (24-character hex string) | | `checkItemId` | string | Yes | Checklist item ID to update (24-character hex string) | | `state` | string | No | Set the item state to complete or incomplete | | `name` | string | No | New name for the checklist item | #### Output [#output-15] | Parameter | Type | Description | | --------------- | ------ | ---------------------------------------------------------- | | `item` | json | Updated checklist item (id, name, state, pos, idChecklist) | | ↳ `id` | string | Checklist item ID | | ↳ `name` | string | Checklist item name | | ↳ `state` | string | Item state (complete or incomplete) | | ↳ `pos` | number | Item position on the checklist | | ↳ `idChecklist` | string | Checklist ID containing the item | ### Trello Add Label [#trello-add-label] Attach an existing label to a Trello card #### Input [#input-16] | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------------------------------------------------------- | | `cardId` | string | Yes | Trello card ID to attach the label to (24-character hex string) | | `labelId` | string | Yes | ID of the label to attach (24-character hex string) | #### Output [#output-16] | Parameter | Type | Description | | ---------- | ----- | --------------------------------- | | `labelIds` | array | Label IDs now applied to the card | ### Trello Remove Label [#trello-remove-label] Detach a label from a Trello card #### Input [#input-17] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------------------------------------------------------------- | | `cardId` | string | Yes | Trello card ID to detach the label from (24-character hex string) | | `labelId` | string | Yes | ID of the label to detach (24-character hex string) | #### Output [#output-17] | Parameter | Type | Description | | --------- | ------- | ------------------------------------------- | | `success` | boolean | Whether the label was removed from the card | ### Trello Add Member [#trello-add-member] Assign a member to a Trello card #### Input [#input-18] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ---------------------------------------------------------------- | | `cardId` | string | Yes | Trello card ID to assign the member to (24-character hex string) | | `memberId` | string | Yes | ID of the member to assign (24-character hex string) | #### Output [#output-18] | Parameter | Type | Description | | ----------- | ----- | ----------------------------------- | | `memberIds` | array | Member IDs now assigned to the card | ### Trello Remove Member [#trello-remove-member] Unassign a member from a Trello card #### Input [#input-19] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | -------------------------------------------------------------------- | | `cardId` | string | Yes | Trello card ID to unassign the member from (24-character hex string) | | `memberId` | string | Yes | ID of the member to unassign (24-character hex string) | #### Output [#output-19] | Parameter | Type | Description | | --------- | ------- | -------------------------------------------- | | `success` | boolean | Whether the member was removed from the card | ### Trello List Members [#trello-list-members] List members of a Trello board #### Input [#input-20] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ----------------------------------------- | | `boardId` | string | Yes | Trello board ID (24-character hex string) | #### Output [#output-20] | Parameter | Type | Description | | ------------ | ------ | ----------------------------- | | `members` | array | Members on the selected board | | ↳ `id` | string | Member ID | | ↳ `fullName` | string | Member full name | | ↳ `username` | string | Member username | | `count` | number | Number of members returned | --- # Rootly (/en/integrations/rootly) {/* MANUAL-CONTENT-START:intro */} Use [Rootly](https://rootly.com/) in Studio 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 | --- # Monday (/en/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 Studio, 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 | --- # Pinecone (/en/integrations/pinecone) {/* MANUAL-CONTENT-START:intro */} Use [Pinecone](https://www.pinecone.io) in Studio 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 | --- # Resend (/en/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 Studio, 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 Studio-powered agents. By connecting Studio 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 | --- # PostHog (/en/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 | --- # CrowdStrike (/en/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; Studio 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 | --- # S3 (/en/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 | --- # Athena (/en/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 | --- # Instagram (/en/integrations/instagram) ## Usage Instructions [#usage-instructions] Integrate Instagram into workflows. Publish and download images, videos, Reels, stories, and carousels as canonical User Files; moderate comments; send DMs; and pull account or media insights. ## Actions [#actions] ### Instagram Send Button Template [#instagram-send-button-template] Send a button template private reply with up to 3 tappable buttons (URL or postback) to a commenter on Instagram. #### Input [#input] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `recipientType` | string | No | Recipient type: 'comment' to privately reply to a comment, or 'user' to DM an Instagram user directly. Defaults to 'comment'. | | `commentId` | string | No | Instagram comment ID (required when recipient type is "comment") | | `recipientId` | string | No | Instagram-scoped user ID / IGSID to message directly (required when recipient type is "user") | | `text` | string | Yes | Text displayed above the buttons (up to 640 characters) | | `buttons` | string | Yes | JSON array of 1–3 button objects. Each button: \{ "type": "web\_url"\|"postback", "title": "...", "url": "..." (for web\_url) or "payload": "..." (for postback) } | | `pageId` | string | Yes | Facebook Page ID linked to the Instagram Business account | #### Output [#output] | Parameter | Type | Description | | ----------- | ------ | ---------------------- | | `messageId` | string | ID of the sent message | ### Instagram Send Quick Replies [#instagram-send-quick-replies] Send a private reply with up to 13 quick reply buttons to a commenter on Instagram. Quick replies support plain text only. #### Input [#input-1] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `recipientType` | string | No | Recipient type: 'comment' to privately reply to a comment, or 'user' to DM an Instagram user directly. Defaults to 'comment'. | | `commentId` | string | No | Instagram comment ID (required when recipient type is "comment") | | `recipientId` | string | No | Instagram-scoped user ID / IGSID to message directly (required when recipient type is "user") | | `text` | string | Yes | Message text displayed above the quick replies | | `quickReplies` | string | Yes | JSON array of quick reply objects. Each: \{ "content\_type": "text"\|"user\_phone\_number", "title": "..." (max 20 chars), "payload": "..." }. Max 13 items. | | `pageId` | string | Yes | Facebook Page ID linked to the Instagram Business account | #### Output [#output-1] | Parameter | Type | Description | | ----------- | ------ | ---------------------- | | `messageId` | string | ID of the sent message | ### Instagram Send Generic Template [#instagram-send-generic-template] Send a generic template private reply (carousel) with images, titles, subtitles, and buttons to a commenter on Instagram. Supports up to 10 elements. #### Input [#input-2] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `recipientType` | string | No | Recipient type: 'comment' to privately reply to a comment, or 'user' to DM an Instagram user directly. Defaults to 'comment'. | | `commentId` | string | No | Instagram comment ID (required when recipient type is "comment") | | `recipientId` | string | No | Instagram-scoped user ID / IGSID to message directly (required when recipient type is "user") | | `elements` | string | Yes | JSON array of up to 10 element objects. Each: \{ "title": "..." (max 80 chars), "subtitle": "...", "image\_url": "...", "default\_action": \{ "type": "web\_url", "url": "..." }, "buttons": \[...] } | | `pageId` | string | Yes | Facebook Page ID linked to the Instagram Business account | #### Output [#output-2] | Parameter | Type | Description | | ----------- | ------ | ---------------------- | | `messageId` | string | ID of the sent message | ### Instagram Send Media [#instagram-send-media] Send a media attachment (image, video, audio, or file) as a private reply to a commenter on Instagram. #### Input [#input-3] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------- | | `recipientType` | string | No | Recipient type: 'comment' to privately reply to a comment, or 'user' to DM an Instagram user directly. Defaults to 'comment'. | | `commentId` | string | No | Instagram comment ID (required when recipient type is "comment") | | `recipientId` | string | No | Instagram-scoped user ID / IGSID to message directly (required when recipient type is "user") | | `mediaType` | string | Yes | Type of media: image, video, audio, or file | | `mediaUrl` | string | Yes | Public URL of the media to send | | `pageId` | string | Yes | Facebook Page ID linked to the Instagram Business account | #### Output [#output-3] | Parameter | Type | Description | | -------------- | ------ | ---------------------------------------- | | `messageId` | string | ID of the sent message | | `attachmentId` | string | ID of the uploaded attachment (reusable) | ### Instagram Get Profile [#instagram-get-profile] Get the connected Instagram professional account profile #### Input [#input-4] | Parameter | Type | Required | Description | | --------- | ---- | -------- | ----------- | #### Output [#output-4] | Parameter | Type | Description | | ------------------- | ------ | --------------------------------------- | | `userId` | string | Instagram professional account user\_id | | `id` | string | Graph object id | | `username` | string | Instagram username | | `name` | string | Display name | | `accountType` | string | Business or Media\_Creator | | `profilePictureUrl` | string | Profile picture URL | | `followersCount` | number | Follower count | | `followsCount` | number | Following count | | `mediaCount` | number | Media count | ### Instagram List Media [#instagram-list-media] List recent media on the Instagram professional account #### Input [#input-5] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | --------------------------------------------------------- | | `igUserId` | string | No | Instagram professional account user id (defaults to /me) | | `limit` | number | No | Max number of media items to return (default 25, max 100) | | `after` | string | No | Pagination cursor from a previous list\_media response | #### Output [#output-5] | Parameter | Type | Description | | ------------ | ------ | ----------------------------------- | | `media` | array | Media objects from this page | | `nextCursor` | string | Pagination cursor for the next page | ### Instagram Get Media [#instagram-get-media] Get details for a specific Instagram media object #### Input [#input-6] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------ | | `mediaId` | string | Yes | Instagram media id | #### Output [#output-6] | Parameter | Type | Description | | ------------------ | ------ | -------------------------------------------------------------------- | | `id` | string | Media id | | `caption` | string | Caption text | | `mediaType` | string | IMAGE, VIDEO, or CAROUSEL\_ALBUM | | `mediaProductType` | string | Feed, Reels, or Stories product type | | `mediaUrl` | string | Instagram media URL when available; use Download Media to persist it | | `permalink` | string | Permalink to the post | | `timestamp` | string | ISO timestamp | | `likeCount` | number | Like count | | `commentsCount` | number | Comments count | | `children` | array | Carousel child media IDs | ### Instagram Download Media [#instagram-download-media] Download Instagram media into canonical User Files for downstream file inputs (100 MB max per file) #### Input [#input-7] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | -------------------------------------------------------------------- | | `mediaId` | string | Yes | Instagram media ID to download | | `filename` | string | No | Optional filename override; carousel items receive an ordered suffix | #### Output [#output-7] | Parameter | Type | Description | | ----------------- | ------- | --------------------------------------------------------------------------------------- | | `files` | file\[] | Downloaded media as canonical User Files, ready for attachment inputs (100 MB max each) | | `mediaId` | string | Instagram media ID that was downloaded | | `mediaType` | string | Instagram media type, such as IMAGE, VIDEO, or CAROUSEL\_ALBUM | | `downloadedCount` | number | Number of files downloaded | ### Instagram List Stories [#instagram-list-stories] List active stories on the Instagram professional account #### Input [#input-8] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ------------------------------------------------------------ | | `igUserId` | string | No | Instagram professional account user id (defaults to /me) | | `limit` | number | No | Max number of active stories to return (default 25, max 100) | | `after` | string | No | Pagination cursor from a previous List Stories response | #### Output [#output-8] | Parameter | Type | Description | | ------------ | ------ | ----------------------------- | | `stories` | array | Active stories from this page | | `nextCursor` | string | Pagination cursor | ### Instagram Publish Image [#instagram-publish-image] Create and publish a single JPEG image post from a Studio file (polls until the container is ready) #### Input [#input-9] | Parameter | Type | Required | Description | | --------------- | ------- | -------- | ----------------------------------------------------------------- | | `igUserId` | string | No | Instagram professional account user id (defaults to /me) | | `image` | file | Yes | JPEG image uploaded to Studio or referenced from a previous block | | `caption` | string | No | Post caption (max 2200 characters) | | `altText` | string | No | Accessibility alt text for the image | | `isAiGenerated` | boolean | No | Mark the post as AI-generated | #### Output [#output-9] | Parameter | Type | Description | | ------------- | ------ | ---------------------- | | `containerId` | string | Media container ID | | `mediaId` | string | Published media ID | | `statusCode` | string | Final container status | ### Instagram Publish Video [#instagram-publish-video] Create and publish a feed video from a Studio file (published as a Reel shared to the feed; polls until ready) #### Input [#input-10] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | -------------------------------------------------------------------------- | | `igUserId` | string | No | Instagram professional account user id (defaults to /me) | | `video` | file | Yes | Video uploaded to Studio or referenced from a previous block | | `caption` | string | No | Post caption | | `cover` | file | No | Optional JPEG cover uploaded to Studio or referenced from a previous block | #### Output [#output-10] | Parameter | Type | Description | | ------------- | ------ | ---------------------- | | `containerId` | string | Media container ID | | `mediaId` | string | Published media ID | | `statusCode` | string | Final container status | ### Instagram Publish Reel [#instagram-publish-reel] Create and publish a Reel from a Studio video file (polls until ready) #### Input [#input-11] | Parameter | Type | Required | Description | | ------------- | ------- | -------- | -------------------------------------------------------------------------- | | `igUserId` | string | No | Instagram professional account user id (defaults to /me) | | `video` | file | Yes | Reel video uploaded to Studio or referenced from a previous block | | `caption` | string | No | Reel caption | | `cover` | file | No | Optional JPEG cover uploaded to Studio or referenced from a previous block | | `shareToFeed` | boolean | No | Also share the Reel to the main feed | | `thumbOffset` | number | No | Frame offset in milliseconds for the cover thumbnail | #### Output [#output-11] | Parameter | Type | Description | | ------------- | ------ | ---------------------- | | `containerId` | string | Media container ID | | `mediaId` | string | Published media ID | | `statusCode` | string | Final container status | ### Instagram Publish Story [#instagram-publish-story] Publish an image or video story for an Instagram professional account from a Studio file #### Input [#input-12] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ---------------------------------------------------------------------------------- | | `igUserId` | string | No | Instagram professional account user id (defaults to /me) | | `media` | file | Yes | JPEG image or MP4/MOV video uploaded to Studio or referenced from a previous block | #### Output [#output-12] | Parameter | Type | Description | | ------------- | ------ | ---------------------- | | `containerId` | string | Media container ID | | `mediaId` | string | Published media ID | | `statusCode` | string | Final container status | ### Instagram Publish Carousel [#instagram-publish-carousel] Publish a carousel of 2-10 images or videos from Studio files #### Input [#input-13] | Parameter | Type | Required | Description | | ---------- | ------- | -------- | ---------------------------------------------------------------------- | | `igUserId` | string | No | Instagram professional account user id (defaults to /me) | | `media` | file\[] | Yes | 2-10 media files uploaded to Studio or referenced from previous blocks | | `caption` | string | No | Carousel caption | #### Output [#output-13] | Parameter | Type | Description | | ------------- | ------ | ---------------------- | | `containerId` | string | Media container ID | | `mediaId` | string | Published media ID | | `statusCode` | string | Final container status | ### Instagram Get Container Status [#instagram-get-container-status] Check the publishing status of a media container #### Input [#input-14] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ------------------------------------------------------ | | `containerId` | string | Yes | Media container id returned from a create/publish step | #### Output [#output-14] | Parameter | Type | Description | | ------------- | ------ | ---------------------------------------------------- | | `containerId` | string | Container id | | `statusCode` | string | EXPIRED, ERROR, FINISHED, IN\_PROGRESS, or PUBLISHED | | `status` | string | Detailed status message when available | ### Instagram Get Publishing Limit [#instagram-get-publishing-limit] Check the content publishing rate limit usage for the account #### Input [#input-15] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | -------------------------------------------------------- | | `igUserId` | string | No | Instagram professional account user id (defaults to /me) | #### Output [#output-15] | Parameter | Type | Description | | ----------------- | ------ | ---------------------------------------------- | | `quotaUsage` | number | Number of publishes used in the current window | | `config` | json | Quota config (quotaTotal, quotaDuration) | | ↳ `quotaTotal` | number | Total publishes allowed in the quota window | | ↳ `quotaDuration` | number | Quota window duration reported by Instagram | ### Instagram List Comments [#instagram-list-comments] List comments on an Instagram media object #### Input [#input-16] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------ | | `mediaId` | string | Yes | Instagram media id | | `limit` | number | No | Max number of comments to return (default 25, max 100) | | `after` | string | No | Pagination cursor | #### Output [#output-16] | Parameter | Type | Description | | ------------ | ------ | ---------------------------- | | `comments` | array | Comments on the media object | | `nextCursor` | string | Pagination cursor | ### Instagram Reply to Comment [#instagram-reply-to-comment] Reply to a comment on Instagram media #### Input [#input-17] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ---------------------- | | `commentId` | string | Yes | Comment id to reply to | | `message` | string | Yes | Reply text | #### Output [#output-17] | Parameter | Type | Description | | --------- | ------ | ------------------------ | | `id` | string | Created reply comment id | ### Instagram Hide Comment [#instagram-hide-comment] Hide or unhide a comment on Instagram media #### Input [#input-18] | Parameter | Type | Required | Description | | ----------- | ------- | -------- | ----------------------------- | | `commentId` | string | Yes | Comment id | | `hide` | boolean | Yes | True to hide, false to unhide | #### Output [#output-18] | Parameter | Type | Description | | --------- | ------- | --------------------------------- | | `success` | boolean | Whether the hide/unhide succeeded | ### Instagram Delete Comment [#instagram-delete-comment] Delete a comment on Instagram media #### Input [#input-19] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | -------------------- | | `commentId` | string | Yes | Comment id to delete | #### Output [#output-19] | Parameter | Type | Description | | --------- | ------- | ---------------------------- | | `success` | boolean | Whether the delete succeeded | ### Instagram Set Comments Enabled [#instagram-set-comments-enabled] Enable or disable comments on an Instagram media object #### Input [#input-20] | Parameter | Type | Required | Description | | ---------------- | ------- | -------- | ----------------------------------------- | | `mediaId` | string | Yes | Instagram media id | | `commentEnabled` | boolean | Yes | True to enable comments, false to disable | #### Output [#output-20] | Parameter | Type | Description | | --------- | ------- | ---------------------------- | | `success` | boolean | Whether the update succeeded | ### Instagram Private Reply [#instagram-private-reply] Send the one allowed initial private reply within 7 days of a comment; follow-ups require a recipient response #### Input [#input-21] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | -------------------------------------------------------- | | `igUserId` | string | No | Instagram professional account user id (defaults to /me) | | `commentId` | string | Yes | Comment id to privately reply to | | `message` | string | Yes | Private reply text | #### Output [#output-21] | Parameter | Type | Description | | ------------- | ------ | ----------------------------- | | `messageId` | string | Sent message id | | `recipientId` | string | Instagram-scoped recipient id | ### Instagram List Conversations [#instagram-list-conversations] List Instagram Direct conversations for the professional account #### Input [#input-22] | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ----------------------------------------------------------- | | `igUserId` | string | No | Instagram professional account user id (defaults to /me) | | `limit` | number | No | Max number of conversations to return (default 25, max 100) | | `after` | string | No | Pagination cursor | #### Output [#output-22] | Parameter | Type | Description | | --------------- | ------ | --------------------------------------------- | | `conversations` | array | Instagram Direct conversations from this page | | `nextCursor` | string | Pagination cursor | ### Instagram Get Conversation Messages [#instagram-get-conversation-messages] List cursor-paginated message references; full details are available only for the 20 most recent messages #### Input [#input-23] | Parameter | Type | Required | Description | | ---------------- | ------ | -------- | ---------------------------------------------------------------- | | `conversationId` | string | Yes | Conversation id from list\_conversations | | `limit` | number | No | Max number of message references to return (default 25, max 100) | | `after` | string | No | Nested messages pagination cursor | #### Output [#output-23] | Parameter | Type | Description | | ---------------- | ------ | -------------------------------------------------------------------------------------- | | `conversationId` | string | Conversation id | | `messages` | array | Message references (id, createdTime). Use Get Message for sender, recipient, and text. | | `nextCursor` | string | Nested messages pagination cursor | ### Instagram Get Message [#instagram-get-message] Get a single Instagram Direct message by id (only recent messages are available) #### Input [#input-24] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ----------- | | `messageId` | string | Yes | Message id | #### Output [#output-24] | Parameter | Type | Description | | -------------- | ------ | -------------------------- | | `id` | string | Message id | | `createdTime` | string | Created timestamp | | `fromId` | string | Sender Instagram-scoped id | | `fromUsername` | string | Sender username | | `toId` | string | Recipient id | | `message` | string | Message text | ### Instagram Send Text Message [#instagram-send-text-message] Send a text Direct message. The recipient must have messaged the account first (24h window). #### Input [#input-25] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | -------------------------------------------------------- | | `igUserId` | string | No | Instagram professional account user id (defaults to /me) | | `recipientId` | string | Yes | Instagram-scoped user id (IGSID) of the recipient | | `message` | string | Yes | Message text (max 1000 bytes UTF-8) | #### Output [#output-25] | Parameter | Type | Description | | ------------- | ------ | --------------- | | `messageId` | string | Sent message id | | `recipientId` | string | Recipient id | ### Instagram Get Account Insights [#instagram-get-account-insights] Get insights metrics for the Instagram professional account #### Input [#input-26] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | -------------------------------------------------------------------------------------------------------------------- | | `igUserId` | string | No | Instagram professional account user id (defaults to /me) | | `metrics` | string | Yes | Comma-separated current metrics (e.g. reach,views,accounts\_engaged,likes,comments,saves,shares,total\_interactions) | | `period` | string | Yes | Use day for interaction metrics or lifetime for demographic metrics | | `since` | string | No | Unix timestamp or date for range start | | `until` | string | No | Unix timestamp or date for range end | | `metricType` | string | No | Optional metric\_type (e.g. time\_series, total\_value) | | `breakdown` | string | No | Optional breakdown dimension | | `timeframe` | string | No | Required for demographic metrics: this\_week or this\_month | #### Output [#output-26] | Parameter | Type | Description | | ---------- | ----- | ----------------------- | | `insights` | array | Account insight metrics | ### Instagram Get Media Insights [#instagram-get-media-insights] Get insights metrics for a specific Instagram media object #### Input [#input-27] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------------------------------------------------ | | `mediaId` | string | Yes | Instagram media id | | `metrics` | string | Yes | Comma-separated metrics (e.g. views,reach,likes,comments,saved,shares,total\_interactions) | #### Output [#output-27] | Parameter | Type | Description | | ---------- | ----- | --------------------- | | `insights` | array | Media insight metrics | ### Instagram Hide Comment (Facebook Page) [#instagram-hide-comment-facebook-page] Hide or unhide a comment on an Instagram post using the Facebook Page access token, and sync the hidden state to the responding database. #### Input [#input-28] | Parameter | Type | Required | Description | | ----------- | ------- | -------- | ---------------------------------------------------- | | `commentId` | string | Yes | ID of the Instagram comment to hide or unhide | | `isHidden` | boolean | No | Whether to hide (true) or unhide (false) the comment | | `pageId` | string | Yes | Facebook Page ID that owns the post | #### Output [#output-28] | Parameter | Type | Description | | --------- | ------- | --------------------------------- | | `hidden` | boolean | Whether the comment is now hidden | ### Instagram Reply to Comment (Facebook Page) [#instagram-reply-to-comment-facebook-page] Reply publicly to a comment on an Instagram post using the Facebook Page access token. #### Input [#input-29] | Parameter | Type | Required | Description | | ----------- | ------ | -------- | --------------------------------------- | | `commentId` | string | Yes | ID of the Instagram comment to reply to | | `message` | string | Yes | Reply message text | | `pageId` | string | Yes | Facebook Page ID that owns the post | #### Output [#output-29] | Parameter | Type | Description | | ----------- | ------ | ------------------------------------- | | `commentId` | string | ID of the newly created reply comment | ### Instagram Send DM (Facebook Page) [#instagram-send-dm-facebook-page] Send a direct message using the Facebook Page access token — either as a private reply to a commenter or straight to an Instagram user by their user ID (IGSID). #### Input [#input-30] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------- | | `recipientType` | string | No | Recipient type: 'comment' to privately reply to a comment, or 'user' to DM an Instagram user directly. Defaults to 'comment'. | | `commentId` | string | No | Instagram comment ID (required when recipient type is "comment") | | `recipientId` | string | No | Instagram-scoped user ID / IGSID to message directly (required when recipient type is "user") | | `message` | string | Yes | Message text to send | | `pageId` | string | Yes | Facebook Page ID linked to the Instagram Business account | #### Output [#output-30] | Parameter | Type | Description | | ----------- | ------ | ---------------------- | | `messageId` | string | ID of the sent message | ### Instagram Get Post (Facebook Page) [#instagram-get-post-facebook-page] Fetch a single Instagram post/media by ID using the Facebook Page access token. Returns media URL, caption, type, timestamps, engagement metrics, and carousel children when applicable. #### Input [#input-31] | Parameter | Type | Required | Description | | --------- | ------ | -------- | ------------------------------------------------ | | `postId` | string | Yes | ID of the Instagram media/post to fetch | | `pageId` | string | Yes | Facebook Page ID linked to the Instagram account | #### Output [#output-31] | Parameter | Type | Description | | ------------------ | ------ | ---------------------------------------------------------------------------- | | `mediaUrl` | string | URL of the post image or video | | `caption` | string | Post caption text | | `mediaProductType` | string | Media product type (FEED, REELS, STORY) | | `mediaType` | string | Media type (IMAGE, VIDEO, CAROUSEL\_ALBUM) | | `timestamp` | string | ISO 8601 timestamp when the post was published | | `permalink` | string | Permanent URL of the post | | `likeCount` | number | Number of likes on the post | | `commentsCount` | number | Number of comments on the post | | `children` | json | Array of carousel child media items (only present for CAROUSEL\_ALBUM posts) | | ↳ `id` | string | Child media ID | | ↳ `mediaUrl` | string | Child media URL | | ↳ `mediaType` | string | Child media type (IMAGE or VIDEO) | --- # Slack (/en/integrations/slack) {/* MANUAL-CONTENT-START:intro */} Use [Slack](https://www.slack.com/) to send and manage messages, work with canvases, and inspect channels and users. Custom bots also support Agent Sessions and streamed trigger responses. ## Stream Trigger Responses [#stream-trigger-responses] Custom-bot Slack triggers can stream workflow outputs directly back into the conversation that started a run. Enable **Stream response to Slack** on a Message, App Mention, or Assistant Thread Started trigger, then select the outputs to deliver. * A selected Agent output streams immediately as it is generated. If the Agent later calls a tool, any pre-tool commentary already streamed remains visible. * A selected non-streaming block output is sent when that block invocation completes. * Loop and parallel invocations each create their own Slack response. * The response status label defaults to `Running` and can be customized in the trigger's advanced settings. * Optional thinking and tool-call updates appear as Slack tasks in a timeline or plan. * Slack Agent Sessions remain in processing state for the run, return to active when it finishes, and the native Slack stop button cancels active workflow executions. Automatic trigger responses require a custom bot created by the Slack setup wizard. They are not available with the shared Studio Slack app. ## AI-Generated Content [#ai-generated-content] Studio workflows may use AI models to generate messages and responses sent to Slack. AI-generated content may be inaccurate or contain errors. Always review automated outputs, especially for critical communications. For help with the Slack integration, contact [help@seeyu.ai](mailto:help@seeyu.ai). {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate Slack messaging and administration into a workflow. Custom Slack bots can manage Agent Sessions, stream incremental Markdown or structured chunks, react to Agent Session events, and configure Agent View suggested prompts. Standard messaging and management operations support both the Studio app and custom bot credentials. ## Actions [#actions] ### Slack Message [#slack-message] Send messages to Slack channels or direct messages. Supports Slack mrkdwn formatting. #### Input [#input] | Parameter | Type | Required | Description | | ----------------- | ------- | -------- | ---------------------------------------------------------------------------------------------------- | | `authMethod` | string | No | Authentication method: oauth or bot\_token | | `destinationType` | string | No | Destination type: channel or dm | | `botToken` | string | No | Bot token for Custom Bot | | `channel` | string | No | Slack channel ID (e.g., C1234567890) | | `dmUserId` | string | No | Slack user ID for direct messages (e.g., U1234567890) | | `text` | string | Yes | Message text to send (supports Slack mrkdwn formatting) | | `threadTs` | string | No | Thread timestamp to reply to (creates thread reply) | | `blocks` | json | No | Block Kit layout blocks as a JSON array. When provided, text becomes the fallback notification text. | | `files` | file\[] | No | Files to attach to the message | #### Output [#output] | Parameter | Type | Description | | --------------------- | ------- | ------------------------------------------------------------- | | `message` | object | Complete message object with all properties returned by Slack | | ↳ `type` | string | Message type (usually "message") | | ↳ `ts` | string | Message timestamp (unique identifier) | | ↳ `text` | string | Message text content | | ↳ `user` | string | User ID who sent the message | | ↳ `bot_id` | string | Bot ID if sent by a bot | | ↳ `username` | string | Display username | | ↳ `channel` | string | Channel ID | | ↳ `team` | string | Team/workspace ID | | ↳ `thread_ts` | string | Parent message timestamp (for threaded replies) | | ↳ `parent_user_id` | string | User ID of thread parent message author | | ↳ `reply_count` | number | Total number of replies in thread | | ↳ `reply_users_count` | number | Number of unique users who replied | | ↳ `latest_reply` | string | Timestamp of most recent reply | | ↳ `subscribed` | boolean | Whether user is subscribed to thread | | ↳ `last_read` | string | Timestamp of last read message | | ↳ `unread_count` | number | Number of unread messages in thread | | ↳ `subtype` | string | Message subtype (bot\_message, file\_share, etc.) | | ↳ `is_starred` | boolean | Whether message is starred by user | | ↳ `pinned_to` | array | Channel IDs where message is pinned | | ↳ `permalink` | string | Permanent URL to the message | | ↳ `reactions` | array | Reactions on this message | | ↳ `name` | string | Emoji name (without colons) | | ↳ `count` | number | Number of times this reaction was added | | ↳ `users` | array | Array of user IDs who reacted | | ↳ `files` | array | Files attached to the message | | ↳ `id` | string | Unique file identifier | | ↳ `name` | string | File name | | ↳ `mimetype` | string | MIME type of the file | | ↳ `size` | number | File size in bytes | | ↳ `url_private` | string | Private download URL (requires auth) | | ↳ `permalink` | string | Permanent link to the file | | ↳ `mode` | string | File mode (hosted, external, etc.) | | ↳ `attachments` | array | Legacy attachments on the message | | ↳ `id` | number | Attachment ID | | ↳ `fallback` | string | Plain text summary | | ↳ `text` | string | Main attachment text | | ↳ `pretext` | string | Text shown before attachment | | ↳ `color` | string | Color bar hex code or preset | | ↳ `author_name` | string | Author display name | | ↳ `author_link` | string | Author link URL | | ↳ `author_icon` | string | Author icon URL | | ↳ `title` | string | Attachment title | | ↳ `title_link` | string | Title link URL | | ↳ `image_url` | string | Image URL | | ↳ `thumb_url` | string | Thumbnail URL | | ↳ `footer` | string | Footer text | | ↳ `footer_icon` | string | Footer icon URL | | ↳ `ts` | string | Timestamp shown in footer | | ↳ `blocks` | array | Block Kit blocks in the message | | ↳ `type` | string | Block type (section, divider, image, actions, etc.) | | ↳ `block_id` | string | Unique block identifier | | ↳ `edited` | object | Edit information if message was edited | | ↳ `user` | string | User ID who edited the message | | ↳ `ts` | string | Timestamp of the edit | | `ts` | string | Message timestamp | | `channel` | string | Channel ID where message was sent | | `fileCount` | number | Number of files uploaded (when files are attached) | | `files` | file\[] | Files attached to the message | ### Slack Ephemeral Message [#slack-ephemeral-message] Send an ephemeral message visible only to a specific user in a channel. Optionally reply in a thread. The message does not persist across sessions. #### Input [#input-1] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ---------------------------------------------------------------------------------------------------- | | `authMethod` | string | No | Authentication method: oauth or bot\_token | | `botToken` | string | No | Bot token for Custom Bot | | `channel` | string | Yes | Slack channel ID (e.g., C1234567890) | | `user` | string | Yes | User ID who will see the ephemeral message (e.g., U1234567890). Must be a member of the channel. | | `text` | string | Yes | Message text to send (supports Slack mrkdwn formatting) | | `threadTs` | string | No | Thread timestamp to reply in. When provided, the ephemeral message appears as a thread reply. | | `blocks` | json | No | Block Kit layout blocks as a JSON array. When provided, text becomes the fallback notification text. | #### Output [#output-1] | Parameter | Type | Description | | ----------- | ------ | -------------------------------------------------------------------- | | `messageTs` | string | Timestamp of the ephemeral message (cannot be used with chat.update) | | `channel` | string | Channel ID where the ephemeral message was sent | ### Slack Canvas Writer [#slack-canvas-writer] Create and share Slack canvases in channels. Canvases are collaborative documents within Slack. #### Input [#input-2] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------------------------------------ | | `authMethod` | string | No | Authentication method: oauth or bot\_token | | `botToken` | string | No | Bot token for Custom Bot | | `channel` | string | Yes | Slack channel ID (e.g., C1234567890) | | `title` | string | Yes | Title of the canvas | | `content` | string | Yes | Canvas content in markdown format | #### Output [#output-2] | Parameter | Type | Description | | ----------- | ------ | ------------------------ | | `canvas_id` | string | Unique canvas identifier | ### Slack Message Reader [#slack-message-reader] Read the latest messages from Slack channels. Retrieve conversation history with filtering options. #### Input [#input-3] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ---------------------------------------------------------- | | `authMethod` | string | No | Authentication method: oauth or bot\_token | | `destinationType` | string | No | Destination type: channel or dm | | `botToken` | string | No | Bot token for Custom Bot | | `channel` | string | No | Slack channel ID to read messages from (e.g., C1234567890) | | `dmUserId` | string | No | Slack user ID for DM conversation (e.g., U1234567890) | | `limit` | number | No | Number of messages to retrieve (default: 10, max: 15) | | `oldest` | string | No | Start of time range (timestamp) | | `latest` | string | No | End of time range (timestamp) | #### Output [#output-3] | Parameter | Type | Description | | --------------------- | ------- | --------------------------------------------------- | | `messages` | array | Array of message objects from the channel | | ↳ `type` | string | Message type (usually "message") | | ↳ `ts` | string | Message timestamp (unique identifier) | | ↳ `text` | string | Message text content | | ↳ `user` | string | User ID who sent the message | | ↳ `bot_id` | string | Bot ID if sent by a bot | | ↳ `username` | string | Display username | | ↳ `channel` | string | Channel ID | | ↳ `team` | string | Team/workspace ID | | ↳ `thread_ts` | string | Parent message timestamp (for threaded replies) | | ↳ `parent_user_id` | string | User ID of thread parent message author | | ↳ `reply_count` | number | Total number of replies in thread | | ↳ `reply_users_count` | number | Number of unique users who replied | | ↳ `latest_reply` | string | Timestamp of most recent reply | | ↳ `subscribed` | boolean | Whether user is subscribed to thread | | ↳ `last_read` | string | Timestamp of last read message | | ↳ `unread_count` | number | Number of unread messages in thread | | ↳ `subtype` | string | Message subtype (bot\_message, file\_share, etc.) | | ↳ `is_starred` | boolean | Whether message is starred by user | | ↳ `pinned_to` | array | Channel IDs where message is pinned | | ↳ `permalink` | string | Permanent URL to the message | | ↳ `reactions` | array | Reactions on this message | | ↳ `name` | string | Emoji name (without colons) | | ↳ `count` | number | Number of times this reaction was added | | ↳ `users` | array | Array of user IDs who reacted | | ↳ `files` | array | Files attached to the message | | ↳ `id` | string | Unique file identifier | | ↳ `name` | string | File name | | ↳ `mimetype` | string | MIME type of the file | | ↳ `size` | number | File size in bytes | | ↳ `url_private` | string | Private download URL (requires auth) | | ↳ `permalink` | string | Permanent link to the file | | ↳ `mode` | string | File mode (hosted, external, etc.) | | ↳ `attachments` | array | Legacy attachments on the message | | ↳ `id` | number | Attachment ID | | ↳ `fallback` | string | Plain text summary | | ↳ `text` | string | Main attachment text | | ↳ `pretext` | string | Text shown before attachment | | ↳ `color` | string | Color bar hex code or preset | | ↳ `author_name` | string | Author display name | | ↳ `author_link` | string | Author link URL | | ↳ `author_icon` | string | Author icon URL | | ↳ `title` | string | Attachment title | | ↳ `title_link` | string | Title link URL | | ↳ `image_url` | string | Image URL | | ↳ `thumb_url` | string | Thumbnail URL | | ↳ `footer` | string | Footer text | | ↳ `footer_icon` | string | Footer icon URL | | ↳ `ts` | string | Timestamp shown in footer | | ↳ `blocks` | array | Block Kit blocks in the message | | ↳ `type` | string | Block type (section, divider, image, actions, etc.) | | ↳ `block_id` | string | Unique block identifier | | ↳ `edited` | object | Edit information if message was edited | | ↳ `user` | string | User ID who edited the message | | ↳ `ts` | string | Timestamp of the edit | ### Slack Get Message [#slack-get-message] Retrieve a specific message by its timestamp. Useful for getting a thread parent message. #### Input [#input-4] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------------------------------------------------- | | `authMethod` | string | No | Authentication method: oauth or bot\_token | | `botToken` | string | No | Bot token for Custom Bot | | `channel` | string | Yes | Slack channel ID (e.g., C1234567890) | | `timestamp` | string | Yes | Message timestamp to retrieve (e.g., 1405894322.002768) | #### Output [#output-4] | Parameter | Type | Description | | --------------------- | ------- | --------------------------------------------------- | | `message` | object | The retrieved message object | | ↳ `type` | string | Message type (usually "message") | | ↳ `ts` | string | Message timestamp (unique identifier) | | ↳ `text` | string | Message text content | | ↳ `user` | string | User ID who sent the message | | ↳ `bot_id` | string | Bot ID if sent by a bot | | ↳ `username` | string | Display username | | ↳ `channel` | string | Channel ID | | ↳ `team` | string | Team/workspace ID | | ↳ `thread_ts` | string | Parent message timestamp (for threaded replies) | | ↳ `parent_user_id` | string | User ID of thread parent message author | | ↳ `reply_count` | number | Total number of replies in thread | | ↳ `reply_users_count` | number | Number of unique users who replied | | ↳ `latest_reply` | string | Timestamp of most recent reply | | ↳ `subscribed` | boolean | Whether user is subscribed to thread | | ↳ `last_read` | string | Timestamp of last read message | | ↳ `unread_count` | number | Number of unread messages in thread | | ↳ `subtype` | string | Message subtype (bot\_message, file\_share, etc.) | | ↳ `is_starred` | boolean | Whether message is starred by user | | ↳ `pinned_to` | array | Channel IDs where message is pinned | | ↳ `permalink` | string | Permanent URL to the message | | ↳ `reactions` | array | Reactions on this message | | ↳ `name` | string | Emoji name (without colons) | | ↳ `count` | number | Number of times this reaction was added | | ↳ `users` | array | Array of user IDs who reacted | | ↳ `files` | array | Files attached to the message | | ↳ `id` | string | Unique file identifier | | ↳ `name` | string | File name | | ↳ `mimetype` | string | MIME type of the file | | ↳ `size` | number | File size in bytes | | ↳ `url_private` | string | Private download URL (requires auth) | | ↳ `permalink` | string | Permanent link to the file | | ↳ `mode` | string | File mode (hosted, external, etc.) | | ↳ `attachments` | array | Legacy attachments on the message | | ↳ `id` | number | Attachment ID | | ↳ `fallback` | string | Plain text summary | | ↳ `text` | string | Main attachment text | | ↳ `pretext` | string | Text shown before attachment | | ↳ `color` | string | Color bar hex code or preset | | ↳ `author_name` | string | Author display name | | ↳ `author_link` | string | Author link URL | | ↳ `author_icon` | string | Author icon URL | | ↳ `title` | string | Attachment title | | ↳ `title_link` | string | Title link URL | | ↳ `image_url` | string | Image URL | | ↳ `thumb_url` | string | Thumbnail URL | | ↳ `footer` | string | Footer text | | ↳ `footer_icon` | string | Footer icon URL | | ↳ `ts` | string | Timestamp shown in footer | | ↳ `blocks` | array | Block Kit blocks in the message | | ↳ `type` | string | Block type (section, divider, image, actions, etc.) | | ↳ `block_id` | string | Unique block identifier | | ↳ `edited` | object | Edit information if message was edited | | ↳ `user` | string | User ID who edited the message | | ↳ `ts` | string | Timestamp of the edit | ### Slack Get Thread [#slack-get-thread] Retrieve an entire thread including the parent message and all replies. Useful for getting full conversation context. #### Input [#input-5] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------------------------------------------------------------- | | `authMethod` | string | No | Authentication method: oauth or bot\_token | | `botToken` | string | No | Bot token for Custom Bot | | `channel` | string | Yes | Slack channel ID (e.g., C1234567890) | | `threadTs` | string | Yes | Thread timestamp (thread\_ts) to retrieve (e.g., 1405894322.002768) | | `limit` | number | No | Maximum number of messages to return (default: 100, max: 200) | #### Output [#output-5] | Parameter | Type | Description | | --------------------- | ------- | -------------------------------------------------------------------- | | `parentMessage` | object | The thread parent message | | ↳ `type` | string | Message type (usually "message") | | ↳ `ts` | string | Message timestamp (unique identifier) | | ↳ `text` | string | Message text content | | ↳ `user` | string | User ID who sent the message | | ↳ `bot_id` | string | Bot ID if sent by a bot | | ↳ `username` | string | Display username | | ↳ `channel` | string | Channel ID | | ↳ `team` | string | Team/workspace ID | | ↳ `thread_ts` | string | Parent message timestamp (for threaded replies) | | ↳ `parent_user_id` | string | User ID of thread parent message author | | ↳ `reply_count` | number | Total number of replies in thread | | ↳ `reply_users_count` | number | Number of unique users who replied | | ↳ `latest_reply` | string | Timestamp of most recent reply | | ↳ `subscribed` | boolean | Whether user is subscribed to thread | | ↳ `last_read` | string | Timestamp of last read message | | ↳ `unread_count` | number | Number of unread messages in thread | | ↳ `subtype` | string | Message subtype (bot\_message, file\_share, etc.) | | ↳ `is_starred` | boolean | Whether message is starred by user | | ↳ `pinned_to` | array | Channel IDs where message is pinned | | ↳ `permalink` | string | Permanent URL to the message | | ↳ `reactions` | array | Reactions on this message | | ↳ `name` | string | Emoji name (without colons) | | ↳ `count` | number | Number of times this reaction was added | | ↳ `users` | array | Array of user IDs who reacted | | ↳ `files` | array | Files attached to the message | | ↳ `id` | string | Unique file identifier | | ↳ `name` | string | File name | | ↳ `mimetype` | string | MIME type of the file | | ↳ `size` | number | File size in bytes | | ↳ `url_private` | string | Private download URL (requires auth) | | ↳ `permalink` | string | Permanent link to the file | | ↳ `mode` | string | File mode (hosted, external, etc.) | | ↳ `attachments` | array | Legacy attachments on the message | | ↳ `id` | number | Attachment ID | | ↳ `fallback` | string | Plain text summary | | ↳ `text` | string | Main attachment text | | ↳ `pretext` | string | Text shown before attachment | | ↳ `color` | string | Color bar hex code or preset | | ↳ `author_name` | string | Author display name | | ↳ `author_link` | string | Author link URL | | ↳ `author_icon` | string | Author icon URL | | ↳ `title` | string | Attachment title | | ↳ `title_link` | string | Title link URL | | ↳ `image_url` | string | Image URL | | ↳ `thumb_url` | string | Thumbnail URL | | ↳ `footer` | string | Footer text | | ↳ `footer_icon` | string | Footer icon URL | | ↳ `ts` | string | Timestamp shown in footer | | ↳ `blocks` | array | Block Kit blocks in the message | | ↳ `type` | string | Block type (section, divider, image, actions, etc.) | | ↳ `block_id` | string | Unique block identifier | | ↳ `edited` | object | Edit information if message was edited | | ↳ `user` | string | User ID who edited the message | | ↳ `ts` | string | Timestamp of the edit | | `replies` | array | Array of reply messages in the thread (excluding the parent) | | ↳ `type` | string | Message type (usually "message") | | ↳ `ts` | string | Message timestamp (unique identifier) | | ↳ `text` | string | Message text content | | ↳ `user` | string | User ID who sent the message | | ↳ `bot_id` | string | Bot ID if sent by a bot | | ↳ `username` | string | Display username | | ↳ `channel` | string | Channel ID | | ↳ `team` | string | Team/workspace ID | | ↳ `thread_ts` | string | Parent message timestamp (for threaded replies) | | ↳ `parent_user_id` | string | User ID of thread parent message author | | ↳ `reply_count` | number | Total number of replies in thread | | ↳ `reply_users_count` | number | Number of unique users who replied | | ↳ `latest_reply` | string | Timestamp of most recent reply | | ↳ `subscribed` | boolean | Whether user is subscribed to thread | | ↳ `last_read` | string | Timestamp of last read message | | ↳ `unread_count` | number | Number of unread messages in thread | | ↳ `subtype` | string | Message subtype (bot\_message, file\_share, etc.) | | ↳ `is_starred` | boolean | Whether message is starred by user | | ↳ `pinned_to` | array | Channel IDs where message is pinned | | ↳ `permalink` | string | Permanent URL to the message | | ↳ `reactions` | array | Reactions on this message | | ↳ `name` | string | Emoji name (without colons) | | ↳ `count` | number | Number of times this reaction was added | | ↳ `users` | array | Array of user IDs who reacted | | ↳ `files` | array | Files attached to the message | | ↳ `id` | string | Unique file identifier | | ↳ `name` | string | File name | | ↳ `mimetype` | string | MIME type of the file | | ↳ `size` | number | File size in bytes | | ↳ `url_private` | string | Private download URL (requires auth) | | ↳ `permalink` | string | Permanent link to the file | | ↳ `mode` | string | File mode (hosted, external, etc.) | | ↳ `attachments` | array | Legacy attachments on the message | | ↳ `id` | number | Attachment ID | | ↳ `fallback` | string | Plain text summary | | ↳ `text` | string | Main attachment text | | ↳ `pretext` | string | Text shown before attachment | | ↳ `color` | string | Color bar hex code or preset | | ↳ `author_name` | string | Author display name | | ↳ `author_link` | string | Author link URL | | ↳ `author_icon` | string | Author icon URL | | ↳ `title` | string | Attachment title | | ↳ `title_link` | string | Title link URL | | ↳ `image_url` | string | Image URL | | ↳ `thumb_url` | string | Thumbnail URL | | ↳ `footer` | string | Footer text | | ↳ `footer_icon` | string | Footer icon URL | | ↳ `ts` | string | Timestamp shown in footer | | ↳ `blocks` | array | Block Kit blocks in the message | | ↳ `type` | string | Block type (section, divider, image, actions, etc.) | | ↳ `block_id` | string | Unique block identifier | | ↳ `edited` | object | Edit information if message was edited | | ↳ `user` | string | User ID who edited the message | | ↳ `ts` | string | Timestamp of the edit | | `messages` | array | All messages in the thread (parent + replies) in chronological order | | ↳ `type` | string | Message type (usually "message") | | ↳ `ts` | string | Message timestamp (unique identifier) | | ↳ `text` | string | Message text content | | ↳ `user` | string | User ID who sent the message | | ↳ `bot_id` | string | Bot ID if sent by a bot | | ↳ `username` | string | Display username | | ↳ `channel` | string | Channel ID | | ↳ `team` | string | Team/workspace ID | | ↳ `thread_ts` | string | Parent message timestamp (for threaded replies) | | ↳ `parent_user_id` | string | User ID of thread parent message author | | ↳ `reply_count` | number | Total number of replies in thread | | ↳ `reply_users_count` | number | Number of unique users who replied | | ↳ `latest_reply` | string | Timestamp of most recent reply | | ↳ `subscribed` | boolean | Whether user is subscribed to thread | | ↳ `last_read` | string | Timestamp of last read message | | ↳ `unread_count` | number | Number of unread messages in thread | | ↳ `subtype` | string | Message subtype (bot\_message, file\_share, etc.) | | ↳ `is_starred` | boolean | Whether message is starred by user | | ↳ `pinned_to` | array | Channel IDs where message is pinned | | ↳ `permalink` | string | Permanent URL to the message | | ↳ `reactions` | array | Reactions on this message | | ↳ `name` | string | Emoji name (without colons) | | ↳ `count` | number | Number of times this reaction was added | | ↳ `users` | array | Array of user IDs who reacted | | ↳ `files` | array | Files attached to the message | | ↳ `id` | string | Unique file identifier | | ↳ `name` | string | File name | | ↳ `mimetype` | string | MIME type of the file | | ↳ `size` | number | File size in bytes | | ↳ `url_private` | string | Private download URL (requires auth) | | ↳ `permalink` | string | Permanent link to the file | | ↳ `mode` | string | File mode (hosted, external, etc.) | | ↳ `attachments` | array | Legacy attachments on the message | | ↳ `id` | number | Attachment ID | | ↳ `fallback` | string | Plain text summary | | ↳ `text` | string | Main attachment text | | ↳ `pretext` | string | Text shown before attachment | | ↳ `color` | string | Color bar hex code or preset | | ↳ `author_name` | string | Author display name | | ↳ `author_link` | string | Author link URL | | ↳ `author_icon` | string | Author icon URL | | ↳ `title` | string | Attachment title | | ↳ `title_link` | string | Title link URL | | ↳ `image_url` | string | Image URL | | ↳ `thumb_url` | string | Thumbnail URL | | ↳ `footer` | string | Footer text | | ↳ `footer_icon` | string | Footer icon URL | | ↳ `ts` | string | Timestamp shown in footer | | ↳ `blocks` | array | Block Kit blocks in the message | | ↳ `type` | string | Block type (section, divider, image, actions, etc.) | | ↳ `block_id` | string | Unique block identifier | | ↳ `edited` | object | Edit information if message was edited | | ↳ `user` | string | User ID who edited the message | | ↳ `ts` | string | Timestamp of the edit | | `replyCount` | number | Number of replies returned in this response | | `hasMore` | boolean | Whether there are more messages in the thread (pagination needed) | ### Slack Get Thread Replies [#slack-get-thread-replies] Fetch every message in a Slack thread, automatically following pagination across all pages. Returns the parent message and the full set of replies. #### Input [#input-6] | Parameter | Type | Required | Description | | ------------ | ------- | -------- | ----------------------------------------------------------------------------- | | `authMethod` | string | No | Authentication method: oauth or bot\_token | | `botToken` | string | No | Bot token for Custom Bot | | `channel` | string | Yes | Slack channel ID containing the thread (e.g., C1234567890) | | `threadTs` | string | Yes | Thread timestamp (thread\_ts) of the parent message (e.g., 1405894322.002768) | | `oldest` | string | No | Only include replies after this Unix timestamp (seconds) | | `latest` | string | No | Only include replies before this Unix timestamp (seconds) | | `inclusive` | boolean | No | Include messages with timestamps matching oldest or latest (default: false) | | `limit` | number | No | Messages to request per page (default: 200, max: 999) | | `cursor` | string | No | Pagination cursor from a previous response.nextCursor to resume from | | `maxPages` | number | No | Maximum number of pages to fetch before stopping (default: 10) | #### Output [#output-6] | Parameter | Type | Description | | --------------------- | ------- | ---------------------------------------------------------------- | | `parentMessage` | object | The thread parent message, or null if the thread is empty | | ↳ `type` | string | Message type (usually "message") | | ↳ `ts` | string | Message timestamp (unique identifier) | | ↳ `text` | string | Message text content | | ↳ `user` | string | User ID who sent the message | | ↳ `bot_id` | string | Bot ID if sent by a bot | | ↳ `username` | string | Display username | | ↳ `channel` | string | Channel ID | | ↳ `team` | string | Team/workspace ID | | ↳ `thread_ts` | string | Parent message timestamp (for threaded replies) | | ↳ `parent_user_id` | string | User ID of thread parent message author | | ↳ `reply_count` | number | Total number of replies in thread | | ↳ `reply_users_count` | number | Number of unique users who replied | | ↳ `latest_reply` | string | Timestamp of most recent reply | | ↳ `subscribed` | boolean | Whether user is subscribed to thread | | ↳ `last_read` | string | Timestamp of last read message | | ↳ `unread_count` | number | Number of unread messages in thread | | ↳ `subtype` | string | Message subtype (bot\_message, file\_share, etc.) | | ↳ `is_starred` | boolean | Whether message is starred by user | | ↳ `pinned_to` | array | Channel IDs where message is pinned | | ↳ `permalink` | string | Permanent URL to the message | | ↳ `reactions` | array | Reactions on this message | | ↳ `name` | string | Emoji name (without colons) | | ↳ `count` | number | Number of times this reaction was added | | ↳ `users` | array | Array of user IDs who reacted | | ↳ `files` | array | Files attached to the message | | ↳ `id` | string | Unique file identifier | | ↳ `name` | string | File name | | ↳ `mimetype` | string | MIME type of the file | | ↳ `size` | number | File size in bytes | | ↳ `url_private` | string | Private download URL (requires auth) | | ↳ `permalink` | string | Permanent link to the file | | ↳ `mode` | string | File mode (hosted, external, etc.) | | ↳ `attachments` | array | Legacy attachments on the message | | ↳ `id` | number | Attachment ID | | ↳ `fallback` | string | Plain text summary | | ↳ `text` | string | Main attachment text | | ↳ `pretext` | string | Text shown before attachment | | ↳ `color` | string | Color bar hex code or preset | | ↳ `author_name` | string | Author display name | | ↳ `author_link` | string | Author link URL | | ↳ `author_icon` | string | Author icon URL | | ↳ `title` | string | Attachment title | | ↳ `title_link` | string | Title link URL | | ↳ `image_url` | string | Image URL | | ↳ `thumb_url` | string | Thumbnail URL | | ↳ `footer` | string | Footer text | | ↳ `footer_icon` | string | Footer icon URL | | ↳ `ts` | string | Timestamp shown in footer | | ↳ `blocks` | array | Block Kit blocks in the message | | ↳ `type` | string | Block type (section, divider, image, actions, etc.) | | ↳ `block_id` | string | Unique block identifier | | ↳ `edited` | object | Edit information if message was edited | | ↳ `user` | string | User ID who edited the message | | ↳ `ts` | string | Timestamp of the edit | | `replies` | array | All reply messages in the thread (excluding the parent) | | ↳ `type` | string | Message type (usually "message") | | ↳ `ts` | string | Message timestamp (unique identifier) | | ↳ `text` | string | Message text content | | ↳ `user` | string | User ID who sent the message | | ↳ `bot_id` | string | Bot ID if sent by a bot | | ↳ `username` | string | Display username | | ↳ `channel` | string | Channel ID | | ↳ `team` | string | Team/workspace ID | | ↳ `thread_ts` | string | Parent message timestamp (for threaded replies) | | ↳ `parent_user_id` | string | User ID of thread parent message author | | ↳ `reply_count` | number | Total number of replies in thread | | ↳ `reply_users_count` | number | Number of unique users who replied | | ↳ `latest_reply` | string | Timestamp of most recent reply | | ↳ `subscribed` | boolean | Whether user is subscribed to thread | | ↳ `last_read` | string | Timestamp of last read message | | ↳ `unread_count` | number | Number of unread messages in thread | | ↳ `subtype` | string | Message subtype (bot\_message, file\_share, etc.) | | ↳ `is_starred` | boolean | Whether message is starred by user | | ↳ `pinned_to` | array | Channel IDs where message is pinned | | ↳ `permalink` | string | Permanent URL to the message | | ↳ `reactions` | array | Reactions on this message | | ↳ `name` | string | Emoji name (without colons) | | ↳ `count` | number | Number of times this reaction was added | | ↳ `users` | array | Array of user IDs who reacted | | ↳ `files` | array | Files attached to the message | | ↳ `id` | string | Unique file identifier | | ↳ `name` | string | File name | | ↳ `mimetype` | string | MIME type of the file | | ↳ `size` | number | File size in bytes | | ↳ `url_private` | string | Private download URL (requires auth) | | ↳ `permalink` | string | Permanent link to the file | | ↳ `mode` | string | File mode (hosted, external, etc.) | | ↳ `attachments` | array | Legacy attachments on the message | | ↳ `id` | number | Attachment ID | | ↳ `fallback` | string | Plain text summary | | ↳ `text` | string | Main attachment text | | ↳ `pretext` | string | Text shown before attachment | | ↳ `color` | string | Color bar hex code or preset | | ↳ `author_name` | string | Author display name | | ↳ `author_link` | string | Author link URL | | ↳ `author_icon` | string | Author icon URL | | ↳ `title` | string | Attachment title | | ↳ `title_link` | string | Title link URL | | ↳ `image_url` | string | Image URL | | ↳ `thumb_url` | string | Thumbnail URL | | ↳ `footer` | string | Footer text | | ↳ `footer_icon` | string | Footer icon URL | | ↳ `ts` | string | Timestamp shown in footer | | ↳ `blocks` | array | Block Kit blocks in the message | | ↳ `type` | string | Block type (section, divider, image, actions, etc.) | | ↳ `block_id` | string | Unique block identifier | | ↳ `edited` | object | Edit information if message was edited | | ↳ `user` | string | User ID who edited the message | | ↳ `ts` | string | Timestamp of the edit | | `messages` | array | All messages (parent + replies) in chronological order | | ↳ `type` | string | Message type (usually "message") | | ↳ `ts` | string | Message timestamp (unique identifier) | | ↳ `text` | string | Message text content | | ↳ `user` | string | User ID who sent the message | | ↳ `bot_id` | string | Bot ID if sent by a bot | | ↳ `username` | string | Display username | | ↳ `channel` | string | Channel ID | | ↳ `team` | string | Team/workspace ID | | ↳ `thread_ts` | string | Parent message timestamp (for threaded replies) | | ↳ `parent_user_id` | string | User ID of thread parent message author | | ↳ `reply_count` | number | Total number of replies in thread | | ↳ `reply_users_count` | number | Number of unique users who replied | | ↳ `latest_reply` | string | Timestamp of most recent reply | | ↳ `subscribed` | boolean | Whether user is subscribed to thread | | ↳ `last_read` | string | Timestamp of last read message | | ↳ `unread_count` | number | Number of unread messages in thread | | ↳ `subtype` | string | Message subtype (bot\_message, file\_share, etc.) | | ↳ `is_starred` | boolean | Whether message is starred by user | | ↳ `pinned_to` | array | Channel IDs where message is pinned | | ↳ `permalink` | string | Permanent URL to the message | | ↳ `reactions` | array | Reactions on this message | | ↳ `name` | string | Emoji name (without colons) | | ↳ `count` | number | Number of times this reaction was added | | ↳ `users` | array | Array of user IDs who reacted | | ↳ `files` | array | Files attached to the message | | ↳ `id` | string | Unique file identifier | | ↳ `name` | string | File name | | ↳ `mimetype` | string | MIME type of the file | | ↳ `size` | number | File size in bytes | | ↳ `url_private` | string | Private download URL (requires auth) | | ↳ `permalink` | string | Permanent link to the file | | ↳ `mode` | string | File mode (hosted, external, etc.) | | ↳ `attachments` | array | Legacy attachments on the message | | ↳ `id` | number | Attachment ID | | ↳ `fallback` | string | Plain text summary | | ↳ `text` | string | Main attachment text | | ↳ `pretext` | string | Text shown before attachment | | ↳ `color` | string | Color bar hex code or preset | | ↳ `author_name` | string | Author display name | | ↳ `author_link` | string | Author link URL | | ↳ `author_icon` | string | Author icon URL | | ↳ `title` | string | Attachment title | | ↳ `title_link` | string | Title link URL | | ↳ `image_url` | string | Image URL | | ↳ `thumb_url` | string | Thumbnail URL | | ↳ `footer` | string | Footer text | | ↳ `footer_icon` | string | Footer icon URL | | ↳ `ts` | string | Timestamp shown in footer | | ↳ `blocks` | array | Block Kit blocks in the message | | ↳ `type` | string | Block type (section, divider, image, actions, etc.) | | ↳ `block_id` | string | Unique block identifier | | ↳ `edited` | object | Edit information if message was edited | | ↳ `user` | string | User ID who edited the message | | ↳ `ts` | string | Timestamp of the edit | | `replyCount` | number | Number of replies returned (excluding the parent) | | `hasMore` | boolean | Whether more pages remain beyond the fetched window | | `nextCursor` | string | Cursor to fetch the next page; null when there are no more pages | | `pages` | number | Number of pages fetched in this invocation | ### Slack Get Channel History [#slack-get-channel-history] Fetch message history from a Slack channel, automatically following pagination. Optionally filter by a time range to scrape messages since a given timestamp. #### Input [#input-7] | Parameter | Type | Required | Description | | ------------ | ------- | -------- | --------------------------------------------------------------------------- | | `authMethod` | string | No | Authentication method: oauth or bot\_token | | `botToken` | string | No | Bot token for Custom Bot | | `channel` | string | Yes | Slack channel ID (e.g., C1234567890) | | `oldest` | string | No | Only include messages after this Unix timestamp (seconds, e.g., 1700000000) | | `latest` | string | No | Only include messages before this Unix timestamp (seconds) | | `inclusive` | boolean | No | Include messages with timestamps matching oldest or latest (default: false) | | `limit` | number | No | Messages to request per page (default: 200, max: 999) | | `cursor` | string | No | Pagination cursor from a previous response.nextCursor to resume from | | `maxPages` | number | No | Maximum number of pages to fetch before stopping (default: 10) | #### Output [#output-7] | Parameter | Type | Description | | --------------------- | ------- | ---------------------------------------------------------------- | | `messages` | array | Channel messages in reverse-chronological order (newest first) | | ↳ `type` | string | Message type (usually "message") | | ↳ `ts` | string | Message timestamp (unique identifier) | | ↳ `text` | string | Message text content | | ↳ `user` | string | User ID who sent the message | | ↳ `bot_id` | string | Bot ID if sent by a bot | | ↳ `username` | string | Display username | | ↳ `channel` | string | Channel ID | | ↳ `team` | string | Team/workspace ID | | ↳ `thread_ts` | string | Parent message timestamp (for threaded replies) | | ↳ `parent_user_id` | string | User ID of thread parent message author | | ↳ `reply_count` | number | Total number of replies in thread | | ↳ `reply_users_count` | number | Number of unique users who replied | | ↳ `latest_reply` | string | Timestamp of most recent reply | | ↳ `subscribed` | boolean | Whether user is subscribed to thread | | ↳ `last_read` | string | Timestamp of last read message | | ↳ `unread_count` | number | Number of unread messages in thread | | ↳ `subtype` | string | Message subtype (bot\_message, file\_share, etc.) | | ↳ `is_starred` | boolean | Whether message is starred by user | | ↳ `pinned_to` | array | Channel IDs where message is pinned | | ↳ `permalink` | string | Permanent URL to the message | | ↳ `reactions` | array | Reactions on this message | | ↳ `name` | string | Emoji name (without colons) | | ↳ `count` | number | Number of times this reaction was added | | ↳ `users` | array | Array of user IDs who reacted | | ↳ `files` | array | Files attached to the message | | ↳ `id` | string | Unique file identifier | | ↳ `name` | string | File name | | ↳ `mimetype` | string | MIME type of the file | | ↳ `size` | number | File size in bytes | | ↳ `url_private` | string | Private download URL (requires auth) | | ↳ `permalink` | string | Permanent link to the file | | ↳ `mode` | string | File mode (hosted, external, etc.) | | ↳ `attachments` | array | Legacy attachments on the message | | ↳ `id` | number | Attachment ID | | ↳ `fallback` | string | Plain text summary | | ↳ `text` | string | Main attachment text | | ↳ `pretext` | string | Text shown before attachment | | ↳ `color` | string | Color bar hex code or preset | | ↳ `author_name` | string | Author display name | | ↳ `author_link` | string | Author link URL | | ↳ `author_icon` | string | Author icon URL | | ↳ `title` | string | Attachment title | | ↳ `title_link` | string | Title link URL | | ↳ `image_url` | string | Image URL | | ↳ `thumb_url` | string | Thumbnail URL | | ↳ `footer` | string | Footer text | | ↳ `footer_icon` | string | Footer icon URL | | ↳ `ts` | string | Timestamp shown in footer | | ↳ `blocks` | array | Block Kit blocks in the message | | ↳ `type` | string | Block type (section, divider, image, actions, etc.) | | ↳ `block_id` | string | Unique block identifier | | ↳ `edited` | object | Edit information if message was edited | | ↳ `user` | string | User ID who edited the message | | ↳ `ts` | string | Timestamp of the edit | | `count` | number | Total number of messages returned across all fetched pages | | `hasMore` | boolean | Whether more pages remain beyond the fetched window | | `nextCursor` | string | Cursor to fetch the next page; null when there are no more pages | | `pages` | number | Number of pages fetched in this invocation | ### Slack Get Permalink [#slack-get-permalink] Get a stable permalink URL to a specific Slack message. #### Input [#input-8] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ----------------------------------------------------- | | `authMethod` | string | No | Authentication method: oauth or bot\_token | | `botToken` | string | No | Bot token for Custom Bot | | `channel` | string | Yes | Channel ID containing the message (e.g., C1234567890) | | `messageTs` | string | Yes | The message's ts value (e.g., 1405894322.002768) | #### Output [#output-8] | Parameter | Type | Description | | ----------- | ------- | ------------------------------------------------ | | `ok` | boolean | Whether the permalink was retrieved successfully | | `channel` | string | Channel ID containing the message | | `permalink` | string | The permalink URL to the message | ### Slack Set Assistant Status [#slack-set-assistant-status] Set or clear the assistant thread status indicator (the loading shimmer) on a Slack AI app thread. Pass an empty status to clear it. #### Input [#input-9] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ------------------------------------------------------------------------------------------------ | | `authMethod` | string | No | Authentication method: oauth or bot\_token | | `botToken` | string | No | Bot token for Custom Bot | | `channel` | string | Yes | Channel ID containing the assistant thread (e.g., C1234567890 or D1234567890) | | `threadTs` | string | Yes | Thread timestamp (thread\_ts) of the assistant thread (e.g., 1405894322.002768) | | `status` | string | No | Status text to display, e.g. 'Working on it…'. Omit or pass an empty string to clear the status. | | `loadingMessages` | json | No | Optional list of messages to rotate through as an animated loading indicator (max 10). | #### Output [#output-9] | Parameter | Type | Description | | ---------- | ------- | --------------------------------------- | | `ok` | boolean | Whether the status was set successfully | | `channel` | string | Channel ID the status was set on | | `threadTs` | string | Thread timestamp the status was set on | ### Slack Set Assistant Title [#slack-set-assistant-title] Set the title of a Slack assistant thread (shown in the AI app thread header). #### Input [#input-10] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------------------------------------------------------------------------- | | `authMethod` | string | No | Authentication method: oauth or bot\_token | | `botToken` | string | No | Bot token for Custom Bot | | `channel` | string | Yes | Channel ID containing the assistant thread (e.g., C1234567890 or D1234567890) | | `threadTs` | string | Yes | Thread timestamp (thread\_ts) of the assistant thread (e.g., 1405894322.002768) | | `title` | string | Yes | The title to display for the assistant thread | #### Output [#output-10] | Parameter | Type | Description | | ---------- | ------- | -------------------------------------- | | `ok` | boolean | Whether the title was set successfully | | `channel` | string | Channel ID the title was set on | | `threadTs` | string | Thread timestamp the title was set on | ### Slack Set Suggested Prompts [#slack-set-suggested-prompts] Set the clickable suggested prompts shown in a Slack assistant thread (the prompt chips in an AI app). #### Input [#input-11] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------- | | `authMethod` | string | No | Authentication method: oauth or bot\_token | | `botToken` | string | No | Bot token for Custom Bot | | `channel` | string | Yes | Channel ID containing the assistant thread (e.g., C1234567890 or D1234567890) | | `threadTs` | string | Yes | Thread timestamp (thread\_ts) of the assistant thread (e.g., 1405894322.002768) | | `prompts` | json | Yes | Array of prompts, each with a "title" (shown on the chip) and a "message" (sent when clicked). Max 4. | | `promptsTitle` | string | No | Optional heading for the prompt list, e.g. 'Suggested Prompts' | #### Output [#output-11] | Parameter | Type | Description | | ---------- | ------- | --------------------------------------------------- | | `ok` | boolean | Whether the suggested prompts were set successfully | | `channel` | string | Channel ID the prompts were set on | | `threadTs` | string | Thread timestamp the prompts were set on | ### Slack Set Agent Suggested Prompts [#slack-set-agent-suggested-prompts] Set suggested prompts in Slack Agent View, optionally scoped to a specific thread. #### Input [#input-12] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ---------------------------------------------------------- | | `authMethod` | string | No | Slack authentication method | | `botToken` | string | No | Custom Slack bot token | | `channel` | string | Yes | Agent direct-message channel ID | | `threadTs` | string | No | Optional thread timestamp for legacy thread-scoped prompts | | `prompts` | json | Yes | One to four prompt objects with title and message fields | | `promptsTitle` | string | No | Optional heading displayed above the prompt chips | #### Output [#output-12] | Parameter | Type | Description | | --------- | ------- | ------------------------------------------- | | `ok` | boolean | Whether Slack updated the suggested prompts | ### Slack Set Agent Session Status [#slack-set-agent-session-status] Create or update the state of a Slack agent session associated with a thread. #### Input [#input-13] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ---------------------------------------------------------------- | | `authMethod` | string | No | Slack authentication method | | `botToken` | string | No | Custom Slack bot token | | `channel` | string | Yes | Channel ID containing the agent session thread | | `threadTs` | string | Yes | Timestamp of the thread associated with the agent session | | `status` | string | Yes | Agent session state: active, processing, suspended, or closed | | `title` | string | No | Title used when creating the agent session, up to 200 characters | | `initiatorUserId` | string | No | Slack user ID that initiated the session | | `iconEmoji` | string | No | Emoji used to customize the agent identity | | `iconUrl` | string | No | Image URL used to customize the agent identity | | `username` | string | No | Display name used to customize the agent identity | #### Output [#output-13] | Parameter | Type | Description | | ------------- | ------- | ------------------------------------------------------------------ | | `ok` | boolean | Whether Slack updated the agent session | | `status` | string | Requested agent session status | | `agentStatus` | string | Agent status recorded by Slack | | `title` | string | Current agent session title, or null when the session has no title | ### Slack Rename Agent Session [#slack-rename-agent-session] Rename the Slack agent session associated with a thread. #### Input [#input-14] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | --------------------------------------------------------- | | `authMethod` | string | No | Slack authentication method | | `botToken` | string | No | Custom Slack bot token | | `channel` | string | Yes | Channel ID containing the agent session thread | | `threadTs` | string | Yes | Timestamp of the thread associated with the agent session | | `title` | string | Yes | New agent session title, from 1 to 200 characters | #### Output [#output-14] | Parameter | Type | Description | | --------- | ------- | --------------------------------------- | | `ok` | boolean | Whether Slack renamed the agent session | | `title` | string | Updated agent session title | ### Slack List Channels [#slack-list-channels] List one page of accessible public and private Slack channels. Pass the returned nextCursor as cursor to fetch the next page. #### Input [#input-15] | Parameter | Type | Required | Description | | ----------------- | ------- | -------- | ------------------------------------------------------------------------- | | `authMethod` | string | No | Authentication method: oauth or bot\_token | | `botToken` | string | No | Bot token for Custom Bot | | `includePrivate` | boolean | No | Include private channels the connected account can access (default: true) | | `excludeArchived` | boolean | No | Exclude archived channels (default: true) | | `limit` | number | No | Conversations to request per Slack page (default: 100, max: 200) | | `cursor` | string | No | Pagination cursor from a previous response.nextCursor to resume from | #### Output [#output-15] | Parameter | Type | Description | | ------------------- | ------- | -------------------------------------------------------------------- | | `channels` | array | One page of accessible public and private channels | | ↳ `id` | string | Conversation ID (for example, C123, D123, or G123) | | ↳ `name` | string | Channel or group-DM name; omitted for one-to-one direct messages | | ↳ `is_channel` | boolean | Whether this is a channel | | ↳ `is_private` | boolean | Whether the conversation is private | | ↳ `is_archived` | boolean | Whether the conversation is archived | | ↳ `is_general` | boolean | Whether this is the general channel | | ↳ `is_member` | boolean | Whether the credential owner is a member | | ↳ `is_shared` | boolean | Whether channel is shared across workspaces | | ↳ `is_ext_shared` | boolean | Whether channel is externally shared | | ↳ `is_org_shared` | boolean | Whether channel is org-wide shared | | ↳ `num_members` | number | Number of members in the channel | | ↳ `topic` | string | Conversation topic | | ↳ `purpose` | string | Conversation purpose | | ↳ `created` | number | Unix timestamp when channel was created | | ↳ `creator` | string | User ID of channel creator | | ↳ `updated` | number | Unix timestamp of last update | | ↳ `is_group` | boolean | Whether this is a legacy private channel or group direct message | | ↳ `is_im` | boolean | Whether this is a one-to-one direct message | | ↳ `is_mpim` | boolean | Whether this is a group direct message | | ↳ `user` | string | Other participant user ID for a one-to-one direct message | | ↳ `is_user_deleted` | boolean | Whether the other participant in a direct message is deactivated | | ↳ `is_open` | boolean | Whether a direct or group-direct-message conversation is open | | ↳ `priority` | number | Slack sidebar sort priority | | `ids` | array | Conversation IDs for every returned channel | | `names` | array | Names of returned channels | | `count` | number | Number of conversations returned in this page | | `hasMore` | boolean | Whether a next cursor is available to fetch more Slack conversations | | `nextCursor` | string | Cursor to fetch the next page; null when there are no more pages | ### Slack List Channel Members [#slack-list-channel-members] List all members (user IDs) in a Slack channel. Use with Get User Info to resolve IDs to names. #### Input [#input-16] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------------------------------------------------------ | | `authMethod` | string | No | Authentication method: oauth or bot\_token | | `botToken` | string | No | Bot token for Custom Bot | | `channel` | string | Yes | Channel ID to list members from | | `limit` | number | No | Maximum number of members to return (default: 100, max: 200) | | `cursor` | string | No | Pagination cursor from a previous response.next\_cursor | #### Output [#output-16] | Parameter | Type | Description | | ------------ | ------ | -------------------------------------------------------------------- | | `members` | array | Array of user IDs who are members of the channel (e.g., U1234567890) | | `count` | number | Total number of members returned | | `nextCursor` | string | Cursor for the next page; null if no more pages | ### Slack List Users [#slack-list-users] List all users in a Slack workspace. Returns user profiles with names and avatars. #### Input [#input-17] | Parameter | Type | Required | Description | | ---------------- | ------- | -------- | ---------------------------------------------------------- | | `authMethod` | string | No | Authentication method: oauth or bot\_token | | `botToken` | string | No | Bot token for Custom Bot | | `includeDeleted` | boolean | No | Include deactivated/deleted users (default: false) | | `limit` | number | No | Maximum number of users to return (default: 100, max: 200) | | `cursor` | string | No | Pagination cursor from a previous response.next\_cursor | #### Output [#output-17] | Parameter | Type | Description | | ---------------- | ------- | ----------------------------------------------- | | `users` | array | Array of user objects from the workspace | | ↳ `id` | string | User ID (e.g., U1234567890) | | ↳ `name` | string | Username (handle) | | ↳ `real_name` | string | Full real name | | ↳ `display_name` | string | Display name shown in Slack | | ↳ `email` | string | Email address (requires users:read.email scope) | | ↳ `is_bot` | boolean | Whether the user is a bot | | ↳ `is_admin` | boolean | Whether the user is a workspace admin | | ↳ `is_owner` | boolean | Whether the user is the workspace owner | | ↳ `deleted` | boolean | Whether the user is deactivated | | ↳ `timezone` | string | User timezone identifier | | ↳ `avatar` | string | URL to user avatar image | | ↳ `status_text` | string | Custom status text | | ↳ `status_emoji` | string | Custom status emoji | | `ids` | array | Array of user IDs for easy access | | `names` | array | Array of usernames for easy access | | `count` | number | Total number of users returned | | `nextCursor` | string | Cursor for the next page; null if no more pages | ### Slack Get User Info [#slack-get-user-info] Get detailed information about a specific Slack user by their user ID. #### Input [#input-18] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------------------------------------ | | `authMethod` | string | No | Authentication method: oauth or bot\_token | | `botToken` | string | No | Bot token for Custom Bot | | `userId` | string | Yes | User ID to look up (e.g., U1234567890) | #### Output [#output-18] | Parameter | Type | Description | | ----------------------- | ------- | ------------------------------------------------ | | `user` | object | Detailed user information | | ↳ `id` | string | User ID (e.g., U1234567890) | | ↳ `team_id` | string | Workspace/team ID | | ↳ `name` | string | Username (handle) | | ↳ `real_name` | string | Full real name | | ↳ `display_name` | string | Display name shown in Slack | | ↳ `first_name` | string | First name | | ↳ `last_name` | string | Last name | | ↳ `title` | string | Job title | | ↳ `phone` | string | Phone number | | ↳ `skype` | string | Skype handle | | ↳ `email` | string | Email address (requires users:read.email scope) | | ↳ `is_bot` | boolean | Whether the user is a bot | | ↳ `is_admin` | boolean | Whether the user is a workspace admin | | ↳ `is_owner` | boolean | Whether the user is the workspace owner | | ↳ `is_primary_owner` | boolean | Whether the user is the primary owner | | ↳ `is_restricted` | boolean | Whether the user is a guest (restricted) | | ↳ `is_ultra_restricted` | boolean | Whether the user is a single-channel guest | | ↳ `is_app_user` | boolean | Whether user is an app user | | ↳ `deleted` | boolean | Whether the user is deactivated | | ↳ `color` | string | User color for display | | ↳ `timezone` | string | Timezone identifier (e.g., America/Los\_Angeles) | | ↳ `timezone_label` | string | Human-readable timezone label | | ↳ `timezone_offset` | number | Timezone offset in seconds from UTC | | ↳ `avatar` | string | URL to user avatar image | | ↳ `avatar_24` | string | URL to 24px avatar | | ↳ `avatar_48` | string | URL to 48px avatar | | ↳ `avatar_72` | string | URL to 72px avatar | | ↳ `avatar_192` | string | URL to 192px avatar | | ↳ `avatar_512` | string | URL to 512px avatar | | ↳ `status_text` | string | Custom status text | | ↳ `status_emoji` | string | Custom status emoji | | ↳ `status_expiration` | number | Unix timestamp when status expires | | ↳ `updated` | number | Unix timestamp of last profile update | | ↳ `has_2fa` | boolean | Whether two-factor auth is enabled | ### Download File from Slack [#download-file-from-slack] Download a file from Slack #### Input [#input-19] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------------------------------------ | | `authMethod` | string | No | Authentication method: oauth or bot\_token | | `botToken` | string | No | Bot token for Custom Bot | | `fileId` | string | Yes | The ID of the file to download | | `fileName` | string | No | Optional filename override | #### Output [#output-19] | Parameter | Type | Description | | --------- | ---- | ----------------------------------------- | | `file` | file | Downloaded file stored in execution files | ### Slack Update Message [#slack-update-message] Update a message previously sent by the bot in Slack #### Input [#input-20] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ---------------------------------------------------------------------------------------------------- | | `authMethod` | string | No | Authentication method: oauth or bot\_token | | `botToken` | string | No | Bot token for Custom Bot | | `channel` | string | Yes | Channel ID where the message was posted (e.g., C1234567890) | | `timestamp` | string | Yes | Timestamp of the message to update (e.g., 1405894322.002768) | | `text` | string | Yes | New message text (supports Slack mrkdwn formatting) | | `blocks` | json | No | Block Kit layout blocks as a JSON array. When provided, text becomes the fallback notification text. | #### Output [#output-20] | Parameter | Type | Description | | --------------------- | ------- | --------------------------------------------------------------------- | | `message` | object | Complete updated message object with all properties returned by Slack | | ↳ `type` | string | Message type (usually "message") | | ↳ `ts` | string | Message timestamp (unique identifier) | | ↳ `text` | string | Message text content | | ↳ `user` | string | User ID who sent the message | | ↳ `bot_id` | string | Bot ID if sent by a bot | | ↳ `username` | string | Display username | | ↳ `channel` | string | Channel ID | | ↳ `team` | string | Team/workspace ID | | ↳ `thread_ts` | string | Parent message timestamp (for threaded replies) | | ↳ `parent_user_id` | string | User ID of thread parent message author | | ↳ `reply_count` | number | Total number of replies in thread | | ↳ `reply_users_count` | number | Number of unique users who replied | | ↳ `latest_reply` | string | Timestamp of most recent reply | | ↳ `subscribed` | boolean | Whether user is subscribed to thread | | ↳ `last_read` | string | Timestamp of last read message | | ↳ `unread_count` | number | Number of unread messages in thread | | ↳ `subtype` | string | Message subtype (bot\_message, file\_share, etc.) | | ↳ `is_starred` | boolean | Whether message is starred by user | | ↳ `pinned_to` | array | Channel IDs where message is pinned | | ↳ `permalink` | string | Permanent URL to the message | | ↳ `reactions` | array | Reactions on this message | | ↳ `name` | string | Emoji name (without colons) | | ↳ `count` | number | Number of times this reaction was added | | ↳ `users` | array | Array of user IDs who reacted | | ↳ `files` | array | Files attached to the message | | ↳ `id` | string | Unique file identifier | | ↳ `name` | string | File name | | ↳ `mimetype` | string | MIME type of the file | | ↳ `size` | number | File size in bytes | | ↳ `url_private` | string | Private download URL (requires auth) | | ↳ `permalink` | string | Permanent link to the file | | ↳ `mode` | string | File mode (hosted, external, etc.) | | ↳ `attachments` | array | Legacy attachments on the message | | ↳ `id` | number | Attachment ID | | ↳ `fallback` | string | Plain text summary | | ↳ `text` | string | Main attachment text | | ↳ `pretext` | string | Text shown before attachment | | ↳ `color` | string | Color bar hex code or preset | | ↳ `author_name` | string | Author display name | | ↳ `author_link` | string | Author link URL | | ↳ `author_icon` | string | Author icon URL | | ↳ `title` | string | Attachment title | | ↳ `title_link` | string | Title link URL | | ↳ `image_url` | string | Image URL | | ↳ `thumb_url` | string | Thumbnail URL | | ↳ `footer` | string | Footer text | | ↳ `footer_icon` | string | Footer icon URL | | ↳ `ts` | string | Timestamp shown in footer | | ↳ `blocks` | array | Block Kit blocks in the message | | ↳ `type` | string | Block type (section, divider, image, actions, etc.) | | ↳ `block_id` | string | Unique block identifier | | ↳ `edited` | object | Edit information if message was edited | | ↳ `user` | string | User ID who edited the message | | ↳ `ts` | string | Timestamp of the edit | | `content` | string | Success message | | `metadata` | object | Updated message metadata | | ↳ `channel` | string | Channel ID | | ↳ `timestamp` | string | Message timestamp | | ↳ `text` | string | Updated message text | ### Slack Delete Message [#slack-delete-message] Delete a message previously sent by the bot in Slack #### Input [#input-21] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------------------------------------------------------ | | `authMethod` | string | No | Authentication method: oauth or bot\_token | | `botToken` | string | No | Bot token for Custom Bot | | `channel` | string | Yes | Channel ID where the message was posted (e.g., C1234567890) | | `timestamp` | string | Yes | Timestamp of the message to delete (e.g., 1405894322.002768) | #### Output [#output-21] | Parameter | Type | Description | | ------------- | ------ | ------------------------ | | `content` | string | Success message | | `metadata` | object | Deleted message metadata | | ↳ `channel` | string | Channel ID | | ↳ `timestamp` | string | Message timestamp | ### Slack Add Reaction [#slack-add-reaction] Add an emoji reaction to a Slack message #### Input [#input-22] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------------------------------------------------------------------ | | `authMethod` | string | No | Authentication method: oauth or bot\_token | | `botToken` | string | No | Bot token for Custom Bot | | `channel` | string | Yes | Channel ID where the message was posted (e.g., C1234567890) | | `timestamp` | string | Yes | Timestamp of the message to react to (e.g., 1405894322.002768) | | `name` | string | Yes | Name of the emoji reaction (without colons, e.g., thumbsup, heart, eyes) | #### Output [#output-22] | Parameter | Type | Description | | ------------- | ------ | ------------------- | | `content` | string | Success message | | `metadata` | object | Reaction metadata | | ↳ `channel` | string | Channel ID | | ↳ `timestamp` | string | Message timestamp | | ↳ `reaction` | string | Emoji reaction name | ### Slack Remove Reaction [#slack-remove-reaction] Remove an emoji reaction from a Slack message #### Input [#input-23] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ---------------------------------------------------------------------------------- | | `authMethod` | string | No | Authentication method: oauth or bot\_token | | `botToken` | string | No | Bot token for Custom Bot | | `channel` | string | Yes | Channel ID where the message was posted (e.g., C1234567890) | | `timestamp` | string | Yes | Timestamp of the message to remove reaction from (e.g., 1405894322.002768) | | `name` | string | Yes | Name of the emoji reaction to remove (without colons, e.g., thumbsup, heart, eyes) | #### Output [#output-23] | Parameter | Type | Description | | ------------- | ------ | ------------------- | | `content` | string | Success message | | `metadata` | object | Reaction metadata | | ↳ `channel` | string | Channel ID | | ↳ `timestamp` | string | Message timestamp | | ↳ `reaction` | string | Emoji reaction name | ### Slack Get Channel Info [#slack-get-channel-info] Get detailed information about a Slack channel by its ID #### Input [#input-24] | Parameter | Type | Required | Description | | ------------------- | ------- | -------- | ------------------------------------------------------- | | `authMethod` | string | No | Authentication method: oauth or bot\_token | | `botToken` | string | No | Bot token for Custom Bot | | `channel` | string | Yes | Channel ID to get information about (e.g., C1234567890) | | `includeNumMembers` | boolean | No | Whether to include the member count in the response | #### Output [#output-24] | Parameter | Type | Description | | ----------------- | ------- | ------------------------------------------- | | `channelInfo` | object | Detailed channel information | | ↳ `id` | string | Channel ID (e.g., C1234567890) | | ↳ `name` | string | Channel name without # prefix | | ↳ `is_channel` | boolean | Whether this is a channel | | ↳ `is_private` | boolean | Whether channel is private | | ↳ `is_archived` | boolean | Whether channel is archived | | ↳ `is_general` | boolean | Whether this is the general channel | | ↳ `is_member` | boolean | Whether the bot/user is a member | | ↳ `is_shared` | boolean | Whether channel is shared across workspaces | | ↳ `is_ext_shared` | boolean | Whether channel is externally shared | | ↳ `is_org_shared` | boolean | Whether channel is org-wide shared | | ↳ `num_members` | number | Number of members in the channel | | ↳ `topic` | string | Channel topic | | ↳ `purpose` | string | Channel purpose/description | | ↳ `created` | number | Unix timestamp when channel was created | | ↳ `creator` | string | User ID of channel creator | | ↳ `updated` | number | Unix timestamp of last update | ### Slack Get User Presence [#slack-get-user-presence] Check whether a Slack user is currently active or away #### Input [#input-25] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------------------------------------------- | | `authMethod` | string | No | Authentication method: oauth or bot\_token | | `botToken` | string | No | Bot token for Custom Bot | | `userId` | string | Yes | User ID to check presence for (e.g., U1234567890) | #### Output [#output-25] | Parameter | Type | Description | | ----------------- | ------- | -------------------------------------------------------------------------------------------------------- | | `presence` | string | User presence status: "active" or "away" | | `online` | boolean | Whether user has an active client connection (only available when checking own presence) | | `autoAway` | boolean | Whether user was automatically set to away due to inactivity (only available when checking own presence) | | `manualAway` | boolean | Whether user manually set themselves as away (only available when checking own presence) | | `connectionCount` | number | Total number of active connections for the user (only available when checking own presence) | | `lastActivity` | number | Unix timestamp of last detected activity (only available when checking own presence) | ### Slack Edit Canvas [#slack-edit-canvas] Edit an existing Slack canvas by inserting, replacing, or deleting content #### Input [#input-26] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------------------------------------------------------------------------------------------------------- | | `authMethod` | string | No | Authentication method: oauth or bot\_token | | `botToken` | string | No | Bot token for Custom Bot | | `canvasId` | string | Yes | Canvas ID to edit (e.g., F1234ABCD) | | `operation` | string | Yes | Edit operation: insert\_at\_start, insert\_at\_end, insert\_after, insert\_before, replace, delete, or rename | | `content` | string | No | Markdown content for the operation (required for insert/replace operations) | | `sectionId` | string | No | Section ID to target (required for insert\_after, insert\_before, replace, and delete) | | `title` | string | No | New title for the canvas (only used with rename operation) | #### Output [#output-26] | Parameter | Type | Description | | --------- | ------ | --------------- | | `content` | string | Success message | ### Slack Create Channel Canvas [#slack-create-channel-canvas] Create a canvas pinned to a Slack channel as its resource hub #### Input [#input-27] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------------------------------------------------ | | `authMethod` | string | No | Authentication method: oauth or bot\_token | | `botToken` | string | No | Bot token for Custom Bot | | `channel` | string | Yes | Channel ID to create the canvas in (e.g., C1234567890) | | `title` | string | No | Title for the channel canvas | | `content` | string | No | Canvas content in markdown format | #### Output [#output-27] | Parameter | Type | Description | | ----------- | ------ | -------------------------------- | | `canvas_id` | string | ID of the created channel canvas | ### Slack Get Canvas Info [#slack-get-canvas-info] Get Slack canvas file metadata by canvas ID #### Input [#input-28] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | -------------------------------------------- | | `authMethod` | string | No | Authentication method: oauth or bot\_token | | `botToken` | string | No | Bot token for Custom Bot | | `canvasId` | string | Yes | Canvas file ID to retrieve (e.g., F1234ABCD) | #### Output [#output-28] | Parameter | Type | Description | | ------------------------ | ------- | -------------------------------------------- | | `canvas` | object | Canvas file information returned by Slack | | ↳ `id` | string | Unique canvas file identifier | | ↳ `created` | number | Unix timestamp when the canvas was created | | ↳ `timestamp` | number | Unix timestamp associated with the canvas | | ↳ `name` | string | Canvas file name | | ↳ `title` | string | Canvas title | | ↳ `mimetype` | string | MIME type of the canvas file | | ↳ `filetype` | string | Slack file type for the canvas | | ↳ `pretty_type` | string | Human-readable file type | | ↳ `user` | string | User ID of the canvas creator | | ↳ `editable` | boolean | Whether the canvas file is editable | | ↳ `size` | number | Canvas file size in bytes | | ↳ `mode` | string | File mode | | ↳ `is_external` | boolean | Whether the canvas is externally hosted | | ↳ `is_public` | boolean | Whether the canvas is public | | ↳ `url_private` | string | Private URL for the canvas file | | ↳ `url_private_download` | string | Private download URL for the canvas file | | ↳ `permalink` | string | Permanent URL for the canvas | | ↳ `channels` | array | Public channel IDs where the canvas appears | | ↳ `groups` | array | Private channel IDs where the canvas appears | | ↳ `ims` | array | Direct message IDs where the canvas appears | | ↳ `canvas_readtime` | number | Approximate read time for canvas content | | ↳ `is_channel_space` | boolean | Whether this canvas is linked to a channel | | ↳ `linked_channel_id` | string | Channel ID linked to this canvas | | ↳ `canvas_creator_id` | string | User ID of the canvas creator | ### Slack List Canvases [#slack-list-canvases] List Slack canvases available to the authenticated user or bot #### Input [#input-29] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------------------------------------------------- | | `authMethod` | string | No | Authentication method: oauth or bot\_token | | `botToken` | string | No | Bot token for Custom Bot | | `channel` | string | No | Filter canvases appearing in a specific channel ID | | `count` | number | No | Number of canvases to return per page | | `page` | number | No | Page number to return | | `user` | string | No | Filter canvases created by a single user ID | | `tsFrom` | string | No | Filter canvases created after this Unix timestamp | | `tsTo` | string | No | Filter canvases created before this Unix timestamp | | `teamId` | string | No | Encoded team ID, required when using an org-level token | #### Output [#output-29] | Parameter | Type | Description | | ------------------------ | ------- | -------------------------------------------- | | `canvases` | array | Canvas file objects returned by Slack | | ↳ `id` | string | Unique canvas file identifier | | ↳ `created` | number | Unix timestamp when the canvas was created | | ↳ `timestamp` | number | Unix timestamp associated with the canvas | | ↳ `name` | string | Canvas file name | | ↳ `title` | string | Canvas title | | ↳ `mimetype` | string | MIME type of the canvas file | | ↳ `filetype` | string | Slack file type for the canvas | | ↳ `pretty_type` | string | Human-readable file type | | ↳ `user` | string | User ID of the canvas creator | | ↳ `editable` | boolean | Whether the canvas file is editable | | ↳ `size` | number | Canvas file size in bytes | | ↳ `mode` | string | File mode | | ↳ `is_external` | boolean | Whether the canvas is externally hosted | | ↳ `is_public` | boolean | Whether the canvas is public | | ↳ `url_private` | string | Private URL for the canvas file | | ↳ `url_private_download` | string | Private download URL for the canvas file | | ↳ `permalink` | string | Permanent URL for the canvas | | ↳ `channels` | array | Public channel IDs where the canvas appears | | ↳ `groups` | array | Private channel IDs where the canvas appears | | ↳ `ims` | array | Direct message IDs where the canvas appears | | ↳ `canvas_readtime` | number | Approximate read time for canvas content | | ↳ `is_channel_space` | boolean | Whether this canvas is linked to a channel | | ↳ `linked_channel_id` | string | Channel ID linked to this canvas | | ↳ `canvas_creator_id` | string | User ID of the canvas creator | | `paging` | object | Pagination information from Slack | | ↳ `count` | number | Number of items requested per page | | ↳ `total` | number | Total number of matching files | | ↳ `page` | number | Current page number | | ↳ `pages` | number | Total number of pages | ### Slack Lookup Canvas Sections [#slack-lookup-canvas-sections] Find Slack canvas section IDs matching criteria for later edits #### Input [#input-30] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | --------------------------------------------------------------------------------------- | | `authMethod` | string | No | Authentication method: oauth or bot\_token | | `botToken` | string | No | Bot token for Custom Bot | | `canvasId` | string | Yes | Canvas ID to search (e.g., F1234ABCD) | | `criteria` | json | Yes | Section lookup criteria, such as \{"section\_types":\["h1"],"contains\_text":"Roadmap"} | #### Output [#output-30] | Parameter | Type | Description | | ---------- | ------ | -------------------------------------------- | | `sections` | array | Canvas sections matching the lookup criteria | | ↳ `id` | string | Canvas section identifier | ### Slack Delete Canvas [#slack-delete-canvas] Delete a Slack canvas by its canvas ID #### Input [#input-31] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------------------------------------ | | `authMethod` | string | No | Authentication method: oauth or bot\_token | | `botToken` | string | No | Bot token for Custom Bot | | `canvasId` | string | Yes | Canvas ID to delete (e.g., F1234ABCD) | #### Output [#output-31] | Parameter | Type | Description | | --------- | ------- | --------------------------------------------- | | `ok` | boolean | Whether Slack deleted the canvas successfully | ### Slack Create Conversation [#slack-create-conversation] Create a new public or private channel in a Slack workspace. #### Input [#input-32] | Parameter | Type | Required | Description | | ------------ | ------- | -------- | ------------------------------------------------------------------------------------------------ | | `authMethod` | string | No | Authentication method: oauth or bot\_token | | `botToken` | string | No | Bot token for Custom Bot | | `name` | string | Yes | Name of the channel to create (lowercase, numbers, hyphens, underscores only; max 80 characters) | | `isPrivate` | boolean | No | Create a private channel instead of a public one (default: false) | | `teamId` | string | No | Encoded team ID to create the channel in (required if using an org token) | #### Output [#output-32] | Parameter | Type | Description | | ----------------- | ------- | ------------------------------------------- | | `channelInfo` | object | The newly created channel object | | ↳ `id` | string | Channel ID (e.g., C1234567890) | | ↳ `name` | string | Channel name without # prefix | | ↳ `is_channel` | boolean | Whether this is a channel | | ↳ `is_private` | boolean | Whether channel is private | | ↳ `is_archived` | boolean | Whether channel is archived | | ↳ `is_general` | boolean | Whether this is the general channel | | ↳ `is_member` | boolean | Whether the bot/user is a member | | ↳ `is_shared` | boolean | Whether channel is shared across workspaces | | ↳ `is_ext_shared` | boolean | Whether channel is externally shared | | ↳ `is_org_shared` | boolean | Whether channel is org-wide shared | | ↳ `num_members` | number | Number of members in the channel | | ↳ `topic` | string | Channel topic | | ↳ `purpose` | string | Channel purpose/description | | ↳ `created` | number | Unix timestamp when channel was created | | ↳ `creator` | string | User ID of channel creator | | ↳ `updated` | number | Unix timestamp of last update | ### Slack Invite to Conversation [#slack-invite-to-conversation] Invite one or more users to a Slack channel. Supports up to 100 users at a time. #### Input [#input-33] | Parameter | Type | Required | Description | | ------------ | ------- | -------- | -------------------------------------------------------------------------------------- | | `authMethod` | string | No | Authentication method: oauth or bot\_token | | `botToken` | string | No | Bot token for Custom Bot | | `channel` | string | Yes | The ID of the channel to invite users to | | `users` | string | Yes | Comma-separated list of user IDs to invite (up to 100) | | `force` | boolean | No | When true, continues inviting valid users while skipping invalid ones (default: false) | #### Output [#output-33] | Parameter | Type | Description | | ----------------- | ------- | -------------------------------------------------------------- | | `channelInfo` | object | The channel object after inviting users | | ↳ `id` | string | Channel ID (e.g., C1234567890) | | ↳ `name` | string | Channel name without # prefix | | ↳ `is_channel` | boolean | Whether this is a channel | | ↳ `is_private` | boolean | Whether channel is private | | ↳ `is_archived` | boolean | Whether channel is archived | | ↳ `is_general` | boolean | Whether this is the general channel | | ↳ `is_member` | boolean | Whether the bot/user is a member | | ↳ `is_shared` | boolean | Whether channel is shared across workspaces | | ↳ `is_ext_shared` | boolean | Whether channel is externally shared | | ↳ `is_org_shared` | boolean | Whether channel is org-wide shared | | ↳ `num_members` | number | Number of members in the channel | | ↳ `topic` | string | Channel topic | | ↳ `purpose` | string | Channel purpose/description | | ↳ `created` | number | Unix timestamp when channel was created | | ↳ `creator` | string | User ID of channel creator | | ↳ `updated` | number | Unix timestamp of last update | | `errors` | array | Per-user errors when force is true and some invitations failed | | ↳ `user` | string | User ID that failed | | ↳ `ok` | boolean | Always false for error entries | | ↳ `error` | string | Error code for this user | ### Slack Open View [#slack-open-view] Open a modal view in Slack using a trigger\_id from an interaction payload. Used to display forms, confirmations, and other interactive modals. #### Input [#input-34] | Parameter | Type | Required | Description | | ---------------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------- | | `authMethod` | string | No | Authentication method: oauth or bot\_token | | `botToken` | string | No | Bot token for Custom Bot | | `triggerId` | string | Yes | Exchange a trigger to post to the user. Obtained from an interaction payload (e.g., slash command, button click) | | `interactivityPointer` | string | No | Alternative to trigger\_id for posting to user | | `view` | json | Yes | A view payload object defining the modal. Must include type ("modal"), title, and blocks array | #### Output [#output-34] | Parameter | Type | Description | | -------------------- | ------- | ---------------------------------------------------------------- | | `view` | object | The opened modal view object | | ↳ `id` | string | Unique view identifier | | ↳ `team_id` | string | Workspace/team ID | | ↳ `type` | string | View type (e.g., "modal") | | ↳ `title` | json | Plain text title object with type and text fields | | ↳ `type` | string | Text object type (plain\_text) | | ↳ `text` | string | Title text content | | ↳ `submit` | json | Plain text submit button object | | ↳ `type` | string | Text object type (plain\_text) | | ↳ `text` | string | Submit button text | | ↳ `close` | json | Plain text close button object | | ↳ `type` | string | Text object type (plain\_text) | | ↳ `text` | string | Close button text | | ↳ `blocks` | array | Block Kit blocks in the view | | ↳ `type` | string | Block type (section, divider, image, actions, etc.) | | ↳ `block_id` | string | Unique block identifier | | ↳ `private_metadata` | string | Private metadata string passed with the view | | ↳ `callback_id` | string | Custom identifier for the view | | ↳ `external_id` | string | Custom external identifier (max 255 chars, unique per workspace) | | ↳ `state` | json | Current state of the view with input values | | ↳ `hash` | string | View version hash for updates | | ↳ `clear_on_close` | boolean | Whether to clear all views in the stack when this view is closed | | ↳ `notify_on_close` | boolean | Whether to send a view\_closed event when this view is closed | | ↳ `root_view_id` | string | ID of the root view in the view stack | | ↳ `previous_view_id` | string | ID of the previous view in the view stack | | ↳ `app_id` | string | Application identifier | | ↳ `bot_id` | string | Bot identifier | ### Slack Update View [#slack-update-view] Update an existing modal view in Slack. Identify the view by view\_id or external\_id, and provide the updated view payload. #### Input [#input-35] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `authMethod` | string | No | Authentication method: oauth or bot\_token | | `botToken` | string | No | Bot token for Custom Bot | | `viewId` | string | No | Unique identifier of the view to update. Either viewId or externalId is required | | `externalId` | string | No | Developer-set unique identifier of the view to update (max 255 chars). Either viewId or externalId is required | | `hash` | string | No | View state hash to protect against race conditions. Obtained from a previous views response | | `view` | json | Yes | A view payload object defining the updated modal. Must include type ("modal"), title, and blocks array. Use identical block\_id and action\_id values to preserve input data | #### Output [#output-35] | Parameter | Type | Description | | -------------------- | ------- | ---------------------------------------------------------------- | | `view` | object | The updated modal view object | | ↳ `id` | string | Unique view identifier | | ↳ `team_id` | string | Workspace/team ID | | ↳ `type` | string | View type (e.g., "modal") | | ↳ `title` | json | Plain text title object with type and text fields | | ↳ `type` | string | Text object type (plain\_text) | | ↳ `text` | string | Title text content | | ↳ `submit` | json | Plain text submit button object | | ↳ `type` | string | Text object type (plain\_text) | | ↳ `text` | string | Submit button text | | ↳ `close` | json | Plain text close button object | | ↳ `type` | string | Text object type (plain\_text) | | ↳ `text` | string | Close button text | | ↳ `blocks` | array | Block Kit blocks in the view | | ↳ `type` | string | Block type (section, divider, image, actions, etc.) | | ↳ `block_id` | string | Unique block identifier | | ↳ `private_metadata` | string | Private metadata string passed with the view | | ↳ `callback_id` | string | Custom identifier for the view | | ↳ `external_id` | string | Custom external identifier (max 255 chars, unique per workspace) | | ↳ `state` | json | Current state of the view with input values | | ↳ `hash` | string | View version hash for updates | | ↳ `clear_on_close` | boolean | Whether to clear all views in the stack when this view is closed | | ↳ `notify_on_close` | boolean | Whether to send a view\_closed event when this view is closed | | ↳ `root_view_id` | string | ID of the root view in the view stack | | ↳ `previous_view_id` | string | ID of the previous view in the view stack | | ↳ `app_id` | string | Application identifier | | ↳ `bot_id` | string | Bot identifier | ### Slack Push View [#slack-push-view] Push a new view onto an existing modal stack in Slack. Limited to 2 additional views after the initial modal is opened. #### Input [#input-36] | Parameter | Type | Required | Description | | ---------------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------- | | `authMethod` | string | No | Authentication method: oauth or bot\_token | | `botToken` | string | No | Bot token for Custom Bot | | `triggerId` | string | Yes | Exchange a trigger to post to the user. Obtained from an interaction payload (e.g., button click within an existing modal) | | `interactivityPointer` | string | No | Alternative to trigger\_id for posting to user | | `view` | json | Yes | A view payload object defining the modal to push. Must include type ("modal"), title, and blocks array | #### Output [#output-36] | Parameter | Type | Description | | -------------------- | ------- | ---------------------------------------------------------------- | | `view` | object | The pushed modal view object | | ↳ `id` | string | Unique view identifier | | ↳ `team_id` | string | Workspace/team ID | | ↳ `type` | string | View type (e.g., "modal") | | ↳ `title` | json | Plain text title object with type and text fields | | ↳ `type` | string | Text object type (plain\_text) | | ↳ `text` | string | Title text content | | ↳ `submit` | json | Plain text submit button object | | ↳ `type` | string | Text object type (plain\_text) | | ↳ `text` | string | Submit button text | | ↳ `close` | json | Plain text close button object | | ↳ `type` | string | Text object type (plain\_text) | | ↳ `text` | string | Close button text | | ↳ `blocks` | array | Block Kit blocks in the view | | ↳ `type` | string | Block type (section, divider, image, actions, etc.) | | ↳ `block_id` | string | Unique block identifier | | ↳ `private_metadata` | string | Private metadata string passed with the view | | ↳ `callback_id` | string | Custom identifier for the view | | ↳ `external_id` | string | Custom external identifier (max 255 chars, unique per workspace) | | ↳ `state` | json | Current state of the view with input values | | ↳ `hash` | string | View version hash for updates | | ↳ `clear_on_close` | boolean | Whether to clear all views in the stack when this view is closed | | ↳ `notify_on_close` | boolean | Whether to send a view\_closed event when this view is closed | | ↳ `root_view_id` | string | ID of the root view in the view stack | | ↳ `previous_view_id` | string | ID of the previous view in the view stack | | ↳ `app_id` | string | Application identifier | | ↳ `bot_id` | string | Bot identifier | ### Slack Publish View [#slack-publish-view] Publish a static view to a user's Home tab in Slack. Used to create or update the app's Home tab experience. #### Input [#input-37] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------------------------------------------------------------------------------------- | | `authMethod` | string | No | Authentication method: oauth or bot\_token | | `botToken` | string | No | Bot token for Custom Bot | | `userId` | string | Yes | The user ID to publish the Home tab view to (e.g., U0BPQUNTA) | | `hash` | string | No | View state hash to protect against race conditions. Obtained from a previous views response | | `view` | json | Yes | A view payload object defining the Home tab. Must include type ("home") and blocks array | #### Output [#output-37] | Parameter | Type | Description | | -------------------- | ------- | ---------------------------------------------------------------- | | `view` | object | The published Home tab view object | | ↳ `id` | string | Unique view identifier | | ↳ `team_id` | string | Workspace/team ID | | ↳ `type` | string | View type (e.g., "modal") | | ↳ `title` | json | Plain text title object with type and text fields | | ↳ `type` | string | Text object type (plain\_text) | | ↳ `text` | string | Title text content | | ↳ `submit` | json | Plain text submit button object | | ↳ `type` | string | Text object type (plain\_text) | | ↳ `text` | string | Submit button text | | ↳ `close` | json | Plain text close button object | | ↳ `type` | string | Text object type (plain\_text) | | ↳ `text` | string | Close button text | | ↳ `blocks` | array | Block Kit blocks in the view | | ↳ `type` | string | Block type (section, divider, image, actions, etc.) | | ↳ `block_id` | string | Unique block identifier | | ↳ `private_metadata` | string | Private metadata string passed with the view | | ↳ `callback_id` | string | Custom identifier for the view | | ↳ `external_id` | string | Custom external identifier (max 255 chars, unique per workspace) | | ↳ `state` | json | Current state of the view with input values | | ↳ `hash` | string | View version hash for updates | | ↳ `clear_on_close` | boolean | Whether to clear all views in the stack when this view is closed | | ↳ `notify_on_close` | boolean | Whether to send a view\_closed event when this view is closed | | ↳ `root_view_id` | string | ID of the root view in the view stack | | ↳ `previous_view_id` | string | ID of the previous view in the view stack | | ↳ `app_id` | string | Application identifier | | ↳ `bot_id` | string | Bot identifier | ### Slack Schedule Message [#slack-schedule-message] Schedule a message to be sent to a Slack channel or DM at a future time. #### Input [#input-38] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ---------------------------------------------------------------------------------------------------- | | `authMethod` | string | No | Authentication method: oauth or bot\_token | | `botToken` | string | No | Bot token for Custom Bot | | `channel` | string | Yes | Channel, private group, or DM to receive the message (e.g., C1234567890) | | `postAt` | number | Yes | Unix timestamp (seconds) representing the future time the message should post | | `text` | string | No | Message text to send (supports Slack mrkdwn formatting) | | `blocks` | json | No | Block Kit layout blocks as a JSON array. When provided, text becomes the fallback notification text. | | `threadTs` | string | No | Thread timestamp to reply to (creates a scheduled thread reply) | #### Output [#output-38] | Parameter | Type | Description | | -------------------- | ------ | ----------------------------------------------------------------------- | | `scheduledMessageId` | string | Identifier of the scheduled message (used to delete it before it posts) | | `postAt` | number | Unix timestamp when the message will post | | `channel` | string | Channel ID where the message is scheduled | | `message` | object | The scheduled message object returned by Slack | ### Slack List Scheduled Messages [#slack-list-scheduled-messages] List pending scheduled messages in a Slack workspace, optionally filtered by channel. #### Input [#input-39] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | -------------------------------------------------------------------- | | `authMethod` | string | No | Authentication method: oauth or bot\_token | | `botToken` | string | No | Bot token for Custom Bot | | `channel` | string | No | Optional channel ID to filter scheduled messages (e.g., C1234567890) | | `limit` | number | No | Maximum number of scheduled messages to return | | `cursor` | string | No | Pagination cursor (next\_cursor) from a previous response | | `oldest` | string | No | Unix timestamp of the oldest scheduled message to include | | `latest` | string | No | Unix timestamp of the latest scheduled message to include | | `teamId` | string | No | Encoded team ID (required only with org-level tokens) | #### Output [#output-39] | Parameter | Type | Description | | ------------------- | ------ | ------------------------------------------------------------ | | `scheduledMessages` | array | Array of pending scheduled message objects | | ↳ `id` | string | Scheduled message ID | | ↳ `channel_id` | string | Channel the message is scheduled for | | ↳ `post_at` | number | Unix timestamp when the message will post | | ↳ `date_created` | number | Unix timestamp when the schedule was created | | ↳ `text` | string | Scheduled message text | | `nextCursor` | string | Cursor for the next page (null when there are no more pages) | ### Slack Delete Scheduled Message [#slack-delete-scheduled-message] Delete a pending scheduled message before it posts to Slack. #### Input [#input-40] | Parameter | Type | Required | Description | | -------------------- | ------ | -------- | -------------------------------------------------------------------- | | `authMethod` | string | No | Authentication method: oauth or bot\_token | | `botToken` | string | No | Bot token for Custom Bot | | `channel` | string | Yes | Channel ID where the scheduled message is queued (e.g., C1234567890) | | `scheduledMessageId` | string | Yes | Scheduled message ID from chat.scheduleMessage (e.g., Q1234ABCD) | #### Output [#output-40] | Parameter | Type | Description | | --------- | ------- | ------------------------------------------------------ | | `ok` | boolean | Whether the scheduled message was deleted successfully | ### Slack Archive Conversation [#slack-archive-conversation] Archive a Slack channel so it is closed to new activity. #### Input [#input-41] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------------------------------------------ | | `authMethod` | string | No | Authentication method: oauth or bot\_token | | `botToken` | string | No | Bot token for Custom Bot | | `channel` | string | Yes | ID of the channel to archive (e.g., C1234567890) | #### Output [#output-41] | Parameter | Type | Description | | --------- | ------- | -------------------------------------------------- | | `ok` | boolean | Whether the conversation was archived successfully | ### Slack Rename Conversation [#slack-rename-conversation] Rename an existing Slack channel. #### Input [#input-42] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------------------------------------------------------------------------------------- | | `authMethod` | string | No | Authentication method: oauth or bot\_token | | `botToken` | string | No | Bot token for Custom Bot | | `channel` | string | Yes | ID of the channel to rename (e.g., C1234567890) | | `name` | string | Yes | New channel name (lowercase letters, numbers, hyphens, underscores only; max 80 characters) | #### Output [#output-42] | Parameter | Type | Description | | ----------------- | ------- | ------------------------------------------- | | `channelInfo` | object | The channel object after renaming | | ↳ `id` | string | Channel ID (e.g., C1234567890) | | ↳ `name` | string | Channel name without # prefix | | ↳ `is_channel` | boolean | Whether this is a channel | | ↳ `is_private` | boolean | Whether channel is private | | ↳ `is_archived` | boolean | Whether channel is archived | | ↳ `is_general` | boolean | Whether this is the general channel | | ↳ `is_member` | boolean | Whether the bot/user is a member | | ↳ `is_shared` | boolean | Whether channel is shared across workspaces | | ↳ `is_ext_shared` | boolean | Whether channel is externally shared | | ↳ `is_org_shared` | boolean | Whether channel is org-wide shared | | ↳ `num_members` | number | Number of members in the channel | | ↳ `topic` | string | Channel topic | | ↳ `purpose` | string | Channel purpose/description | | ↳ `created` | number | Unix timestamp when channel was created | | ↳ `creator` | string | User ID of channel creator | | ↳ `updated` | number | Unix timestamp of last update | ### Slack Set Conversation Topic [#slack-set-conversation-topic] Set the topic for a Slack channel (max 250 characters). #### Input [#input-43] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------------------------------------------------------------- | | `authMethod` | string | No | Authentication method: oauth or bot\_token | | `botToken` | string | No | Bot token for Custom Bot | | `channel` | string | Yes | ID of the channel to update (e.g., C1234567890) | | `topic` | string | Yes | New topic text (max 250 characters; no formatting or linkification) | #### Output [#output-43] | Parameter | Type | Description | | ----------------- | ------- | ------------------------------------------- | | `channelInfo` | object | The channel object after updating the topic | | ↳ `id` | string | Channel ID (e.g., C1234567890) | | ↳ `name` | string | Channel name without # prefix | | ↳ `is_channel` | boolean | Whether this is a channel | | ↳ `is_private` | boolean | Whether channel is private | | ↳ `is_archived` | boolean | Whether channel is archived | | ↳ `is_general` | boolean | Whether this is the general channel | | ↳ `is_member` | boolean | Whether the bot/user is a member | | ↳ `is_shared` | boolean | Whether channel is shared across workspaces | | ↳ `is_ext_shared` | boolean | Whether channel is externally shared | | ↳ `is_org_shared` | boolean | Whether channel is org-wide shared | | ↳ `num_members` | number | Number of members in the channel | | ↳ `topic` | string | Channel topic | | ↳ `purpose` | string | Channel purpose/description | | ↳ `created` | number | Unix timestamp when channel was created | | ↳ `creator` | string | User ID of channel creator | | ↳ `updated` | number | Unix timestamp of last update | ### Slack Set Conversation Purpose [#slack-set-conversation-purpose] Set the purpose (description) for a Slack channel (max 250 characters). #### Input [#input-44] | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------------------------------------------- | | `authMethod` | string | No | Authentication method: oauth or bot\_token | | `botToken` | string | No | Bot token for Custom Bot | | `channel` | string | Yes | ID of the channel to update (e.g., C1234567890) | | `purpose` | string | Yes | New purpose/description text (max 250 characters) | #### Output [#output-44] | Parameter | Type | Description | | --------- | ------ | --------------------------------------------------- | | `purpose` | string | The purpose/description that was set on the channel | ## Triggers [#triggers] A **Trigger** is a block that starts a workflow when an event happens in this service. ### Slack [#slack] Trigger from Slack events, interactions, and slash commands #### Configuration [#configuration] | Parameter | Type | Required | Description | | ------------------------ | ------------------------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `eventType` | string | Yes | The single Slack event this trigger fires on. Add another trigger block for another event. | | `customBotCredential` | string | Yes | Choose a custom Slack bot you set up once and reuse across triggers. | | `manualBotCredential` | string | Yes | Set the custom bot credential ID directly. | | `source` | string | No | Restrict to direct messages, public channels, or private channels. Leave empty to match any. | | `channelFilter` | channel-selector | No | Restrict to specific channels. Leave empty to trigger on any channel the bot has been added to. | | `manualChannelFilter` | string | No | Comma-separated channel IDs to restrict to. Set IDs directly here. | | `threads` | string | No | Include thread replies, exclude them (top-level only), or fire only on thread replies. | | `streamResponse` | boolean | No | Create a Slack agent session and stream selected workflow outputs into the conversation that started this run. Custom bots only. | | `streamOutputs` | workflow-output-selector | No | Use `<blockName>.<outputPath>` for this workflow or `<childWorkflowId>.<blockName>.<outputPath>` for a child workflow. Selecting a child workflow applies to every invocation of it. Agent outputs stream live; other outputs are sent when the block completes. | | `streamTaskTitle` | string | No | Optional status Slack shows while each selected response is being produced. Leave empty to use Running. | | `streamTaskDisplayMode` | string | No | Choose how Slack displays thinking and tool progress. | | `streamIncludeThinking` | boolean | No | Show agent thinking as Slack task updates while the response is generated. | | `streamIncludeToolCalls` | boolean | No | Show tool execution lifecycle as Slack task updates. | | `emoji` | string | No | Comma-separated emoji names to restrict to. Leave empty to match any emoji. | | `nameContains` | string | No | Only fire when the created channel name contains this text. | | `interactionFilter` | string | No | Comma-separated action\_ids (buttons/selects) or callback\_ids (modals) to restrict to. Leave empty to fire on any interaction. | | `commandFilter` | string | No | Restrict this trigger to one slash command. Leave empty to fire for every command configured on the bot. | | `filterBotMessages` | boolean | No | Ignore messages sent by other bots. This app's own output is always ignored. | | `includeOwnMessages` | boolean | No | Also fire on this app's own messages and reactions. Can cause loops — use with care. | | `includeFiles` | boolean | No | Download and include file attachments from messages. Requires files:read. | #### Output [#output-45] | Parameter | Type | Description | | ------------------------ | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `event` | object | Slack event data | | ↳ `event_type` | string | Type of Slack payload: an Events API event (e.g., app\_mention, message), an interactivity type (e.g., block\_actions), or "slash\_command" for slash commands | | ↳ `subtype` | string | Message subtype (e.g., channel\_join, channel\_leave, bot\_message, file\_share). Null for regular user messages | | ↳ `channel` | string | Slack channel ID where the event occurred | | ↳ `channel_name` | string | Human-readable channel name | | ↳ `channel_type` | string | Type of channel (e.g., channel, group, im, mpim). Useful for distinguishing DMs from public channels | | ↳ `user` | string | User ID who triggered the event | | ↳ `user_name` | string | Username who triggered the event | | ↳ `bot_id` | string | Bot ID if the message was sent by a bot. Null for human users | | ↳ `text` | string | Message text content. For slash commands, the text after the command. For interactivity, the source message text (falls back to the triggering action value) | | ↳ `timestamp` | string | Message timestamp from the triggering event | | ↳ `thread_ts` | string | Parent thread timestamp (if message is in a thread) | | ↳ `streaming_message_ts` | array | Message timestamps streamed during a stopped agent session | | ↳ `title` | string | Current agent session title | | ↳ `previous_title` | string | Previous agent session title | | ↳ `tab` | string | App Home tab that was opened, including messages for Agent View | | ↳ `context` | json | Current Agent View context. Normalized from context on app\_context\_changed/app\_home\_opened or app\_context on message.im | | ↳ `team_id` | string | Slack workspace/team ID | | ↳ `user_team_id` | string | Slack workspace/team ID of the user who triggered the event. Used for Slack Connect response streaming. | | ↳ `enterprise_id` | string | Slack Enterprise Grid organization ID | | ↳ `event_id` | string | Unique event identifier | | ↳ `reaction` | string | Emoji reaction name (e.g., thumbsup). Present for reaction\_added/reaction\_removed events | | ↳ `item_user` | string | User ID of the original message author. Present for reaction\_added/reaction\_removed events | | ↳ `command` | string | Slash command name including the leading slash (e.g., /deploy). Present for slash commands | | ↳ `action_id` | string | action\_id of the first interactive element triggered. Present for block\_actions (button/select clicks) | | ↳ `action_value` | string | Value carried by the first interactive element (button value, selected option, date, etc.). Present for block\_actions | | ↳ `actions` | json | Full array of interactive actions from the payload, preserving every element and its value. Present for block\_actions | | ↳ `response_url` | string | Temporary URL to post a response back to the originating message or command. Present for interactivity and slash commands | | ↳ `trigger_id` | string | Short-lived trigger ID used to open a modal in response. Present for interactivity and slash commands | | ↳ `callback_id` | string | Callback ID of the shortcut or view. Present for shortcuts and modal submissions | | ↳ `api_app_id` | string | Slack app ID. Present for interactivity and slash commands | | ↳ `app_id` | string | App ID of the app that produced the event (e.g. the bot that posted a message). Used to identify the app's own output | | ↳ `message_ts` | string | Timestamp of the message the interaction originated from. Present for block\_actions | | ↳ `view` | json | Full Slack view object for modal interactions: state.values (submitted input values), private\_metadata, id, callback\_id, and hash. Present for view\_submission/view\_closed; null otherwise | | ↳ `message` | json | Full source message object the interaction came from, including its blocks and text. Present for block\_actions on a message; null otherwise | | ↳ `state` | json | Current values of all stateful elements in the surface (state.values) at the time of a block action — e.g. inputs read on a button click. Present for block\_actions; null otherwise | | ↳ `hasFiles` | boolean | Whether the message has file attachments | | ↳ `files` | file\[] | File attachments downloaded from the message (if includeFiles is enabled and bot token is provided) | --- # Kalshi (/en/integrations/kalshi) {/* MANUAL-CONTENT-START:intro */} Use [Kalshi](https://kalshi.com) in Studio 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 | --- # Confluence (/en/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) | --- # Browser Use (/en/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 | --- # Asana Service Accounts & Personal Access Tokens (/en/integrations/asana-service-account) Studio 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 Studio: * **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 Studio. ## 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. `Studio 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 Studio {/* 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 Studio 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. `studio-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. `Studio 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 Studio [#adding-the-token-to-studio] Open **Integrations** from your workspace sidebar Search for "Asana" and open it, then click **Add to Studio** 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**. Studio 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. --- # RabbitMQ (/en/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 Studio. 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 — Studio 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 Studio'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":"studio"} | #### 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 | --- # DuckDuckGo (/en/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 | --- # Elasticsearch (/en/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. | --- # IMAP (/en/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 | --- # Neo4j (/en/integrations/neo4j) {/* MANUAL-CONTENT-START:intro */} Use [Neo4j](https://neo4j.com) in Studio 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 | --- # ServiceNow (/en/integrations/servicenow) {/* MANUAL-CONTENT-START:intro */} Use [ServiceNow](https://www.servicenow.com/) in Studio to create, read, update, and delete records in your ServiceNow instance. Operations accept a table name, such as an incident, task, change-request, or user table, and the fields required by that operation. {/* MANUAL-CONTENT-END */} ## Usage Instructions [#usage-instructions] Integrate ServiceNow into your workflow. Create, read, update, and delete records in any ServiceNow table including incidents, tasks, change requests, users, and more. ## Actions [#actions] ### Create ServiceNow Record [#create-servicenow-record] Create a new record in a ServiceNow table #### Input [#input] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------- | | `instanceUrl` | string | Yes | ServiceNow instance URL (e.g., [https://instance.service-now.com](https://instance.service-now.com)) | | `username` | string | Yes | ServiceNow username | | `password` | string | Yes | ServiceNow password | | `tableName` | string | Yes | Table name (e.g., incident, task, sys\_user) | | `fields` | json | Yes | Fields to set on the record as JSON object (e.g., \{"short\_description": "Issue title", "priority": "1"}) | #### Output [#output] | Parameter | Type | Description | | ---------- | ---- | ------------------------------------------------------- | | `record` | json | Created ServiceNow record with sys\_id and other fields | | `metadata` | json | Operation metadata | ### Read ServiceNow Records [#read-servicenow-records] Read records from a ServiceNow table #### Input [#input-1] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------- | | `instanceUrl` | string | Yes | ServiceNow instance URL (e.g., [https://instance.service-now.com](https://instance.service-now.com)) | | `username` | string | Yes | ServiceNow username | | `password` | string | Yes | ServiceNow password | | `tableName` | string | Yes | Table name (e.g., incident, task, sys\_user, change\_request) | | `sysId` | string | No | Specific record sys\_id (e.g., 6816f79cc0a8016401c5a33be04be441) | | `number` | string | No | Record number (e.g., INC0010001) | | `query` | string | No | Encoded query string (e.g., "active=true^priority=1") | | `limit` | number | No | Maximum number of records to return (e.g., 10, 50, 100) | | `offset` | number | No | Number of records to skip for pagination (e.g., 0, 10, 20) | | `fields` | string | No | Comma-separated list of fields to return (e.g., sys\_id,number,short\_description,state) | | `displayValue` | string | No | Return display values for reference fields: "true" (display only), "false" (sys\_id only), or "all" (both) | #### Output [#output-1] | Parameter | Type | Description | | ---------- | ----- | --------------------------- | | `records` | array | Array of ServiceNow records | | `metadata` | json | Operation metadata | ### Update ServiceNow Record [#update-servicenow-record] Update an existing record in a ServiceNow table #### Input [#input-2] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------- | | `instanceUrl` | string | Yes | ServiceNow instance URL (e.g., [https://instance.service-now.com](https://instance.service-now.com)) | | `username` | string | Yes | ServiceNow username | | `password` | string | Yes | ServiceNow password | | `tableName` | string | Yes | Table name (e.g., incident, task, sys\_user, change\_request) | | `sysId` | string | Yes | Record sys\_id to update (e.g., 6816f79cc0a8016401c5a33be04be441) | | `fields` | json | Yes | Fields to update as JSON object (e.g., \{"state": "2", "priority": "1"}) | #### Output [#output-2] | Parameter | Type | Description | | ---------- | ---- | ------------------------- | | `record` | json | Updated ServiceNow record | | `metadata` | json | Operation metadata | ### Delete ServiceNow Record [#delete-servicenow-record] Delete a record from a ServiceNow table #### Input [#input-3] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------- | | `instanceUrl` | string | Yes | ServiceNow instance URL (e.g., [https://instance.service-now.com](https://instance.service-now.com)) | | `username` | string | Yes | ServiceNow username | | `password` | string | Yes | ServiceNow password | | `tableName` | string | Yes | Table name (e.g., incident, task, sys\_user, change\_request) | | `sysId` | string | Yes | Record sys\_id to delete (e.g., 6816f79cc0a8016401c5a33be04be441) | #### Output [#output-3] | Parameter | Type | Description | | ---------- | ------- | ----------------------------------- | | `success` | boolean | Whether the deletion was successful | | `metadata` | json | Operation metadata | ### Aggregate ServiceNow Records [#aggregate-servicenow-records] Compute aggregate statistics (count, sum, average, min, max, group by) over a ServiceNow table #### Input [#input-4] | Parameter | Type | Required | Description | | -------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `instanceUrl` | string | Yes | ServiceNow instance URL (e.g., [https://instance.service-now.com](https://instance.service-now.com)) | | `username` | string | Yes | ServiceNow username | | `password` | string | Yes | ServiceNow password | | `tableName` | string | Yes | Table name (e.g., incident, change\_request, task) | | `query` | string | No | Encoded query string to filter records before aggregating (e.g., "active=true") | | `count` | boolean | No | Return the count of matching records | | `groupBy` | string | No | Comma-separated fields to group results by (e.g., category,priority) | | `avgFields` | string | No | Comma-separated numeric fields to average (e.g., reassignment\_count) | | `sumFields` | string | No | Comma-separated numeric fields to sum | | `minFields` | string | No | Comma-separated fields to compute the minimum of | | `maxFields` | string | No | Comma-separated fields to compute the maximum of | | `having` | string | No | Filter on aggregate results, written as aggregate^field^operator^value and comma-separated for more than one (e.g., "count^priority^>^3" or "count^state^=^1,avg^priority^>^3") | | `displayValue` | string | No | Return display values for grouped reference fields: "true", "false", or "all" | #### Output [#output-4] | Parameter | Type | Description | | ---------- | ------ | ----------------------------------------------------------------------------------------------------------------- | | `result` | json | Aggregate result. Ungrouped: \{stats: \{count, sum, avg, min, max}}. Grouped: array of \{stats, groupby\_fields}. | | `count` | number | Total matching record count (only present for ungrouped count queries) | | `metadata` | json | Operation metadata (grouped, groupCount) | ### List ServiceNow Attachments [#list-servicenow-attachments] List the attachments on a ServiceNow record #### Input [#input-5] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------- | | `instanceUrl` | string | Yes | ServiceNow instance URL (e.g., [https://instance.service-now.com](https://instance.service-now.com)) | | `username` | string | Yes | ServiceNow username | | `password` | string | Yes | ServiceNow password | | `tableName` | string | Yes | Table that owns the record (e.g., incident, change\_request) | | `recordSysId` | string | Yes | sys\_id of the record whose attachments should be listed | | `limit` | number | No | Maximum number of attachments to return | #### Output [#output-5] | Parameter | Type | Description | | ----------------- | ------ | -------------------------------- | | `attachments` | array | Attachment metadata records | | ↳ `sys_id` | string | Attachment sys\_id | | ↳ `file_name` | string | File name | | ↳ `content_type` | string | MIME type | | ↳ `size_bytes` | string | File size in bytes | | ↳ `download_link` | string | Direct download URL for the file | | `metadata` | json | Operation metadata (recordCount) | ### Download ServiceNow Attachment [#download-servicenow-attachment] Download an attachment file from ServiceNow by its sys\_id #### Input [#input-6] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------- | | `instanceUrl` | string | Yes | ServiceNow instance URL (e.g., [https://instance.service-now.com](https://instance.service-now.com)) | | `username` | string | Yes | ServiceNow username | | `password` | string | Yes | ServiceNow password | | `attachmentSysId` | string | Yes | sys\_id of the attachment to download (from List Attachments) | #### Output [#output-6] | Parameter | Type | Description | | --------- | ---- | ----------------------------------------------- | | `file` | file | Downloaded attachment stored in execution files | ### Upload ServiceNow Attachment [#upload-servicenow-attachment] Attach a file to a ServiceNow record #### Input [#input-7] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------- | | `instanceUrl` | string | Yes | ServiceNow instance URL (e.g., [https://instance.service-now.com](https://instance.service-now.com)) | | `username` | string | Yes | ServiceNow username | | `password` | string | Yes | ServiceNow password | | `tableName` | string | Yes | Table that owns the record (e.g., incident, change\_request) | | `recordSysId` | string | Yes | sys\_id of the record to attach the file to | | `fileName` | string | Yes | Name to give the uploaded file (e.g., logs.txt) | | `file` | file | No | File to upload (UserFile object) | #### Output [#output-7] | Parameter | Type | Description | | ------------ | ---- | -------------------------------------------------------------------------------- | | `attachment` | json | Created attachment metadata (sys\_id, file\_name, content\_type, download\_link) | | `metadata` | json | Operation metadata | ### Create ServiceNow Incident [#create-servicenow-incident] Create an incident in ServiceNow. Reference fields (caller, assignment group, assigned to, configuration item) take sys\_ids unless input display value is enabled. #### Input [#input-8] | Parameter | Type | Required | Description | | ------------------- | ------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `instanceUrl` | string | Yes | ServiceNow instance URL (e.g., [https://instance.service-now.com](https://instance.service-now.com)) | | `username` | string | Yes | ServiceNow username | | `password` | string | Yes | ServiceNow password | | `shortDescription` | string | Yes | Short description — the one-line summary of the incident. | | `description` | string | No | Detailed description of the incident. | | `callerId` | string | No | Caller (caller\_id) — sys\_id of the sys\_user who reported the incident. Use Find ServiceNow User to resolve an email address to a sys\_id. | | `category` | string | No | Category (e.g., inquiry, software, hardware, network, database). | | `subcategory` | string | No | Subcategory, valid for the selected category. | | `impact` | string | No | Impact: 1 (High), 2 (Medium), or 3 (Low). | | `urgency` | string | No | Urgency: 1 (High), 2 (Medium), or 3 (Low). | | `priority` | string | No | Priority 1-5 (1 Critical … 5 Planning). Normally derived from impact and urgency, so prefer setting those. | | `state` | string | No | Incident state coded value. Base system: 1=New, 2=In Progress, 3=On Hold, 6=Resolved, 7=Closed, 8=Canceled. Defaults to New. | | `assignmentGroup` | string | No | Assignment group (assignment\_group) — sys\_id of the sys\_user\_group. | | `assignedTo` | string | No | Assigned to (assigned\_to) — sys\_id of the sys\_user. | | `cmdbCi` | string | No | Configuration item (cmdb\_ci) — sys\_id of the affected CI. | | `businessService` | string | No | Service (business\_service) — sys\_id of the affected business service. | | `contactType` | string | No | Channel (contact\_type), e.g., email, phone, self-service, chat. | | `workNotes` | string | No | Internal work note to record on creation. | | `comments` | string | No | Customer-visible additional comment to record on creation. | | `additionalFields` | json | No | Any other ServiceNow fields to set, as a JSON object of raw column names (e.g., \{"correlation\_id": "abc-123", "u\_custom": "x"}). Merged last, so it overrides the named parameters. | | `fields` | string | No | Comma-separated list of fields to return (e.g., number,short\_description,state). Returns all fields when omitted. | | `displayValue` | string | No | How reference and choice fields are returned: "all" (default — both the sys\_id and the label, as \{value, display\_value}), "true" (labels only), or "false" (raw sys\_ids and coded values only). | | `inputDisplayValue` | boolean | No | Set to true to write display names into reference fields (e.g., assigned\_to: "Beth Anglin") and let ServiceNow resolve them to sys\_ids. Defaults to false, meaning reference fields must be sys\_ids. Note that true also reinterprets date and time values in the requesting user's timezone rather than GMT. | #### Output [#output-8] | Parameter | Type | Description | | ------------------- | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `record` | json | Single ServiceNow record | | `records` | json | Array of ServiceNow records | | `success` | boolean | Operation success status | | `metadata` | json | Operation metadata | | `result` | json | Aggregate result (stats or grouped array) | | `count` | number | Aggregate matching record count | | `attachments` | json | Attachment metadata list — record attachments (sys\_id, file\_name, content\_type, download\_link) or knowledge article attachments (sys\_id, file\_name, size\_bytes, state) | | `file` | file | Downloaded attachment file | | `content` | string | HTML body of a knowledge article | | `attachment` | json | Uploaded attachment metadata | | `tasks` | json | Change tasks belonging to a change request. Unlike the Table API operations, the Change Management API always returns every field as \{value, display\_value} regardless of the display value setting | | `items` | json | Service catalog items | | `articles` | json | Knowledge article search results | | `attributes` | json | Configuration item attributes | | `inboundRelations` | json | Inbound CI relationships | | `outboundRelations` | json | Outbound CI relationships | | `sysId` | string | sys\_id returned by the operation | | `number` | string | Record number returned by the operation | | `requestNumber` | string | Catalog request number | | `requestId` | string | sys\_id of the catalog request | | `table` | string | Table the catalog request was created on | | `availableStates` | json | State coded values a change request can reach, including its current state | | `allowedStates` | json | State coded values whose transition conditions the change request already meets | | `stateLabels` | json | This instance's own map of state coded value to label, e.g. \{'0': 'Review'} | | `stateTransitions` | json | \[\{sys\_id, display\_value, from\_state, to\_state, transition\_available, automatic\_transition, conditions}] | | `title` | string | Knowledge article title | | `fields` | json | Requested knowledge article field values | ### Get ServiceNow Incident [#get-servicenow-incident] Retrieve a single ServiceNow incident by number (e.g., INC0010001) or sys\_id. Reference fields are returned with both their sys\_id and their label by default. #### Input [#input-9] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `instanceUrl` | string | Yes | ServiceNow instance URL (e.g., [https://instance.service-now.com](https://instance.service-now.com)) | | `username` | string | Yes | ServiceNow username | | `password` | string | Yes | ServiceNow password | | `sysId` | string | No | Record sys\_id. Provide either this or the record number. | | `number` | string | No | Record number (e.g., INC0010001). Provide either this or the sys\_id. | | `fields` | string | No | Comma-separated list of fields to return (e.g., number,short\_description,state). Returns all fields when omitted. | | `displayValue` | string | No | How reference and choice fields are returned: "all" (default — both the sys\_id and the label, as \{value, display\_value}), "true" (labels only), or "false" (raw sys\_ids and coded values only). | #### Output [#output-9] | Parameter | Type | Description | | ------------------- | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `record` | json | Single ServiceNow record | | `records` | json | Array of ServiceNow records | | `success` | boolean | Operation success status | | `metadata` | json | Operation metadata | | `result` | json | Aggregate result (stats or grouped array) | | `count` | number | Aggregate matching record count | | `attachments` | json | Attachment metadata list — record attachments (sys\_id, file\_name, content\_type, download\_link) or knowledge article attachments (sys\_id, file\_name, size\_bytes, state) | | `file` | file | Downloaded attachment file | | `content` | string | HTML body of a knowledge article | | `attachment` | json | Uploaded attachment metadata | | `tasks` | json | Change tasks belonging to a change request. Unlike the Table API operations, the Change Management API always returns every field as \{value, display\_value} regardless of the display value setting | | `items` | json | Service catalog items | | `articles` | json | Knowledge article search results | | `attributes` | json | Configuration item attributes | | `inboundRelations` | json | Inbound CI relationships | | `outboundRelations` | json | Outbound CI relationships | | `sysId` | string | sys\_id returned by the operation | | `number` | string | Record number returned by the operation | | `requestNumber` | string | Catalog request number | | `requestId` | string | sys\_id of the catalog request | | `table` | string | Table the catalog request was created on | | `availableStates` | json | State coded values a change request can reach, including its current state | | `allowedStates` | json | State coded values whose transition conditions the change request already meets | | `stateLabels` | json | This instance's own map of state coded value to label, e.g. \{'0': 'Review'} | | `stateTransitions` | json | \[\{sys\_id, display\_value, from\_state, to\_state, transition\_available, automatic\_transition, conditions}] | | `title` | string | Knowledge article title | | `fields` | json | Requested knowledge article field values | ### List ServiceNow Incidents [#list-servicenow-incidents] Search ServiceNow incidents by state, priority, assignment, caller, or text. All filters are ANDed together. #### Input [#input-10] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `instanceUrl` | string | Yes | ServiceNow instance URL (e.g., [https://instance.service-now.com](https://instance.service-now.com)) | | `username` | string | Yes | ServiceNow username | | `password` | string | Yes | ServiceNow password | | `searchText` | string | No | Text to match against the incident short description using the ServiceNow LIKE operator, which matches anywhere in the field. | | `state` | string | No | Incident state coded value. Base system: 1=New, 2=In Progress, 3=On Hold, 6=Resolved, 7=Closed, 8=Canceled. | | `priority` | string | No | Priority coded value 1-5 (1 Critical … 5 Planning). | | `assignmentGroup` | string | No | sys\_id of the assignment group. | | `assignedTo` | string | No | sys\_id of the assigned user. | | `callerId` | string | No | sys\_id of the caller. | | `active` | string | No | Restrict to active ("true") or inactive ("false") incidents. | | `query` | string | No | Additional ServiceNow encoded query, ANDed with the other filters (e.g., "opened\_at>=javascript:gs.beginningOfLastMonth()"). | | `limit` | number | No | Maximum number of records to return (sysparm\_limit). Omitting it sends no limit at all, and the Table API then applies its own default of 10,000 records, so always set it to what you will actually read. | | `offset` | number | No | Number of records to skip for pagination (sysparm\_offset). | | `fields` | string | No | Comma-separated list of fields to return (e.g., number,short\_description,state). Returns all fields when omitted. | | `displayValue` | string | No | How reference and choice fields are returned: "all" (default — both the sys\_id and the label, as \{value, display\_value}), "true" (labels only), or "false" (raw sys\_ids and coded values only). | #### Output [#output-10] | Parameter | Type | Description | | ------------------- | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `record` | json | Single ServiceNow record | | `records` | json | Array of ServiceNow records | | `success` | boolean | Operation success status | | `metadata` | json | Operation metadata | | `result` | json | Aggregate result (stats or grouped array) | | `count` | number | Aggregate matching record count | | `attachments` | json | Attachment metadata list — record attachments (sys\_id, file\_name, content\_type, download\_link) or knowledge article attachments (sys\_id, file\_name, size\_bytes, state) | | `file` | file | Downloaded attachment file | | `content` | string | HTML body of a knowledge article | | `attachment` | json | Uploaded attachment metadata | | `tasks` | json | Change tasks belonging to a change request. Unlike the Table API operations, the Change Management API always returns every field as \{value, display\_value} regardless of the display value setting | | `items` | json | Service catalog items | | `articles` | json | Knowledge article search results | | `attributes` | json | Configuration item attributes | | `inboundRelations` | json | Inbound CI relationships | | `outboundRelations` | json | Outbound CI relationships | | `sysId` | string | sys\_id returned by the operation | | `number` | string | Record number returned by the operation | | `requestNumber` | string | Catalog request number | | `requestId` | string | sys\_id of the catalog request | | `table` | string | Table the catalog request was created on | | `availableStates` | json | State coded values a change request can reach, including its current state | | `allowedStates` | json | State coded values whose transition conditions the change request already meets | | `stateLabels` | json | This instance's own map of state coded value to label, e.g. \{'0': 'Review'} | | `stateTransitions` | json | \[\{sys\_id, display\_value, from\_state, to\_state, transition\_available, automatic\_transition, conditions}] | | `title` | string | Knowledge article title | | `fields` | json | Requested knowledge article field values | ### Update ServiceNow Incident [#update-servicenow-incident] Update fields on an existing ServiceNow incident. Only the fields you supply are changed. Reference fields take sys\_ids unless input display value is enabled. #### Input [#input-11] | Parameter | Type | Required | Description | | ------------------- | ------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `instanceUrl` | string | Yes | ServiceNow instance URL (e.g., [https://instance.service-now.com](https://instance.service-now.com)) | | `username` | string | Yes | ServiceNow username | | `password` | string | Yes | ServiceNow password | | `sysId` | string | Yes | sys\_id of the record to update. If you only have the record number, look it up first (for example with Get ServiceNow Incident). | | `shortDescription` | string | No | New short description. | | `description` | string | No | New detailed description. | | `state` | string | No | Incident state coded value. Base system: 1=New, 2=In Progress, 3=On Hold, 6=Resolved, 7=Closed, 8=Canceled. Use Resolve or Close ServiceNow Incident for those transitions so the resolution fields are populated. | | `impact` | string | No | Impact: 1 (High), 2 (Medium), or 3 (Low). | | `urgency` | string | No | Urgency: 1 (High), 2 (Medium), or 3 (Low). | | `priority` | string | No | Priority coded value 1-5 (1 Critical … 5 Planning). | | `category` | string | No | Category. | | `subcategory` | string | No | Subcategory. | | `assignmentGroup` | string | No | Assignment group (assignment\_group) — sys\_id of the sys\_user\_group. | | `assignedTo` | string | No | Assigned to (assigned\_to) — sys\_id of the sys\_user. | | `cmdbCi` | string | No | Configuration item (cmdb\_ci) — sys\_id of the affected CI. | | `workNotes` | string | No | Internal work note to append. | | `comments` | string | No | Customer-visible additional comment to append. | | `additionalFields` | json | No | Any other ServiceNow fields to set, as a JSON object of raw column names (e.g., \{"correlation\_id": "abc-123", "u\_custom": "x"}). Merged last, so it overrides the named parameters. | | `fields` | string | No | Comma-separated list of fields to return (e.g., number,short\_description,state). Returns all fields when omitted. | | `displayValue` | string | No | How reference and choice fields are returned: "all" (default — both the sys\_id and the label, as \{value, display\_value}), "true" (labels only), or "false" (raw sys\_ids and coded values only). | | `inputDisplayValue` | boolean | No | Set to true to write display names into reference fields (e.g., assigned\_to: "Beth Anglin") and let ServiceNow resolve them to sys\_ids. Defaults to false, meaning reference fields must be sys\_ids. Note that true also reinterprets date and time values in the requesting user's timezone rather than GMT. | #### Output [#output-11] | Parameter | Type | Description | | ------------------- | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `record` | json | Single ServiceNow record | | `records` | json | Array of ServiceNow records | | `success` | boolean | Operation success status | | `metadata` | json | Operation metadata | | `result` | json | Aggregate result (stats or grouped array) | | `count` | number | Aggregate matching record count | | `attachments` | json | Attachment metadata list — record attachments (sys\_id, file\_name, content\_type, download\_link) or knowledge article attachments (sys\_id, file\_name, size\_bytes, state) | | `file` | file | Downloaded attachment file | | `content` | string | HTML body of a knowledge article | | `attachment` | json | Uploaded attachment metadata | | `tasks` | json | Change tasks belonging to a change request. Unlike the Table API operations, the Change Management API always returns every field as \{value, display\_value} regardless of the display value setting | | `items` | json | Service catalog items | | `articles` | json | Knowledge article search results | | `attributes` | json | Configuration item attributes | | `inboundRelations` | json | Inbound CI relationships | | `outboundRelations` | json | Outbound CI relationships | | `sysId` | string | sys\_id returned by the operation | | `number` | string | Record number returned by the operation | | `requestNumber` | string | Catalog request number | | `requestId` | string | sys\_id of the catalog request | | `table` | string | Table the catalog request was created on | | `availableStates` | json | State coded values a change request can reach, including its current state | | `allowedStates` | json | State coded values whose transition conditions the change request already meets | | `stateLabels` | json | This instance's own map of state coded value to label, e.g. \{'0': 'Review'} | | `stateTransitions` | json | \[\{sys\_id, display\_value, from\_state, to\_state, transition\_available, automatic\_transition, conditions}] | | `title` | string | Knowledge article title | | `fields` | json | Requested knowledge article field values | ### Resolve ServiceNow Incident [#resolve-servicenow-incident] Move a ServiceNow incident to Resolved (state 6) with a resolution code and resolution notes. #### Input [#input-12] | Parameter | Type | Required | Description | | ------------------- | ------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `instanceUrl` | string | Yes | ServiceNow instance URL (e.g., [https://instance.service-now.com](https://instance.service-now.com)) | | `username` | string | Yes | ServiceNow username | | `password` | string | Yes | ServiceNow password | | `sysId` | string | Yes | sys\_id of the record to update. If you only have the record number, look it up first (for example with Get ServiceNow Incident). | | `closeCode` | string | Yes | Resolution code (close\_code). This is a choice field whose values are configured per instance — read the choice list on your incident table and pass one of its values. | | `closeNotes` | string | Yes | Resolution notes (close\_notes) documenting how the incident was resolved. | | `workNotes` | string | No | Additional internal work note to append. | | `additionalFields` | json | No | Any other ServiceNow fields to set, as a JSON object of raw column names (e.g., \{"correlation\_id": "abc-123", "u\_custom": "x"}). Merged last, so it overrides the named parameters. | | `fields` | string | No | Comma-separated list of fields to return (e.g., number,short\_description,state). Returns all fields when omitted. | | `displayValue` | string | No | How reference and choice fields are returned: "all" (default — both the sys\_id and the label, as \{value, display\_value}), "true" (labels only), or "false" (raw sys\_ids and coded values only). | | `inputDisplayValue` | boolean | No | Set to true to write display names into reference fields (e.g., assigned\_to: "Beth Anglin") and let ServiceNow resolve them to sys\_ids. Defaults to false, meaning reference fields must be sys\_ids. Note that true also reinterprets date and time values in the requesting user's timezone rather than GMT. | #### Output [#output-12] | Parameter | Type | Description | | ------------------- | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `record` | json | Single ServiceNow record | | `records` | json | Array of ServiceNow records | | `success` | boolean | Operation success status | | `metadata` | json | Operation metadata | | `result` | json | Aggregate result (stats or grouped array) | | `count` | number | Aggregate matching record count | | `attachments` | json | Attachment metadata list — record attachments (sys\_id, file\_name, content\_type, download\_link) or knowledge article attachments (sys\_id, file\_name, size\_bytes, state) | | `file` | file | Downloaded attachment file | | `content` | string | HTML body of a knowledge article | | `attachment` | json | Uploaded attachment metadata | | `tasks` | json | Change tasks belonging to a change request. Unlike the Table API operations, the Change Management API always returns every field as \{value, display\_value} regardless of the display value setting | | `items` | json | Service catalog items | | `articles` | json | Knowledge article search results | | `attributes` | json | Configuration item attributes | | `inboundRelations` | json | Inbound CI relationships | | `outboundRelations` | json | Outbound CI relationships | | `sysId` | string | sys\_id returned by the operation | | `number` | string | Record number returned by the operation | | `requestNumber` | string | Catalog request number | | `requestId` | string | sys\_id of the catalog request | | `table` | string | Table the catalog request was created on | | `availableStates` | json | State coded values a change request can reach, including its current state | | `allowedStates` | json | State coded values whose transition conditions the change request already meets | | `stateLabels` | json | This instance's own map of state coded value to label, e.g. \{'0': 'Review'} | | `stateTransitions` | json | \[\{sys\_id, display\_value, from\_state, to\_state, transition\_available, automatic\_transition, conditions}] | | `title` | string | Knowledge article title | | `fields` | json | Requested knowledge article field values | ### Close ServiceNow Incident [#close-servicenow-incident] Move a ServiceNow incident to Closed (state 7) with a resolution code and resolution notes. Which roles may close an incident is instance-configurable, so the credential may need elevated rights. #### Input [#input-13] | Parameter | Type | Required | Description | | ------------------- | ------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `instanceUrl` | string | Yes | ServiceNow instance URL (e.g., [https://instance.service-now.com](https://instance.service-now.com)) | | `username` | string | Yes | ServiceNow username | | `password` | string | Yes | ServiceNow password | | `sysId` | string | Yes | sys\_id of the record to update. If you only have the record number, look it up first (for example with Get ServiceNow Incident). | | `closeCode` | string | Yes | Resolution code (close\_code). This is a choice field whose values are configured per instance — read the choice list on your incident table and pass one of its values. | | `closeNotes` | string | Yes | Resolution notes (close\_notes) documenting how the incident was resolved. | | `workNotes` | string | No | Additional internal work note to append. | | `additionalFields` | json | No | Any other ServiceNow fields to set, as a JSON object of raw column names (e.g., \{"correlation\_id": "abc-123", "u\_custom": "x"}). Merged last, so it overrides the named parameters. | | `fields` | string | No | Comma-separated list of fields to return (e.g., number,short\_description,state). Returns all fields when omitted. | | `displayValue` | string | No | How reference and choice fields are returned: "all" (default — both the sys\_id and the label, as \{value, display\_value}), "true" (labels only), or "false" (raw sys\_ids and coded values only). | | `inputDisplayValue` | boolean | No | Set to true to write display names into reference fields (e.g., assigned\_to: "Beth Anglin") and let ServiceNow resolve them to sys\_ids. Defaults to false, meaning reference fields must be sys\_ids. Note that true also reinterprets date and time values in the requesting user's timezone rather than GMT. | #### Output [#output-13] | Parameter | Type | Description | | ------------------- | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `record` | json | Single ServiceNow record | | `records` | json | Array of ServiceNow records | | `success` | boolean | Operation success status | | `metadata` | json | Operation metadata | | `result` | json | Aggregate result (stats or grouped array) | | `count` | number | Aggregate matching record count | | `attachments` | json | Attachment metadata list — record attachments (sys\_id, file\_name, content\_type, download\_link) or knowledge article attachments (sys\_id, file\_name, size\_bytes, state) | | `file` | file | Downloaded attachment file | | `content` | string | HTML body of a knowledge article | | `attachment` | json | Uploaded attachment metadata | | `tasks` | json | Change tasks belonging to a change request. Unlike the Table API operations, the Change Management API always returns every field as \{value, display\_value} regardless of the display value setting | | `items` | json | Service catalog items | | `articles` | json | Knowledge article search results | | `attributes` | json | Configuration item attributes | | `inboundRelations` | json | Inbound CI relationships | | `outboundRelations` | json | Outbound CI relationships | | `sysId` | string | sys\_id returned by the operation | | `number` | string | Record number returned by the operation | | `requestNumber` | string | Catalog request number | | `requestId` | string | sys\_id of the catalog request | | `table` | string | Table the catalog request was created on | | `availableStates` | json | State coded values a change request can reach, including its current state | | `allowedStates` | json | State coded values whose transition conditions the change request already meets | | `stateLabels` | json | This instance's own map of state coded value to label, e.g. \{'0': 'Review'} | | `stateTransitions` | json | \[\{sys\_id, display\_value, from\_state, to\_state, transition\_available, automatic\_transition, conditions}] | | `title` | string | Knowledge article title | | `fields` | json | Requested knowledge article field values | ### Add ServiceNow Incident Comment [#add-servicenow-incident-comment] Append an internal work note or a customer-visible additional comment to a ServiceNow incident. Both are journal fields, so the text is appended rather than replacing earlier entries. #### Input [#input-14] | Parameter | Type | Required | Description | | ------------------- | ------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `instanceUrl` | string | Yes | ServiceNow instance URL (e.g., [https://instance.service-now.com](https://instance.service-now.com)) | | `username` | string | Yes | ServiceNow username | | `password` | string | Yes | ServiceNow password | | `sysId` | string | Yes | sys\_id of the record to update. If you only have the record number, look it up first (for example with Get ServiceNow Incident). | | `comment` | string | Yes | Text to append to the journal field. | | `commentField` | string | No | Which journal field to write to: "work\_notes" for an internal note (default) or "comments" for a customer-visible additional comment. | | `fields` | string | No | Comma-separated list of fields to return (e.g., number,short\_description,state). Returns all fields when omitted. | | `displayValue` | string | No | How reference and choice fields are returned: "all" (default — both the sys\_id and the label, as \{value, display\_value}), "true" (labels only), or "false" (raw sys\_ids and coded values only). | | `inputDisplayValue` | boolean | No | Set to true to write display names into reference fields (e.g., assigned\_to: "Beth Anglin") and let ServiceNow resolve them to sys\_ids. Defaults to false, meaning reference fields must be sys\_ids. Note that true also reinterprets date and time values in the requesting user's timezone rather than GMT. | #### Output [#output-14] | Parameter | Type | Description | | ------------------- | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `record` | json | Single ServiceNow record | | `records` | json | Array of ServiceNow records | | `success` | boolean | Operation success status | | `metadata` | json | Operation metadata | | `result` | json | Aggregate result (stats or grouped array) | | `count` | number | Aggregate matching record count | | `attachments` | json | Attachment metadata list — record attachments (sys\_id, file\_name, content\_type, download\_link) or knowledge article attachments (sys\_id, file\_name, size\_bytes, state) | | `file` | file | Downloaded attachment file | | `content` | string | HTML body of a knowledge article | | `attachment` | json | Uploaded attachment metadata | | `tasks` | json | Change tasks belonging to a change request. Unlike the Table API operations, the Change Management API always returns every field as \{value, display\_value} regardless of the display value setting | | `items` | json | Service catalog items | | `articles` | json | Knowledge article search results | | `attributes` | json | Configuration item attributes | | `inboundRelations` | json | Inbound CI relationships | | `outboundRelations` | json | Outbound CI relationships | | `sysId` | string | sys\_id returned by the operation | | `number` | string | Record number returned by the operation | | `requestNumber` | string | Catalog request number | | `requestId` | string | sys\_id of the catalog request | | `table` | string | Table the catalog request was created on | | `availableStates` | json | State coded values a change request can reach, including its current state | | `allowedStates` | json | State coded values whose transition conditions the change request already meets | | `stateLabels` | json | This instance's own map of state coded value to label, e.g. \{'0': 'Review'} | | `stateTransitions` | json | \[\{sys\_id, display\_value, from\_state, to\_state, transition\_available, automatic\_transition, conditions}] | | `title` | string | Knowledge article title | | `fields` | json | Requested knowledge article field values | ### Create ServiceNow Change Request [#create-servicenow-change-request] Create a change request in ServiceNow. Reference fields (assignment group, assigned to, requested by, configuration item) take sys\_ids unless input display value is enabled. #### Input [#input-15] | Parameter | Type | Required | Description | | -------------------- | ------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `instanceUrl` | string | Yes | ServiceNow instance URL (e.g., [https://instance.service-now.com](https://instance.service-now.com)) | | `username` | string | Yes | ServiceNow username | | `password` | string | Yes | ServiceNow password | | `shortDescription` | string | Yes | Short description — the one-line summary of the change. | | `description` | string | No | Detailed description of the change. | | `type` | string | No | Change type: "normal", "standard", or "emergency". | | `category` | string | No | Change category. | | `risk` | string | No | Risk coded value. The choice list is configured per instance. | | `impact` | string | No | Impact: 1 (High), 2 (Medium), or 3 (Low). | | `priority` | string | No | Priority coded value 1-5 (1 Critical … 5 Planning). | | `assignmentGroup` | string | No | Assignment group (assignment\_group) — sys\_id of the sys\_user\_group. | | `assignedTo` | string | No | Assigned to (assigned\_to) — sys\_id of the sys\_user. | | `requestedBy` | string | No | Requested by (requested\_by) — sys\_id of the sys\_user. | | `cmdbCi` | string | No | Configuration item (cmdb\_ci) — sys\_id of the CI being changed. | | `startDate` | string | No | Planned start date (start\_date) as "YYYY-MM-DD HH:mm:ss" in UTC. | | `endDate` | string | No | Planned end date (end\_date) as "YYYY-MM-DD HH:mm:ss" in UTC. | | `justification` | string | No | Justification for making the change. | | `implementationPlan` | string | No | Implementation plan. | | `backoutPlan` | string | No | Backout plan. | | `testPlan` | string | No | Test plan. | | `additionalFields` | json | No | Any other ServiceNow fields to set, as a JSON object of raw column names (e.g., \{"correlation\_id": "abc-123", "u\_custom": "x"}). Merged last, so it overrides the named parameters. | | `fields` | string | No | Comma-separated list of fields to return (e.g., number,short\_description,state). Returns all fields when omitted. | | `displayValue` | string | No | How reference and choice fields are returned: "all" (default — both the sys\_id and the label, as \{value, display\_value}), "true" (labels only), or "false" (raw sys\_ids and coded values only). | | `inputDisplayValue` | boolean | No | Set to true to write display names into reference fields (e.g., assigned\_to: "Beth Anglin") and let ServiceNow resolve them to sys\_ids. Defaults to false, meaning reference fields must be sys\_ids. Note that true also reinterprets date and time values in the requesting user's timezone rather than GMT. | #### Output [#output-15] | Parameter | Type | Description | | ------------------- | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `record` | json | Single ServiceNow record | | `records` | json | Array of ServiceNow records | | `success` | boolean | Operation success status | | `metadata` | json | Operation metadata | | `result` | json | Aggregate result (stats or grouped array) | | `count` | number | Aggregate matching record count | | `attachments` | json | Attachment metadata list — record attachments (sys\_id, file\_name, content\_type, download\_link) or knowledge article attachments (sys\_id, file\_name, size\_bytes, state) | | `file` | file | Downloaded attachment file | | `content` | string | HTML body of a knowledge article | | `attachment` | json | Uploaded attachment metadata | | `tasks` | json | Change tasks belonging to a change request. Unlike the Table API operations, the Change Management API always returns every field as \{value, display\_value} regardless of the display value setting | | `items` | json | Service catalog items | | `articles` | json | Knowledge article search results | | `attributes` | json | Configuration item attributes | | `inboundRelations` | json | Inbound CI relationships | | `outboundRelations` | json | Outbound CI relationships | | `sysId` | string | sys\_id returned by the operation | | `number` | string | Record number returned by the operation | | `requestNumber` | string | Catalog request number | | `requestId` | string | sys\_id of the catalog request | | `table` | string | Table the catalog request was created on | | `availableStates` | json | State coded values a change request can reach, including its current state | | `allowedStates` | json | State coded values whose transition conditions the change request already meets | | `stateLabels` | json | This instance's own map of state coded value to label, e.g. \{'0': 'Review'} | | `stateTransitions` | json | \[\{sys\_id, display\_value, from\_state, to\_state, transition\_available, automatic\_transition, conditions}] | | `title` | string | Knowledge article title | | `fields` | json | Requested knowledge article field values | ### Get ServiceNow Change Request [#get-servicenow-change-request] Retrieve a single ServiceNow change request by number (e.g., CHG0030001) or sys\_id. Reference fields are returned with both their sys\_id and their label by default. #### Input [#input-16] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `instanceUrl` | string | Yes | ServiceNow instance URL (e.g., [https://instance.service-now.com](https://instance.service-now.com)) | | `username` | string | Yes | ServiceNow username | | `password` | string | Yes | ServiceNow password | | `sysId` | string | No | Record sys\_id. Provide either this or the record number. | | `number` | string | No | Record number (e.g., INC0010001). Provide either this or the sys\_id. | | `fields` | string | No | Comma-separated list of fields to return (e.g., number,short\_description,state). Returns all fields when omitted. | | `displayValue` | string | No | How reference and choice fields are returned: "all" (default — both the sys\_id and the label, as \{value, display\_value}), "true" (labels only), or "false" (raw sys\_ids and coded values only). | #### Output [#output-16] | Parameter | Type | Description | | ------------------- | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `record` | json | Single ServiceNow record | | `records` | json | Array of ServiceNow records | | `success` | boolean | Operation success status | | `metadata` | json | Operation metadata | | `result` | json | Aggregate result (stats or grouped array) | | `count` | number | Aggregate matching record count | | `attachments` | json | Attachment metadata list — record attachments (sys\_id, file\_name, content\_type, download\_link) or knowledge article attachments (sys\_id, file\_name, size\_bytes, state) | | `file` | file | Downloaded attachment file | | `content` | string | HTML body of a knowledge article | | `attachment` | json | Uploaded attachment metadata | | `tasks` | json | Change tasks belonging to a change request. Unlike the Table API operations, the Change Management API always returns every field as \{value, display\_value} regardless of the display value setting | | `items` | json | Service catalog items | | `articles` | json | Knowledge article search results | | `attributes` | json | Configuration item attributes | | `inboundRelations` | json | Inbound CI relationships | | `outboundRelations` | json | Outbound CI relationships | | `sysId` | string | sys\_id returned by the operation | | `number` | string | Record number returned by the operation | | `requestNumber` | string | Catalog request number | | `requestId` | string | sys\_id of the catalog request | | `table` | string | Table the catalog request was created on | | `availableStates` | json | State coded values a change request can reach, including its current state | | `allowedStates` | json | State coded values whose transition conditions the change request already meets | | `stateLabels` | json | This instance's own map of state coded value to label, e.g. \{'0': 'Review'} | | `stateTransitions` | json | \[\{sys\_id, display\_value, from\_state, to\_state, transition\_available, automatic\_transition, conditions}] | | `title` | string | Knowledge article title | | `fields` | json | Requested knowledge article field values | ### List ServiceNow Change Requests [#list-servicenow-change-requests] Search ServiceNow change requests by state, type, risk, assignment, or text. All filters are ANDed together. #### Input [#input-17] | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `instanceUrl` | string | Yes | ServiceNow instance URL (e.g., [https://instance.service-now.com](https://instance.service-now.com)) | | `username` | string | Yes | ServiceNow username | | `password` | string | Yes | ServiceNow password | | `searchText` | string | No | Text to match against the change short description using the ServiceNow LIKE operator, which matches anywhere in the field. | | `state` | string | No | Change state coded value. Base system: -5=New, -4=Assess, -3=Authorize, -2=Scheduled, -1=Implement, 0=Review, 3=Closed, 4=Canceled. | | `type` | string | No | Change type: "normal", "standard", or "emergency". | | `risk` | string | No | Risk coded value. The choice list is configured per instance. | | `assignmentGroup` | string | No | sys\_id of the assignment group. | | `assignedTo` | string | No | sys\_id of the assigned user. | | `active` | string | No | Restrict to active ("true") or inactive ("false") change requests. | | `query` | string | No | Additional ServiceNow encoded query, ANDed with the other filters (e.g., "opened\_at>=javascript:gs.beginningOfLastMonth()"). | | `limit` | number | No | Maximum number of records to return (sysparm\_limit). Omitting it sends no limit at all, and the Table API then applies its own default of 10,000 records, so always set it to what you will actually read. | | `offset` | number | No | Number of records to skip for pagination (sysparm\_offset). | | `fields` | string | No | Comma-separated list of fields to return (e.g., number,short\_description,state). Returns all fields when omitted. | | `displayValue` | string | No | How reference and choice fields are returned: "all" (default — both the sys\_id and the label, as \{value, display\_value}), "true" (labels only), or "false" (raw sys\_ids and coded values only). | #### Output [#output-17] | Parameter | Type | Description | | ------------------- | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `record` | json | Single ServiceNow record | | `records` | json | Array of ServiceNow records | | `success` | boolean | Operation success status | | `metadata` | json | Operation metadata | | `result` | json | Aggregate result (stats or grouped array) | | `count` | number | Aggregate matching record count | | `attachments` | json | Attachment metadata list — record attachments (sys\_id, file\_name, content\_type, download\_link) or knowledge article attachments (sys\_id, file\_name, size\_bytes, state) | | `file` | file | Downloaded attachment file | | `content` | string | HTML body of a knowledge article | | `attachment` | json | Uploaded attachment metadata | | `tasks` | json | Change tasks belonging to a change request. Unlike the Table API operations, the Change Management API always returns every field as \{value, display\_value} regardless of the display value setting | | `items` | json | Service catalog items | | `articles` | json | Knowledge article search results | | `attributes` | json | Configuration item attributes | | `inboundRelations` | json | Inbound CI relationships | | `outboundRelations` | json | Outbound CI relationships | | `sysId` | string | sys\_id returned by the operation | | `number` | string | Record number returned by the operation | | `requestNumber` | string | Catalog request number | | `requestId` | string | sys\_id of the catalog request | | `table` | string | Table the catalog request was created on | | `availableStates` | json | State coded values a change request can reach, including its current state | | `allowedStates` | json | State coded values whose transition conditions the change request already meets | | `stateLabels` | json | This instance's own map of state coded value to label, e.g. \{'0': 'Review'} | | `stateTransitions` | json | \[\{sys\_id, display\_value, from\_state, to\_state, transition\_available, automatic\_transition, conditions}] | | `title` | string | Knowledge article title | | `fields` | json | Requested knowledge article field values | ### Update ServiceNow Change Request [#update-servicenow-change-request] Update fields on an existing ServiceNow change request. Only the fields you supply are changed. Use Move ServiceNow Change State for state transitions. #### Input [#input-18] | Parameter | Type | Required | Description | | ------------------- | ------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `instanceUrl` | string | Yes | ServiceNow instance URL (e.g., [https://instance.service-now.com](https://instance.service-now.com)) | | `username` | string | Yes | ServiceNow username | | `password` | string | Yes | ServiceNow password | | `sysId` | string | Yes | sys\_id of the record to update. If you only have the record number, look it up first (for example with Get ServiceNow Incident). | | `shortDescription` | string | No | New short description. | | `description` | string | No | New detailed description. | | `state` | string | No | Change state coded value. Base system: -5=New, -4=Assess, -3=Authorize, -2=Scheduled, -1=Implement, 0=Review, 3=Closed, 4=Canceled. | | `risk` | string | No | Risk coded value. The choice list is configured per instance. | | `impact` | string | No | Impact: 1 (High), 2 (Medium), or 3 (Low). | | `priority` | string | No | Priority coded value 1-5 (1 Critical … 5 Planning). | | `assignmentGroup` | string | No | Assignment group (assignment\_group) — sys\_id of the sys\_user\_group. | | `assignedTo` | string | No | Assigned to (assigned\_to) — sys\_id of the sys\_user. | | `startDate` | string | No | Planned start date (start\_date) as "YYYY-MM-DD HH:mm:ss" in UTC. | | `endDate` | string | No | Planned end date (end\_date) as "YYYY-MM-DD HH:mm:ss" in UTC. | | `closeCode` | string | No | Close code: "successful", "successful\_issues", or "unsuccessful". Required when closing a change. | | `closeNotes` | string | No | Close notes describing the outcome of the change. | | `workNotes` | string | No | Internal work note to append. | | `additionalFields` | json | No | Any other ServiceNow fields to set, as a JSON object of raw column names (e.g., \{"correlation\_id": "abc-123", "u\_custom": "x"}). Merged last, so it overrides the named parameters. | | `fields` | string | No | Comma-separated list of fields to return (e.g., number,short\_description,state). Returns all fields when omitted. | | `displayValue` | string | No | How reference and choice fields are returned: "all" (default — both the sys\_id and the label, as \{value, display\_value}), "true" (labels only), or "false" (raw sys\_ids and coded values only). | | `inputDisplayValue` | boolean | No | Set to true to write display names into reference fields (e.g., assigned\_to: "Beth Anglin") and let ServiceNow resolve them to sys\_ids. Defaults to false, meaning reference fields must be sys\_ids. Note that true also reinterprets date and time values in the requesting user's timezone rather than GMT. | #### Output [#output-18] | Parameter | Type | Description | | ------------------- | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `record` | json | Single ServiceNow record | | `records` | json | Array of ServiceNow records | | `success` | boolean | Operation success status | | `metadata` | json | Operation metadata | | `result` | json | Aggregate result (stats or grouped array) | | `count` | number | Aggregate matching record count | | `attachments` | json | Attachment metadata list — record attachments (sys\_id, file\_name, content\_type, download\_link) or knowledge article attachments (sys\_id, file\_name, size\_bytes, state) | | `file` | file | Downloaded attachment file | | `content` | string | HTML body of a knowledge article | | `attachment` | json | Uploaded attachment metadata | | `tasks` | json | Change tasks belonging to a change request. Unlike the Table API operations, the Change Management API always returns every field as \{value, display\_value} regardless of the display value setting | | `items` | json | Service catalog items | | `articles` | json | Knowledge article search results | | `attributes` | json | Configuration item attributes | | `inboundRelations` | json | Inbound CI relationships | | `outboundRelations` | json | Outbound CI relationships | | `sysId` | string | sys\_id returned by the operation | | `number` | string | Record number returned by the operation | | `requestNumber` | string | Catalog request number | | `requestId` | string | sys\_id of the catalog request | | `table` | string | Table the catalog request was created on | | `availableStates` | json | State coded values a change request can reach, including its current state | | `allowedStates` | json | State coded values whose transition conditions the change request already meets | | `stateLabels` | json | This instance's own map of state coded value to label, e.g. \{'0': 'Review'} | | `stateTransitions` | json | \[\{sys\_id, display\_value, from\_state, to\_state, transition\_available, automatic\_transition, conditions}] | | `title` | string | Knowledge article title | | `fields` | json | Requested knowledge article field values | ### Move ServiceNow Change State [#move-servicenow-change-state] Move a ServiceNow change request to another state. Base-system change model states are -5=New, -4=Assess, -3=Authorize, -2=Scheduled, -1=Implement, 0=Review, 3=Closed, 4=Canceled. The state machine rejects transitions whose conditions are not met. #### Input [#input-19] | Parameter | Type | Required | Description | | ------------------- | ------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `instanceUrl` | string | Yes | ServiceNow instance URL (e.g., [https://instance.service-now.com](https://instance.service-now.com)) | | `username` | string | Yes | ServiceNow username | | `password` | string | Yes | ServiceNow password | | `sysId` | string | Yes | sys\_id of the record to update. If you only have the record number, look it up first (for example with Get ServiceNow Incident). | | `state` | string | Yes | Target state coded value: -5 (New), -4 (Assess), -3 (Authorize), -2 (Scheduled), -1 (Implement), 0 (Review), 3 (Closed), or 4 (Canceled). | | `closeCode` | string | No | Close code, required when moving to Closed (3): "successful", "successful\_issues", or "unsuccessful". | | `closeNotes` | string | No | Close notes describing the outcome of the change. | | `workNotes` | string | No | Internal work note explaining the transition. | | `additionalFields` | json | No | Any other ServiceNow fields to set, as a JSON object of raw column names (e.g., \{"correlation\_id": "abc-123", "u\_custom": "x"}). Merged last, so it overrides the named parameters. | | `fields` | string | No | Comma-separated list of fields to return (e.g., number,short\_description,state). Returns all fields when omitted. | | `displayValue` | string | No | How reference and choice fields are returned: "all" (default — both the sys\_id and the label, as \{value, display\_value}), "true" (labels only), or "false" (raw sys\_ids and coded values only). | | `inputDisplayValue` | boolean | No | Set to true to write display names into reference fields (e.g., assigned\_to: "Beth Anglin") and let ServiceNow resolve them to sys\_ids. Defaults to false, meaning reference fields must be sys\_ids. Note that true also reinterprets date and time values in the requesting user's timezone rather than GMT. | #### Output [#output-19] | Parameter | Type | Description | | ------------------- | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `record` | json | Single ServiceNow record | | `records` | json | Array of ServiceNow records | | `success` | boolean | Operation success status | | `metadata` | json | Operation metadata | | `result` | json | Aggregate result (stats or grouped array) | | `count` | number | Aggregate matching record count | | `attachments` | json | Attachment metadata list — record attachments (sys\_id, file\_name, content\_type, download\_link) or knowledge article attachments (sys\_id, file\_name, size\_bytes, state) | | `file` | file | Downloaded attachment file | | `content` | string | HTML body of a knowledge article | | `attachment` | json | Uploaded attachment metadata | | `tasks` | json | Change tasks belonging to a change request. Unlike the Table API operations, the Change Management API always returns every field as \{value, display\_value} regardless of the display value setting | | `items` | json | Service catalog items | | `articles` | json | Knowledge article search results | | `attributes` | json | Configuration item attributes | | `inboundRelations` | json | Inbound CI relationships | | `outboundRelations` | json | Outbound CI relationships | | `sysId` | string | sys\_id returned by the operation | | `number` | string | Record number returned by the operation | | `requestNumber` | string | Catalog request number | | `requestId` | string | sys\_id of the catalog request | | `table` | string | Table the catalog request was created on | | `availableStates` | json | State coded values a change request can reach, including its current state | | `allowedStates` | json | State coded values whose transition conditions the change request already meets | | `stateLabels` | json | This instance's own map of state coded value to label, e.g. \{'0': 'Review'} | | `stateTransitions` | json | \[\{sys\_id, display\_value, from\_state, to\_state, transition\_available, automatic\_transition, conditions}] | | `title` | string | Knowledge article title | | `fields` | json | Requested knowledge article field values | ### List ServiceNow Change Tasks [#list-servicenow-change-tasks] List the change tasks belonging to a ServiceNow change request, via the Change Management API. Every field is returned as \{value, display\_value}, so a reference field carries both its sys\_id and its label. This endpoint is not the Table API: the shape is fixed with no display-value option, and the results come back under `tasks` rather than the `records` the other list operations use. #### Input [#input-20] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------- | | `instanceUrl` | string | Yes | ServiceNow instance URL (e.g., [https://instance.service-now.com](https://instance.service-now.com)) | | `username` | string | Yes | ServiceNow username | | `password` | string | Yes | ServiceNow password | | `changeSysId` | string | Yes | sys\_id of the change request whose tasks should be listed. | | `query` | string | No | ServiceNow encoded query used to filter the tasks (e.g., "active=true^ORDERBYnumber"). | | `order` | string | No | Field to sort the returned tasks by. | | `limit` | number | No | Maximum number of tasks to return (sysparm\_limit). ServiceNow defaults to 500. | | `offset` | number | No | Number of tasks to skip for pagination (sysparm\_offset). | #### Output [#output-20] | Parameter | Type | Description | | --------------- | ------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `tasks` | array | Change tasks, under `tasks` rather than the `records` key the Table API list operations use. Each field is an object of the form \{value, display\_value} — the Change Management API fixes this shape, so unlike those operations there is no display-value setting. `parent` holds the owning change request. | | `metadata` | json | Operation metadata | | ↳ `recordCount` | number | Number of change tasks returned | ### Get ServiceNow Change Next States [#get-servicenow-change-next-states] Read the states a ServiceNow change request can actually move to next, with the instance's own state-to-label map and the conditions each transition still has to meet. Use this instead of assuming the base-system state codes, which a customized change model can change. #### Input [#input-21] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------- | | `instanceUrl` | string | Yes | ServiceNow instance URL (e.g., [https://instance.service-now.com](https://instance.service-now.com)) | | `username` | string | Yes | ServiceNow username | | `password` | string | Yes | ServiceNow password | | `changeSysId` | string | Yes | sys\_id of the change request. Use Get ServiceNow Change Request to resolve a CHG number to its sys\_id. | #### Output [#output-21] | Parameter | Type | Description | | ------------------------ | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `availableStates` | array | Every state coded value reachable from the change request, including its current state | | `allowedStates` | array | The subset of state coded values whose transition currently reports transition\_available, meaning the change request already meets that transition conditions | | `stateLabels` | json | Map of state coded value to the label this instance uses, e.g. \{'0': 'Review'}. Read the state model from here rather than assuming the base-system codes | | `stateTransitions` | array | Available transitions, flattened from the per-target-state grouping ServiceNow returns. Empty for type-driven and legacy change requests, which do not report conditions | | ↳ `sys_id` | string | Sys\_id of the state transition record on sttrm\_state\_transition | | ↳ `display_value` | string | Human-readable transition name, e.g. "Implement to Review" | | ↳ `from_state` | string | State coded value moved from | | ↳ `to_state` | string | State coded value moved to | | ↳ `transition_available` | boolean | Whether the change request can move to this state right now | | ↳ `automatic_transition` | boolean | Whether the change request moves to this state automatically | | ↳ `conditions` | array | Conditions gating the transition, each with whether it has passed | | ↳ `passed` | boolean | Whether the change request met this condition | | ↳ `condition` | json | The condition as \{name, description, sys\_id} | | `metadata` | json | Operation metadata | | ↳ `transitionCount` | number | Number of transitions returned | ### List ServiceNow Catalog Items [#list-servicenow-catalog-items] Browse or search the ServiceNow service catalog. Returns each item with its sys\_id, name, description, type, category, and catalogs, which is what Order ServiceNow Catalog Item needs. #### Input [#input-22] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------- | | `instanceUrl` | string | Yes | ServiceNow instance URL (e.g., [https://instance.service-now.com](https://instance.service-now.com)) | | `username` | string | Yes | ServiceNow username | | `password` | string | Yes | ServiceNow password | | `searchText` | string | No | Text to search for in the catalog items (e.g., "iPhone"). | | `catalogSysId` | string | No | Restrict results to a specific catalog, by catalog sys\_id. | | `categorySysId` | string | No | Restrict results to a specific category, by category sys\_id. | | `limit` | number | No | Maximum number of items to return (sysparm\_limit). | | `offset` | number | No | Number of items to skip for pagination (sysparm\_offset). | #### Output [#output-22] | Parameter | Type | Description | | --------------------- | ------- | ---------------------------------------------------- | | `items` | array | Catalog items | | ↳ `sys_id` | string | Catalog item sys\_id, used to order the item | | ↳ `name` | string | Catalog item name | | ↳ `short_description` | string | Short description | | ↳ `description` | string | HTML description | | ↳ `type` | string | Item type, e.g., record\_producer or catalog\_item | | ↳ `sys_class_name` | string | Item table | | ↳ `category` | json | Category \{sys\_id, title} | | ↳ `catalogs` | json | Catalogs the item belongs to, each \{sys\_id, title} | | ↳ `picture` | string | Item picture reference | | ↳ `icon` | string | Item icon reference | | ↳ `order` | number | Display order | | ↳ `price` | string | Item price | | ↳ `show_price` | boolean | Whether the price is shown | | ↳ `show_quantity` | boolean | Whether a quantity can be chosen when ordering | | ↳ `content_type` | string | Content type for content items | | ↳ `url` | string | Target URL for content items | | ↳ `kb_article` | string | sys\_id of the knowledge article backing the item | | `metadata` | json | Operation metadata | | ↳ `recordCount` | number | Number of catalog items returned | ### Order ServiceNow Catalog Item [#order-servicenow-catalog-item] Submit a service catalog request for a catalog item using the Service Catalog API order\_now endpoint. Returns the generated request number and sys\_id. #### Input [#input-23] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `instanceUrl` | string | Yes | ServiceNow instance URL (e.g., [https://instance.service-now.com](https://instance.service-now.com)) | | `username` | string | Yes | ServiceNow username | | `password` | string | Yes | ServiceNow password | | `catalogItemSysId` | string | Yes | sys\_id of the catalog item to order. Use List ServiceNow Catalog Items to find it. | | `quantity` | number | No | Quantity to order. Must not be negative. Defaults to 1. | | `requestedFor` | string | No | sys\_id of the sys\_user the item is ordered for. Ordering on behalf of another user is governed by the glide.sc.req\_for.roles instance properties. | | `variables` | json | No | Name-value pairs for the catalog item variables, as a JSON object (e.g., \{"data\_plan": "500MB"}). All variables the item marks mandatory must be supplied. | #### Output [#output-23] | Parameter | Type | Description | | --------------- | ------ | ------------------------------- | | `sysId` | string | Sys\_id of the order | | `number` | string | Number of the generated request | | `requestNumber` | string | Request number | | `requestId` | string | Sys\_id of the order request | | `table` | string | Table name of the request | ### List ServiceNow Requested Items [#list-servicenow-requested-items] List requested items (RITMs) from the ServiceNow Requested Item \[sc\_req\_item] table, optionally scoped to a parent request or a catalog item. To scope by requester, pass an encoded query against the parent request, for example "request.requested\_for=\". #### Input [#input-24] | Parameter | Type | Required | Description | | ------------------ | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `instanceUrl` | string | Yes | ServiceNow instance URL (e.g., [https://instance.service-now.com](https://instance.service-now.com)) | | `username` | string | Yes | ServiceNow username | | `password` | string | Yes | ServiceNow password | | `requestSysId` | string | No | sys\_id of the parent request (sc\_request) whose items should be listed. | | `catalogItemSysId` | string | No | sys\_id of the catalog item (cat\_item) to filter by. | | `active` | string | No | Restrict to active ("true") or inactive ("false") requested items. | | `query` | string | No | Additional ServiceNow encoded query, ANDed with the other filters (e.g., "opened\_at>=javascript:gs.beginningOfLastMonth()"). | | `limit` | number | No | Maximum number of records to return (sysparm\_limit). Omitting it sends no limit at all, and the Table API then applies its own default of 10,000 records, so always set it to what you will actually read. | | `offset` | number | No | Number of records to skip for pagination (sysparm\_offset). | | `fields` | string | No | Comma-separated list of fields to return (e.g., number,short\_description,state). Returns all fields when omitted. | | `displayValue` | string | No | How reference and choice fields are returned: "all" (default — both the sys\_id and the label, as \{value, display\_value}), "true" (labels only), or "false" (raw sys\_ids and coded values only). | #### Output [#output-24] | Parameter | Type | Description | | ------------------- | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `record` | json | Single ServiceNow record | | `records` | json | Array of ServiceNow records | | `success` | boolean | Operation success status | | `metadata` | json | Operation metadata | | `result` | json | Aggregate result (stats or grouped array) | | `count` | number | Aggregate matching record count | | `attachments` | json | Attachment metadata list — record attachments (sys\_id, file\_name, content\_type, download\_link) or knowledge article attachments (sys\_id, file\_name, size\_bytes, state) | | `file` | file | Downloaded attachment file | | `content` | string | HTML body of a knowledge article | | `attachment` | json | Uploaded attachment metadata | | `tasks` | json | Change tasks belonging to a change request. Unlike the Table API operations, the Change Management API always returns every field as \{value, display\_value} regardless of the display value setting | | `items` | json | Service catalog items | | `articles` | json | Knowledge article search results | | `attributes` | json | Configuration item attributes | | `inboundRelations` | json | Inbound CI relationships | | `outboundRelations` | json | Outbound CI relationships | | `sysId` | string | sys\_id returned by the operation | | `number` | string | Record number returned by the operation | | `requestNumber` | string | Catalog request number | | `requestId` | string | sys\_id of the catalog request | | `table` | string | Table the catalog request was created on | | `availableStates` | json | State coded values a change request can reach, including its current state | | `allowedStates` | json | State coded values whose transition conditions the change request already meets | | `stateLabels` | json | This instance's own map of state coded value to label, e.g. \{'0': 'Review'} | | `stateTransitions` | json | \[\{sys\_id, display\_value, from\_state, to\_state, transition\_available, automatic\_transition, conditions}] | | `title` | string | Knowledge article title | | `fields` | json | Requested knowledge article field values | ### Get ServiceNow Requested Item [#get-servicenow-requested-item] Retrieve a single ServiceNow requested item (RITM) by number (e.g., RITM0010001) or sys\_id from the Requested Item \[sc\_req\_item] table. #### Input [#input-25] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `instanceUrl` | string | Yes | ServiceNow instance URL (e.g., [https://instance.service-now.com](https://instance.service-now.com)) | | `username` | string | Yes | ServiceNow username | | `password` | string | Yes | ServiceNow password | | `sysId` | string | No | Record sys\_id. Provide either this or the record number. | | `number` | string | No | Record number (e.g., INC0010001). Provide either this or the sys\_id. | | `fields` | string | No | Comma-separated list of fields to return (e.g., number,short\_description,state). Returns all fields when omitted. | | `displayValue` | string | No | How reference and choice fields are returned: "all" (default — both the sys\_id and the label, as \{value, display\_value}), "true" (labels only), or "false" (raw sys\_ids and coded values only). | #### Output [#output-25] | Parameter | Type | Description | | ------------------- | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `record` | json | Single ServiceNow record | | `records` | json | Array of ServiceNow records | | `success` | boolean | Operation success status | | `metadata` | json | Operation metadata | | `result` | json | Aggregate result (stats or grouped array) | | `count` | number | Aggregate matching record count | | `attachments` | json | Attachment metadata list — record attachments (sys\_id, file\_name, content\_type, download\_link) or knowledge article attachments (sys\_id, file\_name, size\_bytes, state) | | `file` | file | Downloaded attachment file | | `content` | string | HTML body of a knowledge article | | `attachment` | json | Uploaded attachment metadata | | `tasks` | json | Change tasks belonging to a change request. Unlike the Table API operations, the Change Management API always returns every field as \{value, display\_value} regardless of the display value setting | | `items` | json | Service catalog items | | `articles` | json | Knowledge article search results | | `attributes` | json | Configuration item attributes | | `inboundRelations` | json | Inbound CI relationships | | `outboundRelations` | json | Outbound CI relationships | | `sysId` | string | sys\_id returned by the operation | | `number` | string | Record number returned by the operation | | `requestNumber` | string | Catalog request number | | `requestId` | string | sys\_id of the catalog request | | `table` | string | Table the catalog request was created on | | `availableStates` | json | State coded values a change request can reach, including its current state | | `allowedStates` | json | State coded values whose transition conditions the change request already meets | | `stateLabels` | json | This instance's own map of state coded value to label, e.g. \{'0': 'Review'} | | `stateTransitions` | json | \[\{sys\_id, display\_value, from\_state, to\_state, transition\_available, automatic\_transition, conditions}] | | `title` | string | Knowledge article title | | `fields` | json | Requested knowledge article field values | ### List ServiceNow Approvals [#list-servicenow-approvals] List approval records from the ServiceNow Approval \[sysapproval\_approver] table. Defaults to the "requested" state, which is what a user's pending approvals look like. #### Input [#input-26] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `instanceUrl` | string | Yes | ServiceNow instance URL (e.g., [https://instance.service-now.com](https://instance.service-now.com)) | | `username` | string | Yes | ServiceNow username | | `password` | string | Yes | ServiceNow password | | `approverSysId` | string | No | sys\_id of the approver (sys\_user) whose approvals should be listed. Use Find ServiceNow User to resolve an email address to a sys\_id. | | `state` | string | No | Approval state: "requested" (pending, the default), "approved", or "rejected". Pass an empty string with a custom query to list every state. | | `approvalFor` | string | No | sys\_id of the record being approved, matched against the sysapproval reference field. | | `query` | string | No | Additional ServiceNow encoded query, ANDed with the other filters (e.g., "opened\_at>=javascript:gs.beginningOfLastMonth()"). | | `limit` | number | No | Maximum number of records to return (sysparm\_limit). Omitting it sends no limit at all, and the Table API then applies its own default of 10,000 records, so always set it to what you will actually read. | | `offset` | number | No | Number of records to skip for pagination (sysparm\_offset). | | `fields` | string | No | Comma-separated list of fields to return (e.g., number,short\_description,state). Returns all fields when omitted. | | `displayValue` | string | No | How reference and choice fields are returned: "all" (default — both the sys\_id and the label, as \{value, display\_value}), "true" (labels only), or "false" (raw sys\_ids and coded values only). | #### Output [#output-26] | Parameter | Type | Description | | ------------------- | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `record` | json | Single ServiceNow record | | `records` | json | Array of ServiceNow records | | `success` | boolean | Operation success status | | `metadata` | json | Operation metadata | | `result` | json | Aggregate result (stats or grouped array) | | `count` | number | Aggregate matching record count | | `attachments` | json | Attachment metadata list — record attachments (sys\_id, file\_name, content\_type, download\_link) or knowledge article attachments (sys\_id, file\_name, size\_bytes, state) | | `file` | file | Downloaded attachment file | | `content` | string | HTML body of a knowledge article | | `attachment` | json | Uploaded attachment metadata | | `tasks` | json | Change tasks belonging to a change request. Unlike the Table API operations, the Change Management API always returns every field as \{value, display\_value} regardless of the display value setting | | `items` | json | Service catalog items | | `articles` | json | Knowledge article search results | | `attributes` | json | Configuration item attributes | | `inboundRelations` | json | Inbound CI relationships | | `outboundRelations` | json | Outbound CI relationships | | `sysId` | string | sys\_id returned by the operation | | `number` | string | Record number returned by the operation | | `requestNumber` | string | Catalog request number | | `requestId` | string | sys\_id of the catalog request | | `table` | string | Table the catalog request was created on | | `availableStates` | json | State coded values a change request can reach, including its current state | | `allowedStates` | json | State coded values whose transition conditions the change request already meets | | `stateLabels` | json | This instance's own map of state coded value to label, e.g. \{'0': 'Review'} | | `stateTransitions` | json | \[\{sys\_id, display\_value, from\_state, to\_state, transition\_available, automatic\_transition, conditions}] | | `title` | string | Knowledge article title | | `fields` | json | Requested knowledge article field values | ### Approve or Reject ServiceNow Approval [#approve-or-reject-servicenow-approval] Approve or reject a ServiceNow approval record by setting its state on the Approval \[sysapproval\_approver] table. #### Input [#input-27] | Parameter | Type | Required | Description | | ------------------- | ------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `instanceUrl` | string | Yes | ServiceNow instance URL (e.g., [https://instance.service-now.com](https://instance.service-now.com)) | | `username` | string | Yes | ServiceNow username | | `password` | string | Yes | ServiceNow password | | `approvalSysId` | string | Yes | sys\_id of the approval record on the sysapproval\_approver table. Use List ServiceNow Approvals to find it. | | `decision` | string | Yes | Decision to record: "approved" or "rejected". | | `comments` | string | No | Comment to record alongside the decision. This is a journal field. | | `fields` | string | No | Comma-separated list of fields to return (e.g., number,short\_description,state). Returns all fields when omitted. | | `displayValue` | string | No | How reference and choice fields are returned: "all" (default — both the sys\_id and the label, as \{value, display\_value}), "true" (labels only), or "false" (raw sys\_ids and coded values only). | | `inputDisplayValue` | boolean | No | Set to true to write display names into reference fields (e.g., assigned\_to: "Beth Anglin") and let ServiceNow resolve them to sys\_ids. Defaults to false, meaning reference fields must be sys\_ids. Note that true also reinterprets date and time values in the requesting user's timezone rather than GMT. | #### Output [#output-27] | Parameter | Type | Description | | ------------------- | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `record` | json | Single ServiceNow record | | `records` | json | Array of ServiceNow records | | `success` | boolean | Operation success status | | `metadata` | json | Operation metadata | | `result` | json | Aggregate result (stats or grouped array) | | `count` | number | Aggregate matching record count | | `attachments` | json | Attachment metadata list — record attachments (sys\_id, file\_name, content\_type, download\_link) or knowledge article attachments (sys\_id, file\_name, size\_bytes, state) | | `file` | file | Downloaded attachment file | | `content` | string | HTML body of a knowledge article | | `attachment` | json | Uploaded attachment metadata | | `tasks` | json | Change tasks belonging to a change request. Unlike the Table API operations, the Change Management API always returns every field as \{value, display\_value} regardless of the display value setting | | `items` | json | Service catalog items | | `articles` | json | Knowledge article search results | | `attributes` | json | Configuration item attributes | | `inboundRelations` | json | Inbound CI relationships | | `outboundRelations` | json | Outbound CI relationships | | `sysId` | string | sys\_id returned by the operation | | `number` | string | Record number returned by the operation | | `requestNumber` | string | Catalog request number | | `requestId` | string | sys\_id of the catalog request | | `table` | string | Table the catalog request was created on | | `availableStates` | json | State coded values a change request can reach, including its current state | | `allowedStates` | json | State coded values whose transition conditions the change request already meets | | `stateLabels` | json | This instance's own map of state coded value to label, e.g. \{'0': 'Review'} | | `stateTransitions` | json | \[\{sys\_id, display\_value, from\_state, to\_state, transition\_available, automatic\_transition, conditions}] | | `title` | string | Knowledge article title | | `fields` | json | Requested knowledge article field values | ### Search ServiceNow Configuration Items [#search-servicenow-configuration-items] Search the ServiceNow CMDB for configuration items. Defaults to the base cmdb\_ci table, which returns CIs of every class; pass a CI class to scope the search to a subclass such as cmdb\_ci\_linux\_server. #### Input [#input-28] | Parameter | Type | Required | Description | | ------------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `instanceUrl` | string | Yes | ServiceNow instance URL (e.g., [https://instance.service-now.com](https://instance.service-now.com)) | | `username` | string | Yes | ServiceNow username | | `password` | string | Yes | ServiceNow password | | `ciClass` | string | No | CMDB class (table) to search, e.g., cmdb\_ci\_linux\_server or cmdb\_ci\_app\_server. Defaults to cmdb\_ci, which covers every CI class. | | `name` | string | No | Text to match against the CI name using the ServiceNow LIKE operator, which matches anywhere in the field. | | `operationalStatus` | string | No | Operational status coded value (operational\_status). The choice list is configured per instance. | | `query` | string | No | Additional ServiceNow encoded query, ANDed with the other filters (e.g., "opened\_at>=javascript:gs.beginningOfLastMonth()"). | | `limit` | number | No | Maximum number of records to return (sysparm\_limit). Omitting it sends no limit at all, and the Table API then applies its own default of 10,000 records, so always set it to what you will actually read. | | `offset` | number | No | Number of records to skip for pagination (sysparm\_offset). | | `fields` | string | No | Comma-separated list of fields to return (e.g., number,short\_description,state). Returns all fields when omitted. | | `displayValue` | string | No | How reference and choice fields are returned: "all" (default — both the sys\_id and the label, as \{value, display\_value}), "true" (labels only), or "false" (raw sys\_ids and coded values only). | #### Output [#output-28] | Parameter | Type | Description | | ------------------- | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `record` | json | Single ServiceNow record | | `records` | json | Array of ServiceNow records | | `success` | boolean | Operation success status | | `metadata` | json | Operation metadata | | `result` | json | Aggregate result (stats or grouped array) | | `count` | number | Aggregate matching record count | | `attachments` | json | Attachment metadata list — record attachments (sys\_id, file\_name, content\_type, download\_link) or knowledge article attachments (sys\_id, file\_name, size\_bytes, state) | | `file` | file | Downloaded attachment file | | `content` | string | HTML body of a knowledge article | | `attachment` | json | Uploaded attachment metadata | | `tasks` | json | Change tasks belonging to a change request. Unlike the Table API operations, the Change Management API always returns every field as \{value, display\_value} regardless of the display value setting | | `items` | json | Service catalog items | | `articles` | json | Knowledge article search results | | `attributes` | json | Configuration item attributes | | `inboundRelations` | json | Inbound CI relationships | | `outboundRelations` | json | Outbound CI relationships | | `sysId` | string | sys\_id returned by the operation | | `number` | string | Record number returned by the operation | | `requestNumber` | string | Catalog request number | | `requestId` | string | sys\_id of the catalog request | | `table` | string | Table the catalog request was created on | | `availableStates` | json | State coded values a change request can reach, including its current state | | `allowedStates` | json | State coded values whose transition conditions the change request already meets | | `stateLabels` | json | This instance's own map of state coded value to label, e.g. \{'0': 'Review'} | | `stateTransitions` | json | \[\{sys\_id, display\_value, from\_state, to\_state, transition\_available, automatic\_transition, conditions}] | | `title` | string | Knowledge article title | | `fields` | json | Requested knowledge article field values | ### Get ServiceNow Configuration Item [#get-servicenow-configuration-item] Retrieve a configuration item and its CMDB relationships through the CMDB Instance API. Returns the CI attributes plus its inbound and outbound relations, each carrying the related CI and the relationship type. #### Input [#input-29] | Parameter | Type | Required | Description | | ------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `instanceUrl` | string | Yes | ServiceNow instance URL (e.g., [https://instance.service-now.com](https://instance.service-now.com)) | | `username` | string | Yes | ServiceNow username | | `password` | string | Yes | ServiceNow password | | `ciClass` | string | Yes | CMDB class (table) the CI belongs to, e.g., cmdb\_ci\_linux\_server. Read it from the sys\_class\_name field returned by Search ServiceNow Configuration Items. | | `sysId` | string | Yes | sys\_id of the configuration item to retrieve. | #### Output [#output-29] | Parameter | Type | Description | | ------------------- | ------ | ------------------------------------------------------------------------------- | | `attributes` | json | Data attributes on the CI record. The available attributes depend on the class. | | `inboundRelations` | array | Inbound CI relationships | | ↳ `sys_id` | string | Sys\_id of the relationship record on cmdb\_rel\_ci | | ↳ `target` | json | Related CI as \{value (sys\_id), display\_value, link} | | ↳ `type` | json | Relationship type as \{value (sys\_id), display\_value, link} | | `outboundRelations` | array | Outbound CI relationships | | ↳ `sys_id` | string | Sys\_id of the relationship record on cmdb\_rel\_ci | | ↳ `target` | json | Related CI as \{value (sys\_id), display\_value, link} | | ↳ `type` | json | Relationship type as \{value (sys\_id), display\_value, link} | | `metadata` | json | Operation metadata | | ↳ `inboundCount` | number | Number of inbound relations | | ↳ `outboundCount` | number | Number of outbound relations | ### List ServiceNow CI Relationships [#list-servicenow-ci-relationships] List rows from the CI Relationship \[cmdb\_rel\_ci] table for a configuration item. Each row carries the parent CI, the child CI, and the relationship type. #### Input [#input-30] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `instanceUrl` | string | Yes | ServiceNow instance URL (e.g., [https://instance.service-now.com](https://instance.service-now.com)) | | `username` | string | Yes | ServiceNow username | | `password` | string | Yes | ServiceNow password | | `ciSysId` | string | Yes | sys\_id of the configuration item whose relationships should be listed. | | `direction` | string | No | Which side of the relationship the CI sits on: "parent", "child", or "both" (default). "both" matches rows where the CI is either the parent or the child. | | `query` | string | No | Additional ServiceNow encoded query, ANDed with the other filters (e.g., "opened\_at>=javascript:gs.beginningOfLastMonth()"). | | `limit` | number | No | Maximum number of records to return (sysparm\_limit). Omitting it sends no limit at all, and the Table API then applies its own default of 10,000 records, so always set it to what you will actually read. | | `offset` | number | No | Number of records to skip for pagination (sysparm\_offset). | | `fields` | string | No | Comma-separated list of fields to return (e.g., number,short\_description,state). Returns all fields when omitted. | | `displayValue` | string | No | How reference and choice fields are returned: "all" (default — both the sys\_id and the label, as \{value, display\_value}), "true" (labels only), or "false" (raw sys\_ids and coded values only). | #### Output [#output-30] | Parameter | Type | Description | | ------------------- | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `record` | json | Single ServiceNow record | | `records` | json | Array of ServiceNow records | | `success` | boolean | Operation success status | | `metadata` | json | Operation metadata | | `result` | json | Aggregate result (stats or grouped array) | | `count` | number | Aggregate matching record count | | `attachments` | json | Attachment metadata list — record attachments (sys\_id, file\_name, content\_type, download\_link) or knowledge article attachments (sys\_id, file\_name, size\_bytes, state) | | `file` | file | Downloaded attachment file | | `content` | string | HTML body of a knowledge article | | `attachment` | json | Uploaded attachment metadata | | `tasks` | json | Change tasks belonging to a change request. Unlike the Table API operations, the Change Management API always returns every field as \{value, display\_value} regardless of the display value setting | | `items` | json | Service catalog items | | `articles` | json | Knowledge article search results | | `attributes` | json | Configuration item attributes | | `inboundRelations` | json | Inbound CI relationships | | `outboundRelations` | json | Outbound CI relationships | | `sysId` | string | sys\_id returned by the operation | | `number` | string | Record number returned by the operation | | `requestNumber` | string | Catalog request number | | `requestId` | string | sys\_id of the catalog request | | `table` | string | Table the catalog request was created on | | `availableStates` | json | State coded values a change request can reach, including its current state | | `allowedStates` | json | State coded values whose transition conditions the change request already meets | | `stateLabels` | json | This instance's own map of state coded value to label, e.g. \{'0': 'Review'} | | `stateTransitions` | json | \[\{sys\_id, display\_value, from\_state, to\_state, transition\_available, automatic\_transition, conditions}] | | `title` | string | Knowledge article title | | `fields` | json | Requested knowledge article field values | ### Search ServiceNow Knowledge [#search-servicenow-knowledge] Search ServiceNow knowledge base articles through the Knowledge Management API. Returns ranked results with a snippet and the article number, which Get ServiceNow Knowledge Article accepts to fetch the full body. #### Input [#input-31] | Parameter | Type | Required | Description | | --------------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------- | | `instanceUrl` | string | Yes | ServiceNow instance URL (e.g., [https://instance.service-now.com](https://instance.service-now.com)) | | `username` | string | Yes | ServiceNow username | | `password` | string | Yes | ServiceNow password | | `query` | string | No | Text to search for across knowledge articles. | | `filter` | string | No | Encoded query used to filter the results, against the Knowledge \[kb\_knowledge] table (e.g., "workflow\_state=published"). | | `knowledgeBaseSysIds` | string | No | Comma-separated knowledge base sys\_ids (from kb\_knowledge\_base) to restrict results to. | | `language` | string | No | Comma-separated ISO 639-1 language codes to restrict results to, or "all". Defaults to the session language. | | `fields` | string | No | Comma-separated kb\_knowledge fields to include in each result (e.g., workflow\_state,kb\_category). | | `limit` | number | No | Maximum number of articles to return. ServiceNow defaults to 30. | | `offset` | number | No | Number of articles to skip for pagination. | #### Output [#output-31] | Parameter | Type | Description | | --------------- | ------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `articles` | array | Matching knowledge articles, sorted in descending order by relevance score | | ↳ `id` | string | Table-prefixed article identifier, e.g. "kb\_knowledge:9e528db1...". Get ServiceNow Knowledge Article takes a bare sys\_id or KB number, so pass `number` or the portion after the colon rather than this value as-is | | ↳ `number` | string | Knowledge article number | | ↳ `title` | string | Article title (short description) | | ↳ `snippet` | string | Small excerpt of the article text | | ↳ `link` | string | Link to the article | | ↳ `score` | number | Relevancy score | | ↳ `rank` | number | Search rank of the article for this search | | ↳ `fields` | json | Requested kb\_knowledge fields, each \{name, label, type, value, display\_value} | | `metadata` | json | Operation metadata | | ↳ `recordCount` | number | Number of articles returned | | ↳ `totalCount` | number | Total number of available articles reported by ServiceNow | ### Get ServiceNow Knowledge Article [#get-servicenow-knowledge-article] Retrieve the full content of a ServiceNow knowledge article by sys\_id or KB number through the Knowledge Management API. #### Input [#input-32] | Parameter | Type | Required | Description | | ------------- | ------- | -------- | --------------------------------------------------------------------------------------------------------------------- | | `instanceUrl` | string | Yes | ServiceNow instance URL (e.g., [https://instance.service-now.com](https://instance.service-now.com)) | | `username` | string | Yes | ServiceNow username | | `password` | string | Yes | ServiceNow password | | `articleId` | string | Yes | sys\_id or KB number of the knowledge article (e.g., KB0000011). | | `fields` | string | No | Comma-separated kb\_knowledge fields to include alongside the article content (e.g., workflow\_state,author). | | `language` | string | No | Two-letter ISO 639-1 language code. Only applies when the article is addressed by KB number and a translation exists. | | `updateView` | boolean | No | Set to true to increment the article view count and record an entry in the Knowledge Use \[kb\_use] table. | #### Output [#output-32] | Parameter | Type | Description | | -------------- | ------ | ------------------------------------------------------------------------------------- | | `sysId` | string | Article sys\_id on kb\_knowledge | | `number` | string | Knowledge article number | | `title` | string | Article title (short description) | | `content` | string | Full HTML content of the article | | `fields` | json | Requested kb\_knowledge fields, each \{name, label, type, value, display\_value} | | `attachments` | array | Article attachments, returned only when display\_attachments is active on the article | | ↳ `sys_id` | string | Attachment sys\_id | | ↳ `file_name` | string | Attachment file name | | ↳ `size_bytes` | string | Attachment size in bytes | | ↳ `state` | string | Attachment state: available, available\_conditionally, not\_available, or pending | ### Find ServiceNow User [#find-servicenow-user] Look up ServiceNow users by email, user name, or display name. Use this to resolve the sys\_id needed by reference fields such as caller\_id, assigned\_to, and approver. #### Input [#input-33] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `instanceUrl` | string | Yes | ServiceNow instance URL (e.g., [https://instance.service-now.com](https://instance.service-now.com)) | | `username` | string | Yes | ServiceNow username | | `password` | string | Yes | ServiceNow password | | `email` | string | No | Exact email address to match. | | `userName` | string | No | Exact user name (user\_name) to match. | | `name` | string | No | Text to match against the display name using the ServiceNow LIKE operator, which matches anywhere in the field. | | `active` | string | No | Restrict to active ("true") or inactive ("false") users. | | `query` | string | No | Additional ServiceNow encoded query, ANDed with the other filters (e.g., "opened\_at>=javascript:gs.beginningOfLastMonth()"). | | `limit` | number | No | Maximum number of records to return (sysparm\_limit). Omitting it sends no limit at all, and the Table API then applies its own default of 10,000 records, so always set it to what you will actually read. | | `offset` | number | No | Number of records to skip for pagination (sysparm\_offset). | | `fields` | string | No | Comma-separated list of fields to return (e.g., number,short\_description,state). Returns all fields when omitted. | | `displayValue` | string | No | How reference and choice fields are returned: "all" (default — both the sys\_id and the label, as \{value, display\_value}), "true" (labels only), or "false" (raw sys\_ids and coded values only). | #### Output [#output-33] | Parameter | Type | Description | | ------------------- | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `record` | json | Single ServiceNow record | | `records` | json | Array of ServiceNow records | | `success` | boolean | Operation success status | | `metadata` | json | Operation metadata | | `result` | json | Aggregate result (stats or grouped array) | | `count` | number | Aggregate matching record count | | `attachments` | json | Attachment metadata list — record attachments (sys\_id, file\_name, content\_type, download\_link) or knowledge article attachments (sys\_id, file\_name, size\_bytes, state) | | `file` | file | Downloaded attachment file | | `content` | string | HTML body of a knowledge article | | `attachment` | json | Uploaded attachment metadata | | `tasks` | json | Change tasks belonging to a change request. Unlike the Table API operations, the Change Management API always returns every field as \{value, display\_value} regardless of the display value setting | | `items` | json | Service catalog items | | `articles` | json | Knowledge article search results | | `attributes` | json | Configuration item attributes | | `inboundRelations` | json | Inbound CI relationships | | `outboundRelations` | json | Outbound CI relationships | | `sysId` | string | sys\_id returned by the operation | | `number` | string | Record number returned by the operation | | `requestNumber` | string | Catalog request number | | `requestId` | string | sys\_id of the catalog request | | `table` | string | Table the catalog request was created on | | `availableStates` | json | State coded values a change request can reach, including its current state | | `allowedStates` | json | State coded values whose transition conditions the change request already meets | | `stateLabels` | json | This instance's own map of state coded value to label, e.g. \{'0': 'Review'} | | `stateTransitions` | json | \[\{sys\_id, display\_value, from\_state, to\_state, transition\_available, automatic\_transition, conditions}] | | `title` | string | Knowledge article title | | `fields` | json | Requested knowledge article field values | ### List ServiceNow Group Members [#list-servicenow-group-members] List the members of a ServiceNow group from the Group Member \[sys\_user\_grmember] table. Each row links a user to a group, so use it to find who can be assigned work for an assignment group. #### Input [#input-34] | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `instanceUrl` | string | Yes | ServiceNow instance URL (e.g., [https://instance.service-now.com](https://instance.service-now.com)) | | `username` | string | Yes | ServiceNow username | | `password` | string | Yes | ServiceNow password | | `groupSysId` | string | No | sys\_id of the sys\_user\_group whose members should be listed. | | `groupName` | string | No | Exact group name, resolved against the referenced group record. Provide this or the group sys\_id. | | `query` | string | No | Additional ServiceNow encoded query, ANDed with the other filters (e.g., "opened\_at>=javascript:gs.beginningOfLastMonth()"). | | `limit` | number | No | Maximum number of records to return (sysparm\_limit). Omitting it sends no limit at all, and the Table API then applies its own default of 10,000 records, so always set it to what you will actually read. | | `offset` | number | No | Number of records to skip for pagination (sysparm\_offset). | | `fields` | string | No | Comma-separated list of fields to return (e.g., number,short\_description,state). Returns all fields when omitted. | | `displayValue` | string | No | How reference and choice fields are returned: "all" (default — both the sys\_id and the label, as \{value, display\_value}), "true" (labels only), or "false" (raw sys\_ids and coded values only). | #### Output [#output-34] | Parameter | Type | Description | | ------------------- | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `record` | json | Single ServiceNow record | | `records` | json | Array of ServiceNow records | | `success` | boolean | Operation success status | | `metadata` | json | Operation metadata | | `result` | json | Aggregate result (stats or grouped array) | | `count` | number | Aggregate matching record count | | `attachments` | json | Attachment metadata list — record attachments (sys\_id, file\_name, content\_type, download\_link) or knowledge article attachments (sys\_id, file\_name, size\_bytes, state) | | `file` | file | Downloaded attachment file | | `content` | string | HTML body of a knowledge article | | `attachment` | json | Uploaded attachment metadata | | `tasks` | json | Change tasks belonging to a change request. Unlike the Table API operations, the Change Management API always returns every field as \{value, display\_value} regardless of the display value setting | | `items` | json | Service catalog items | | `articles` | json | Knowledge article search results | | `attributes` | json | Configuration item attributes | | `inboundRelations` | json | Inbound CI relationships | | `outboundRelations` | json | Outbound CI relationships | | `sysId` | string | sys\_id returned by the operation | | `number` | string | Record number returned by the operation | | `requestNumber` | string | Catalog request number | | `requestId` | string | sys\_id of the catalog request | | `table` | string | Table the catalog request was created on | | `availableStates` | json | State coded values a change request can reach, including its current state | | `allowedStates` | json | State coded values whose transition conditions the change request already meets | | `stateLabels` | json | This instance's own map of state coded value to label, e.g. \{'0': 'Review'} | | `stateTransitions` | json | \[\{sys\_id, display\_value, from\_state, to\_state, transition\_available, automatic\_transition, conditions}] | | `title` | string | Knowledge article title | | `fields` | json | Requested knowledge article field values | ## Triggers [#triggers] A **Trigger** is a block that starts a workflow when an event happens in this service. ### ServiceNow Change Request Created [#servicenow-change-request-created] Trigger workflow when a new change request is created in ServiceNow #### Configuration [#configuration] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------- | | `webhookSecret` | string | Yes | Required. Use the same value in your ServiceNow Business Rule as Bearer token or X-Studio-Webhook-Secret. | | `tableName` | string | No | Optionally filter to a specific ServiceNow table | #### Output [#output-35] | Parameter | Type | Description | | ------------------ | ------ | ------------------------------------------------------------------ | | `sysId` | string | Unique system ID of the record | | `number` | string | Record number (e.g., INC0010001, CHG0010001) | | `tableName` | string | ServiceNow table name | | `shortDescription` | string | Short description of the record | | `description` | string | Full description of the record | | `state` | string | Current state of the record | | `priority` | string | Priority level (1=Critical, 2=High, 3=Moderate, 4=Low, 5=Planning) | | `assignedTo` | string | User assigned to this record | | `assignmentGroup` | string | Group assigned to this record | | `createdBy` | string | User who created the record | | `createdOn` | string | When the record was created (ISO 8601) | | `updatedBy` | string | User who last updated the record | | `updatedOn` | string | When the record was last updated (ISO 8601) | | `type` | string | Change type (Normal, Standard, Emergency) | | `risk` | string | Risk level of the change | | `impact` | string | Impact level of the change | | `approval` | string | Approval status | | `startDate` | string | Planned start date | | `endDate` | string | Planned end date | | `category` | string | Change category | | `record` | json | Full change request record data | *** ### ServiceNow Change Request Updated [#servicenow-change-request-updated] Trigger workflow when a change request is updated in ServiceNow #### Configuration [#configuration-1] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------- | | `webhookSecret` | string | Yes | Required. Use the same value in your ServiceNow Business Rule as Bearer token or X-Studio-Webhook-Secret. | | `tableName` | string | No | Optionally filter to a specific ServiceNow table | #### Output [#output-36] | Parameter | Type | Description | | ------------------ | ------ | ------------------------------------------------------------------ | | `sysId` | string | Unique system ID of the record | | `number` | string | Record number (e.g., INC0010001, CHG0010001) | | `tableName` | string | ServiceNow table name | | `shortDescription` | string | Short description of the record | | `description` | string | Full description of the record | | `state` | string | Current state of the record | | `priority` | string | Priority level (1=Critical, 2=High, 3=Moderate, 4=Low, 5=Planning) | | `assignedTo` | string | User assigned to this record | | `assignmentGroup` | string | Group assigned to this record | | `createdBy` | string | User who created the record | | `createdOn` | string | When the record was created (ISO 8601) | | `updatedBy` | string | User who last updated the record | | `updatedOn` | string | When the record was last updated (ISO 8601) | | `type` | string | Change type (Normal, Standard, Emergency) | | `risk` | string | Risk level of the change | | `impact` | string | Impact level of the change | | `approval` | string | Approval status | | `startDate` | string | Planned start date | | `endDate` | string | Planned end date | | `category` | string | Change category | | `record` | json | Full change request record data | *** ### ServiceNow Incident Created [#servicenow-incident-created] Trigger workflow when a new incident is created in ServiceNow #### Configuration [#configuration-2] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------- | | `webhookSecret` | string | Yes | Required. Use the same value in your ServiceNow Business Rule as Bearer token or X-Studio-Webhook-Secret. | | `tableName` | string | No | Optionally filter to a specific ServiceNow table | #### Output [#output-37] | Parameter | Type | Description | | ------------------ | ------ | ------------------------------------------------------------------ | | `sysId` | string | Unique system ID of the record | | `number` | string | Record number (e.g., INC0010001, CHG0010001) | | `tableName` | string | ServiceNow table name | | `shortDescription` | string | Short description of the record | | `description` | string | Full description of the record | | `state` | string | Current state of the record | | `priority` | string | Priority level (1=Critical, 2=High, 3=Moderate, 4=Low, 5=Planning) | | `assignedTo` | string | User assigned to this record | | `assignmentGroup` | string | Group assigned to this record | | `createdBy` | string | User who created the record | | `createdOn` | string | When the record was created (ISO 8601) | | `updatedBy` | string | User who last updated the record | | `updatedOn` | string | When the record was last updated (ISO 8601) | | `urgency` | string | Urgency level (1=High, 2=Medium, 3=Low) | | `impact` | string | Impact level (1=High, 2=Medium, 3=Low) | | `category` | string | Incident category | | `subcategory` | string | Incident subcategory | | `caller` | string | Caller/requester of the incident | | `resolvedBy` | string | User who resolved the incident | | `resolvedAt` | string | When the incident was resolved | | `closeNotes` | string | Notes added when the incident was closed | | `record` | json | Full incident record data | *** ### ServiceNow Incident Updated [#servicenow-incident-updated] Trigger workflow when an incident is updated in ServiceNow #### Configuration [#configuration-3] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------- | | `webhookSecret` | string | Yes | Required. Use the same value in your ServiceNow Business Rule as Bearer token or X-Studio-Webhook-Secret. | | `tableName` | string | No | Optionally filter to a specific ServiceNow table | #### Output [#output-38] | Parameter | Type | Description | | ------------------ | ------ | ------------------------------------------------------------------ | | `sysId` | string | Unique system ID of the record | | `number` | string | Record number (e.g., INC0010001, CHG0010001) | | `tableName` | string | ServiceNow table name | | `shortDescription` | string | Short description of the record | | `description` | string | Full description of the record | | `state` | string | Current state of the record | | `priority` | string | Priority level (1=Critical, 2=High, 3=Moderate, 4=Low, 5=Planning) | | `assignedTo` | string | User assigned to this record | | `assignmentGroup` | string | Group assigned to this record | | `createdBy` | string | User who created the record | | `createdOn` | string | When the record was created (ISO 8601) | | `updatedBy` | string | User who last updated the record | | `updatedOn` | string | When the record was last updated (ISO 8601) | | `urgency` | string | Urgency level (1=High, 2=Medium, 3=Low) | | `impact` | string | Impact level (1=High, 2=Medium, 3=Low) | | `category` | string | Incident category | | `subcategory` | string | Incident subcategory | | `caller` | string | Caller/requester of the incident | | `resolvedBy` | string | User who resolved the incident | | `resolvedAt` | string | When the incident was resolved | | `closeNotes` | string | Notes added when the incident was closed | | `record` | json | Full incident record data | *** ### ServiceNow Webhook (All Events) [#servicenow-webhook-all-events] Trigger workflow on any ServiceNow webhook event #### Configuration [#configuration-4] | Parameter | Type | Required | Description | | --------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------- | | `webhookSecret` | string | Yes | Required. Use the same value in your ServiceNow Business Rule as Bearer token or X-Studio-Webhook-Secret. | | `tableName` | string | No | Optionally filter to a specific ServiceNow table | #### Output [#output-39] | Parameter | Type | Description | | ------------------ | ------ | ----------------------------------------------------------------------------- | | `sysId` | string | Unique system ID of the record | | `number` | string | Record number (e.g., INC0010001, CHG0010001) | | `tableName` | string | ServiceNow table name | | `shortDescription` | string | Short description of the record | | `description` | string | Full description of the record | | `state` | string | Current state of the record | | `priority` | string | Priority level (1=Critical, 2=High, 3=Moderate, 4=Low, 5=Planning) | | `assignedTo` | string | User assigned to this record | | `assignmentGroup` | string | Group assigned to this record | | `createdBy` | string | User who created the record | | `createdOn` | string | When the record was created (ISO 8601) | | `updatedBy` | string | User who last updated the record | | `updatedOn` | string | When the record was last updated (ISO 8601) | | `eventType` | string | The type of event that triggered this workflow (e.g., insert, update, delete) | | `category` | string | Record category | | `record` | json | Full record data from the webhook payload | --- # Algolia (/en/integrations/algolia) {/* MANUAL-CONTENT-START:intro */} Use [Algolia](https://www.algolia.com/) in Studio 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 | --- # Grain (/en/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 Seeyu Agent Studio 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 Seeyu Agent Studio 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.) | --- # LaTeX (/en/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 | --- # Salesforce (/en/integrations/salesforce) {/* MANUAL-CONTENT-START:intro */} Use [Salesforce](https://www.salesforce.com/) in Studio 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 | | `additionalFields` | string | No | JSON object with additional Salesforce Lead fields (e.g., \{"MobilePhone": "123", "City": "NYC"}) | #### 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 | | `additionalFields` | string | No | JSON object with additional Salesforce Lead fields (e.g., \{"MobilePhone": "123", "City": "NYC"}) | #### 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 "\