mirror of
https://github.com/simstudioai/sim.git
synced 2026-04-28 03:00:29 -04:00
Compare commits
25 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
dcf33021f4 | ||
|
|
38864fac34 | ||
|
|
2266bb384b | ||
|
|
a589c8e318 | ||
|
|
3d909d5416 | ||
|
|
3e2a7a2eb1 | ||
|
|
49a1495e15 | ||
|
|
1d0e118eef | ||
|
|
c06361b142 | ||
|
|
8a50f1844c | ||
|
|
6fd1767c7e | ||
|
|
6aa6346330 | ||
|
|
1708bbee35 | ||
|
|
2dbc7fdddf | ||
|
|
e16c8e6f70 | ||
|
|
9f41736d50 | ||
|
|
147ac89672 | ||
|
|
4cdc941490 | ||
|
|
387cc977fa | ||
|
|
0464a57601 | ||
|
|
23ccd4a50c | ||
|
|
ba6bc91681 | ||
|
|
c0bc62c592 | ||
|
|
377712c9f3 | ||
|
|
6dddc3f796 |
@@ -16,17 +16,34 @@ User arguments: $ARGUMENTS
|
||||
Read before analyzing:
|
||||
1. https://react.dev/reference/react/useCallback — official docs on when useCallback is actually needed
|
||||
|
||||
## The one rule that matters
|
||||
|
||||
`useCallback` is only useful when **something observes the reference**. Ask: does anything care if this function gets a new identity on re-render?
|
||||
|
||||
Observers that care about reference stability:
|
||||
- A `useEffect` that lists the function in its deps array
|
||||
- A `useMemo` that lists the function in its deps array
|
||||
- Another `useCallback` that lists the function in its deps array
|
||||
- A child component wrapped in `React.memo` that receives the function as a prop
|
||||
|
||||
If none of those apply — if the function is only called inline, or passed to a non-memoized child, or assigned to a native element event — the reference is unobserved and `useCallback` adds overhead with zero benefit.
|
||||
|
||||
## Anti-patterns to detect
|
||||
|
||||
1. **useCallback on functions not passed as props or deps**: No benefit if only called within the same component.
|
||||
2. **useCallback with deps that change every render**: Memoization is wasted.
|
||||
3. **useCallback on handlers passed to native elements**: `<button onClick={fn}>` doesn't benefit from stable references.
|
||||
4. **useCallback wrapping functions that return new objects/arrays**: Memoization at the wrong level.
|
||||
5. **useCallback with empty deps when deps are needed**: Stale closures.
|
||||
6. **Pairing useCallback + React.memo unnecessarily**: Only optimize when you've measured a problem.
|
||||
7. **useCallback in hooks that don't need stable references**: Not every hook return needs memoization.
|
||||
1. **No observer tracks the reference**: The function is only called inline in the same component, or passed to a non-memoized child, or used as a native element handler (`<button onClick={fn}>`). Nothing re-runs or bails out based on reference identity. Remove `useCallback`.
|
||||
2. **useCallback with deps that change every render**: If a dep is a plain object/array created inline, or state that changes on every interaction, memoization buys nothing — the function gets a new identity anyway.
|
||||
3. **useCallback on handlers passed only to native elements**: `<button onClick={fn}>` — React never does reference equality on native element props. No benefit.
|
||||
4. **useCallback wrapping functions that return new objects/arrays**: Stable function identity, unstable return value — memoization is at the wrong level. Use `useMemo` on the return value instead, or restructure.
|
||||
5. **useCallback with empty deps when deps are needed**: Stale closure — reads initial values forever. This is a correctness bug, not just a performance issue.
|
||||
6. **Pairing useCallback + React.memo on trivially cheap renders**: If the child renders in < 1ms and re-renders rarely, the memo infrastructure costs more than it saves.
|
||||
|
||||
Note: This codebase uses a ref pattern for stable callbacks (`useRef` + empty deps). That pattern is correct — don't flag it.
|
||||
## Patterns that ARE correct — do not flag
|
||||
|
||||
- `useCallback` whose result is in a `useEffect` dep array — prevents the effect from re-running on every render
|
||||
- `useCallback` whose result is in a `useMemo` dep array — prevents the memo from recomputing on every render
|
||||
- `useCallback` whose result is a dep of another `useCallback` — stabilises a callback chain
|
||||
- `useCallback` passed to a `React.memo`-wrapped child — the whole point of the pattern
|
||||
- This codebase's ref pattern: `useRef` + callback with empty deps that reads the ref inside — correct, do not flag
|
||||
|
||||
## Steps
|
||||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import { DocsBody, DocsPage } from 'fumadocs-ui/page'
|
||||
import { DocsPage } from 'fumadocs-ui/page'
|
||||
import Link from 'next/link'
|
||||
|
||||
export const metadata = {
|
||||
title: 'Page Not Found',
|
||||
@@ -7,17 +8,21 @@ export const metadata = {
|
||||
export default function NotFound() {
|
||||
return (
|
||||
<DocsPage>
|
||||
<DocsBody>
|
||||
<div className='flex min-h-[60vh] flex-col items-center justify-center text-center'>
|
||||
<h1 className='mb-4 bg-gradient-to-b from-[#47d991] to-[#33c482] bg-clip-text font-bold text-8xl text-transparent'>
|
||||
404
|
||||
</h1>
|
||||
<h2 className='mb-2 font-semibold text-2xl text-foreground'>Page Not Found</h2>
|
||||
<p className='text-muted-foreground'>
|
||||
The page you're looking for doesn't exist or has been moved.
|
||||
</p>
|
||||
</div>
|
||||
</DocsBody>
|
||||
<div className='flex min-h-[70vh] flex-col items-center justify-center gap-4 text-center'>
|
||||
<h1 className='bg-gradient-to-b from-[#47d991] to-[#33c482] bg-clip-text font-bold text-8xl text-transparent'>
|
||||
404
|
||||
</h1>
|
||||
<h2 className='font-semibold text-2xl text-foreground'>Page Not Found</h2>
|
||||
<p className='text-muted-foreground'>
|
||||
The page you're looking for doesn't exist or has been moved.
|
||||
</p>
|
||||
<Link
|
||||
href='/'
|
||||
className='ml-1 flex items-center rounded-[8px] bg-[#33c482] px-2.5 py-1.5 text-[13px] text-white transition-colors duration-200 hover:bg-[#2DAC72]'
|
||||
>
|
||||
Go home
|
||||
</Link>
|
||||
</div>
|
||||
</DocsPage>
|
||||
)
|
||||
}
|
||||
|
||||
@@ -62,7 +62,7 @@ ${Object.entries(sections)
|
||||
|
||||
- Full documentation content: ${baseUrl}/llms-full.txt
|
||||
- Individual page content: ${baseUrl}/llms.mdx/[page-path]
|
||||
- API documentation: ${baseUrl}/sdks/
|
||||
- API documentation: ${baseUrl}/api-reference/
|
||||
- Tool integrations: ${baseUrl}/tools/
|
||||
|
||||
## Statistics
|
||||
|
||||
@@ -3602,6 +3602,29 @@ export function OpenRouterIcon(props: SVGProps<SVGSVGElement>) {
|
||||
)
|
||||
}
|
||||
|
||||
export function MondayIcon(props: SVGProps<SVGSVGElement>) {
|
||||
return (
|
||||
<svg
|
||||
{...props}
|
||||
viewBox='0 -50 256 256'
|
||||
xmlns='http://www.w3.org/2000/svg'
|
||||
preserveAspectRatio='xMidYMid'
|
||||
>
|
||||
<g>
|
||||
<path
|
||||
d='M31.8458633,153.488694 C20.3244423,153.513586 9.68073708,147.337265 3.98575204,137.321731 C-1.62714067,127.367831 -1.29055839,115.129325 4.86093879,105.498969 L62.2342919,15.4033556 C68.2125882,5.54538256 79.032489,-0.333585033 90.5563073,0.0146553508 C102.071737,0.290611552 112.546041,6.74705604 117.96667,16.9106216 C123.315033,27.0238906 122.646488,39.1914174 116.240607,48.6847625 L58.9037201,138.780375 C52.9943022,147.988884 42.7873202,153.537154 31.8458633,153.488694 L31.8458633,153.488694 Z'
|
||||
fill='#F62B54'
|
||||
/>
|
||||
<path
|
||||
d='M130.25575,153.488484 C118.683837,153.488484 108.035731,147.301291 102.444261,137.358197 C96.8438154,127.431292 97.1804475,115.223704 103.319447,105.620522 L160.583402,15.7315506 C166.47539,5.73210989 177.327374,-0.284878136 188.929728,0.0146553508 C200.598885,0.269918151 211.174058,6.7973526 216.522421,17.0078646 C221.834319,27.2183766 221.056375,39.4588356 214.456008,48.9278699 L157.204209,138.816842 C151.313487,147.985468 141.153618,153.5168 130.25575,153.488484 Z'
|
||||
fill='#FFCC00'
|
||||
/>
|
||||
<ellipse fill='#00CA72' cx='226.465527' cy='125.324379' rx='29.5375538' ry='28.9176274' />
|
||||
</g>
|
||||
</svg>
|
||||
)
|
||||
}
|
||||
|
||||
export function MongoDBIcon(props: SVGProps<SVGSVGElement>) {
|
||||
return (
|
||||
<svg {...props} xmlns='http://www.w3.org/2000/svg' viewBox='0 0 128 128'>
|
||||
|
||||
@@ -119,6 +119,7 @@ import {
|
||||
MicrosoftSharepointIcon,
|
||||
MicrosoftTeamsIcon,
|
||||
MistralIcon,
|
||||
MondayIcon,
|
||||
MongoDBIcon,
|
||||
MySQLIcon,
|
||||
Neo4jIcon,
|
||||
@@ -226,8 +227,10 @@ export const blockTypeToIconMap: Record<string, IconComponent> = {
|
||||
cloudflare: CloudflareIcon,
|
||||
cloudformation: CloudFormationIcon,
|
||||
cloudwatch: CloudWatchIcon,
|
||||
confluence: ConfluenceIcon,
|
||||
confluence_v2: ConfluenceIcon,
|
||||
crowdstrike: CrowdStrikeIcon,
|
||||
cursor: CursorIcon,
|
||||
cursor_v2: CursorIcon,
|
||||
dagster: DagsterIcon,
|
||||
databricks: DatabricksIcon,
|
||||
@@ -245,19 +248,25 @@ export const blockTypeToIconMap: Record<string, IconComponent> = {
|
||||
enrich: EnrichSoIcon,
|
||||
evernote: EvernoteIcon,
|
||||
exa: ExaAIIcon,
|
||||
extend: ExtendIcon,
|
||||
extend_v2: ExtendIcon,
|
||||
fathom: FathomIcon,
|
||||
file: DocumentIcon,
|
||||
file_v3: DocumentIcon,
|
||||
firecrawl: FirecrawlIcon,
|
||||
fireflies: FirefliesIcon,
|
||||
fireflies_v2: FirefliesIcon,
|
||||
gamma: GammaIcon,
|
||||
github: GithubIcon,
|
||||
github_v2: GithubIcon,
|
||||
gitlab: GitLabIcon,
|
||||
gmail: GmailIcon,
|
||||
gmail_v2: GmailIcon,
|
||||
gong: GongIcon,
|
||||
google_ads: GoogleAdsIcon,
|
||||
google_bigquery: GoogleBigQueryIcon,
|
||||
google_books: GoogleBooksIcon,
|
||||
google_calendar: GoogleCalendarIcon,
|
||||
google_calendar_v2: GoogleCalendarIcon,
|
||||
google_contacts: GoogleContactsIcon,
|
||||
google_docs: GoogleDocsIcon,
|
||||
@@ -268,7 +277,9 @@ export const blockTypeToIconMap: Record<string, IconComponent> = {
|
||||
google_meet: GoogleMeetIcon,
|
||||
google_pagespeed: GooglePagespeedIcon,
|
||||
google_search: GoogleIcon,
|
||||
google_sheets: GoogleSheetsIcon,
|
||||
google_sheets_v2: GoogleSheetsIcon,
|
||||
google_slides: GoogleSlidesIcon,
|
||||
google_slides_v2: GoogleSlidesIcon,
|
||||
google_tasks: GoogleTasksIcon,
|
||||
google_translate: GoogleTranslateIcon,
|
||||
@@ -287,16 +298,19 @@ export const blockTypeToIconMap: Record<string, IconComponent> = {
|
||||
imap: MailServerIcon,
|
||||
incidentio: IncidentioIcon,
|
||||
infisical: InfisicalIcon,
|
||||
intercom: IntercomIcon,
|
||||
intercom_v2: IntercomIcon,
|
||||
jina: JinaAIIcon,
|
||||
jira: JiraIcon,
|
||||
jira_service_management: JiraServiceManagementIcon,
|
||||
kalshi: KalshiIcon,
|
||||
kalshi_v2: KalshiIcon,
|
||||
ketch: KetchIcon,
|
||||
knowledge: PackageSearchIcon,
|
||||
langsmith: LangsmithIcon,
|
||||
launchdarkly: LaunchDarklyIcon,
|
||||
lemlist: LemlistIcon,
|
||||
linear: LinearIcon,
|
||||
linear_v2: LinearIcon,
|
||||
linkedin: LinkedInIcon,
|
||||
linkup: LinkupIcon,
|
||||
@@ -308,13 +322,17 @@ export const blockTypeToIconMap: Record<string, IconComponent> = {
|
||||
memory: BrainIcon,
|
||||
microsoft_ad: AzureIcon,
|
||||
microsoft_dataverse: MicrosoftDataverseIcon,
|
||||
microsoft_excel: MicrosoftExcelIcon,
|
||||
microsoft_excel_v2: MicrosoftExcelIcon,
|
||||
microsoft_planner: MicrosoftPlannerIcon,
|
||||
microsoft_teams: MicrosoftTeamsIcon,
|
||||
mistral_parse: MistralIcon,
|
||||
mistral_parse_v3: MistralIcon,
|
||||
monday: MondayIcon,
|
||||
mongodb: MongoDBIcon,
|
||||
mysql: MySQLIcon,
|
||||
neo4j: Neo4jIcon,
|
||||
notion: NotionIcon,
|
||||
notion_v2: NotionIcon,
|
||||
obsidian: ObsidianIcon,
|
||||
okta: OktaIcon,
|
||||
@@ -331,12 +349,14 @@ export const blockTypeToIconMap: Record<string, IconComponent> = {
|
||||
postgresql: PostgresIcon,
|
||||
posthog: PosthogIcon,
|
||||
profound: ProfoundIcon,
|
||||
pulse: PulseIcon,
|
||||
pulse_v2: PulseIcon,
|
||||
qdrant: QdrantIcon,
|
||||
quiver: QuiverIcon,
|
||||
rds: RDSIcon,
|
||||
reddit: RedditIcon,
|
||||
redis: RedisIcon,
|
||||
reducto: ReductoIcon,
|
||||
reducto_v2: ReductoIcon,
|
||||
resend: ResendIcon,
|
||||
revenuecat: RevenueCatIcon,
|
||||
@@ -362,11 +382,13 @@ export const blockTypeToIconMap: Record<string, IconComponent> = {
|
||||
stagehand: StagehandIcon,
|
||||
stripe: StripeIcon,
|
||||
sts: STSIcon,
|
||||
stt: STTIcon,
|
||||
stt_v2: STTIcon,
|
||||
supabase: SupabaseIcon,
|
||||
tailscale: TailscaleIcon,
|
||||
tavily: TavilyIcon,
|
||||
telegram: TelegramIcon,
|
||||
textract: TextractIcon,
|
||||
textract_v2: TextractIcon,
|
||||
tinybird: TinybirdIcon,
|
||||
translate: TranslateIcon,
|
||||
@@ -377,7 +399,9 @@ export const blockTypeToIconMap: Record<string, IconComponent> = {
|
||||
typeform: TypeformIcon,
|
||||
upstash: UpstashIcon,
|
||||
vercel: VercelIcon,
|
||||
video_generator: VideoIcon,
|
||||
video_generator_v2: VideoIcon,
|
||||
vision: EyeIcon,
|
||||
vision_v2: EyeIcon,
|
||||
wealthbox: WealthboxIcon,
|
||||
webflow: WebflowIcon,
|
||||
|
||||
@@ -51,7 +51,7 @@ Willkommen bei Sim, einem visuellen Workflow-Builder für KI-Anwendungen. Erstel
|
||||
<Card title="MCP-Integration" href="/mcp">
|
||||
Externe Dienste mit dem Model Context Protocol verbinden
|
||||
</Card>
|
||||
<Card title="SDKs" href="/sdks">
|
||||
<Card title="SDKs" href="/api-reference">
|
||||
Sim in Ihre Anwendungen integrieren
|
||||
</Card>
|
||||
</Cards>
|
||||
@@ -65,14 +65,14 @@ Execute a workflow with optional input data.
|
||||
```python
|
||||
result = client.execute_workflow(
|
||||
"workflow-id",
|
||||
input_data={"message": "Hello, world!"},
|
||||
input={"message": "Hello, world!"},
|
||||
timeout=30.0 # 30 seconds
|
||||
)
|
||||
```
|
||||
|
||||
**Parameters:**
|
||||
- `workflow_id` (str): The ID of the workflow to execute
|
||||
- `input_data` (dict, optional): Input data to pass to the workflow
|
||||
- `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"]`)
|
||||
@@ -144,7 +144,7 @@ Execute a workflow with automatic retry on rate limit errors using exponential b
|
||||
```python
|
||||
result = client.execute_with_retry(
|
||||
"workflow-id",
|
||||
input_data={"message": "Hello"},
|
||||
input={"message": "Hello"},
|
||||
timeout=30.0,
|
||||
max_retries=3, # Maximum number of retries
|
||||
initial_delay=1.0, # Initial delay in seconds
|
||||
@@ -155,7 +155,7 @@ result = client.execute_with_retry(
|
||||
|
||||
**Parameters:**
|
||||
- `workflow_id` (str): The ID of the workflow to execute
|
||||
- `input_data` (dict, optional): Input data to pass to the workflow
|
||||
- `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
|
||||
@@ -359,7 +359,7 @@ def run_workflow():
|
||||
# Execute the workflow
|
||||
result = client.execute_workflow(
|
||||
"my-workflow-id",
|
||||
input_data={
|
||||
input={
|
||||
"message": "Process this data",
|
||||
"user_id": "12345"
|
||||
}
|
||||
@@ -488,7 +488,7 @@ def execute_async():
|
||||
# Start async execution
|
||||
result = client.execute_workflow(
|
||||
"workflow-id",
|
||||
input_data={"data": "large dataset"},
|
||||
input={"data": "large dataset"},
|
||||
async_execution=True # Execute asynchronously
|
||||
)
|
||||
|
||||
@@ -533,7 +533,7 @@ def execute_with_retry_handling():
|
||||
# Automatically retries on rate limit
|
||||
result = client.execute_with_retry(
|
||||
"workflow-id",
|
||||
input_data={"message": "Process this"},
|
||||
input={"message": "Process this"},
|
||||
max_retries=5,
|
||||
initial_delay=1.0,
|
||||
max_delay=60.0,
|
||||
@@ -615,7 +615,7 @@ def execute_with_streaming():
|
||||
# Enable streaming for specific block outputs
|
||||
result = client.execute_workflow(
|
||||
"workflow-id",
|
||||
input_data={"message": "Count to five"},
|
||||
input={"message": "Count to five"},
|
||||
stream=True,
|
||||
selected_outputs=["agent1.content"] # Use blockName.attribute format
|
||||
)
|
||||
@@ -758,4 +758,15 @@ Configure the client using environment variables:
|
||||
|
||||
## License
|
||||
|
||||
Apache-2.0
|
||||
Apache-2.0
|
||||
|
||||
import { FAQ } from '@/components/ui/faq'
|
||||
|
||||
<FAQ items={[
|
||||
{ question: "Do I need to deploy a workflow before I can execute it via the SDK?", answer: "Yes. Workflows must be deployed before they can be executed through the SDK. You can use the validate_workflow() method to check whether a workflow is deployed and ready. If it returns False, deploy the workflow from the Sim UI first and create or select an API key during deployment." },
|
||||
{ question: "What is the difference between sync and async execution?", answer: "Sync execution (the default) blocks until the workflow completes and returns the full result. Async execution (async_execution=True) returns immediately with a task ID that you can poll using get_job_status(). Use async mode for long-running workflows to avoid request timeouts. Async job statuses include queued, processing, completed, failed, and cancelled." },
|
||||
{ question: "How does the SDK handle rate limiting?", answer: "The SDK provides built-in rate limiting support through the execute_with_retry() method. It uses exponential backoff (1s, 2s, 4s, 8s...) with 25% jitter to avoid thundering herd problems. If the API returns a retry-after header, that value is used instead. You can configure max_retries, initial_delay, max_delay, and backoff_multiplier. Use get_rate_limit_info() to check your current rate limit status." },
|
||||
{ question: "Can I use the Python SDK as a context manager?", answer: "Yes. The SimStudioClient supports Python's context manager protocol. Use it with the 'with' statement to automatically close the underlying HTTP session when you are done, which is especially useful for scripts that create and discard client instances." },
|
||||
{ question: "How do I handle different types of errors from the SDK?", answer: "The SDK raises SimStudioError with a code property for API-specific errors. Common error codes are UNAUTHORIZED (invalid API key), TIMEOUT (request timed out), RATE_LIMIT_EXCEEDED (too many requests), USAGE_LIMIT_EXCEEDED (billing limit reached), and EXECUTION_ERROR (workflow failed). Use the error code to implement targeted error handling and recovery logic." },
|
||||
{ question: "How do I monitor my API usage and remaining quota?", answer: "Use the get_usage_limits() method to check your current usage. It returns sync and async rate limit details (limit, remaining, reset time, whether you are currently limited), plus your current period cost, usage limit, and plan tier. This lets you monitor consumption and alert before hitting limits." },
|
||||
]} />
|
||||
@@ -78,16 +78,15 @@ new SimStudioClient(config: SimStudioConfig)
|
||||
Execute a workflow with optional input data.
|
||||
|
||||
```typescript
|
||||
const result = await client.executeWorkflow('workflow-id', {
|
||||
input: { message: 'Hello, world!' },
|
||||
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):
|
||||
- `input` (any): Input data to pass to the workflow
|
||||
- `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"]`)
|
||||
@@ -158,8 +157,7 @@ if (status.status === 'completed') {
|
||||
Execute a workflow with automatic retry on rate limit errors using exponential backoff.
|
||||
|
||||
```typescript
|
||||
const result = await client.executeWithRetry('workflow-id', {
|
||||
input: { message: 'Hello' },
|
||||
const result = await client.executeWithRetry('workflow-id', { message: 'Hello' }, {
|
||||
timeout: 30000
|
||||
}, {
|
||||
maxRetries: 3, // Maximum number of retries
|
||||
@@ -171,6 +169,7 @@ const result = await client.executeWithRetry('workflow-id', {
|
||||
|
||||
**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)
|
||||
@@ -389,10 +388,8 @@ async function runWorkflow() {
|
||||
|
||||
// Execute the workflow
|
||||
const result = await client.executeWorkflow('my-workflow-id', {
|
||||
input: {
|
||||
message: 'Process this data',
|
||||
userId: '12345'
|
||||
}
|
||||
});
|
||||
|
||||
if (result.success) {
|
||||
@@ -508,8 +505,7 @@ app.post('/execute-workflow', async (req, res) => {
|
||||
try {
|
||||
const { workflowId, input } = req.body;
|
||||
|
||||
const result = await client.executeWorkflow(workflowId, {
|
||||
input,
|
||||
const result = await client.executeWorkflow(workflowId, input, {
|
||||
timeout: 60000
|
||||
});
|
||||
|
||||
@@ -555,8 +551,7 @@ export default async function handler(
|
||||
try {
|
||||
const { workflowId, input } = req.body;
|
||||
|
||||
const result = await client.executeWorkflow(workflowId, {
|
||||
input,
|
||||
const result = await client.executeWorkflow(workflowId, input, {
|
||||
timeout: 30000
|
||||
});
|
||||
|
||||
@@ -586,9 +581,7 @@ const client = new SimStudioClient({
|
||||
async function executeClientSideWorkflow() {
|
||||
try {
|
||||
const result = await client.executeWorkflow('workflow-id', {
|
||||
input: {
|
||||
userInput: 'Hello from browser'
|
||||
}
|
||||
});
|
||||
|
||||
console.log('Workflow result:', result);
|
||||
@@ -642,10 +635,8 @@ Alternatively, you can manually provide files using the URL format:
|
||||
|
||||
// Include files under the field name from your API trigger's input format
|
||||
const result = await client.executeWorkflow('workflow-id', {
|
||||
input: {
|
||||
documents: files, // Must match your workflow's "files" field name
|
||||
instructions: 'Analyze these documents'
|
||||
}
|
||||
});
|
||||
|
||||
console.log('Result:', result);
|
||||
@@ -669,10 +660,8 @@ Alternatively, you can manually provide files using the URL format:
|
||||
|
||||
// Include files under the field name from your API trigger's input format
|
||||
const result = await client.executeWorkflow('workflow-id', {
|
||||
input: {
|
||||
documents: [file], // Must match your workflow's "files" field name
|
||||
query: 'Summarize this document'
|
||||
}
|
||||
});
|
||||
```
|
||||
</Tab>
|
||||
@@ -712,8 +701,7 @@ export function useWorkflow(): UseWorkflowResult {
|
||||
setResult(null);
|
||||
|
||||
try {
|
||||
const workflowResult = await client.executeWorkflow(workflowId, {
|
||||
input,
|
||||
const workflowResult = await client.executeWorkflow(workflowId, input, {
|
||||
timeout: 30000
|
||||
});
|
||||
setResult(workflowResult);
|
||||
@@ -774,8 +762,7 @@ const client = new SimStudioClient({
|
||||
async function executeAsync() {
|
||||
try {
|
||||
// Start async execution
|
||||
const result = await client.executeWorkflow('workflow-id', {
|
||||
input: { data: 'large dataset' },
|
||||
const result = await client.executeWorkflow('workflow-id', { data: 'large dataset' }, {
|
||||
async: true // Execute asynchronously
|
||||
});
|
||||
|
||||
@@ -823,9 +810,7 @@ const client = new SimStudioClient({
|
||||
async function executeWithRetryHandling() {
|
||||
try {
|
||||
// Automatically retries on rate limit
|
||||
const result = await client.executeWithRetry('workflow-id', {
|
||||
input: { message: 'Process this' }
|
||||
}, {
|
||||
const result = await client.executeWithRetry('workflow-id', { message: 'Process this' }, {}, {
|
||||
maxRetries: 5,
|
||||
initialDelay: 1000,
|
||||
maxDelay: 60000,
|
||||
@@ -908,8 +893,7 @@ const client = new SimStudioClient({
|
||||
async function executeWithStreaming() {
|
||||
try {
|
||||
// Enable streaming for specific block outputs
|
||||
const result = await client.executeWorkflow('workflow-id', {
|
||||
input: { message: 'Count to five' },
|
||||
const result = await client.executeWorkflow('workflow-id', { message: 'Count to five' }, {
|
||||
stream: true,
|
||||
selectedOutputs: ['agent1.content'] // Use blockName.attribute format
|
||||
});
|
||||
@@ -1033,3 +1017,14 @@ function StreamingWorkflow() {
|
||||
## License
|
||||
|
||||
Apache-2.0
|
||||
|
||||
import { FAQ } from '@/components/ui/faq'
|
||||
|
||||
<FAQ items={[
|
||||
{ question: "Do I need to deploy a workflow before I can execute it via the SDK?", answer: "Yes. Workflows must be deployed before they can be executed through the SDK. You can use the validateWorkflow() method to check whether a workflow is deployed and ready. If it returns false, deploy the workflow from the Sim UI first and create or select an API key during deployment." },
|
||||
{ question: "What is the difference between sync and async execution?", answer: "Sync execution (the default) blocks until the workflow completes and returns the full result. Async execution returns immediately with a task ID that you can poll using getJobStatus(). Use async mode for long-running workflows to avoid request timeouts. Async job statuses include queued, processing, completed, failed, and cancelled." },
|
||||
{ question: "How does streaming work with the SDK?", answer: "Enable streaming by setting stream: true and specifying selectedOutputs with block names and attributes in blockName.attribute format (e.g., ['agent1.content']). The response uses Server-Sent Events (SSE) format, sending incremental chunks as the workflow executes. Each chunk includes the blockId and the text content. A final done event includes the execution metadata." },
|
||||
{ question: "How does the SDK handle rate limiting?", answer: "The SDK provides built-in rate limiting support through the executeWithRetry() method. It uses exponential backoff (1s, 2s, 4s, 8s...) with 25% jitter to avoid thundering herd problems. If the API returns a retry-after header, that value is used instead. You can configure maxRetries, initialDelay, maxDelay, and backoffMultiplier. Use getRateLimitInfo() to check your current rate limit status." },
|
||||
{ question: "Is it safe to use the SDK in browser-side code?", answer: "You can use the SDK in the browser, but you should not expose your API key in client-side code. In production, use a backend proxy server to handle SDK calls, or use a public API key with limited permissions. The SDK works with both Node.js and browser environments, but sensitive keys should stay server-side." },
|
||||
{ question: "How do I send files to a workflow through the SDK?", answer: "File objects are automatically detected and converted to base64 format. Include them in the input object under the field name that matches your workflow's API trigger input format. In the browser, pass File objects directly from file inputs. In Node.js, create File objects from buffers. You can also provide files as URL references with type, data, name, and mime fields." },
|
||||
]} />
|
||||
|
||||
@@ -2,10 +2,12 @@
|
||||
title: Function
|
||||
---
|
||||
|
||||
import { Callout } from 'fumadocs-ui/components/callout'
|
||||
import { Tab, Tabs } from 'fumadocs-ui/components/tabs'
|
||||
import { Image } from '@/components/ui/image'
|
||||
import { FAQ } from '@/components/ui/faq'
|
||||
|
||||
The Function block executes custom JavaScript or TypeScript code in your workflows. Transform data, perform calculations, or implement custom logic.
|
||||
The Function block executes custom JavaScript, TypeScript, or Python code in your workflows. Transform data, perform calculations, or implement custom logic.
|
||||
|
||||
<div className="flex justify-center">
|
||||
<Image
|
||||
@@ -41,6 +43,8 @@ Input → Function (Validate & Sanitize) → API (Save to Database)
|
||||
|
||||
### Example: Loyalty Score Calculator
|
||||
|
||||
<Tabs items={['JavaScript', 'Python']}>
|
||||
<Tab value="JavaScript">
|
||||
```javascript title="loyalty-calculator.js"
|
||||
// Process customer data and calculate loyalty score
|
||||
const { purchaseHistory, accountAge, supportTickets } = <agent>;
|
||||
@@ -64,6 +68,120 @@ return {
|
||||
metrics: { spendScore, frequencyScore, supportScore }
|
||||
};
|
||||
```
|
||||
</Tab>
|
||||
<Tab value="Python">
|
||||
```python title="loyalty-calculator.py"
|
||||
import json
|
||||
|
||||
# Reference outputs from other blocks using angle bracket syntax
|
||||
data = json.loads('<agent>')
|
||||
purchase_history = data["purchaseHistory"]
|
||||
account_age = data["accountAge"]
|
||||
support_tickets = data["supportTickets"]
|
||||
|
||||
# Calculate metrics
|
||||
total_spent = sum(p["amount"] for p in purchase_history)
|
||||
purchase_frequency = len(purchase_history) / (account_age / 365)
|
||||
ticket_ratio = support_tickets["resolved"] / support_tickets["total"]
|
||||
|
||||
# Calculate loyalty score (0-100)
|
||||
spend_score = min(total_spent / 1000 * 30, 30)
|
||||
frequency_score = min(purchase_frequency * 20, 40)
|
||||
support_score = ticket_ratio * 30
|
||||
|
||||
loyalty_score = round(spend_score + frequency_score + support_score)
|
||||
|
||||
tier = "Platinum" if loyalty_score >= 80 else "Gold" if loyalty_score >= 60 else "Silver"
|
||||
|
||||
result = {
|
||||
"customer": data["name"],
|
||||
"loyaltyScore": loyalty_score,
|
||||
"loyaltyTier": tier,
|
||||
"metrics": {
|
||||
"spendScore": spend_score,
|
||||
"frequencyScore": frequency_score,
|
||||
"supportScore": support_score
|
||||
}
|
||||
}
|
||||
print(json.dumps(result))
|
||||
```
|
||||
</Tab>
|
||||
</Tabs>
|
||||
|
||||
## Python Support
|
||||
|
||||
The Function block supports Python as an alternative to JavaScript. Python code runs in a secure [E2B](https://e2b.dev) cloud sandbox.
|
||||
|
||||
<div className="flex justify-center">
|
||||
<Image
|
||||
src="/static/blocks/function-python.png"
|
||||
alt="Function block with Python selected"
|
||||
width={400}
|
||||
height={500}
|
||||
className="my-6"
|
||||
/>
|
||||
</div>
|
||||
|
||||
### Enabling Python
|
||||
|
||||
Select **Python** from the language dropdown in the Function block. Python execution requires E2B to be enabled on your Sim instance.
|
||||
|
||||
<Callout type="warn">
|
||||
If you don't see Python as an option in the language dropdown, E2B is not enabled. This only applies to self-hosted instances — E2B is enabled by default on sim.ai.
|
||||
</Callout>
|
||||
|
||||
<Callout type="info">
|
||||
Python code always runs in the E2B sandbox, even for simple scripts without imports. This ensures a secure, isolated execution environment.
|
||||
</Callout>
|
||||
|
||||
### Returning Results
|
||||
|
||||
In Python, print your result as JSON to stdout. The Function block captures stdout and makes it available via `<function.result>`:
|
||||
|
||||
```python title="example.py"
|
||||
import json
|
||||
|
||||
data = {"status": "processed", "count": 42}
|
||||
print(json.dumps(data))
|
||||
```
|
||||
|
||||
### Available Libraries
|
||||
|
||||
The E2B sandbox includes the Python standard library (`json`, `re`, `datetime`, `math`, `os`, `collections`, etc.) and common packages like `matplotlib` for visualization. Charts generated with matplotlib are captured as images automatically.
|
||||
|
||||
<Callout type="info">
|
||||
The exact set of pre-installed packages depends on the E2B sandbox configuration. If a package you need isn't available, consider calling an external API from your code instead.
|
||||
</Callout>
|
||||
|
||||
### Matplotlib Charts
|
||||
|
||||
When your Python code generates matplotlib figures, they are automatically captured and returned as base64-encoded PNG images in the output:
|
||||
|
||||
```python title="chart.py"
|
||||
import matplotlib.pyplot as plt
|
||||
import json
|
||||
|
||||
data = json.loads('<api.data>')
|
||||
|
||||
plt.figure(figsize=(10, 6))
|
||||
plt.bar(data["labels"], data["values"])
|
||||
plt.title("Monthly Revenue")
|
||||
plt.xlabel("Month")
|
||||
plt.ylabel("Revenue ($)")
|
||||
plt.savefig("chart.png")
|
||||
plt.show()
|
||||
```
|
||||
|
||||
{/* TODO: Screenshot of Python code execution output in the logs panel */}
|
||||
|
||||
### JavaScript vs. Python
|
||||
|
||||
| | JavaScript | Python |
|
||||
|--|-----------|--------|
|
||||
| **Execution** | Local VM (fast) or E2B sandbox (with imports) | Always E2B sandbox |
|
||||
| **Returning results** | `return { ... }` | `print(json.dumps({ ... }))` |
|
||||
| **HTTP requests** | `fetch()` built-in | `requests` or `httpx` |
|
||||
| **Best for** | Quick transforms, JSON manipulation | Data science, charting, complex math |
|
||||
|
||||
## Best Practices
|
||||
|
||||
|
||||
@@ -1,225 +1,70 @@
|
||||
---
|
||||
title: Copilot
|
||||
description: Your per-workflow AI assistant for building and editing workflows.
|
||||
---
|
||||
|
||||
import { Callout } from 'fumadocs-ui/components/callout'
|
||||
import { Card, Cards } from 'fumadocs-ui/components/card'
|
||||
import { Image } from '@/components/ui/image'
|
||||
import { MessageCircle, Hammer, ListChecks, Zap, Globe, Paperclip, History, RotateCcw, Brain } from 'lucide-react'
|
||||
import { FAQ } from '@/components/ui/faq'
|
||||
|
||||
Copilot is your in-editor assistant that helps you build and edit workflows. It can:
|
||||
Copilot is the AI assistant built into every workflow editor. It is scoped to the workflow you have open — it reads the current structure, makes changes directly, and saves checkpoints so you can revert if needed.
|
||||
|
||||
- **Explain**: Answer questions about Sim and your current workflow
|
||||
- **Guide**: Suggest edits and best practices
|
||||
- **Build**: Add blocks, wire connections, and configure settings
|
||||
- **Debug**: Analyze execution issues and optimize performance
|
||||
For workspace-wide tasks (managing multiple workflows, running research, working with tables, scheduling jobs), use [Mothership](/mothership).
|
||||
|
||||
<Callout type="info">
|
||||
Copilot is a Sim-managed service. For self-hosted deployments:
|
||||
1. Go to [sim.ai](https://sim.ai) → Settings → Copilot and generate a Copilot API key
|
||||
2. Set `COPILOT_API_KEY` in your self-hosted environment
|
||||
Copilot is a Sim-managed service. For self-hosted deployments, go to [sim.ai](https://sim.ai) → Settings → Copilot, generate a Copilot API key, then set `COPILOT_API_KEY` in your self-hosted environment.
|
||||
</Callout>
|
||||
|
||||
## Modes
|
||||
{/* TODO: Screenshot of the workflow editor with the Copilot panel open on the right side — showing a conversation with a workflow change applied. Ideally shows a message from the user, a response from Copilot, and the checkpoint icon visible on the message. */}
|
||||
|
||||
Switch between modes using the mode selector at the bottom of the input area.
|
||||
## What Copilot Can Do
|
||||
|
||||
<Cards>
|
||||
<Card
|
||||
title={
|
||||
<span className="inline-flex items-center gap-2">
|
||||
<MessageCircle className="h-4 w-4 text-muted-foreground" />
|
||||
Ask
|
||||
</span>
|
||||
}
|
||||
>
|
||||
<div className="m-0 text-sm">
|
||||
Q&A mode for explanations, guidance, and suggestions without making changes to your workflow.
|
||||
</div>
|
||||
</Card>
|
||||
<Card
|
||||
title={
|
||||
<span className="inline-flex items-center gap-2">
|
||||
<Hammer className="h-4 w-4 text-muted-foreground" />
|
||||
Build
|
||||
</span>
|
||||
}
|
||||
>
|
||||
<div className="m-0 text-sm">
|
||||
Workflow building mode. Copilot can add blocks, wire connections, edit configurations, and debug issues.
|
||||
</div>
|
||||
</Card>
|
||||
<Card
|
||||
title={
|
||||
<span className="inline-flex items-center gap-2">
|
||||
<ListChecks className="h-4 w-4 text-muted-foreground" />
|
||||
Plan
|
||||
</span>
|
||||
}
|
||||
>
|
||||
<div className="m-0 text-sm">
|
||||
Creates a step-by-step implementation plan for your workflow without making any changes. Helps you think through the approach before building.
|
||||
</div>
|
||||
</Card>
|
||||
</Cards>
|
||||
Copilot can read and modify the workflow you are currently editing:
|
||||
|
||||
## Models
|
||||
- Add, configure, and connect blocks
|
||||
- Edit existing block configurations
|
||||
- Delete blocks and connections
|
||||
- Debug failures by reading execution logs
|
||||
- Answer questions about the workflow or how Sim works
|
||||
|
||||
Select your preferred AI model using the model selector at the bottom right of the input area.
|
||||
## Chat History
|
||||
|
||||
**Available Models:**
|
||||
- Claude 4.6 Opus (default), 4.5 Opus, Sonnet, Haiku
|
||||
- GPT 5.2 Codex, Pro
|
||||
- Gemini 3 Pro
|
||||
|
||||
Choose based on your needs: faster models for simple tasks, more capable models for complex workflows.
|
||||
|
||||
## Context Menu (@)
|
||||
|
||||
Use the `@` symbol to reference resources and give Copilot more context:
|
||||
|
||||
| Reference | Description |
|
||||
|-----------|-------------|
|
||||
| **Chats** | Previous copilot conversations |
|
||||
| **Workflows** | Any workflow in your workspace |
|
||||
| **Workflow Blocks** | Blocks in the current workflow |
|
||||
| **Blocks** | Block types and templates |
|
||||
| **Knowledge** | Uploaded documents and knowledge bases |
|
||||
| **Docs** | Sim documentation |
|
||||
| **Templates** | Workflow templates |
|
||||
| **Logs** | Execution logs and results |
|
||||
|
||||
Type `@` in the input field to open the context menu, then search or browse to find what you need.
|
||||
|
||||
## Slash Commands (/)
|
||||
|
||||
Use slash commands for quick actions:
|
||||
|
||||
| Command | Description |
|
||||
|---------|-------------|
|
||||
| `/fast` | Fast mode execution |
|
||||
| `/research` | Research and exploration mode |
|
||||
| `/actions` | Execute agent actions |
|
||||
|
||||
**Web Commands:**
|
||||
|
||||
| Command | Description |
|
||||
|---------|-------------|
|
||||
| `/search` | Search the web |
|
||||
| `/read` | Read a specific URL |
|
||||
| `/scrape` | Scrape web page content |
|
||||
| `/crawl` | Crawl multiple pages |
|
||||
|
||||
Type `/` in the input field to see available commands.
|
||||
|
||||
## Chat Management
|
||||
|
||||
### Starting a New Chat
|
||||
|
||||
Click the **+** button in the Copilot header to start a fresh conversation.
|
||||
|
||||
### Chat History
|
||||
|
||||
Click **History** to view previous conversations grouped by date. You can:
|
||||
- Click a chat to resume it
|
||||
- Delete chats you no longer need
|
||||
|
||||
### Editing Messages
|
||||
|
||||
Hover over any of your messages and click **Edit** to modify and resend it. This is useful for refining your prompts.
|
||||
|
||||
### Message Queue
|
||||
|
||||
If you send a message while Copilot is still responding, it gets queued. You can:
|
||||
- View queued messages in the expandable queue panel
|
||||
- Send a queued message immediately (aborts current response)
|
||||
- Remove messages from the queue
|
||||
Click **History** (clock icon) in the Copilot header to see past conversations for this workflow. Click any chat to resume it, or click **+** to start a new one.
|
||||
|
||||
## File Attachments
|
||||
|
||||
Click the attachment icon to upload files with your message. Supported file types include:
|
||||
- Images (preview thumbnails shown)
|
||||
- PDFs
|
||||
- Text files, JSON, XML
|
||||
- Other document formats
|
||||
Click the attachment icon in the input to upload files alongside your message. Copilot can read images, PDFs, and text-based files as context.
|
||||
|
||||
Files are displayed as clickable thumbnails that open in a new tab.
|
||||
## Checkpoints
|
||||
|
||||
## Checkpoints & Changes
|
||||
When Copilot modifies a workflow, it saves a checkpoint of the previous state.
|
||||
|
||||
When Copilot makes changes to your workflow, it saves checkpoints so you can revert if needed.
|
||||
To revert: hover over a Copilot message and click the checkpoints icon, then click **Revert** on the state you want to restore. Reverting cannot be undone.
|
||||
|
||||
### Viewing Checkpoints
|
||||
## Thinking
|
||||
|
||||
Hover over a Copilot message and click the checkpoints icon to see saved workflow states for that message.
|
||||
For complex requests, Copilot may show its reasoning in an expandable thinking block before responding. The block shows how long the thinking took and collapses after the response is complete.
|
||||
|
||||
### Reverting Changes
|
||||
## Usage
|
||||
|
||||
Click **Revert** on any checkpoint to restore your workflow to that state. A confirmation dialog will warn that this action cannot be undone.
|
||||
Copilot usage is billed per token and counts toward your plan's credit usage. If you reach your limit, enable on-demand billing from Settings → Subscription.
|
||||
|
||||
### Accepting Changes
|
||||
|
||||
When Copilot proposes changes, you can:
|
||||
- **Accept**: Apply the proposed changes (`Mod+Shift+Enter`)
|
||||
- **Reject**: Dismiss the changes and keep your current workflow
|
||||
|
||||
## Thinking Blocks
|
||||
|
||||
For complex requests, Copilot may show its reasoning process in expandable thinking blocks:
|
||||
|
||||
- Blocks auto-expand while Copilot is thinking
|
||||
- Click to manually expand/collapse
|
||||
- Shows duration of the thinking process
|
||||
- Helps you understand how Copilot arrived at its solution
|
||||
|
||||
## Options Selection
|
||||
|
||||
When Copilot presents multiple options, you can select using:
|
||||
|
||||
| Control | Action |
|
||||
|---------|--------|
|
||||
| **1-9** | Select option by number |
|
||||
| **Arrow Up/Down** | Navigate between options |
|
||||
| **Enter** | Select highlighted option |
|
||||
|
||||
Selected options are highlighted; unselected options appear struck through.
|
||||
|
||||
## Keyboard Shortcuts
|
||||
|
||||
| Shortcut | Action |
|
||||
|----------|--------|
|
||||
| `@` | Open context menu |
|
||||
| `/` | Open slash commands |
|
||||
| `Arrow Up/Down` | Navigate menu items |
|
||||
| `Enter` | Select menu item |
|
||||
| `Esc` | Close menus |
|
||||
| `Mod+Shift+Enter` | Accept Copilot changes |
|
||||
|
||||
## Usage Limits
|
||||
|
||||
Copilot usage is billed per token from the underlying LLM and counts toward your plan's credit usage. If you reach your usage limit, enable on-demand billing from Settings → Subscription to continue using Copilot beyond your plan's included credits.
|
||||
|
||||
<Callout type="info">
|
||||
See the [Cost Calculation page](/execution/costs) for billing and plan details.
|
||||
</Callout>
|
||||
## Copilot MCP
|
||||
|
||||
You can use Copilot as an MCP server in your favorite editor or AI client. This lets you build, test, deploy, and manage Sim workflows directly from tools like Cursor, Claude Code, Claude Desktop, and VS Code.
|
||||
You can use Copilot as an MCP server to build, test, and manage Sim workflows from external editors — Cursor, Claude Code, Claude Desktop, and VS Code.
|
||||
|
||||
### Generating a Copilot API Key
|
||||
|
||||
To connect to the Copilot MCP server, you need a **Copilot API key**:
|
||||
|
||||
1. Go to [sim.ai](https://sim.ai) and sign in
|
||||
2. Navigate to **Settings** → **Copilot**
|
||||
3. Click **Generate API Key**
|
||||
4. Copy the key — it is only shown once
|
||||
|
||||
The key will look like `sk-sim-copilot-...`. You will use this in the configuration below.
|
||||
The key will look like `sk-sim-copilot-...`.
|
||||
|
||||
### Cursor
|
||||
|
||||
Add the following to your `.cursor/mcp.json` (project-level) or global Cursor MCP settings:
|
||||
Add to `.cursor/mcp.json`:
|
||||
|
||||
```json
|
||||
{
|
||||
@@ -234,12 +79,8 @@ Add the following to your `.cursor/mcp.json` (project-level) or global Cursor MC
|
||||
}
|
||||
```
|
||||
|
||||
Replace `YOUR_COPILOT_API_KEY` with the key you generated above.
|
||||
|
||||
### Claude Code
|
||||
|
||||
Run the following command to add the Copilot MCP server:
|
||||
|
||||
```bash
|
||||
claude mcp add sim-copilot \
|
||||
--transport http \
|
||||
@@ -247,11 +88,9 @@ claude mcp add sim-copilot \
|
||||
--header "X-API-Key: YOUR_COPILOT_API_KEY"
|
||||
```
|
||||
|
||||
Replace `YOUR_COPILOT_API_KEY` with your key.
|
||||
|
||||
### Claude Desktop
|
||||
|
||||
Claude Desktop requires [`mcp-remote`](https://www.npmjs.com/package/mcp-remote) to connect to HTTP-based MCP servers. Add the following to your Claude Desktop config file (`~/Library/Application Support/Claude/claude_desktop_config.json` on macOS):
|
||||
Claude Desktop requires [`mcp-remote`](https://www.npmjs.com/package/mcp-remote). Add to `~/Library/Application Support/Claude/claude_desktop_config.json`:
|
||||
|
||||
```json
|
||||
{
|
||||
@@ -270,11 +109,9 @@ Claude Desktop requires [`mcp-remote`](https://www.npmjs.com/package/mcp-remote)
|
||||
}
|
||||
```
|
||||
|
||||
Replace `YOUR_COPILOT_API_KEY` with your key.
|
||||
|
||||
### VS Code
|
||||
|
||||
Add the following to your VS Code `settings.json` or workspace `.vscode/settings.json`:
|
||||
Add to `settings.json` or `.vscode/settings.json`:
|
||||
|
||||
```json
|
||||
{
|
||||
@@ -292,21 +129,14 @@ Add the following to your VS Code `settings.json` or workspace `.vscode/settings
|
||||
}
|
||||
```
|
||||
|
||||
Replace `YOUR_COPILOT_API_KEY` with your key.
|
||||
|
||||
<Callout type="info">
|
||||
For self-hosted deployments, replace `https://www.sim.ai` with your self-hosted Sim URL.
|
||||
</Callout>
|
||||
|
||||
import { FAQ } from '@/components/ui/faq'
|
||||
|
||||
<FAQ items={[
|
||||
{ question: "What is the difference between Ask, Build, and Plan mode?", answer: "Copilot has three modes. Ask mode is a read-only Q&A mode for explanations, guidance, and suggestions without making any changes to your workflow. Build mode allows Copilot to actively modify your workflow by adding blocks, wiring connections, editing configurations, and debugging issues. Plan mode creates a step-by-step implementation plan for your request without making any changes, so you can review the approach before committing. Use Ask when you want to learn or explore ideas, Plan when you want to see a proposed approach first, and Build when you want Copilot to make changes directly." },
|
||||
{ question: "Does Copilot have access to my full workflow when answering questions?", answer: "Copilot has access to the workflow you are currently editing as context. You can also use the @ context menu to reference other workflows, previous chats, execution logs, knowledge bases, documentation, and templates to give Copilot additional context for your request." },
|
||||
{ question: "How do I use Copilot from an external editor like Cursor or VS Code?", answer: "You can use Copilot as an MCP server from external editors. First, generate a Copilot API key from Settings > Copilot on sim.ai. Then add the MCP server configuration to your editor using the endpoint https://www.sim.ai/api/mcp/copilot with your API key in the X-API-Key header. Configuration examples are available for Cursor, Claude Code, Claude Desktop, and VS Code." },
|
||||
{ question: "Can I revert changes that Copilot made to my workflow?", answer: "Yes. When Copilot makes changes in Build mode, it saves checkpoints of your workflow state. You can hover over a Copilot message and click the checkpoints icon to see saved states, then click Revert on any checkpoint to restore your workflow. Note that reverting cannot be undone, so review the checkpoint before confirming." },
|
||||
{ question: "How does Copilot billing work?", answer: "Copilot usage is billed per token from the underlying LLM and counts toward your plan's credit usage. More capable models like Claude Opus cost more per token than lighter models like Haiku. If you reach your usage limit, you can enable on-demand billing from Settings > Subscription to continue using Copilot." },
|
||||
{ question: "What do the slash commands like /research and /search do?", answer: "Slash commands trigger specialized behaviors. /fast enables fast mode execution, /research activates a research and exploration mode, and /actions executes agent actions. Web commands like /search, /read, /scrape, and /crawl let Copilot interact with the web to search for information, read URLs, scrape page content, or crawl multiple pages to gather context for your request." },
|
||||
{ question: "How do I set up Copilot for a self-hosted deployment?", answer: "For self-hosted deployments, go to sim.ai > Settings > Copilot and generate a Copilot API key. Then set the COPILOT_API_KEY environment variable in your self-hosted environment. Copilot is a Sim-managed service, so the self-hosted instance communicates with Sim's servers to process requests." },
|
||||
{ question: "How is Copilot different from Mothership?", answer: "Copilot is scoped to the workflow you have open — it reads and edits that workflow's blocks and connections. Mothership has access to your entire workspace and can build workflows, manage tables, run research, schedule jobs, and take actions across integrations." },
|
||||
{ question: "Can Copilot access other workflows or workspace data?", answer: "Copilot is scoped to the current workflow. For tasks that span multiple workflows or require workspace-level context, use Mothership." },
|
||||
{ question: "Can I revert changes Copilot made?", answer: "Yes. Copilot saves a checkpoint before each change. Hover over the message and click the checkpoints icon to see saved states, then click Revert to restore one. Reverting cannot be undone." },
|
||||
{ question: "How does Copilot billing work?", answer: "Copilot usage is billed per token and counts toward your plan's credit usage. If you reach your limit, enable on-demand billing from Settings → Subscription." },
|
||||
{ question: "How do I set up Copilot for a self-hosted deployment?", answer: "Go to sim.ai → Settings → Copilot and generate a Copilot API key. Set the COPILOT_API_KEY environment variable in your self-hosted environment. Copilot runs on Sim's infrastructure regardless of where you host the application." },
|
||||
]} />
|
||||
|
||||
|
||||
@@ -1,203 +1,121 @@
|
||||
---
|
||||
title: Credentials
|
||||
description: Manage secrets, API keys, and OAuth connections for your workflows
|
||||
title: Secrets
|
||||
description: Manage API keys and environment variables for your workflows
|
||||
---
|
||||
|
||||
import { Callout } from 'fumadocs-ui/components/callout'
|
||||
import { Image } from '@/components/ui/image'
|
||||
import { Step, Steps } from 'fumadocs-ui/components/steps'
|
||||
import { FAQ } from '@/components/ui/faq'
|
||||
|
||||
Credentials provide a secure way to manage API keys, tokens, and third-party service connections across your workflows. Instead of hardcoding sensitive values into your workflow, you store them as credentials and reference them at runtime.
|
||||
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.
|
||||
|
||||
Sim supports two categories of credentials: **secrets** for static values like API keys, and **OAuth accounts** for authenticated service connections like Google or Slack.
|
||||
## Managing Secrets
|
||||
|
||||
## Getting Started
|
||||
|
||||
To manage credentials, open your workspace **Settings** and navigate to the **Secrets** tab.
|
||||
To manage secrets, open your workspace **Settings** and navigate to the **Secrets** tab.
|
||||
|
||||
<Image
|
||||
src="/static/credentials/settings-secrets.png"
|
||||
alt="Settings modal showing the Secrets tab with a list of saved credentials"
|
||||
src="/static/secrets/secrets-list.png"
|
||||
alt="Secrets tab showing Workspace and Personal sections with inline key-value rows"
|
||||
width={700}
|
||||
height={200}
|
||||
height={500}
|
||||
/>
|
||||
|
||||
From here you can search, create, and delete both secrets and OAuth connections.
|
||||
Secrets are organized into two sections:
|
||||
|
||||
## Secrets
|
||||
- **Workspace** — shared with all members of your workspace
|
||||
- **Personal** — private to you
|
||||
|
||||
Secrets are key-value pairs that store sensitive data like API keys, tokens, and passwords. Each secret has a **key** (used to reference it in workflows) and a **value** (the actual secret).
|
||||
### Adding a Secret
|
||||
|
||||
### Creating 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.
|
||||
|
||||
<Image
|
||||
src="/static/credentials/create-secret.png"
|
||||
alt="Create Secret dialog with fields for key, value, description, and scope toggle"
|
||||
width={500}
|
||||
height={400}
|
||||
/>
|
||||
When you're done, click **Save** to persist all changes.
|
||||
|
||||
<Steps>
|
||||
<Step>
|
||||
Click **+ Add** and select **Secret** as the type
|
||||
</Step>
|
||||
<Step>
|
||||
Enter a **Key** name (letters, numbers, and underscores only, e.g. `OPENAI_API_KEY`)
|
||||
</Step>
|
||||
<Step>
|
||||
Enter the **Value**
|
||||
</Step>
|
||||
<Step>
|
||||
Optionally add a **Description** to help your team understand what the secret is for
|
||||
</Step>
|
||||
<Step>
|
||||
Choose the **Scope** — Workspace or Personal
|
||||
</Step>
|
||||
<Step>
|
||||
Click **Create**
|
||||
</Step>
|
||||
</Steps>
|
||||
<Callout type="info">
|
||||
Keys must use only letters, numbers, and underscores — no spaces or special characters.
|
||||
</Callout>
|
||||
|
||||
### Using Secrets in Workflows
|
||||
### Bulk Import
|
||||
|
||||
To reference a secret in any input field, type `{{` to open the dropdown. It will show your available secrets grouped by scope.
|
||||
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
|
||||
|
||||
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
|
||||
|
||||
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).
|
||||
|
||||
<Image
|
||||
src="/static/credentials/secret-dropdown.png"
|
||||
alt="Typing {{ in a code block opens a dropdown showing available workspace secrets"
|
||||
alt="Typing {{ in an input opens a dropdown showing available secrets"
|
||||
width={400}
|
||||
height={250}
|
||||
/>
|
||||
|
||||
Select the secret you want to use. The reference will appear highlighted in blue, indicating it will be resolved at runtime.
|
||||
Select the secret you want to use. The reference appears highlighted in blue and is resolved to its actual value at runtime.
|
||||
|
||||
<Image
|
||||
src="/static/credentials/secret-resolved.png"
|
||||
alt="A resolved secret reference shown in blue text as {{OPENAI_API_KEY}}"
|
||||
alt="A resolved secret reference shown as {{OPENAI_API_KEY}}"
|
||||
width={400}
|
||||
height={200}
|
||||
/>
|
||||
|
||||
<Callout type="warn">
|
||||
Secret values are never exposed in the workflow editor or logs. They are only resolved during execution.
|
||||
Secret values are never exposed in the workflow editor or execution logs — they are only resolved during execution.
|
||||
</Callout>
|
||||
|
||||
### Bulk Import
|
||||
## Secret Details
|
||||
|
||||
You can import multiple secrets at once by pasting `.env`-style content:
|
||||
|
||||
1. Click **+ Add**, then switch to **Bulk** mode
|
||||
2. Paste your environment variables in `KEY=VALUE` format
|
||||
3. Choose the scope for all imported secrets
|
||||
4. Click **Create**
|
||||
|
||||
The parser supports standard `KEY=VALUE` pairs, quoted values, comments (`#`), and blank lines.
|
||||
|
||||
## OAuth Accounts
|
||||
|
||||
OAuth accounts are authenticated connections to third-party services like Google, Slack, GitHub, and more. Sim handles the OAuth flow, token storage, and automatic refresh.
|
||||
|
||||
You can connect **multiple accounts per provider** — for example, two separate Gmail accounts for different workflows.
|
||||
|
||||
### Connecting an OAuth Account
|
||||
Click **Details** on any secret row to open its detail view.
|
||||
|
||||
<Image
|
||||
src="/static/credentials/create-oauth.png"
|
||||
alt="Create Secret dialog with OAuth Account type selected, showing display name and provider dropdown"
|
||||
width={500}
|
||||
src="/static/secrets/secret-details.png"
|
||||
alt="Secret details view showing Display Name, Description, and Members sections"
|
||||
width={700}
|
||||
height={400}
|
||||
/>
|
||||
|
||||
<Steps>
|
||||
<Step>
|
||||
Click **+ Add** and select **OAuth Account** as the type
|
||||
</Step>
|
||||
<Step>
|
||||
Enter a **Display name** to identify this connection (e.g. "Work Gmail" or "Marketing Slack")
|
||||
</Step>
|
||||
<Step>
|
||||
Optionally add a **Description**
|
||||
</Step>
|
||||
<Step>
|
||||
Select the **Account** provider from the dropdown
|
||||
</Step>
|
||||
<Step>
|
||||
Click **Connect** and complete the authorization flow
|
||||
</Step>
|
||||
</Steps>
|
||||
From here you can:
|
||||
|
||||
### Using OAuth Accounts in Workflows
|
||||
- Edit the **Display Name** and **Description**
|
||||
- Manage **Members** — invite teammates by email and assign them an **Admin** or **Member** role
|
||||
|
||||
Blocks that require authentication (e.g. Gmail, Slack, Google Sheets) display a credential selector dropdown. Select the OAuth account you want the block to use.
|
||||
|
||||
<Image
|
||||
src="/static/credentials/oauth-selector.png"
|
||||
alt="Gmail block showing the account selector dropdown with a connected account and option to connect another"
|
||||
width={500}
|
||||
height={350}
|
||||
/>
|
||||
|
||||
You can also connect additional accounts directly from the block by selecting **Connect another account** at the bottom of the dropdown.
|
||||
|
||||
<Callout type="info">
|
||||
If a block requires an OAuth connection and none is selected, the workflow will fail at that step.
|
||||
</Callout>
|
||||
Click **Save** to apply changes, or **Back** to return to the list.
|
||||
|
||||
## Workspace vs. Personal
|
||||
|
||||
Credentials can be scoped to your **workspace** (shared with your team) or kept **personal** (private to you).
|
||||
|
||||
| | Workspace | Personal |
|
||||
|---|---|---|
|
||||
| **Visibility** | All workspace members | Only you |
|
||||
| **Use in workflows** | Any member can use | Only you can use |
|
||||
| **Best for** | Production workflows, shared services | Testing, personal API keys |
|
||||
| **Who can edit** | Workspace admins | Only you |
|
||||
| **Auto-shared** | Yes — all members get access on creation | No — only you have access |
|
||||
|
||||
<Callout type="info">
|
||||
When a workspace and personal secret share the same key name, the **workspace secret takes precedence**.
|
||||
When a workspace secret and a personal secret share the same key name, the **workspace secret takes precedence**.
|
||||
</Callout>
|
||||
|
||||
### Resolution Order
|
||||
|
||||
When a workflow runs, Sim resolves secrets in this order:
|
||||
When a workflow runs, secrets resolve in this order:
|
||||
|
||||
1. **Workspace secrets** are checked first
|
||||
2. **Personal secrets** are used as a fallback — from the user who triggered the run (manual) or the workflow owner (automated runs via API, webhook, or schedule)
|
||||
|
||||
## Access Control
|
||||
|
||||
Each credential has role-based access control:
|
||||
|
||||
- **Admin** — can view, edit, delete, and manage who has access
|
||||
- **Member** — can use the credential in workflows (read-only)
|
||||
|
||||
When you create a workspace secret, all current workspace members are automatically granted access. Personal secrets are only accessible to you by default.
|
||||
|
||||
### Sharing a Credential
|
||||
|
||||
To share a credential with specific team members:
|
||||
|
||||
1. Click **Details** on the credential
|
||||
2. Invite members by email
|
||||
3. Assign them an **Admin** or **Member** role
|
||||
|
||||
## Best Practices
|
||||
|
||||
- **Use workspace credentials for production** so workflows work regardless of who triggers them
|
||||
- **Use personal credentials for development** to keep your test keys separate
|
||||
- **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`
|
||||
- **Connect multiple OAuth accounts** when you need different permissions or identities per workflow
|
||||
- **Never hardcode secrets** in workflow input fields — always use `{{KEY}}` references
|
||||
|
||||
<FAQ items={[
|
||||
{ question: "Are my secrets encrypted at rest?", answer: "Yes. Secret values and OAuth tokens are encrypted before being stored in the database. The platform uses server-side encryption so that raw secret values are never persisted in plaintext. Secret values are also never exposed in the workflow editor, logs, or API responses." },
|
||||
{ question: "What happens if both a workspace secret and a personal secret have the same key name?", answer: "The workspace secret takes precedence. During execution, the resolver checks workspace secrets first and uses personal secrets only as a fallback. This ensures that production workflows use the shared, team-managed value." },
|
||||
{ question: "Are my secrets encrypted at rest?", answer: "Yes. Secret values are encrypted before being stored in the database using server-side encryption, so raw values are never persisted in plaintext. They are also never exposed in the workflow editor, logs, or API responses." },
|
||||
{ question: "What happens if both a workspace secret and a personal secret have the same key name?", answer: "The workspace secret takes precedence. During execution, the resolver checks workspace secrets first and uses personal secrets only as a fallback. This ensures production workflows use the shared, team-managed value." },
|
||||
{ question: "Who determines which personal secret is used for automated runs?", answer: "For manual runs, the personal secrets of the user who clicked Run are used as fallback. For automated runs triggered by API, webhook, or schedule, the personal secrets of the workflow owner are used instead." },
|
||||
{ question: "Does Sim handle OAuth token refresh automatically?", answer: "Yes. When an OAuth token is used during execution, the platform checks whether the access token has expired and automatically refreshes it using the stored refresh token before making the API call. You do not need to handle token refresh manually." },
|
||||
{ question: "Can I connect multiple OAuth accounts for the same provider?", answer: "Yes. You can connect multiple accounts per provider (for example, two separate Gmail accounts). Each block that requires OAuth lets you select which specific account to use from the credential dropdown. This is useful when different workflows or blocks need different permissions or identities." },
|
||||
{ question: "What happens if I delete a credential that is used in a workflow?", answer: "If a block references a deleted credential, the workflow will fail at that block during execution because the credential cannot be resolved. Make sure to update any blocks that reference a credential before deleting it." },
|
||||
{ question: "Can I import secrets from a .env file?", answer: "Yes. The bulk import feature lets you paste .env-style content in KEY=VALUE format. The parser supports quoted values, comments (lines starting with #), and blank lines. All imported secrets are created with the scope you choose (workspace or personal)." },
|
||||
{ question: "Can I import secrets from a .env file?", answer: "Yes. Paste .env-style content (KEY=VALUE format) into any key or value field and the secrets will be auto-populated. The parser supports export KEY=VALUE, quoted values, and inline comments." },
|
||||
{ question: "What happens if I delete a secret that is used in a workflow?", answer: "The workflow will fail at any block that references the deleted secret during execution because the value cannot be resolved. Update any references before deleting a secret." },
|
||||
]} />
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"title": "Credentials",
|
||||
"pages": ["index", "google-service-account"],
|
||||
"title": "Secrets",
|
||||
"pages": ["index"],
|
||||
"defaultOpen": false
|
||||
}
|
||||
|
||||
343
apps/docs/content/docs/en/execution/api-deployment.mdx
Normal file
343
apps/docs/content/docs/en/execution/api-deployment.mdx
Normal file
@@ -0,0 +1,343 @@
|
||||
---
|
||||
title: API Deployment
|
||||
---
|
||||
|
||||
import { Callout } from 'fumadocs-ui/components/callout'
|
||||
import { Tab, Tabs } from 'fumadocs-ui/components/tabs'
|
||||
import { Image } from '@/components/ui/image'
|
||||
import { FAQ } from '@/components/ui/faq'
|
||||
|
||||
Deploy your workflow as a REST API endpoint that any application can call directly. Supports synchronous, streaming, and asynchronous execution modes.
|
||||
|
||||
## Deploying a Workflow
|
||||
|
||||
Open your workflow and click **Deploy**. The **General** tab opens first and shows you the current deployment state:
|
||||
|
||||
<Image src="/static/api-deployment/api-versions.png" alt="General tab of the Workflow Deployment modal showing a live workflow preview, a Versions table with v2 (live) and v1, and Undeploy / Update buttons" width={800} height={500} />
|
||||
|
||||
The **General** tab contains:
|
||||
|
||||
- **Live Workflow** — a read-only minimap of the workflow snapshot that is currently deployed
|
||||
- **Versions** — a table of every deployment you've published, showing version number, who deployed it, and when
|
||||
- **Deploy / Update / Undeploy** — action buttons at the bottom right
|
||||
|
||||
Click **Deploy** to publish your workflow for the first time, or **Update** to push a new snapshot after making changes. The green dot next to a version indicates it is the currently live version.
|
||||
|
||||
Once deployed, your workflow is available at:
|
||||
|
||||
```
|
||||
POST https://sim.ai/api/workflows/{workflow-id}/execute
|
||||
```
|
||||
|
||||
<Callout type="info">
|
||||
API executions always run against the active deployment snapshot. After changing your workflow on the canvas, click **Update** to publish a new version.
|
||||
</Callout>
|
||||
|
||||
### Keeping Track of Changes
|
||||
|
||||
When you modify the workflow canvas after deploying, an **Update deployment** badge appears at the bottom of the screen as a reminder that your live version is out of date:
|
||||
|
||||
<Image src="/static/api-deployment/api-update-button.png" alt="Canvas toolbar showing the Update and Run buttons with an Update deployment tooltip" width={400} height={200} />
|
||||
|
||||
You can click the **Update** button directly from the canvas toolbar — you don't need to open the Deploy modal every time.
|
||||
|
||||
## Version Control
|
||||
|
||||
Every time you deploy or update, a new version is recorded in the Versions table. You can manage past versions using the context menu (⋮) next to any row:
|
||||
|
||||
<Image src="/static/api-deployment/api-versions-menu.png" alt="Versions table showing v2 (live) and v1 with a context menu open offering Rename, Add description, Promote to live, and Load deployment options" width={800} height={400} />
|
||||
|
||||
| Action | Description |
|
||||
|--------|-------------|
|
||||
| **Rename** | Give the version a human-readable name (e.g., "Added memory") |
|
||||
| **Add description** | Attach a note describing what changed in this version |
|
||||
| **Promote to live** | Make this older version the active one without re-deploying |
|
||||
| **Load deployment** | Load the workflow snapshot from this version back onto your canvas |
|
||||
|
||||
**Promote to live** is useful for rolling back — if a new deployment has an issue, promote the previous version to restore the last known-good state instantly.
|
||||
|
||||
## Making API Calls
|
||||
|
||||
Switch to the **API** tab in the Deploy modal to see ready-to-use code for all three execution modes:
|
||||
|
||||
<Image src="/static/api-deployment/api-tab.png" alt="API tab showing cURL, Python, JavaScript, and TypeScript language options, with Run workflow, Run workflow (stream response), and Run workflow (async) code sections" width={800} height={500} />
|
||||
|
||||
The language selector at the top lets you switch between **cURL**, **Python**, **JavaScript**, and **TypeScript**. Each mode — synchronous, streaming, and async — has its own code block that you can copy directly. The code is pre-filled with your workflow ID and a masked version of your API key.
|
||||
|
||||
At the bottom of the tab, two buttons give you quick access to key settings:
|
||||
|
||||
- **Edit API Info** — set a description and choose between API key auth or public access
|
||||
- **Generate API Key** — create a new API key scoped to your workspace
|
||||
|
||||
## Authentication
|
||||
|
||||
By default, API endpoints require an API key passed in the `x-api-key` header. Generate keys in **Settings → Sim Keys** or via the **Generate API Key** button in the API tab.
|
||||
|
||||
```bash
|
||||
curl -X POST https://sim.ai/api/workflows/{workflow-id}/execute \
|
||||
-H "Content-Type: application/json" \
|
||||
-H "x-api-key: $SIM_API_KEY" \
|
||||
-d '{ "input": "Hello" }'
|
||||
```
|
||||
|
||||
### API Info and Public Access
|
||||
|
||||
Click **Edit API Info** to add a description and change the access mode:
|
||||
|
||||
<Image src="/static/api-deployment/api-info.png" alt="Edit API Info modal with a Description textarea and an Access section toggling between API Key and Public modes" width={800} height={400} />
|
||||
|
||||
| Access Mode | Description |
|
||||
|-------------|-------------|
|
||||
| **API Key** (default) | Requires a valid API key in the `x-api-key` header |
|
||||
| **Public** | No authentication required — anyone with the URL can call the endpoint |
|
||||
|
||||
The **Description** field documents what the workflow API does. This is useful for teams, or when exposing the workflow to tools and services that surface API metadata.
|
||||
|
||||
<Callout type="warn">
|
||||
Public endpoints can be called by anyone with the URL. Only use this for workflows that don't expose sensitive data or perform sensitive actions.
|
||||
</Callout>
|
||||
|
||||
## Execution Modes
|
||||
|
||||
### Synchronous
|
||||
|
||||
The default mode. Send a request and wait for the complete response:
|
||||
|
||||
<Tabs items={['cURL', 'Python', 'TypeScript']}>
|
||||
<Tab value="cURL">
|
||||
```bash
|
||||
curl -X POST https://sim.ai/api/workflows/{workflow-id}/execute \
|
||||
-H "Content-Type: application/json" \
|
||||
-H "x-api-key: $SIM_API_KEY" \
|
||||
-d '{ "input": "Summarize this article" }'
|
||||
```
|
||||
</Tab>
|
||||
<Tab value="Python">
|
||||
```python
|
||||
import requests, os
|
||||
|
||||
response = requests.post(
|
||||
"https://sim.ai/api/workflows/{workflow-id}/execute",
|
||||
headers={
|
||||
"Content-Type": "application/json",
|
||||
"x-api-key": os.environ["SIM_API_KEY"]
|
||||
},
|
||||
json={"input": "Summarize this article"}
|
||||
)
|
||||
print(response.json())
|
||||
```
|
||||
</Tab>
|
||||
<Tab value="TypeScript">
|
||||
```typescript
|
||||
const response = await fetch('https://sim.ai/api/workflows/{workflow-id}/execute', {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
'x-api-key': process.env.SIM_API_KEY!
|
||||
},
|
||||
body: JSON.stringify({ input: 'Summarize this article' })
|
||||
});
|
||||
console.log(await response.json());
|
||||
```
|
||||
</Tab>
|
||||
</Tabs>
|
||||
|
||||
### Streaming
|
||||
|
||||
Stream the response token-by-token as it is generated. Add `"stream": true` to your request body and specify which block output fields to stream using `selectedOutputs`.
|
||||
|
||||
Use the **Select outputs** dropdown in the API tab to choose which fields to stream:
|
||||
|
||||
<Image src="/static/api-deployment/api-select-outputs.png" alt="Select outputs dropdown open showing Agent 1 block with selectable output fields: content, model, tokens, toolCalls, providerTiming, cost" width={800} height={400} />
|
||||
|
||||
The dropdown groups available outputs by block. The most common choice is `content` from an Agent block, which streams the generated text. You can select fields from multiple blocks simultaneously.
|
||||
|
||||
The `selectedOutputs` values in the request body follow the format `blockName.field` (e.g., `agent_1.content`).
|
||||
|
||||
<Tabs items={['cURL', 'Python', 'TypeScript']}>
|
||||
<Tab value="cURL">
|
||||
```bash
|
||||
curl -X POST https://sim.ai/api/workflows/{workflow-id}/execute \
|
||||
-H "Content-Type: application/json" \
|
||||
-H "x-api-key: $SIM_API_KEY" \
|
||||
-d '{
|
||||
"input": "Write a long essay",
|
||||
"stream": true,
|
||||
"selectedOutputs": ["agent_1.content"]
|
||||
}'
|
||||
```
|
||||
</Tab>
|
||||
<Tab value="Python">
|
||||
```python
|
||||
import requests, os
|
||||
|
||||
response = requests.post(
|
||||
"https://sim.ai/api/workflows/{workflow-id}/execute",
|
||||
headers={
|
||||
"Content-Type": "application/json",
|
||||
"x-api-key": os.environ["SIM_API_KEY"]
|
||||
},
|
||||
json={
|
||||
"input": "Write a long essay",
|
||||
"stream": True,
|
||||
"selectedOutputs": ["agent_1.content"]
|
||||
},
|
||||
stream=True
|
||||
)
|
||||
for line in response.iter_lines():
|
||||
if line:
|
||||
print(line.decode())
|
||||
```
|
||||
</Tab>
|
||||
<Tab value="TypeScript">
|
||||
```typescript
|
||||
const response = await fetch('https://sim.ai/api/workflows/{workflow-id}/execute', {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
'x-api-key': process.env.SIM_API_KEY!
|
||||
},
|
||||
body: JSON.stringify({
|
||||
input: 'Write a long essay',
|
||||
stream: true,
|
||||
selectedOutputs: ['agent_1.content']
|
||||
})
|
||||
});
|
||||
|
||||
const reader = response.body!.getReader();
|
||||
const decoder = new TextDecoder();
|
||||
while (true) {
|
||||
const { done, value } = await reader.read();
|
||||
if (done) break;
|
||||
console.log(decoder.decode(value));
|
||||
}
|
||||
```
|
||||
</Tab>
|
||||
</Tabs>
|
||||
|
||||
### Asynchronous
|
||||
|
||||
For long-running workflows, async mode returns a job ID immediately so you don't need to hold the connection open. Add the `X-Execution-Mode: async` header to your request. The API returns HTTP 202 with a job ID and status URL. Poll the status URL until the job completes.
|
||||
|
||||
<Tabs items={['Start Job', 'Check Status']}>
|
||||
<Tab value="Start Job">
|
||||
```bash
|
||||
curl -X POST https://sim.ai/api/workflows/{workflow-id}/execute \
|
||||
-H "Content-Type: application/json" \
|
||||
-H "x-api-key: $SIM_API_KEY" \
|
||||
-H "X-Execution-Mode: async" \
|
||||
-d '{ "input": "Process this large dataset" }'
|
||||
```
|
||||
|
||||
**Response** (HTTP 202):
|
||||
```json
|
||||
{
|
||||
"success": true,
|
||||
"async": true,
|
||||
"jobId": "run_abc123",
|
||||
"executionId": "exec_xyz",
|
||||
"message": "Workflow execution queued",
|
||||
"statusUrl": "https://sim.ai/api/jobs/run_abc123"
|
||||
}
|
||||
```
|
||||
</Tab>
|
||||
<Tab value="Check Status">
|
||||
```bash
|
||||
curl https://sim.ai/api/jobs/{jobId} \
|
||||
-H "x-api-key: $SIM_API_KEY"
|
||||
```
|
||||
|
||||
**While processing:**
|
||||
```json
|
||||
{
|
||||
"success": true,
|
||||
"taskId": "run_abc123",
|
||||
"status": "processing",
|
||||
"metadata": {
|
||||
"createdAt": "2025-09-10T12:00:00.000Z",
|
||||
"startedAt": "2025-09-10T12:00:01.000Z"
|
||||
},
|
||||
"estimatedDuration": 300000
|
||||
}
|
||||
```
|
||||
|
||||
**When completed:**
|
||||
```json
|
||||
{
|
||||
"success": true,
|
||||
"taskId": "run_abc123",
|
||||
"status": "completed",
|
||||
"metadata": {
|
||||
"createdAt": "2025-09-10T12:00:00.000Z",
|
||||
"startedAt": "2025-09-10T12:00:01.000Z",
|
||||
"completedAt": "2025-09-10T12:00:05.000Z",
|
||||
"duration": 4000
|
||||
},
|
||||
"output": { "result": "..." }
|
||||
}
|
||||
```
|
||||
</Tab>
|
||||
</Tabs>
|
||||
|
||||
#### Job Status Values
|
||||
|
||||
| Status | Description |
|
||||
|--------|-------------|
|
||||
| `queued` | Job is waiting to be picked up |
|
||||
| `processing` | Workflow is actively executing |
|
||||
| `completed` | Finished successfully — `output` field contains the result |
|
||||
| `failed` | Execution failed — `error` field contains the message |
|
||||
|
||||
Poll the `statusUrl` from the initial response until the status is `completed` or `failed`.
|
||||
|
||||
#### Execution Time Limits
|
||||
|
||||
| Plan | Sync Limit | Async Limit |
|
||||
|------|-----------|-------------|
|
||||
| **Community** | 5 minutes | 90 minutes |
|
||||
| **Pro / Max / Team / Enterprise** | 50 minutes | 90 minutes |
|
||||
|
||||
If a job exceeds its time limit it is automatically marked as `failed`.
|
||||
|
||||
#### Job Retention
|
||||
|
||||
Completed and failed job results are retained for **24 hours**. After that, the status endpoint returns `404`. Retrieve and store results on your end if you need them longer.
|
||||
|
||||
#### Capacity Limits
|
||||
|
||||
If the execution queue is full, the API returns `503`:
|
||||
|
||||
```json
|
||||
{
|
||||
"error": "Service temporarily at capacity",
|
||||
"retryAfterSeconds": 10
|
||||
}
|
||||
```
|
||||
|
||||
<Callout type="info">
|
||||
Async mode always runs against the deployed version. It does not support draft state, block overrides, or partial execution options like `runFromBlock` or `stopAfterBlockId`.
|
||||
</Callout>
|
||||
|
||||
## API Key Management
|
||||
|
||||
Generate and manage API keys in **Settings → Sim Keys**:
|
||||
|
||||
- **Create** new keys for different applications or environments
|
||||
- **Revoke** keys that are no longer needed
|
||||
- Keys are scoped to your workspace
|
||||
|
||||
## Rate Limits
|
||||
|
||||
API calls are subject to rate limits based on your plan. Rate limit details are returned in response headers (`X-RateLimit-*`) and in the response body. Use async mode for high-volume or long-running workloads.
|
||||
|
||||
For detailed rate limit information and the logs/webhooks API, see [External API](/execution/api).
|
||||
|
||||
<FAQ items={[
|
||||
{ question: "What is the difference between the General tab and the API tab?", answer: "The General tab manages your deployment lifecycle — deploying, updating, rolling back, and viewing version history. The API tab gives you ready-to-use code samples and lets you configure the endpoint's description and access mode." },
|
||||
{ question: "Can I deploy the same workflow as both an API and a chat?", answer: "Yes. A workflow can be simultaneously deployed as an API, chat, MCP tool, and more. Each deployment type runs against the same active snapshot." },
|
||||
{ question: "How do I choose between sync, streaming, and async?", answer: "Use sync for quick workflows that finish in seconds. Use streaming when you want to show progressive output to users as it's generated. Use async for long-running workflows where holding a connection open isn't practical." },
|
||||
{ question: "How do I select multiple outputs for streaming?", answer: "Open the Select outputs dropdown in the API tab and check each output field you want to stream. You can choose fields from multiple blocks. The selected fields are reflected as an array in the selectedOutputs request body parameter." },
|
||||
{ question: "How does Promote to live work?", answer: "Promote to live sets an older version as the active deployment without creating a new version. Subsequent API calls immediately run against the promoted snapshot. This is the fastest way to roll back to a previous state." },
|
||||
{ question: "How long are async job results available?", answer: "Completed and failed job results are retained for 24 hours. After that, the status endpoint returns 404. Retrieve and store results on your end if you need them longer." },
|
||||
{ question: "What happens if my API key is compromised?", answer: "Revoke the key immediately in Settings → Sim Keys and generate a new one. Revoked keys stop working instantly." },
|
||||
]} />
|
||||
184
apps/docs/content/docs/en/execution/chat.mdx
Normal file
184
apps/docs/content/docs/en/execution/chat.mdx
Normal file
@@ -0,0 +1,184 @@
|
||||
---
|
||||
title: Chat Deployment
|
||||
---
|
||||
|
||||
import { Callout } from 'fumadocs-ui/components/callout'
|
||||
import { Tab, Tabs } from 'fumadocs-ui/components/tabs'
|
||||
import { Image } from '@/components/ui/image'
|
||||
import { FAQ } from '@/components/ui/faq'
|
||||
|
||||
Deploy your workflow as a conversational chat interface that users can interact with via a shareable link or embedded widget. Chat supports multi-turn conversations, file uploads, and voice input.
|
||||
|
||||
<Image src="/static/chat/chat-live.png" alt="A deployed chat interface showing a conversation with Friendly Assistant" width={800} height={500} />
|
||||
|
||||
Every chat message triggers a fresh workflow execution, with the full conversation history passed in as context. Responses stream back to the user in real time.
|
||||
|
||||
<Callout type="info">
|
||||
Chat executions run against your workflow's active deployment snapshot. Publish a new deployment after making canvas changes so the chat uses the updated version.
|
||||
</Callout>
|
||||
|
||||
## Creating a Chat
|
||||
|
||||
Open your workflow, click **Deploy**, and select the **Chat** tab. You'll see the chat configuration panel:
|
||||
|
||||
<Image src="/static/chat/chat-deploy-config.png" alt="Chat deployment configuration panel showing URL, Title, Output, Access control, and Welcome message fields" width={800} height={500} />
|
||||
|
||||
Configure the following fields, then click **Launch Chat**:
|
||||
|
||||
| Field | Description |
|
||||
|-------|-------------|
|
||||
| **URL** | Slug that forms the public URL, e.g. `https://www.sim.ai/chat/your-slug`. Lowercase letters, numbers, and hyphens only. Must be unique across all workspaces. |
|
||||
| **Title** | Display name shown in the chat header. |
|
||||
| **Output** | Output fields from your workflow blocks returned as the chat response. At least one must be selected. |
|
||||
| **Welcome Message** | Greeting shown before the user sends their first message. Defaults to `"Hi there! How can I help you today?"`. |
|
||||
| **Access Control** | Controls who can access the chat. See [Access Control](#access-control) below. |
|
||||
|
||||
### Output Selection
|
||||
|
||||
<Image src="/static/chat/chat-deploy-output.png" alt="Output dropdown showing Agent 1 block with selectable fields: content, model, tokens, toolCalls, providerTiming, cost" width={800} height={400} />
|
||||
|
||||
The output dropdown groups available fields by block. For an Agent block, you can choose from `content`, `model`, `tokens`, `toolCalls`, `providerTiming`, and `cost`. In most cases, selecting `content` from the final Agent block is all you need — it streams the agent's text response directly to the user.
|
||||
|
||||
## Access Control
|
||||
|
||||
<Image src="/static/chat/chat-deploy-access-email.png" alt="Access control section with Email tab selected, showing an Allowed emails field with @sim.ai domain added" width={800} height={300} />
|
||||
|
||||
| Mode | Description |
|
||||
|------|-------------|
|
||||
| **Public** | Anyone with the link can chat — no authentication required |
|
||||
| **Password** | Users must enter a password before they can start chatting |
|
||||
| **Email** | Only specific email addresses or domains can access. Users verify with a 6-digit OTP sent to their email |
|
||||
| **SSO** | OIDC-based single sign-on (enterprise only) |
|
||||
|
||||
**Email access:** Add individual addresses (`user@example.com`) or entire domains (`@example.com`) to the **Allowed emails** field. Users receive a one-time 6-digit OTP to their inbox — once verified, they can chat for the duration of their session.
|
||||
|
||||
**Password access:** A password field appears when this mode is selected. Share the password with users directly; they enter it before the conversation begins.
|
||||
|
||||
**SSO:** Uses OIDC to authenticate users through your identity provider. Available on enterprise plans.
|
||||
|
||||
## Sharing
|
||||
|
||||
### Direct Link
|
||||
|
||||
```
|
||||
https://www.sim.ai/chat/your-slug
|
||||
```
|
||||
|
||||
### Iframe
|
||||
|
||||
```html
|
||||
<iframe
|
||||
src="https://www.sim.ai/chat/your-slug"
|
||||
width="100%"
|
||||
height="600"
|
||||
frameborder="0"
|
||||
title="Chat"
|
||||
></iframe>
|
||||
```
|
||||
|
||||
## API Submission
|
||||
|
||||
You can also send messages to a chat programmatically. Responses are streamed using server-sent events (SSE).
|
||||
|
||||
<Tabs items={['cURL', 'TypeScript']}>
|
||||
<Tab value="cURL">
|
||||
```bash
|
||||
curl -X POST https://www.sim.ai/api/chat/your-slug \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{
|
||||
"input": "Hello, I need help with my order",
|
||||
"conversationId": "optional-conversation-id"
|
||||
}'
|
||||
```
|
||||
</Tab>
|
||||
<Tab value="TypeScript">
|
||||
```typescript
|
||||
const response = await fetch('https://www.sim.ai/api/chat/your-slug', {
|
||||
method: 'POST',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
body: JSON.stringify({
|
||||
input: 'Hello, I need help with my order',
|
||||
conversationId: 'optional-conversation-id'
|
||||
})
|
||||
});
|
||||
|
||||
// Response is an SSE stream
|
||||
const reader = response.body?.getReader();
|
||||
const decoder = new TextDecoder();
|
||||
|
||||
while (true) {
|
||||
const { done, value } = await reader!.read();
|
||||
if (done) break;
|
||||
console.log(decoder.decode(value));
|
||||
}
|
||||
```
|
||||
</Tab>
|
||||
</Tabs>
|
||||
|
||||
### With File Uploads
|
||||
|
||||
```bash
|
||||
curl -X POST https://www.sim.ai/api/chat/your-slug \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{
|
||||
"input": "What does this document say?",
|
||||
"files": [{
|
||||
"name": "report.pdf",
|
||||
"type": "application/pdf",
|
||||
"size": 1048576,
|
||||
"data": "data:application/pdf;base64,..."
|
||||
}]
|
||||
}'
|
||||
```
|
||||
|
||||
### Protected Chats
|
||||
|
||||
For password-protected chats, include the password in the request body:
|
||||
|
||||
```bash
|
||||
curl -X POST https://www.sim.ai/api/chat/your-slug \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{ "password": "secret", "input": "Hello" }'
|
||||
```
|
||||
|
||||
For email-protected chats, authenticate with OTP first:
|
||||
|
||||
```bash
|
||||
# Step 1: Request OTP — sends a 6-digit code to the email address
|
||||
curl -X POST https://www.sim.ai/api/chat/your-slug/otp \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{ "email": "allowed@example.com" }'
|
||||
|
||||
# Step 2: Verify OTP — save the Set-Cookie header for subsequent requests
|
||||
curl -X PUT https://www.sim.ai/api/chat/your-slug/otp \
|
||||
-H "Content-Type: application/json" \
|
||||
-c cookies.txt \
|
||||
-d '{ "email": "allowed@example.com", "otp": "123456" }'
|
||||
|
||||
# Step 3: Send messages using the auth cookie from Step 2
|
||||
curl -X POST https://www.sim.ai/api/chat/your-slug \
|
||||
-H "Content-Type: application/json" \
|
||||
-b cookies.txt \
|
||||
-d '{ "input": "Hello" }'
|
||||
```
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
**Chat returns 403** — The deployment is inactive. Open the Deploy modal and re-deploy the workflow.
|
||||
|
||||
**"At least one output block is required"** — No output field is selected in the Output dropdown. Open the Deploy modal, go to the Chat tab, and select at least one output from a block.
|
||||
|
||||
**OTP email not arriving** — Confirm the email address is on the allowed list and check spam folders. OTP codes expire after 15 minutes and can be resent after a 30-second cooldown.
|
||||
|
||||
**Chat not loading in iframe** — Check your site's Content Security Policy allows iframes from `sim.ai`.
|
||||
|
||||
**Responses not updating after workflow changes** — Chat uses the active deployment snapshot. Publish a new deployment from the Deploy modal to pick up your latest changes.
|
||||
|
||||
<FAQ items={[
|
||||
{ question: "How is chat different from API deployment?", answer: "API deployment exposes your workflow as a REST endpoint for programmatic use. Chat wraps the workflow in a hosted conversational UI with streaming, file uploads, voice input, and access control — no application code required to use it." },
|
||||
{ question: "Which output field should I select?", answer: "For workflows built around Agent blocks, select the content field from the final Agent block — this streams the agent's text response to the user. You can select multiple fields if your workflow produces structured output you want to expose." },
|
||||
{ question: "How does conversation history work?", answer: "Each message triggers a new workflow execution. The full conversation history — all prior user messages and assistant responses — is passed as context so your workflow can maintain continuity across turns." },
|
||||
{ question: "How does email OTP authentication work?", answer: "When a user opens an email-protected chat, they enter their email address. If it matches the allowed list, Sim sends a 6-digit OTP to that address. The user enters the code, and a session cookie is set for the duration of their visit." },
|
||||
{ question: "Is there a message length limit?", answer: "There is no hard limit on message length. Very long messages may impact response time depending on your workflow's model context window." },
|
||||
{ question: "Can I use chat with any workflow?", answer: "Yes, any workflow can be deployed as a chat. The chat sends the user's message as the workflow input and streams the selected block outputs back as the response." },
|
||||
]} />
|
||||
@@ -367,12 +367,12 @@ Sim uses a **base subscription + overage** billing model:
|
||||
|
||||
### Threshold Billing
|
||||
|
||||
When on-demand is enabled and unbilled overage reaches $50, Sim automatically bills the full unbilled amount.
|
||||
When on-demand is enabled and unbilled overage reaches $100, Sim automatically bills the full unbilled amount.
|
||||
|
||||
**Example:**
|
||||
- Day 10: $70 overage → Bill $70 immediately
|
||||
- Day 15: Additional $35 usage ($105 total) → Already billed, no action
|
||||
- Day 20: Another $50 usage ($155 total, $85 unbilled) → Bill $85 immediately
|
||||
- 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.
|
||||
|
||||
@@ -441,6 +441,21 @@ curl -X GET -H "X-API-Key: YOUR_API_KEY" -H "Content-Type: application/json" htt
|
||||
- `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
|
||||
|
||||
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.
|
||||
|
||||
<Callout type="info">
|
||||
Enterprise users should contact support for credit adjustments.
|
||||
</Callout>
|
||||
|
||||
## 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.
|
||||
@@ -465,5 +480,5 @@ import { FAQ } from '@/components/ui/faq'
|
||||
{ question: "What happens when I exceed my plan's credit limit?", answer: "By default, your usage is capped at your plan's included credits and runs will stop. If you enable on-demand billing or manually raise your usage limit in Settings, you can continue running workflows and pay for the overage at the end of the billing period." },
|
||||
{ question: "How does the 1.1x hosted model multiplier work?", answer: "When you use Sim's hosted API keys (instead of bringing your own), a 1.1x multiplier is applied to the base model pricing for Agent blocks. This covers infrastructure and API management costs. You can avoid this multiplier by using your own API keys via the BYOK feature." },
|
||||
{ question: "Are there any free options for AI models?", answer: "Yes. If you run local models through Ollama or VLLM, there are no API costs for those model calls. You still pay the base run charge of 1 credit per run." },
|
||||
{ question: "When does threshold billing trigger?", answer: "When on-demand billing is enabled and your unbilled overage reaches $50, Sim automatically bills the full unbilled amount. This spreads large charges throughout the month instead of accumulating one large bill at period end." },
|
||||
{ question: "When does threshold billing trigger?", answer: "When on-demand billing is enabled and your unbilled overage reaches $100, Sim automatically bills the full unbilled amount. This spreads large charges throughout the month instead of accumulating one large bill at period end." },
|
||||
]} />
|
||||
|
||||
@@ -32,6 +32,15 @@ Sim's execution engine brings your workflows to life by processing blocks in the
|
||||
<Card title="External API" href="/execution/api">
|
||||
Access run logs and set up webhooks programmatically via REST API
|
||||
</Card>
|
||||
|
||||
<Card title="API Deployment" href="/execution/api-deployment">
|
||||
Deploy your workflow as a REST API endpoint with sync, streaming, and async modes
|
||||
</Card>
|
||||
|
||||
<Card title="Chat Deployment" href="/execution/chat">
|
||||
Deploy your workflow as a conversational chat interface with streaming, file uploads, and voice
|
||||
</Card>
|
||||
|
||||
</Cards>
|
||||
|
||||
## Key Concepts
|
||||
@@ -58,17 +67,51 @@ Each workflow maintains a rich context during a run containing:
|
||||
|
||||
API, Chat, Schedule, and Webhook runs use the workflow’s active deployment snapshot. Manual runs from the editor use the current draft canvas state, letting you test changes before deploying. Publish a new deployment whenever you change the canvas so every trigger uses the updated version.
|
||||
|
||||
<div className='flex justify-center my-6'>
|
||||
<div className="flex justify-center my-6">
|
||||
<Image
|
||||
src='/static/execution/deployment-versions.png'
|
||||
alt='Deployment versions table'
|
||||
src="/static/execution/deployment-versions.png"
|
||||
alt="Deployment versions table"
|
||||
width={500}
|
||||
height={280}
|
||||
className='rounded-xl border border-border shadow-sm'
|
||||
className="rounded-xl border border-border shadow-sm"
|
||||
/>
|
||||
</div>
|
||||
|
||||
The Deploy modal keeps a full version history—inspect any snapshot, compare it against your draft, and promote or roll back with one click when you need to restore a prior release.
|
||||
### Version History
|
||||
|
||||
The **General** tab in the Deploy modal shows a version history table for every deployment. Each row shows the version name, who deployed it, and when.
|
||||
|
||||
<div className="flex justify-center">
|
||||
<Image
|
||||
src="/static/execution/deployment-versions-table.png"
|
||||
alt="Version history table with multiple deployment versions"
|
||||
width={600}
|
||||
height={650}
|
||||
className="my-6"
|
||||
/>
|
||||
</div>
|
||||
|
||||
From the version table you can:
|
||||
|
||||
- **Rename** a version to give it a meaningful label (e.g., "v2 — added error handling")
|
||||
- **Add a description** with notes about what changed in that deployment
|
||||
- **Promote to live** to roll back to an older version — this makes the selected version the active deployment without changing your draft canvas
|
||||
- **Load into editor** to restore a previous version's workflow into the canvas for editing and redeploying
|
||||
- **Preview a version** by selecting a row to view that version's workflow in the canvas preview, then toggle between **Live** and the selected version
|
||||
|
||||
<div className="flex justify-center">
|
||||
<Image
|
||||
src="/static/execution/deployment-version-preview.png"
|
||||
alt="Previewing a selected deployment version"
|
||||
width={600}
|
||||
height={650}
|
||||
className="my-6"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<Callout type="info">
|
||||
Promoting an old version takes effect immediately — all API, Chat, Schedule, and Webhook executions will use the promoted version. Your draft canvas is not affected.
|
||||
</Callout>
|
||||
|
||||
## Programmatic Access
|
||||
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
{
|
||||
"pages": ["index", "basics", "files", "api", "logging", "costs"]
|
||||
"pages": ["index", "basics", "files", "api", "api-deployment", "chat", "logging", "costs"]
|
||||
}
|
||||
|
||||
@@ -51,7 +51,7 @@ Welcome to Sim, the open-source AI workspace where teams build, deploy, and mana
|
||||
<Card title="MCP Integration" href="/mcp">
|
||||
Connect external services with Model Context Protocol
|
||||
</Card>
|
||||
<Card title="SDKs" href="/sdks">
|
||||
<Card title="SDKs" href="/api-reference">
|
||||
Integrate Sim into your applications
|
||||
</Card>
|
||||
</Cards>
|
||||
140
apps/docs/content/docs/en/integrations/index.mdx
Normal file
140
apps/docs/content/docs/en/integrations/index.mdx
Normal file
@@ -0,0 +1,140 @@
|
||||
---
|
||||
title: Integrations
|
||||
description: Connect third-party services and OAuth accounts for your workflows
|
||||
---
|
||||
|
||||
import { Callout } from 'fumadocs-ui/components/callout'
|
||||
import { Image } from '@/components/ui/image'
|
||||
import { FAQ } from '@/components/ui/faq'
|
||||
|
||||
Integrations are authenticated connections to third-party services like Gmail, Slack, GitHub, Dropbox, and more. Sim handles the OAuth flow, token storage, and automatic token refresh — you connect once and select the account in any block that needs it.
|
||||
|
||||
You can connect **multiple accounts per service** — for example, two separate Gmail accounts for different workflows.
|
||||
|
||||
## Managing Integrations
|
||||
|
||||
To manage integrations, open your workspace **Settings** and navigate to the **Integrations** tab.
|
||||
|
||||
<Image
|
||||
src="/static/integrations/integrations-list.png"
|
||||
alt="Integrations tab showing connected accounts with service icons, names, and Details/Disconnect buttons"
|
||||
width={700}
|
||||
height={500}
|
||||
/>
|
||||
|
||||
The list shows all your connected accounts with the service icon, display name, and provider. Each entry has a **Details** button and a **Disconnect** button.
|
||||
|
||||
## Connecting an Account
|
||||
|
||||
Click **+ Connect** in the top right to open the connection modal.
|
||||
|
||||
<Image
|
||||
src="/static/integrations/connect-service-picker.png"
|
||||
alt="Connect Integration modal showing a searchable list of available services"
|
||||
width={500}
|
||||
height={400}
|
||||
/>
|
||||
|
||||
Search for or select the service you want to connect, then fill in the connection details:
|
||||
|
||||
<Image
|
||||
src="/static/integrations/connect-modal.png"
|
||||
alt="Connect Gmail modal showing permissions requested, display name field, and description field"
|
||||
width={500}
|
||||
height={450}
|
||||
/>
|
||||
|
||||
1. Review the **Permissions requested** — these are the scopes Sim will request from the provider
|
||||
2. Enter a **Display name** to identify this connection (e.g. "Work Gmail" or "Marketing Slack")
|
||||
3. Optionally add a **Description**
|
||||
4. Click **Connect** and complete the authorization flow
|
||||
|
||||
## Using Integrations in Workflows
|
||||
|
||||
Blocks that require authentication (e.g. Gmail, Slack, Google Sheets) display a credential selector. Select the connected account you want that block to use.
|
||||
|
||||
<Image
|
||||
src="/static/credentials/oauth-selector.png"
|
||||
alt="Gmail block showing the account selector dropdown with connected accounts"
|
||||
width={500}
|
||||
height={350}
|
||||
/>
|
||||
|
||||
You can also connect additional accounts directly from the block by selecting **Connect another [service] account** at the bottom of the dropdown.
|
||||
|
||||
<Callout type="info">
|
||||
If a block requires an integration and none is selected, the workflow will fail at that step.
|
||||
</Callout>
|
||||
|
||||
## Using a Credential ID
|
||||
|
||||
Each integration 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 **Details** on any integration and click the clipboard icon next to the Display Name.
|
||||
|
||||
<Image
|
||||
src="/static/integrations/copy-credential-id.png"
|
||||
alt="Integration details showing the Copy credential ID tooltip on the clipboard icon next to the Display Name"
|
||||
width={700}
|
||||
height={150}
|
||||
/>
|
||||
|
||||
In any block that requires an integration, click **Switch to manual ID** next to the credential selector to switch from the dropdown to a text field.
|
||||
|
||||
<Image
|
||||
src="/static/integrations/switch-to-manual-id.png"
|
||||
alt="Block showing the Switch to manual ID button next to the account selector"
|
||||
width={500}
|
||||
height={200}
|
||||
/>
|
||||
|
||||
Paste or reference the credential ID in that field. You can use a `{{SECRET}}` reference or a block output variable to make it dynamic.
|
||||
|
||||
<Image
|
||||
src="/static/integrations/manual-credential-id.png"
|
||||
alt="Block showing the Enter credential ID text field after switching to manual mode"
|
||||
width={500}
|
||||
height={200}
|
||||
/>
|
||||
|
||||
## Integration Details
|
||||
|
||||
Click **Details** on any integration to open its detail view.
|
||||
|
||||
<Image
|
||||
src="/static/integrations/integration-details.png"
|
||||
alt="Integration details view showing Display Name, Description, Members, Reconnect, and Disconnect"
|
||||
width={700}
|
||||
height={420}
|
||||
/>
|
||||
|
||||
From here you can:
|
||||
|
||||
- Edit the **Display Name** and **Description**
|
||||
- Manage **Members** — invite teammates by email and assign them an **Admin** or **Member** role
|
||||
- **Reconnect** — re-authorize the connection if it has expired or if you need to update permissions
|
||||
- **Disconnect** — remove the integration entirely
|
||||
|
||||
Click **Save** to apply changes, or **Back** to return to the list.
|
||||
|
||||
<Callout type="warn">
|
||||
If you disconnect an integration that is used in a workflow, that workflow will fail at any block referencing it. Update blocks before disconnecting.
|
||||
</Callout>
|
||||
|
||||
## Access Control
|
||||
|
||||
Each integration has role-based access:
|
||||
|
||||
- **Admin** — can view, edit, disconnect, reconnect, and manage member access
|
||||
- **Member** — can use the integration in workflows (read-only)
|
||||
|
||||
When you connect an integration, you are automatically set as its Admin. You can share it with teammates from the Details view.
|
||||
|
||||
<FAQ items={[
|
||||
{ question: "Does Sim handle OAuth token refresh automatically?", answer: "Yes. When an integration is used during execution, Sim checks whether the access token has expired and automatically refreshes it using the stored refresh token before making the API call. You do not need to handle token refresh manually." },
|
||||
{ question: "Can I connect multiple accounts for the same service?", answer: "Yes. You can connect multiple accounts per service (for example, two separate Gmail accounts). Each block lets you select which account to use from the credential dropdown. This is useful when different workflows need different identities or permissions." },
|
||||
{ question: "What is a credential ID and when should I use it?", answer: "Each integration has a unique credential ID that you can use instead of the dropdown selector. This lets you pass the credential dynamically — for example, from a variable or a previous block's output — so the same workflow can use different accounts depending on the context. Copy the ID from the Details view and use Switch to manual ID in any block to paste or reference it." },
|
||||
{ question: "What happens if an OAuth token can no longer be refreshed?", answer: "If a refresh fails (e.g. the user revoked access or the refresh token expired), the workflow will fail at the block using that integration. Open Settings → Integrations, find the connection, and use the Reconnect button to re-authorize it." },
|
||||
{ question: "Are OAuth tokens encrypted at rest?", answer: "Yes. OAuth tokens are encrypted before being stored in the database and are never exposed in the workflow editor, logs, or API responses." },
|
||||
{ question: "What happens if I disconnect an integration that is used in a workflow?", answer: "Any block referencing the disconnected integration will fail at runtime. Make sure to update those blocks before disconnecting, or reconnect the integration to restore access." },
|
||||
]} />
|
||||
5
apps/docs/content/docs/en/integrations/meta.json
Normal file
5
apps/docs/content/docs/en/integrations/meta.json
Normal file
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"title": "Integrations",
|
||||
"pages": ["index", "google-service-account"],
|
||||
"defaultOpen": false
|
||||
}
|
||||
@@ -5,13 +5,16 @@ description: Automatically sync documents from external sources into your knowle
|
||||
|
||||
import { Callout } from 'fumadocs-ui/components/callout'
|
||||
import { Step, Steps } from 'fumadocs-ui/components/steps'
|
||||
import { Image } from '@/components/ui/image'
|
||||
import { FAQ } from '@/components/ui/faq'
|
||||
|
||||
Connectors let you pull documents directly from external services into your knowledge base. Instead of manually uploading files, a connector continuously syncs content from sources like Notion, Google Drive, GitHub, Slack, and more — keeping your knowledge base up to date automatically.
|
||||
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
|
||||
|
||||
Sim ships with 30 built-in connectors spanning productivity tools, cloud storage, development platforms, and more.
|
||||
<Image src="/static/connectors/connectors-sources.png" alt="Connect Source picker showing a searchable list of available connectors including Airtable, Asana, Confluence, Discord, Dropbox, Evernote, Fireflies, GitHub, and Gmail" width={800} height={500} />
|
||||
|
||||
Sim ships with 30 built-in connectors:
|
||||
|
||||
| Category | Connectors |
|
||||
|----------|-----------|
|
||||
@@ -29,24 +32,25 @@ Sim ships with 30 built-in connectors spanning productivity tools, cloud storage
|
||||
|
||||
## 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:
|
||||
|
||||
<Steps>
|
||||
<Step>
|
||||
|
||||
### Select a source
|
||||
|
||||
Open a knowledge base and click **Add Connector**. You'll see the full list of available connectors — pick the service you want to sync from.
|
||||
|
||||
</Step>
|
||||
<Step>
|
||||
|
||||
### Authenticate
|
||||
|
||||
Most connectors use **OAuth** — select an existing credential from the dropdown, or click **Connect new account** to authorize through the service's login flow. Tokens are refreshed automatically, so you won't need to re-authenticate unless you revoke access.
|
||||
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.
|
||||
|
||||
A few connectors (Evernote, Obsidian, Fireflies) use **API keys** instead. Paste your key or developer token directly, and it will be stored securely.
|
||||
A few connectors use **API keys** instead:
|
||||
|
||||
| Connector | Where to get the key |
|
||||
|-----------|---------------------|
|
||||
| **Evernote** | Developer Token (starts with `S=`) from your Evernote account settings |
|
||||
| **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 |
|
||||
|
||||
<Callout type="info">
|
||||
If you rotate an API key in the external service, you'll need to update it in Sim as well. OAuth tokens are refreshed automatically, but API keys are not.
|
||||
If you rotate an API key in the external service, update it in Sim as well — OAuth tokens refresh automatically, but API keys do not.
|
||||
</Callout>
|
||||
|
||||
</Step>
|
||||
@@ -54,103 +58,135 @@ A few connectors (Evernote, Obsidian, Fireflies) use **API keys** instead. Paste
|
||||
|
||||
### Configure
|
||||
|
||||
Each connector has its own configuration fields that control what gets synced. Some examples:
|
||||
Each connector has source-specific fields that control what gets synced. Examples:
|
||||
|
||||
- **Notion**: Choose between syncing 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
|
||||
- **Obsidian**: Provide your vault URL and optionally restrict to a folder path
|
||||
- **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
|
||||
- **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
|
||||
|
||||
All configuration is validated when you save — if a repository doesn't exist or a domain is unreachable, you'll get an immediate error.
|
||||
Configuration is validated on save — if a repository doesn't exist or a domain is unreachable, you'll see an error immediately.
|
||||
|
||||
</Step>
|
||||
<Step>
|
||||
|
||||
### Choose sync frequency
|
||||
|
||||
Select how often the connector should re-sync:
|
||||
|
||||
| Frequency | Description |
|
||||
|-----------|-------------|
|
||||
| Frequency | Notes |
|
||||
|-----------|-------|
|
||||
| Every hour | Best for fast-moving sources |
|
||||
| Every 6 hours | Good balance for most use cases |
|
||||
| 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 |
|
||||
| Manual only | Sync only when you trigger it manually |
|
||||
|
||||
Sub-hourly frequencies require a Max or Enterprise plan.
|
||||
|
||||
</Step>
|
||||
<Step>
|
||||
|
||||
### Configure metadata tags (optional)
|
||||
|
||||
If the connector supports metadata tags, you'll see checkboxes for each tag type (e.g., Labels, Last Modified, Notebook). All are enabled by default — uncheck any you don't need.
|
||||
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.
|
||||
|
||||
See the [Metadata Tags](#metadata-tags) section below for details.
|
||||
Tag slots are shared across all documents in a knowledge base. See [Tags](/knowledgebase/tags) for details.
|
||||
|
||||
</Step>
|
||||
<Step>
|
||||
|
||||
### Connect & Sync
|
||||
|
||||
Click **Connect & Sync** to save the connector and trigger the first sync immediately. Documents will begin appearing in your knowledge base as they are processed.
|
||||
Click **Connect & Sync** to save the connector and trigger the first sync. Documents will start appearing as they're processed.
|
||||
|
||||
</Step>
|
||||
</Steps>
|
||||
|
||||
## How Syncing Works
|
||||
## Managing Connectors
|
||||
|
||||
On each sync, the connector fetches documents from the external service and compares them against what's already in your knowledge base. Only documents that have actually changed are reprocessed — new content is added, updated content is re-chunked and re-embedded, and documents that no longer exist in the source are removed.
|
||||
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:
|
||||
|
||||
This means syncing is efficient even for large document sets. A connector with thousands of documents will only do meaningful work when something changes.
|
||||
<Image src="/static/connectors/connectors-sync-history.png" alt="Connected Sources panel showing a Google Docs connector with Active status, last sync details, and a sync history log with dated entries" width={800} height={450} />
|
||||
|
||||
### Handling Failures
|
||||
The action buttons on each connector card:
|
||||
|
||||
If a single document fails to fetch (e.g., due to a permission issue or timeout), the sync continues with the remaining documents. The failed document will be retried on the next sync cycle.
|
||||
| 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 |
|
||||
|
||||
If an entire sync fails (e.g., the service is down or credentials expired), the connector automatically backs off and retries later. The backoff resets as soon as a sync succeeds.
|
||||
### Editing a Connector
|
||||
|
||||
## Metadata Tags
|
||||
Click the settings icon to open the edit modal. It has two tabs:
|
||||
|
||||
Connectors can automatically populate [tags](/docs/knowledgebase/tags) with metadata from the source, letting you filter documents in the Knowledge block based on information from the external service.
|
||||
**Settings** — change any source-specific config fields (e.g., switch the GitHub branch) and update the sync frequency.
|
||||
|
||||
For example, a Notion connector might tag documents with their **Labels**, **Last Modified** date, and **Created** date. A GitHub connector might tag documents with their **Repository** and **File Path**. This metadata becomes available for [tag-based filtering](/docs/knowledgebase/tags) in your workflows.
|
||||
**Documents** — browse all documents this connector has synced and manage exclusions (see [Excluding Documents](#excluding-documents) below).
|
||||
|
||||
### Opting Out
|
||||
### Sync History
|
||||
|
||||
You can disable specific metadata tags during connector setup. Disabled tags won't be populated, leaving those tag slots available for other connectors or manual tagging.
|
||||
Expand any connector card by clicking the chevron to see a log of recent syncs:
|
||||
|
||||
<Callout type="info">
|
||||
Tag slots are shared across all documents in a knowledge base. If you have multiple connectors, each one's metadata tags draw from the same pool of available slots.
|
||||
</Callout>
|
||||
- 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
|
||||
|
||||
You can manually exclude specific documents from a connector's sync. Excluded documents are skipped on every subsequent sync, even if they change in the source. This is useful for filtering out templates, drafts, or other content you don't want in your knowledge base.
|
||||
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.
|
||||
|
||||
## Source Links
|
||||
<Image src="/static/connectors/connectors-excluded.png" alt="Edit Google Docs modal showing the Documents tab with Active (37) and Excluded (0) filter buttons and a 'No excluded documents' message" width={800} height={450} />
|
||||
|
||||
Every synced document retains a link back to the original in the external service. This lets you trace any knowledge base document to its source — whether that's a Notion page, a GitHub file, a Confluence article, or a Slack conversation.
|
||||
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
|
||||
|
||||
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.
|
||||
|
||||
### 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
|
||||
|
||||
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
|
||||
|
||||
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.
|
||||
|
||||
<Callout type="info">
|
||||
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.
|
||||
</Callout>
|
||||
|
||||
## Multiple Connectors
|
||||
|
||||
You can add multiple connectors to a single knowledge base. For example, you might sync internal documentation from Confluence alongside code from GitHub and meeting notes from Fireflies — all searchable together through the Knowledge block.
|
||||
<Image src="/static/connectors/connectors-list.png" alt="Knowledge base document list showing synced Google Docs documents with Name, Size, Tokens, Chunks, Uploaded date, Status, and Tags columns" width={800} height={300} />
|
||||
|
||||
Each connector manages its own documents independently. Metadata tag slots are shared across the knowledge base, so keep an eye on slot usage if you're combining several connectors that each populate tags.
|
||||
|
||||
## Common Use Cases
|
||||
|
||||
- **Internal knowledge base**: Sync your team's Notion workspace and Confluence spaces so AI agents can answer questions about internal processes, policies, and documentation
|
||||
- **Customer support**: Connect HubSpot or Salesforce alongside your help docs from WordPress or Google Docs to give support agents full context on customers and product information
|
||||
- **Engineering assistant**: Sync a GitHub repository and Jira or Linear issues so an AI agent can reference code, specs, and ticket history when answering developer questions
|
||||
- **Meeting intelligence**: Pull in Fireflies transcripts alongside Slack conversations to build a searchable archive of decisions and discussions
|
||||
- **Research and notes**: Sync Evernote notebooks or an Obsidian vault to make your personal notes available to AI workflows
|
||||
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.
|
||||
|
||||
<FAQ items={[
|
||||
{ question: "How often do connectors sync?", answer: "You can choose from hourly, every 6 hours, daily (default), weekly, or manual-only sync frequencies. Each connector can have its own schedule." },
|
||||
{ question: "What happens if a source document is deleted?", answer: "On the next sync, the connector detects that the document no longer exists in the source and removes it from your knowledge base automatically." },
|
||||
{ question: "Can I connect multiple services to one knowledge base?", answer: "Yes. You can add as many connectors as you need to a single knowledge base. Each connector manages its documents independently." },
|
||||
{ question: "Do I need to re-authenticate connectors?", answer: "OAuth-based connectors refresh tokens automatically. API key-based connectors (Evernote, Obsidian, Fireflies) need manual updates if you rotate the key." },
|
||||
{ question: "What if a connector sync fails?", answer: "If a single document fails, the rest of the sync continues. If the entire sync fails (e.g., service is down), the connector backs off and retries automatically." },
|
||||
{ question: "Can I exclude specific documents from syncing?", answer: "Yes. You can manually exclude documents from any connector. Excluded documents are skipped on every subsequent sync, even if they change in the source." },
|
||||
{ question: "Do metadata tags count against a limit?", answer: "Tag slots are shared across all documents in a knowledge base. If you have multiple connectors, their metadata tags draw from the same pool of available slots." },
|
||||
{ question: "How often do connectors sync?", answer: "You choose from hourly, every 6 hours, daily (default), weekly, or manual-only. Sub-hourly frequencies require a Max or Enterprise plan. Each connector has its own schedule." },
|
||||
{ question: "What happens if a source document is deleted?", answer: "On the next sync the connector detects the document is gone and removes it from your knowledge base automatically." },
|
||||
{ question: "What happens when I delete a connector?", answer: "The connector is removed and future syncs stop. You're given the option to also delete all documents that were synced by that connector. If you don't check that option, they stay in the knowledge base as-is." },
|
||||
{ question: "What does the Disabled status mean?", answer: "After 10 consecutive full-sync failures, the connector is automatically disabled to stop retrying. Reconnect the OAuth account or click Resume to re-enable it." },
|
||||
{ question: "Do metadata tags count against a limit?", answer: "Yes. Tag slots are shared across all documents in a knowledge base — 17 slots total. Multiple connectors draw from the same pool, so plan accordingly if several connectors each auto-populate tags." },
|
||||
{ question: "Do I need to re-authenticate connectors?", answer: "OAuth connectors refresh tokens automatically. API key connectors (Evernote, Obsidian, Fireflies) need manual updates if you rotate the key in the external service." },
|
||||
]} />
|
||||
|
||||
@@ -2,117 +2,112 @@
|
||||
title: Tags and Filtering
|
||||
---
|
||||
|
||||
import { Video } from '@/components/ui/video'
|
||||
import { Callout } from 'fumadocs-ui/components/callout'
|
||||
import { Image } from '@/components/ui/image'
|
||||
import { FAQ } from '@/components/ui/faq'
|
||||
|
||||
Tags provide a powerful way to organize your documents and create precise filtering for your vector searches. By combining tag-based filtering with semantic search, you can retrieve exactly the content you need from your knowledgebase.
|
||||
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.
|
||||
|
||||
## Adding Tags to Documents
|
||||
## How Tags Work
|
||||
|
||||
You can add custom tags to any document in your knowledgebase to organize and categorize your content for easier retrieval.
|
||||
Tags have two layers:
|
||||
|
||||
<div className="mx-auto w-full overflow-hidden rounded-lg">
|
||||
<Video src="knowledgebase-tag.mp4" width={700} height={450} />
|
||||
</div>
|
||||
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 Management
|
||||
- **Custom tags**: Create your own tag system that fits your workflow
|
||||
- **Multiple tags per document**: Apply as many tags as needed to each document. Each knowledgebase has 17 tag slots total: 7 text, 5 number, 2 date, and 3 boolean slots, shared by all documents in the knowledgebase
|
||||
- **Tag organization**: Group related documents with consistent tagging
|
||||
## Tag Slots
|
||||
|
||||
### Tag Best Practices
|
||||
- **Consistent naming**: Use standardized tag names across your documents
|
||||
- **Descriptive tags**: Use clear, meaningful tag names
|
||||
- **Regular cleanup**: Remove unused or outdated tags periodically
|
||||
Each knowledge base has **17 tag slots** distributed across four types:
|
||||
|
||||
## Using Tags in Knowledge Blocks
|
||||
| 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` |
|
||||
|
||||
Tags become powerful when combined with the Knowledge block in your workflows. You can filter your searches to specific tagged content, ensuring your AI agents get the most relevant information.
|
||||
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).
|
||||
|
||||
<div className="mx-auto w-full overflow-hidden rounded-lg">
|
||||
<Video src="knowledgebase-tag2.mp4" width={700} height={450} />
|
||||
</div>
|
||||
<Callout type="info">
|
||||
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.
|
||||
</Callout>
|
||||
|
||||
## 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**:
|
||||
|
||||
<Image src="/static/tags/tags-kb-menu.png" alt="Knowledge base header showing the dropdown menu with Rename, Tags, and Delete options" width={700} height={400} />
|
||||
|
||||
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:
|
||||
|
||||
<Image src="/static/tags/tags-create.png" alt="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" width={700} height={450} />
|
||||
|
||||
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
|
||||
|
||||
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
|
||||
|
||||
The **Tags** column in the document list shows the current tag values for each document at a glance. Documents with no tags assigned show `– – –`:
|
||||
|
||||
<Image src="/static/tags/tags-document-list.png" alt="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'" width={900} height={200} />
|
||||
|
||||
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
|
||||
|
||||
In a workflow, open the Knowledge block and configure **Tag Filters** to restrict which documents are searched:
|
||||
|
||||
<Image src="/static/tags/tags-knowledge-block.png" alt="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" width={900} height={500} />
|
||||
|
||||
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
|
||||
|
||||
| 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., `<start.department>`), so filtering can adapt dynamically at runtime.
|
||||
|
||||
## Search Modes
|
||||
|
||||
The Knowledge block supports three different search modes depending on what you provide:
|
||||
The Knowledge block behaves differently depending on what you provide:
|
||||
|
||||
### 1. Tag-Only Search
|
||||
When you **only provide tags** (no search query):
|
||||
- **Direct retrieval**: Fetches all documents that have the specified tags
|
||||
- **No vector search**: Results are based purely on tag matching
|
||||
- **Fast performance**: Quick retrieval without semantic processing
|
||||
- **Exact matching**: Only documents with all specified tags are returned
|
||||
| What you provide | Behaviour |
|
||||
|-----------------|-----------|
|
||||
| **Tags only** (no search query) | Fetches all documents that match the tag filters — pure tag matching, no vector search |
|
||||
| **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 |
|
||||
|
||||
**Use case**: When you need all documents from a specific category or project
|
||||
The combined mode is the most precise — tag filtering cuts down the candidate set cheaply before the more expensive vector similarity comparison runs.
|
||||
|
||||
### 2. Vector Search Only
|
||||
When you **only provide a search query** (no tags):
|
||||
- **Semantic search**: Finds content based on meaning and context
|
||||
- **Full knowledgebase**: Searches across all documents
|
||||
- **Relevance ranking**: Results ordered by semantic similarity
|
||||
- **Natural language**: Use questions or phrases to find relevant content
|
||||
## Connector-Populated Tags
|
||||
|
||||
**Use case**: When you need the most relevant content regardless of organization
|
||||
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.
|
||||
|
||||
### 3. Combined Tag Filtering + Vector Search
|
||||
When you **provide both tags and a search query**:
|
||||
1. **First**: Filter documents to only those with the specified tags
|
||||
2. **Then**: Perform vector search within that filtered subset
|
||||
3. **Result**: Semantically relevant content from your tagged documents only
|
||||
|
||||
**Use case**: When you need relevant content from a specific category or project
|
||||
|
||||
### Search Configuration
|
||||
|
||||
#### Tag Filtering
|
||||
- **Multiple tags**: Use multiple tags with AND or OR logic to control whether documents must match all or any of the specified tags
|
||||
- **Tag combinations**: Mix different tag types for precise filtering
|
||||
- **Case sensitivity**: Tag matching is case-insensitive
|
||||
- **Partial matching**: Text fields support partial matching operators such as contains, starts_with, and ends_with in addition to exact matching
|
||||
|
||||
#### Vector Search Parameters
|
||||
- **Query complexity**: Natural language questions work best
|
||||
- **Result limits**: Configure how many chunks to retrieve
|
||||
- **Relevance threshold**: Set minimum similarity scores
|
||||
- **Context window**: Adjust chunk size for your use case
|
||||
|
||||
## Integration with Workflows
|
||||
|
||||
### Knowledge Block Configuration
|
||||
1. **Select knowledgebase**: Choose which knowledgebase to search
|
||||
2. **Add tags**: Specify filtering tags (optional)
|
||||
3. **Enter query**: Add your search query (optional)
|
||||
4. **Configure results**: Set number of chunks to retrieve
|
||||
5. **Test search**: Preview results before using in workflow
|
||||
|
||||
### Dynamic Tag Usage
|
||||
- **Variable tags**: Use workflow variables as tag values
|
||||
- **Conditional filtering**: Apply different tags based on workflow logic
|
||||
- **Context-aware search**: Adjust tags based on conversation context
|
||||
- **Multi-step filtering**: Refine searches through workflow steps
|
||||
|
||||
### Performance Optimization
|
||||
- **Efficient filtering**: Tag filtering happens before vector search for better performance
|
||||
- **Caching**: Frequently used tag combinations are cached for speed
|
||||
- **Parallel processing**: Multiple tag searches can run simultaneously
|
||||
- **Resource management**: Automatic optimization of search resources
|
||||
|
||||
## Getting Started with Tags
|
||||
|
||||
1. **Plan your tag structure**: Decide on consistent naming conventions
|
||||
2. **Start tagging**: Add relevant tags to your existing documents
|
||||
3. **Test combinations**: Experiment with tag + search query combinations
|
||||
4. **Integrate into workflows**: Use the Knowledge block with your tagging strategy
|
||||
5. **Refine over time**: Adjust your tagging approach based on search results
|
||||
|
||||
Tags transform your knowledgebase from a simple document store into a precisely organized, searchable intelligence system that your AI workflows can navigate with surgical precision.
|
||||
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.
|
||||
|
||||
<FAQ items={[
|
||||
{ question: "How many tag slots are available per knowledgebase?", answer: "Each knowledgebase supports up to 17 tag slots total across four field types: 7 text slots, 5 number slots, 2 date slots, and 3 boolean slots. These slots are shared across all documents in the knowledgebase." },
|
||||
{ question: "What tag field types are supported?", answer: "Four field types are supported: text (free-form string values), number (numeric values), date (date values in YYYY-MM-DD format), and boolean (true/false values). Each type has its own pool of available slots." },
|
||||
{ question: "Is tag matching case-sensitive?", answer: "No, tag matching is case-insensitive. You can use any capitalization when filtering by tags and it will match regardless of how the tag value was originally entered." },
|
||||
{ question: "How does combined tag and vector search work?", answer: "When you provide both tags and a search query, tag filtering is applied first to narrow down the document set, then vector search runs within that filtered subset. This approach is more efficient because it reduces the number of vectors that need similarity comparison." },
|
||||
{ question: "What is the default number of results returned from a knowledge search?", answer: "The default is 10 results. You can configure this with the topK parameter, which accepts values from 1 to 100." },
|
||||
{ question: "What embedding model does Sim use for knowledge base search?", answer: "Sim uses OpenAI's text-embedding-3-small model with 1536 dimensions for generating document embeddings and performing vector similarity search." },
|
||||
{ question: "How many tag slots are available?", answer: "17 total: 7 text, 5 number, 2 date, 3 boolean. These are shared across all documents and connectors in a knowledge base." },
|
||||
{ question: "Can I rename a tag definition?", answer: "No. Tag definitions cannot be renamed after creation. Delete the old definition and create a new one with the correct name. Deleting will remove the tag value from all documents it was assigned to." },
|
||||
{ question: "Is tag matching case-sensitive?", answer: "No. Text tag matching is case-insensitive — 'Engineering' and 'engineering' are treated the same." },
|
||||
{ question: "Can tag filter values come from workflow variables?", answer: "Yes. Enter a variable reference like <start.department> as the filter value. It resolves to the actual value at runtime, so a single workflow can filter different documents on each run." },
|
||||
{ question: "What happens to tag values when I delete a tag definition?", answer: "Deleting a definition removes the tag value from every document it was assigned to and frees the slot. The modal shows you which documents are affected before you confirm." },
|
||||
]} />
|
||||
|
||||
@@ -3,6 +3,7 @@ title: Deploy Workflows as MCP
|
||||
description: Expose your workflows as MCP tools for external AI assistants and applications
|
||||
---
|
||||
|
||||
import { Image } from '@/components/ui/image'
|
||||
import { Video } from '@/components/ui/video'
|
||||
import { Callout } from 'fumadocs-ui/components/callout'
|
||||
import { FAQ } from '@/components/ui/faq'
|
||||
@@ -18,10 +19,47 @@ MCP servers group your workflow tools together. Create and manage them in worksp
|
||||
</div>
|
||||
|
||||
1. Navigate to **Settings → MCP Servers**
|
||||
2. Click **Create Server**
|
||||
|
||||
<div className="flex justify-center">
|
||||
<Image
|
||||
src="/static/blocks/mcp-servers-settings.png"
|
||||
alt="MCP Servers settings page"
|
||||
width={700}
|
||||
height={450}
|
||||
className="my-6"
|
||||
/>
|
||||
</div>
|
||||
|
||||
2. Click **Add**
|
||||
3. Enter a name and optional description
|
||||
4. Copy the server URL for use in your MCP clients
|
||||
5. View and manage all tools added to the server
|
||||
4. Choose access: **API Key** (private, requires `X-API-Key` header) or **Public** (no authentication)
|
||||
5. Optionally select deployed workflows to add as tools immediately
|
||||
|
||||
<div className="flex justify-center">
|
||||
<Image
|
||||
src="/static/blocks/mcp-server-add-modal.png"
|
||||
alt="Add New MCP Server modal"
|
||||
width={550}
|
||||
height={380}
|
||||
className="my-6"
|
||||
/>
|
||||
</div>
|
||||
|
||||
6. Click **Add Server**
|
||||
7. Click **Details** to view the MCP server
|
||||
|
||||
<div className="flex justify-center">
|
||||
<Image
|
||||
src="/static/blocks/mcp-server-details.png"
|
||||
alt="MCP Server details view"
|
||||
width={700}
|
||||
height={450}
|
||||
className="my-6"
|
||||
/>
|
||||
</div>
|
||||
|
||||
8. Copy the server URL for use in your MCP clients
|
||||
9. View and manage all tools added to the server
|
||||
|
||||
## Adding a Workflow as a Tool
|
||||
|
||||
@@ -33,9 +71,21 @@ Once your workflow is deployed, you can expose it as an MCP tool:
|
||||
|
||||
1. Open your deployed workflow
|
||||
2. Click **Deploy** and go to the **MCP** tab
|
||||
|
||||
<div className="flex justify-center">
|
||||
<Image
|
||||
src="/static/blocks/mcp-deploy-modal.png"
|
||||
alt="Workflow Deployment MCP tab"
|
||||
width={380}
|
||||
height={470}
|
||||
className="my-6"
|
||||
/>
|
||||
</div>
|
||||
|
||||
3. Configure the tool name and description
|
||||
4. Add descriptions for each parameter (helps AI understand inputs)
|
||||
5. Select which MCP servers to add it to
|
||||
6. Click **Save Tool**
|
||||
|
||||
<Callout type="info">
|
||||
The workflow must be deployed before it can be added as an MCP tool.
|
||||
@@ -54,9 +104,50 @@ Your workflow's input format fields become tool parameters. Add descriptions to
|
||||
|
||||
## Connecting MCP Clients
|
||||
|
||||
Use the server URL from settings to connect external applications:
|
||||
Sim generates a ready-to-paste configuration for every supported client. To get it:
|
||||
|
||||
1. Navigate to **Settings → MCP Servers**
|
||||
2. Click **Details** on your server
|
||||
3. Under **MCP Client**, select your client — **Cursor**, **Claude Code**, **Claude Desktop**, **VS Code**, or **Sim**
|
||||
4. Copy the configuration, replacing `$SIM_API_KEY` with your Sim API key
|
||||
|
||||
<div className="flex justify-center">
|
||||
<Image
|
||||
src="/static/blocks/mcp-client-config.png"
|
||||
alt="MCP client configuration panel"
|
||||
width={700}
|
||||
height={450}
|
||||
className="my-6"
|
||||
/>
|
||||
</div>
|
||||
|
||||
### Cursor
|
||||
|
||||
Cursor supports direct URL configuration. Add to your Cursor MCP settings (`.cursor/mcp.json`):
|
||||
|
||||
```json
|
||||
{
|
||||
"mcpServers": {
|
||||
"my-sim-workflows": {
|
||||
"url": "YOUR_SERVER_URL",
|
||||
"headers": { "X-API-Key": "$SIM_API_KEY" }
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Cursor also provides a one-click install button in the server detail view.
|
||||
|
||||
### Claude Code
|
||||
|
||||
Run this command in your terminal:
|
||||
|
||||
```bash
|
||||
claude mcp add "my-sim-workflows" --url "YOUR_SERVER_URL" --header "X-API-Key:$SIM_API_KEY"
|
||||
```
|
||||
|
||||
### Claude Desktop
|
||||
|
||||
Add to your Claude Desktop config (`~/Library/Application Support/Claude/claude_desktop_config.json`):
|
||||
|
||||
```json
|
||||
@@ -64,17 +155,33 @@ Add to your Claude Desktop config (`~/Library/Application Support/Claude/claude_
|
||||
"mcpServers": {
|
||||
"my-sim-workflows": {
|
||||
"command": "npx",
|
||||
"args": ["-y", "mcp-remote", "YOUR_SERVER_URL"]
|
||||
"args": ["-y", "mcp-remote", "YOUR_SERVER_URL", "--header", "X-API-Key:$SIM_API_KEY"]
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Cursor
|
||||
Add the server URL in Cursor's MCP settings using the same mcp-remote pattern.
|
||||
### VS Code
|
||||
|
||||
Add to your VS Code MCP settings (`.vscode/mcp.json`):
|
||||
|
||||
```json
|
||||
{
|
||||
"mcpServers": {
|
||||
"my-sim-workflows": {
|
||||
"command": "npx",
|
||||
"args": ["-y", "mcp-remote", "YOUR_SERVER_URL", "--header", "X-API-Key:$SIM_API_KEY"]
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
<Callout type="info">
|
||||
For public servers, omit the `X-API-Key` header and `--header` arguments. Public servers don't require authentication.
|
||||
</Callout>
|
||||
|
||||
<Callout type="warn">
|
||||
Include your API key header (`X-API-Key`) for authenticated access when using mcp-remote or other HTTP-based MCP transports.
|
||||
`$SIM_API_KEY` is a placeholder. For Claude Desktop and VS Code configs, replace it with your actual API key since these clients don't expand environment variables in JSON config files. Claude Code and Cursor handle variable expansion natively.
|
||||
</Callout>
|
||||
|
||||
## Server Management
|
||||
|
||||
@@ -18,27 +18,83 @@ MCP is an open standard that enables AI assistants to securely connect to extern
|
||||
- Execute custom tools and scripts
|
||||
- Maintain secure, controlled access to external resources
|
||||
|
||||
## Configuring MCP Servers
|
||||
## Adding an MCP Server as a Tool
|
||||
|
||||
MCP servers provide collections of tools that your agents can use. Configure them in workspace settings:
|
||||
MCP servers provide collections of tools that your agents can use.
|
||||
|
||||
<div className="mx-auto w-full overflow-hidden rounded-lg">
|
||||
<Video src="mcp/settings-mcp-tools.mp4" width={700} height={450} />
|
||||
</div>
|
||||
|
||||
1. Navigate to your workspace settings
|
||||
2. Go to the **MCP Servers** section
|
||||
3. Click **Add MCP Server**
|
||||
4. Enter the server configuration details
|
||||
5. Save the configuration
|
||||
To add one:
|
||||
|
||||
1. Navigate to **Settings → MCP Tools**
|
||||
|
||||
<div className="flex justify-center">
|
||||
<Image
|
||||
src="/static/blocks/mcp-settings.png"
|
||||
alt="MCP Tools settings page"
|
||||
width={700}
|
||||
height={450}
|
||||
className="my-6"
|
||||
/>
|
||||
</div>
|
||||
|
||||
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
|
||||
|
||||
<div className="flex justify-center">
|
||||
<Image
|
||||
src="/static/blocks/mcp-add-modal.png"
|
||||
alt="Add New MCP Server modal"
|
||||
width={450}
|
||||
height={290}
|
||||
className="my-6"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<Callout type="info">
|
||||
You can also configure MCP servers directly from the toolbar in an Agent block for quick setup.
|
||||
</Callout>
|
||||
|
||||
### 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
|
||||
|
||||
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.
|
||||
|
||||
### 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
|
||||
|
||||
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.
|
||||
|
||||
### Refresh Tools
|
||||
|
||||
Click **Refresh** on a server to fetch the latest tool schemas and automatically update any agent blocks using those tools with the new parameter definitions.
|
||||
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
|
||||
|
||||
@@ -46,7 +102,7 @@ Once MCP servers are configured, their tools become available within your agent
|
||||
|
||||
<div className="flex justify-center">
|
||||
<Image
|
||||
src="/static/blocks/mcp-2.png"
|
||||
src="/static/blocks/mcp-agent-dropdown.png"
|
||||
alt="Using MCP Tool in Agent Block"
|
||||
width={700}
|
||||
height={450}
|
||||
@@ -55,9 +111,25 @@ Once MCP servers are configured, their tools become available within your agent
|
||||
</div>
|
||||
|
||||
1. Open an **Agent** block
|
||||
2. In the **Tools** section, you'll see available MCP tools
|
||||
3. Select the tools you want the agent to use
|
||||
4. The agent can now access these tools during execution
|
||||
2. In the **Tools** section, click **Add tool…**
|
||||
3. Under **MCP Servers**, click a server to see its tools
|
||||
|
||||
<div className="flex justify-center">
|
||||
<Image
|
||||
src="/static/blocks/mcp-agent-tools.png"
|
||||
alt="MCP tools list for a selected server"
|
||||
width={400}
|
||||
height={400}
|
||||
className="my-6"
|
||||
/>
|
||||
</div>
|
||||
|
||||
4. Select individual tools, or choose **Use all N tools** to add every tool from that server
|
||||
5. The agent can now access these tools during execution
|
||||
|
||||
<Callout type="info">
|
||||
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.
|
||||
</Callout>
|
||||
|
||||
## Standalone MCP Tool Block
|
||||
|
||||
@@ -65,7 +137,7 @@ For more granular control, you can use the dedicated MCP Tool block to execute s
|
||||
|
||||
<div className="flex justify-center">
|
||||
<Image
|
||||
src="/static/blocks/mcp-3.png"
|
||||
src="/static/blocks/mcp-tool-block.png"
|
||||
alt="Standalone MCP Tool Block"
|
||||
width={700}
|
||||
height={450}
|
||||
@@ -79,17 +151,14 @@ The MCP Tool block allows you to:
|
||||
- Use the tool's output in subsequent workflow steps
|
||||
- Chain multiple MCP tools together
|
||||
|
||||
### When to Use MCP Tool vs Agent
|
||||
## When to Use MCP Tool vs Agent
|
||||
|
||||
**Use Agent with MCP tools when:**
|
||||
- You want the AI to decide which tools to use
|
||||
- You need complex reasoning about when and how to use tools
|
||||
- You want natural language interaction with the tools
|
||||
|
||||
**Use MCP Tool block when:**
|
||||
- You need deterministic tool execution
|
||||
- You want to execute a specific tool with known parameters
|
||||
- You're building structured workflows with predictable steps
|
||||
| | **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
|
||||
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
"tools",
|
||||
"connections",
|
||||
"---Features---",
|
||||
"mothership",
|
||||
"mcp",
|
||||
"copilot",
|
||||
"mailer",
|
||||
@@ -18,6 +19,7 @@
|
||||
"knowledgebase",
|
||||
"tables",
|
||||
"variables",
|
||||
"integrations",
|
||||
"credentials",
|
||||
"---Platform---",
|
||||
"execution",
|
||||
|
||||
121
apps/docs/content/docs/en/mothership/files.mdx
Normal file
121
apps/docs/content/docs/en/mothership/files.mdx
Normal file
@@ -0,0 +1,121 @@
|
||||
---
|
||||
title: Files & Documents
|
||||
description: Upload, create, edit, and generate files — documents, presentations, images, and more.
|
||||
---
|
||||
|
||||
import { Image } from '@/components/ui/image'
|
||||
import { FAQ } from '@/components/ui/faq'
|
||||
|
||||
Describe a document, presentation, image, or visualization and Mothership creates it — streaming the content live into the resource panel as it writes. Attach any file to your message and Mothership reads it, processes it, and saves it to your workspace.
|
||||
|
||||
{/* TODO: Screenshot of Mothership with the File Write subagent active — file content streaming into the resource panel in split or preview mode. Shows the live streaming preview experience as a document is being written. */}
|
||||
|
||||
## Uploading Files to the Workspace
|
||||
|
||||
Attach any file directly to your Mothership message — drag it into the input, paste it, or click the attachment icon. Mothership reads the file as context and saves it to your workspace.
|
||||
|
||||
{/* TODO: Screenshot of the Mothership input area showing a file attached — e.g., a PDF or image thumbnail visible in the input before sending. */}
|
||||
|
||||
Use this to:
|
||||
- Hand Mothership 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 Mothership to turn it into a knowledge base document
|
||||
- Attach a design mockup and ask Mothership 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. Mothership 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
|
||||
|
||||
Mothership 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
|
||||
|
||||
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
|
||||
|
||||
Mothership 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.
|
||||
|
||||
{/* TODO: Screenshot of the resource panel with a generated .pptx file open or a download prompt visible, showing the file name and confirming it was saved to the workspace. */}
|
||||
|
||||
## Images
|
||||
|
||||
Mothership 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]"
|
||||
|
||||
{/* TODO: Screenshot of the resource panel showing a generated image open as a file tab — ideally with the image rendered in the viewer panel. */}
|
||||
|
||||
Generated images are saved as workspace files.
|
||||
|
||||
## Charts and Visualizations
|
||||
|
||||
Mothership 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"
|
||||
|
||||
{/* TODO: Screenshot of a chart or visualization rendered in the resource panel as a file. */}
|
||||
|
||||
Visualizations are saved as files and rendered in the resource panel.
|
||||
|
||||
## Calculations & Data Processing
|
||||
|
||||
For one-off calculations and data transformations, describe what you need and Mothership 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 Mothership to save the output as a file if you need it.
|
||||
|
||||
## File Viewer Modes
|
||||
|
||||
When a file opens in the resource panel, you can switch between three views:
|
||||
|
||||
{/* TODO: Screenshot of the file viewer in the resource panel showing the mode selector (editor/split/preview), ideally in split mode with a markdown file showing raw content on the left and rendered preview on the right. */}
|
||||
|
||||
| Mode | What it shows |
|
||||
|------|--------------|
|
||||
| **Editor** | Raw editable text |
|
||||
| **Preview** | Rendered output (markdown, HTML) |
|
||||
| **Split** | Editor and preview side by side |
|
||||
|
||||
<FAQ items={[
|
||||
{ question: "Where are uploaded and generated files stored?", answer: "All files — uploaded, created, or generated — go to your workspace's Files section. They're accessible from the sidebar and can be referenced in any workflow." },
|
||||
{ question: "Can I use files created in Mothership in workflows?", answer: "Yes. Workspace files can be referenced in workflows using the File block or by passing them as inputs." },
|
||||
{ question: "What file types can I upload to Mothership?", answer: "You can attach images, PDFs, text files, JSON, XML, and other document formats directly to a Mothership message." },
|
||||
{ question: "What can Mothership calculate or process?", answer: "Anything expressible as a short script — parsing JSON, number crunching, string transformations, deduplication, format conversions. Results come back in the chat." },
|
||||
{ question: "Is there a file size limit for generated files?", answer: "There is no hard limit on generated file size, but very large files may take longer to stream." },
|
||||
]} />
|
||||
68
apps/docs/content/docs/en/mothership/index.mdx
Normal file
68
apps/docs/content/docs/en/mothership/index.mdx
Normal file
@@ -0,0 +1,68 @@
|
||||
---
|
||||
title: Mothership
|
||||
description: Your AI command center. Build and manage your entire workspace in natural language.
|
||||
---
|
||||
|
||||
import { Image } from '@/components/ui/image'
|
||||
import { FAQ } from '@/components/ui/faq'
|
||||
|
||||
Describe what you want and Mothership handles it. Build a workflow, run research, generate a presentation, query a table, schedule a recurring job, send a Slack message — Mothership knows your entire workspace and takes action directly.
|
||||
|
||||
{/* TODO: Screenshot or GIF of the full Mothership home page — chat pane on the left with a conversation in progress, resource panel on the right with a workflow or file tab open. Hero shot for the page. */}
|
||||
|
||||
## What You Can Do
|
||||
|
||||
| Area | What Mothership can do |
|
||||
|------|-----------------------|
|
||||
| **[Workflows](/mothership/workflows)** | Build, edit, run, debug, deploy, and organize workflows |
|
||||
| **[Research](/mothership/research)** | Search the web, read pages, crawl sites, produce research reports |
|
||||
| **[Files & Documents](/mothership/files)** | Upload, create, edit, and generate documents, presentations, and images |
|
||||
| **[Tables](/mothership/tables)** | Create, query, update, and export workspace tables |
|
||||
| **[Automation & Configuration](/mothership/tasks)** | Schedule jobs, take immediate actions, connect integrations, manage tools |
|
||||
| **[Knowledge Bases](/mothership/knowledge)** | Create knowledge bases, add documents, and query content in plain language |
|
||||
|
||||
## How It Works
|
||||
|
||||
Mothership receives a snapshot of your entire workspace with every message — all workflows, tables, knowledge bases, files, credentials, jobs, and integrations. This is why you can refer to things by name without specifying IDs or paths:
|
||||
|
||||
- "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, Mothership 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 the Mothership 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
|
||||
|
||||
Bring any workspace object into the conversation via the **+** menu, `@`-mentions, or drag-and-drop from the sidebar. Mothership 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 Mothership conversation |
|
||||
|
||||
## Layout
|
||||
|
||||
Mothership has two panes. On the left: the chat thread, where your messages and Mothership'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.
|
||||
|
||||
<FAQ items={[
|
||||
{ question: "How is Mothership different from Copilot?", answer: "Copilot is scoped to a single workflow — it helps you build and edit that workflow. Mothership has access to your entire workspace and can build workflows, manage data, run research, schedule jobs, take actions across integrations, and more." },
|
||||
{ question: "What model does Mothership use?", answer: "Mothership always uses Claude Opus 4.6. There is no model selector." },
|
||||
{ question: "How do I reference an existing workflow or table?", answer: "Type @ followed by the name in the input, use the + menu, or drag the item from the sidebar into the chat." },
|
||||
{ question: "How long can a Mothership task run?", answer: "Up to one hour. For tasks that exceed that, set up a scheduled job or break the work into steps." },
|
||||
{ question: "Can Mothership work on multiple things at once?", answer: "Mothership processes one message at a time. You can queue messages — they will be processed in order." },
|
||||
]} />
|
||||
84
apps/docs/content/docs/en/mothership/knowledge.mdx
Normal file
84
apps/docs/content/docs/en/mothership/knowledge.mdx
Normal file
@@ -0,0 +1,84 @@
|
||||
---
|
||||
title: Knowledge Bases
|
||||
description: Create, populate, and query knowledge bases from Mothership.
|
||||
---
|
||||
|
||||
import { Image } from '@/components/ui/image'
|
||||
import { FAQ } from '@/components/ui/faq'
|
||||
|
||||
Create a knowledge base, add documents to it, and query it in plain language — all through conversation. Knowledge bases you create in Mothership are immediately available to Agent blocks in any workflow.
|
||||
|
||||
{/* TODO: Screenshot of Mothership with a knowledge base open in the resource panel — showing the knowledge base name, document list, and status of indexed documents. */}
|
||||
|
||||
## Creating Knowledge Bases
|
||||
|
||||
Describe the knowledge base and Mothership 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
|
||||
|
||||
Add documents by attaching files to your message, pasting text, or pointing Mothership 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"
|
||||
|
||||
Mothership 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 Mothership confirming a document was added and indexed — showing the document name and its indexed status in the knowledge base. */}
|
||||
|
||||
## Querying Knowledge Bases
|
||||
|
||||
Ask Mothership 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
|
||||
|
||||
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 Mothership chat. Once connected, all synced content is immediately searchable by Mothership and by any Agent block with the knowledge base attached.
|
||||
|
||||
Sim ships with 30 built-in connectors, including Notion, Google Drive, Slack, GitHub, Confluence, HubSpot, Salesforce, Gmail, and more.
|
||||
|
||||
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
|
||||
|
||||
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
|
||||
|
||||
Knowledge bases created in Mothership 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.
|
||||
|
||||
<FAQ items={[
|
||||
{ question: "How do I attach a knowledge base to a workflow?", answer: "Open the Agent block in the workflow editor, find the Knowledge Base setting, and select the knowledge base by name. Mothership can also do this for you: 'Attach the Product Docs knowledge base to the research agent block in the content pipeline workflow.'" },
|
||||
{ question: "What file types can I add to a knowledge base?", answer: "PDFs, markdown files, plain text, and web pages fetched from URLs. Mothership handles the parsing and indexing automatically." },
|
||||
{ question: "Can I add documents to a knowledge base from a workflow run?", answer: "Yes. The Knowledge Base write tool is available to Agent blocks and can be used to add documents programmatically during a workflow run." },
|
||||
{ question: "How do I keep a knowledge base up to date?", answer: "Set up a connector to sync from an external source automatically — see Connectors above. For one-off updates, ask Mothership to add or replace the document directly." },
|
||||
]} />
|
||||
4
apps/docs/content/docs/en/mothership/meta.json
Normal file
4
apps/docs/content/docs/en/mothership/meta.json
Normal file
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"title": "Mothership",
|
||||
"pages": ["index", "workflows", "research", "files", "tables", "tasks", "knowledge"]
|
||||
}
|
||||
43
apps/docs/content/docs/en/mothership/research.mdx
Normal file
43
apps/docs/content/docs/en/mothership/research.mdx
Normal file
@@ -0,0 +1,43 @@
|
||||
---
|
||||
title: Research
|
||||
description: Ask Mothership to research anything — it searches, reads, and synthesizes from the web.
|
||||
---
|
||||
|
||||
import { Image } from '@/components/ui/image'
|
||||
import { FAQ } from '@/components/ui/faq'
|
||||
|
||||
Ask Mothership 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.
|
||||
|
||||
{/* TODO: Screenshot of the Research subagent section in the Mothership chat — expanded, showing it working through a research task with the final report or answer appearing. Ideally with a file tab open in the resource panel showing the output. */}
|
||||
|
||||
## 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?"
|
||||
|
||||
Mothership 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
|
||||
|
||||
When you need a structured, saved document rather than a chat answer, ask Mothership to write it up. It 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."
|
||||
|
||||
<FAQ items={[
|
||||
{ question: "Does Mothership have access to real-time information?", answer: "Yes. Mothership queries live internet data. Results reflect current information, not a training cutoff." },
|
||||
{ question: "Can Mothership read pages that require login?", answer: "No. Mothership can only read publicly accessible pages." },
|
||||
{ question: "Where are research reports saved?", answer: "Reports are saved as files in your workspace and opened in the resource panel. You can find them in the Files section of the sidebar." },
|
||||
]} />
|
||||
60
apps/docs/content/docs/en/mothership/tables.mdx
Normal file
60
apps/docs/content/docs/en/mothership/tables.mdx
Normal file
@@ -0,0 +1,60 @@
|
||||
---
|
||||
title: Tables
|
||||
description: Create, query, and manage workspace tables from Mothership.
|
||||
---
|
||||
|
||||
import { Image } from '@/components/ui/image'
|
||||
import { FAQ } from '@/components/ui/faq'
|
||||
|
||||
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 when created or referenced.
|
||||
|
||||
{/* TODO: Screenshot of Mothership with a table open in the resource panel — ideally after a query or row operation, showing the table with data populated. */}
|
||||
|
||||
## Creating Tables
|
||||
|
||||
Describe the schema and Mothership 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
|
||||
|
||||
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?"
|
||||
|
||||
Mothership translates the question into a structured query and returns the results.
|
||||
|
||||
## 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, 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
|
||||
|
||||
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
|
||||
|
||||
Tables created in Mothership are immediately available in workflows via the [Table tool](/tools/table). Reference a table by name — no additional configuration needed.
|
||||
|
||||
<FAQ items={[
|
||||
{ question: "Can Mothership join or combine data from multiple tables?", answer: "Yes. Describe the relationship and what you want — Mothership will query both tables and combine the results." },
|
||||
{ question: "Is there a row limit?", answer: "There is no hard row limit set by Mothership. Performance for very large tables may vary." },
|
||||
{ question: "Can I use a table created in Mothership as a workflow data source?", answer: "Yes. All workspace tables are accessible to the Table tool in any workflow." },
|
||||
]} />
|
||||
130
apps/docs/content/docs/en/mothership/tasks.mdx
Normal file
130
apps/docs/content/docs/en/mothership/tasks.mdx
Normal file
@@ -0,0 +1,130 @@
|
||||
---
|
||||
title: Automation & Configuration
|
||||
description: Schedule recurring jobs, take immediate actions, connect integrations, and configure your workspace.
|
||||
---
|
||||
|
||||
import { Callout } from 'fumadocs-ui/components/callout'
|
||||
import { Image } from '@/components/ui/image'
|
||||
import { FAQ } from '@/components/ui/faq'
|
||||
|
||||
Mothership 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
|
||||
|
||||
A scheduled job is a Mothership task that runs on a cron schedule. On each run, Mothership reads the current workspace state and executes the job's prompt as if you had just sent it.
|
||||
|
||||
{/* TODO: Screenshot of Mothership chat confirming a scheduled job was created — showing the job name, schedule, and what it will do. If there's a jobs list view in the sidebar, include that as a second screenshot here. */}
|
||||
|
||||
### 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"
|
||||
- "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"
|
||||
|
||||
Mothership sets the cron expression and stores the job prompt. The first run happens at the next scheduled time.
|
||||
|
||||
### 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
|
||||
|
||||
- "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
|
||||
|
||||
For requests that should happen right now — without building a workflow — just ask. Mothership acts immediately using the credentials connected to your workspace.
|
||||
|
||||
{/* TODO: Screenshot of Mothership 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" | 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" | 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, Mothership walks you through connecting it.
|
||||
|
||||
## Connecting Integrations
|
||||
|
||||
Mothership 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 Mothership walking through connecting an integration — e.g., the Integration subagent active with an OAuth prompt or confirmation that a credential was connected. */}
|
||||
|
||||
Once connected, credentials are available to Mothership for direct actions and scheduled jobs, and to all workflows in the workspace.
|
||||
|
||||
<Callout type="info">
|
||||
Connected credentials are shared across the workspace. Any workflow that uses the same integration will automatically use the same credential.
|
||||
</Callout>
|
||||
|
||||
See [Credentials](/credentials) for managing connected accounts.
|
||||
|
||||
## Environment Variables
|
||||
|
||||
Environment variables are workspace-scoped values — API keys, connection strings, and configuration that workflows reference via `{{ENV_VAR}}` syntax rather than hardcoding. Set them once and every workflow in the workspace can use them.
|
||||
|
||||
- "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 Mothership confirming an environment variable was set — e.g., a response message showing the variable name was saved. */}
|
||||
|
||||
## 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.
|
||||
|
||||
Mothership 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 Mothership confirming an MCP server was added or updated — showing the server name and its status. */}
|
||||
|
||||
## Custom Tools
|
||||
|
||||
Custom tools are single HTTP endpoints you define manually — useful for internal APIs and services that don't have a built-in Sim integration or an MCP server. Once created, they appear in the workflow editor alongside built-in tools and can be called from any Agent block.
|
||||
|
||||
Mothership 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"
|
||||
|
||||
Custom tools appear in the workflow editor and are callable from any Agent block alongside built-in tools.
|
||||
|
||||
{/* TODO: Screenshot of Mothership with the Custom Tool subagent active — showing it building a tool definition. */}
|
||||
|
||||
<FAQ items={[
|
||||
{ question: "What's the difference between a scheduled job and a deployed workflow?", answer: "A scheduled job runs a Mothership prompt on a cron schedule — Mothership decides what to do each time based on current workspace state. A deployed workflow runs a fixed, deterministic graph of blocks. Use jobs when you want Mothership to reason and adapt; use workflows when you want predictable, auditable execution." },
|
||||
{ question: "Can a scheduled job trigger a workflow?", answer: "Yes. Include it in the job prompt: 'Run the invoice sync workflow and then post the results to Slack.'" },
|
||||
{ question: "How do I know what integrations are connected?", answer: "Ask Mothership: 'What integrations are connected to this workspace?' or check Settings → Credentials." },
|
||||
{ question: "Can direct actions be undone?", answer: "No. Actions like sending emails, posting to Slack, or creating records are immediate and irreversible. Confirm the details before asking Mothership to act." },
|
||||
{ question: "Are environment variables visible to all workflows?", answer: "Yes. Environment variables are workspace-scoped and available to every workflow via {{ENV_VAR}} syntax." },
|
||||
{ question: "What's the difference between MCP servers and custom tools?", answer: "MCP servers expose a set of tools from an external service over the MCP protocol — you connect an existing MCP-compatible server. Custom tools are single HTTP endpoints you define manually — useful for internal APIs that don't have an MCP server." },
|
||||
]} />
|
||||
122
apps/docs/content/docs/en/mothership/workflows.mdx
Normal file
122
apps/docs/content/docs/en/mothership/workflows.mdx
Normal file
@@ -0,0 +1,122 @@
|
||||
---
|
||||
title: Workflows
|
||||
description: Create, edit, run, debug, deploy, and organize workflows from Mothership.
|
||||
---
|
||||
|
||||
import { Callout } from 'fumadocs-ui/components/callout'
|
||||
import { Image } from '@/components/ui/image'
|
||||
import { FAQ } from '@/components/ui/faq'
|
||||
|
||||
Describe a workflow and Mothership builds it. Reference an existing one by name and it edits it. No canvas navigation required — every change appears in the resource panel in real time.
|
||||
|
||||
{/* TODO: Screenshot of Mothership chat on the left with the Build subagent section visible, and a workflow open in the resource panel on the right. Shows the split-pane experience of building via natural language. */}
|
||||
|
||||
## Creating Workflows
|
||||
|
||||
Describe what the workflow should do — what triggers it, what it should do, which integrations it needs, and what it should return. Mothership 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
|
||||
|
||||
{/* TODO: Screenshot of Mothership 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. Mothership 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
|
||||
|
||||
{/* TODO: Screenshot or GIF of Mothership running a workflow — showing the chat streaming execution output on the left while the workflow canvas in the resource panel highlights blocks as they execute in real time. */}
|
||||
|
||||
Ask Mothership 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
|
||||
|
||||
Mothership 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
|
||||
|
||||
When a workflow fails, tell Mothership to debug it:
|
||||
|
||||
- "Debug the last failed run of the content pipeline"
|
||||
- "The summarizer block is returning empty output — figure out why"
|
||||
|
||||
Mothership reads the failure logs, identifies the cause, applies a fix, and can re-run to confirm.
|
||||
|
||||
{/* TODO: Screenshot of the Debug subagent section in the Mothership chat showing it reading logs and applying a fix. */}
|
||||
|
||||
## Deploying
|
||||
|
||||
Mothership can deploy a workflow as any of the three deployment types:
|
||||
|
||||
| Deployment type | What it creates |
|
||||
|----------------|----------------|
|
||||
| **API** | A REST endpoint at `https://sim.ai/api/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."
|
||||
|
||||
Mothership can also roll back: "Revert the billing workflow to the version from last Tuesday."
|
||||
|
||||
See [API Deployment](/execution/api-deployment) and [Chat Deployment](/execution/chat) for full details on each deployment type.
|
||||
|
||||
## Organizing Workflows
|
||||
|
||||
Mothership 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 Mothership 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
|
||||
|
||||
Mothership 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'"
|
||||
- "Update the MAX_RETRIES variable on the pipeline workflow to 5"
|
||||
|
||||
Variables set this way are available via `<variable.VARIABLE_NAME>` syntax inside any block in the workflow.
|
||||
|
||||
## Deleting Workflows
|
||||
|
||||
- "Delete the old_api_prototype workflow"
|
||||
- "Delete all workflows in the deprecated folder"
|
||||
|
||||
<Callout type="warn">
|
||||
Workflow deletion is permanent. Deployed versions are also removed. There is no recycle bin.
|
||||
</Callout>
|
||||
|
||||
<FAQ items={[
|
||||
{ question: "Can Mothership edit a workflow while it's deployed?", answer: "Yes. Editing a workflow does not affect the live deployment. The deployed version is a snapshot — you need to ask Mothership to redeploy to push changes to production." },
|
||||
{ question: "Can I run a workflow with specific inputs from Mothership?", answer: "Yes. Describe the inputs in your message and Mothership passes them to the workflow's start block." },
|
||||
{ question: "How does Mothership know what my workflow does?", answer: "When you reference a workflow, Mothership loads its full structure — every block, connection, and configuration — before acting on it." },
|
||||
{ question: "What happens to a workflow's deployment when I delete it?", answer: "The workflow and all its deployments are permanently removed. Any API endpoints, chat URLs, or MCP tools that pointed to that workflow will stop working." },
|
||||
]} />
|
||||
@@ -1,4 +0,0 @@
|
||||
{
|
||||
"title": "SDKs",
|
||||
"pages": ["python", "typescript"]
|
||||
}
|
||||
@@ -1,772 +0,0 @@
|
||||
---
|
||||
title: Python
|
||||
---
|
||||
|
||||
import { Callout } from 'fumadocs-ui/components/callout'
|
||||
import { Card, Cards } from 'fumadocs-ui/components/card'
|
||||
import { Step, Steps } from 'fumadocs-ui/components/steps'
|
||||
import { Tab, Tabs } from 'fumadocs-ui/components/tabs'
|
||||
|
||||
The official Python SDK for Sim allows you to execute workflows programmatically from your Python applications using the official Python SDK.
|
||||
|
||||
<Callout type="info">
|
||||
The Python SDK supports Python 3.8+ with async execution support, automatic rate limiting with exponential backoff, and usage tracking.
|
||||
</Callout>
|
||||
|
||||
## Installation
|
||||
|
||||
Install the SDK using pip:
|
||||
|
||||
```bash
|
||||
pip install simstudio-sdk
|
||||
```
|
||||
|
||||
## Quick Start
|
||||
|
||||
Here's a simple example to get you started:
|
||||
|
||||
```python
|
||||
from simstudio import SimStudioClient
|
||||
|
||||
# Initialize the client
|
||||
client = SimStudioClient(
|
||||
api_key="your-api-key-here",
|
||||
base_url="https://sim.ai" # optional, defaults to https://sim.ai
|
||||
)
|
||||
|
||||
# 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
|
||||
|
||||
### SimStudioClient
|
||||
|
||||
#### Constructor
|
||||
|
||||
```python
|
||||
SimStudioClient(api_key: str, base_url: str = "https://sim.ai")
|
||||
```
|
||||
|
||||
**Parameters:**
|
||||
- `api_key` (str): Your Sim API key
|
||||
- `base_url` (str, optional): Base URL for the Sim API
|
||||
|
||||
#### Methods
|
||||
|
||||
##### 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)
|
||||
|
||||
**Returns:** `WorkflowExecutionResult | AsyncExecutionResult`
|
||||
|
||||
When `async_execution=True`, returns immediately with a task ID for polling. Otherwise, waits for completion.
|
||||
|
||||
##### 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 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_job_status()
|
||||
|
||||
Get the status of an async job execution.
|
||||
|
||||
```python
|
||||
status = client.get_job_status("task-id-from-async-execution")
|
||||
print("Status:", status["status"]) # 'queued', 'processing', 'completed', 'failed'
|
||||
if status["status"] == "completed":
|
||||
print("Output:", status["output"])
|
||||
```
|
||||
|
||||
**Parameters:**
|
||||
- `task_id` (str): The task ID returned from async execution
|
||||
|
||||
**Returns:** `Dict[str, Any]`
|
||||
|
||||
**Response fields:**
|
||||
- `success` (bool): Whether the request was successful
|
||||
- `taskId` (str): The task ID
|
||||
- `status` (str): One of `'queued'`, `'processing'`, `'completed'`, `'failed'`, `'cancelled'`
|
||||
- `metadata` (dict): Contains `startedAt`, `completedAt`, and `duration`
|
||||
- `output` (any, optional): The workflow output (when completed)
|
||||
- `error` (any, optional): Error details (when failed)
|
||||
- `estimatedDuration` (int, optional): Estimated duration in milliseconds (when processing/queued)
|
||||
|
||||
##### 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 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 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()
|
||||
|
||||
Update the API key.
|
||||
|
||||
```python
|
||||
client.set_api_key("new-api-key")
|
||||
```
|
||||
|
||||
##### set_base_url()
|
||||
|
||||
Update the base URL.
|
||||
|
||||
```python
|
||||
client.set_base_url("https://my-custom-domain.com")
|
||||
```
|
||||
|
||||
##### close()
|
||||
|
||||
Close the underlying HTTP session.
|
||||
|
||||
```python
|
||||
client.close()
|
||||
```
|
||||
|
||||
## Data Classes
|
||||
|
||||
### 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
|
||||
```
|
||||
|
||||
### AsyncExecutionResult
|
||||
|
||||
```python
|
||||
@dataclass
|
||||
class AsyncExecutionResult:
|
||||
success: bool
|
||||
task_id: str
|
||||
status: str # 'queued'
|
||||
created_at: str
|
||||
links: Dict[str, str] # e.g., {"status": "/api/jobs/{taskId}"}
|
||||
```
|
||||
|
||||
### WorkflowStatus
|
||||
|
||||
```python
|
||||
@dataclass
|
||||
class WorkflowStatus:
|
||||
is_deployed: bool
|
||||
deployed_at: Optional[str] = None
|
||||
needs_redeployment: bool = False
|
||||
```
|
||||
|
||||
### RateLimitInfo
|
||||
|
||||
```python
|
||||
@dataclass
|
||||
class RateLimitInfo:
|
||||
limit: int
|
||||
remaining: int
|
||||
reset: int
|
||||
retry_after: Optional[int] = None
|
||||
```
|
||||
|
||||
### UsageLimits
|
||||
|
||||
```python
|
||||
@dataclass
|
||||
class UsageLimits:
|
||||
success: bool
|
||||
rate_limit: Dict[str, Any]
|
||||
usage: Dict[str, Any]
|
||||
```
|
||||
|
||||
### SimStudioError
|
||||
|
||||
```python
|
||||
class SimStudioError(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
|
||||
|
||||
### Basic Workflow Execution
|
||||
|
||||
<Steps>
|
||||
<Step title="Initialize the client">
|
||||
Set up the SimStudioClient with your API key.
|
||||
</Step>
|
||||
<Step title="Validate the workflow">
|
||||
Check if the workflow is deployed and ready for execution.
|
||||
</Step>
|
||||
<Step title="Execute the workflow">
|
||||
Run the workflow with your input data.
|
||||
</Step>
|
||||
<Step title="Handle the result">
|
||||
Process the execution result and handle any errors.
|
||||
</Step>
|
||||
</Steps>
|
||||
|
||||
```python
|
||||
import os
|
||||
from simstudio import SimStudioClient
|
||||
|
||||
client = SimStudioClient(api_key=os.getenv("SIM_API_KEY"))
|
||||
|
||||
def run_workflow():
|
||||
try:
|
||||
# Check if workflow is ready
|
||||
is_ready = client.validate_workflow("my-workflow-id")
|
||||
if not is_ready:
|
||||
raise Exception("Workflow is not deployed or ready")
|
||||
|
||||
# Execute the workflow
|
||||
result = client.execute_workflow(
|
||||
"my-workflow-id",
|
||||
input={
|
||||
"message": "Process this data",
|
||||
"user_id": "12345"
|
||||
}
|
||||
)
|
||||
|
||||
if result.success:
|
||||
print("Output:", result.output)
|
||||
print("Duration:", result.metadata.get("duration") if result.metadata else None)
|
||||
else:
|
||||
print("Workflow failed:", result.error)
|
||||
|
||||
except Exception as error:
|
||||
print("Error:", error)
|
||||
|
||||
run_workflow()
|
||||
```
|
||||
|
||||
### Error Handling
|
||||
|
||||
Handle different types of errors that may occur during workflow execution:
|
||||
|
||||
```python
|
||||
from simstudio import SimStudioClient, SimStudioError
|
||||
import os
|
||||
|
||||
client = SimStudioClient(api_key=os.getenv("SIM_API_KEY"))
|
||||
|
||||
def execute_with_error_handling():
|
||||
try:
|
||||
result = client.execute_workflow("workflow-id")
|
||||
return result
|
||||
except SimStudioError 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
|
||||
|
||||
Use the client as a context manager to automatically handle resource cleanup:
|
||||
|
||||
```python
|
||||
from simstudio import SimStudioClient
|
||||
import os
|
||||
|
||||
# Using context manager to automatically close the session
|
||||
with SimStudioClient(api_key=os.getenv("SIM_API_KEY")) as client:
|
||||
result = client.execute_workflow("workflow-id")
|
||||
print("Result:", result)
|
||||
# Session is automatically closed here
|
||||
```
|
||||
|
||||
### Batch Workflow Execution
|
||||
|
||||
Execute multiple workflows efficiently:
|
||||
|
||||
```python
|
||||
from simstudio import SimStudioClient
|
||||
import os
|
||||
|
||||
client = SimStudioClient(api_key=os.getenv("SIM_API_KEY"))
|
||||
|
||||
def execute_workflows_batch(workflow_data_pairs):
|
||||
"""Execute multiple workflows with different input data."""
|
||||
results = []
|
||||
|
||||
for workflow_id, input_data in workflow_data_pairs:
|
||||
try:
|
||||
# Validate workflow before execution
|
||||
if not client.validate_workflow(workflow_id):
|
||||
print(f"Skipping {workflow_id}: not deployed")
|
||||
continue
|
||||
|
||||
result = client.execute_workflow(workflow_id, input_data)
|
||||
results.append({
|
||||
"workflow_id": workflow_id,
|
||||
"success": result.success,
|
||||
"output": result.output,
|
||||
"error": result.error
|
||||
})
|
||||
|
||||
except Exception as error:
|
||||
results.append({
|
||||
"workflow_id": workflow_id,
|
||||
"success": False,
|
||||
"error": str(error)
|
||||
})
|
||||
|
||||
return results
|
||||
|
||||
# Example usage
|
||||
workflows = [
|
||||
("workflow-1", {"type": "analysis", "data": "sample1"}),
|
||||
("workflow-2", {"type": "processing", "data": "sample2"}),
|
||||
]
|
||||
|
||||
results = execute_workflows_batch(workflows)
|
||||
for result in results:
|
||||
print(f"Workflow {result['workflow_id']}: {'Success' if result['success'] else 'Failed'}")
|
||||
```
|
||||
|
||||
### Async Workflow Execution
|
||||
|
||||
Execute workflows asynchronously for long-running tasks:
|
||||
|
||||
```python
|
||||
import os
|
||||
import time
|
||||
from simstudio import SimStudioClient
|
||||
|
||||
client = SimStudioClient(api_key=os.getenv("SIM_API_KEY"))
|
||||
|
||||
def execute_async():
|
||||
try:
|
||||
# Start async execution
|
||||
result = client.execute_workflow(
|
||||
"workflow-id",
|
||||
input={"data": "large dataset"},
|
||||
async_execution=True # Execute asynchronously
|
||||
)
|
||||
|
||||
# Check if result is an async execution
|
||||
if hasattr(result, 'task_id'):
|
||||
print(f"Task ID: {result.task_id}")
|
||||
print(f"Status endpoint: {result.links['status']}")
|
||||
|
||||
# Poll for completion
|
||||
status = client.get_job_status(result.task_id)
|
||||
|
||||
while status["status"] in ["queued", "processing"]:
|
||||
print(f"Current status: {status['status']}")
|
||||
time.sleep(2) # Wait 2 seconds
|
||||
status = client.get_job_status(result.task_id)
|
||||
|
||||
if status["status"] == "completed":
|
||||
print("Workflow completed!")
|
||||
print(f"Output: {status['output']}")
|
||||
print(f"Duration: {status['metadata']['duration']}")
|
||||
else:
|
||||
print(f"Workflow failed: {status['error']}")
|
||||
|
||||
except Exception as error:
|
||||
print(f"Error: {error}")
|
||||
|
||||
execute_async()
|
||||
```
|
||||
|
||||
### Rate Limiting and Retry
|
||||
|
||||
Handle rate limits automatically with exponential backoff:
|
||||
|
||||
```python
|
||||
import os
|
||||
from simstudio import SimStudioClient, SimStudioError
|
||||
|
||||
client = SimStudioClient(api_key=os.getenv("SIM_API_KEY"))
|
||||
|
||||
def execute_with_retry_handling():
|
||||
try:
|
||||
# Automatically retries on rate limit
|
||||
result = client.execute_with_retry(
|
||||
"workflow-id",
|
||||
input={"message": "Process this"},
|
||||
max_retries=5,
|
||||
initial_delay=1.0,
|
||||
max_delay=60.0,
|
||||
backoff_multiplier=2.0
|
||||
)
|
||||
|
||||
print(f"Success: {result}")
|
||||
except SimStudioError 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
|
||||
|
||||
Monitor your account usage and limits:
|
||||
|
||||
```python
|
||||
import os
|
||||
from simstudio import SimStudioClient
|
||||
|
||||
client = SimStudioClient(api_key=os.getenv("SIM_API_KEY"))
|
||||
|
||||
def check_usage():
|
||||
try:
|
||||
limits = client.get_usage_limits()
|
||||
|
||||
print("=== Rate Limits ===")
|
||||
print("Sync requests:")
|
||||
print(f" Limit: {limits.rate_limit['sync']['limit']}")
|
||||
print(f" Remaining: {limits.rate_limit['sync']['remaining']}")
|
||||
print(f" Resets at: {limits.rate_limit['sync']['resetAt']}")
|
||||
print(f" Is limited: {limits.rate_limit['sync']['isLimited']}")
|
||||
|
||||
print("\nAsync requests:")
|
||||
print(f" Limit: {limits.rate_limit['async']['limit']}")
|
||||
print(f" Remaining: {limits.rate_limit['async']['remaining']}")
|
||||
print(f" Resets at: {limits.rate_limit['async']['resetAt']}")
|
||||
print(f" Is limited: {limits.rate_limit['async']['isLimited']}")
|
||||
|
||||
print("\n=== Usage ===")
|
||||
print(f"Current period cost: ${limits.usage['currentPeriodCost']:.2f}")
|
||||
print(f"Limit: ${limits.usage['limit']:.2f}")
|
||||
print(f"Plan: {limits.usage['plan']}")
|
||||
|
||||
percent_used = (limits.usage['currentPeriodCost'] / limits.usage['limit']) * 100
|
||||
print(f"Usage: {percent_used:.1f}%")
|
||||
|
||||
if percent_used > 80:
|
||||
print("⚠️ Warning: You are approaching your usage limit!")
|
||||
|
||||
except Exception as error:
|
||||
print(f"Error checking usage: {error}")
|
||||
|
||||
check_usage()
|
||||
```
|
||||
|
||||
### Streaming Workflow Execution
|
||||
|
||||
Execute workflows with real-time streaming responses:
|
||||
|
||||
```python
|
||||
from simstudio import SimStudioClient
|
||||
import os
|
||||
|
||||
client = SimStudioClient(api_key=os.getenv("SIM_API_KEY"))
|
||||
|
||||
def execute_with_streaming():
|
||||
"""Execute workflow with streaming enabled."""
|
||||
try:
|
||||
# Enable streaming for specific block outputs
|
||||
result = client.execute_workflow(
|
||||
"workflow-id",
|
||||
input={"message": "Count to five"},
|
||||
stream=True,
|
||||
selected_outputs=["agent1.content"] # Use blockName.attribute format
|
||||
)
|
||||
|
||||
print("Workflow result:", result)
|
||||
except Exception as error:
|
||||
print("Error:", error)
|
||||
|
||||
execute_with_streaming()
|
||||
```
|
||||
|
||||
The streaming response follows the Server-Sent Events (SSE) format:
|
||||
|
||||
```
|
||||
data: {"blockId":"7b7735b9-19e5-4bd6-818b-46aae2596e9f","chunk":"One"}
|
||||
|
||||
data: {"blockId":"7b7735b9-19e5-4bd6-818b-46aae2596e9f","chunk":", two"}
|
||||
|
||||
data: {"event":"done","success":true,"output":{},"metadata":{"duration":610}}
|
||||
|
||||
data: [DONE]
|
||||
```
|
||||
|
||||
**Flask Streaming Example:**
|
||||
|
||||
```python
|
||||
from flask import Flask, Response, stream_with_context
|
||||
import requests
|
||||
import json
|
||||
import os
|
||||
|
||||
app = Flask(__name__)
|
||||
|
||||
@app.route('/stream-workflow')
|
||||
def stream_workflow():
|
||||
"""Stream workflow execution to the client."""
|
||||
|
||||
def generate():
|
||||
response = requests.post(
|
||||
'https://sim.ai/api/workflows/WORKFLOW_ID/execute',
|
||||
headers={
|
||||
'Content-Type': 'application/json',
|
||||
'X-API-Key': os.getenv('SIM_API_KEY')
|
||||
},
|
||||
json={
|
||||
'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
|
||||
|
||||
Configure the client using environment variables:
|
||||
|
||||
<Tabs items={['Development', 'Production']}>
|
||||
<Tab value="Development">
|
||||
```python
|
||||
import os
|
||||
from simstudio import SimStudioClient
|
||||
|
||||
# Development configuration
|
||||
client = SimStudioClient(
|
||||
api_key=os.getenv("SIM_API_KEY")
|
||||
base_url=os.getenv("SIM_BASE_URL", "https://sim.ai")
|
||||
)
|
||||
```
|
||||
</Tab>
|
||||
<Tab value="Production">
|
||||
```python
|
||||
import os
|
||||
from simstudio import SimStudioClient
|
||||
|
||||
# Production configuration with error handling
|
||||
api_key = os.getenv("SIM_API_KEY")
|
||||
if not api_key:
|
||||
raise ValueError("SIM_API_KEY environment variable is required")
|
||||
|
||||
client = SimStudioClient(
|
||||
api_key=api_key,
|
||||
base_url=os.getenv("SIM_BASE_URL", "https://sim.ai")
|
||||
)
|
||||
```
|
||||
</Tab>
|
||||
</Tabs>
|
||||
|
||||
## Getting Your API Key
|
||||
|
||||
<Steps>
|
||||
<Step title="Log in to Sim">
|
||||
Navigate to [Sim](https://sim.ai) and log in to your account.
|
||||
</Step>
|
||||
<Step title="Open your workflow">
|
||||
Navigate to the workflow you want to execute programmatically.
|
||||
</Step>
|
||||
<Step title="Deploy your workflow">
|
||||
Click on "Deploy" to deploy your workflow if it hasn't been deployed yet.
|
||||
</Step>
|
||||
<Step title="Create or select an API key">
|
||||
During the deployment process, select or create an API key.
|
||||
</Step>
|
||||
<Step title="Copy the API key">
|
||||
Copy the API key to use in your Python application.
|
||||
</Step>
|
||||
</Steps>
|
||||
|
||||
## Requirements
|
||||
|
||||
- Python 3.8+
|
||||
- requests >= 2.25.0
|
||||
|
||||
## License
|
||||
|
||||
Apache-2.0
|
||||
|
||||
import { FAQ } from '@/components/ui/faq'
|
||||
|
||||
<FAQ items={[
|
||||
{ question: "Do I need to deploy a workflow before I can execute it via the SDK?", answer: "Yes. Workflows must be deployed before they can be executed through the SDK. You can use the validate_workflow() method to check whether a workflow is deployed and ready. If it returns False, deploy the workflow from the Sim UI first and create or select an API key during deployment." },
|
||||
{ question: "What is the difference between sync and async execution?", answer: "Sync execution (the default) blocks until the workflow completes and returns the full result. Async execution (async_execution=True) returns immediately with a task ID that you can poll using get_job_status(). Use async mode for long-running workflows to avoid request timeouts. Async job statuses include queued, processing, completed, failed, and cancelled." },
|
||||
{ question: "How does the SDK handle rate limiting?", answer: "The SDK provides built-in rate limiting support through the execute_with_retry() method. It uses exponential backoff (1s, 2s, 4s, 8s...) with 25% jitter to avoid thundering herd problems. If the API returns a retry-after header, that value is used instead. You can configure max_retries, initial_delay, max_delay, and backoff_multiplier. Use get_rate_limit_info() to check your current rate limit status." },
|
||||
{ question: "Can I use the Python SDK as a context manager?", answer: "Yes. The SimStudioClient supports Python's context manager protocol. Use it with the 'with' statement to automatically close the underlying HTTP session when you are done, which is especially useful for scripts that create and discard client instances." },
|
||||
{ question: "How do I handle different types of errors from the SDK?", answer: "The SDK raises SimStudioError with a code property for API-specific errors. Common error codes are UNAUTHORIZED (invalid API key), TIMEOUT (request timed out), RATE_LIMIT_EXCEEDED (too many requests), USAGE_LIMIT_EXCEEDED (billing limit reached), and EXECUTION_ERROR (workflow failed). Use the error code to implement targeted error handling and recovery logic." },
|
||||
{ question: "How do I monitor my API usage and remaining quota?", answer: "Use the get_usage_limits() method to check your current usage. It returns sync and async rate limit details (limit, remaining, reset time, whether you are currently limited), plus your current period cost, usage limit, and plan tier. This lets you monitor consumption and alert before hitting limits." },
|
||||
]} />
|
||||
File diff suppressed because it is too large
Load Diff
@@ -7,7 +7,7 @@ import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
<BlockInfoCard
|
||||
type="agiloft"
|
||||
color="#263A5C"
|
||||
color="#FFFFFF"
|
||||
/>
|
||||
|
||||
{/* MANUAL-CONTENT-START:intro */}
|
||||
|
||||
162
apps/docs/content/docs/en/tools/custom-tools.mdx
Normal file
162
apps/docs/content/docs/en/tools/custom-tools.mdx
Normal file
@@ -0,0 +1,162 @@
|
||||
---
|
||||
title: Custom Tools
|
||||
description: Create your own tools with JavaScript code and use them in Agent blocks
|
||||
---
|
||||
|
||||
import { Callout } from 'fumadocs-ui/components/callout'
|
||||
import { Step, Steps } from 'fumadocs-ui/components/steps'
|
||||
import { FAQ } from '@/components/ui/faq'
|
||||
|
||||
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 Sim'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
|
||||
|
||||
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
|
||||
|
||||
<Steps>
|
||||
<Step>
|
||||
|
||||
### Open Custom Tools settings
|
||||
|
||||
Navigate to **Settings → Custom Tools** in your workspace and click **Add**.
|
||||
|
||||
</Step>
|
||||
<Step>
|
||||
|
||||
### 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"]
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
<Callout type="info">
|
||||
You can use the AI wand button to generate a schema from a natural language description of what the tool should do.
|
||||
</Callout>
|
||||
|
||||
</Step>
|
||||
<Step>
|
||||
|
||||
### 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
|
||||
};
|
||||
```
|
||||
|
||||
<Callout type="info">
|
||||
You can also use the AI wand to generate code from a description. Environment variables are referenced with `{{KEY}}` syntax.
|
||||
</Callout>
|
||||
|
||||
</Step>
|
||||
<Step>
|
||||
|
||||
### Save
|
||||
|
||||
Click **Save** to create the tool. It's now available to use in any Agent block across your workspace.
|
||||
|
||||
</Step>
|
||||
</Steps>
|
||||
|
||||
## 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
|
||||
|
||||
### 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 inject secrets
|
||||
|
||||
### 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
|
||||
|
||||
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
|
||||
|
||||
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
|
||||
|
||||
<Callout type="warn">
|
||||
Deleting a custom tool removes it from all Agent blocks that reference it. Make sure no active workflows depend on the tool before deleting.
|
||||
</Callout>
|
||||
|
||||
## Permissions
|
||||
|
||||
| Action | Required Permission |
|
||||
|--------|-------------------|
|
||||
| View custom tools | **Read**, **Write**, or **Admin** |
|
||||
| Create or edit tools | **Write** or **Admin** |
|
||||
| Delete tools | **Admin** |
|
||||
|
||||
<FAQ items={[
|
||||
{ question: "Can I use custom tools in standalone blocks (not agents)?", answer: "No. Custom tools are designed for use within Agent blocks, where the AI model decides when to call them. For deterministic tool execution, use the Function block instead." },
|
||||
{ question: "How do I pass API keys to my custom tool code?", answer: "Use environment variables with double curly brace syntax: {{MY_API_KEY}}. Create the environment variable in Settings → Secrets, and it will be injected at execution time without appearing in logs." },
|
||||
{ question: "Can I use external npm packages?", answer: "No. Custom tool code runs in a sandboxed environment with access to built-in Node.js modules and fetch(), but not external packages. For complex dependencies, consider calling an external API that wraps the functionality you need." },
|
||||
{ question: "What's the difference between custom tools and the Function block?", answer: "Custom tools are called by AI agents when they decide the tool is relevant — the agent chooses when to use it. Function blocks run deterministically at a fixed point in the workflow. Use custom tools for agent-driven actions and Function blocks for predictable data transformations." },
|
||||
{ question: "Are custom tools shared across the workspace?", answer: "Yes. Custom tools are workspace-scoped, so all workspace members can use them in their workflows." },
|
||||
]} />
|
||||
@@ -409,7 +409,7 @@ Retrieve interaction statistics for users by date range from Gong. Only includes
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `peopleInteractionStats` | array | Email address of the Gong user |
|
||||
| `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 |
|
||||
@@ -656,7 +656,7 @@ Retrieve coaching metrics for a manager from Gong.
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `requestId` | string | A Gong request reference ID for troubleshooting purposes |
|
||||
| `coachingData` | array | The manager user information |
|
||||
| `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 |
|
||||
|
||||
@@ -31,6 +31,7 @@
|
||||
"confluence",
|
||||
"crowdstrike",
|
||||
"cursor",
|
||||
"custom-tools",
|
||||
"dagster",
|
||||
"databricks",
|
||||
"datadog",
|
||||
@@ -114,6 +115,7 @@
|
||||
"microsoft_planner",
|
||||
"microsoft_teams",
|
||||
"mistral_parse",
|
||||
"monday",
|
||||
"mongodb",
|
||||
"mysql",
|
||||
"neo4j",
|
||||
|
||||
387
apps/docs/content/docs/en/tools/monday.mdx
Normal file
387
apps/docs/content/docs/en/tools/monday.mdx
Normal file
@@ -0,0 +1,387 @@
|
||||
---
|
||||
title: Monday
|
||||
description: Manage Monday.com boards, items, and groups
|
||||
---
|
||||
|
||||
import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
<BlockInfoCard
|
||||
type="monday"
|
||||
color="#FFFFFF"
|
||||
/>
|
||||
|
||||
## 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.
|
||||
|
||||
|
||||
|
||||
## Tools
|
||||
|
||||
### `monday_list_boards`
|
||||
|
||||
List boards from your Monday.com account
|
||||
|
||||
#### 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
|
||||
|
||||
| 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`
|
||||
|
||||
Get a specific Monday.com board with its groups and columns
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `boardId` | string | Yes | The ID of the board to retrieve |
|
||||
|
||||
#### Output
|
||||
|
||||
| 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`
|
||||
|
||||
Get a specific item by ID from Monday.com
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `itemId` | string | Yes | The ID of the item to retrieve |
|
||||
|
||||
#### Output
|
||||
|
||||
| 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`
|
||||
|
||||
Get items from a Monday.com board
|
||||
|
||||
#### Input
|
||||
|
||||
| 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
|
||||
|
||||
| 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`
|
||||
|
||||
Search for items on a Monday.com board by column values
|
||||
|
||||
#### Input
|
||||
|
||||
| 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
|
||||
|
||||
| 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`
|
||||
|
||||
Create a new item on a Monday.com board
|
||||
|
||||
#### Input
|
||||
|
||||
| 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
|
||||
|
||||
| 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`
|
||||
|
||||
Update column values of an item on a Monday.com board
|
||||
|
||||
#### Input
|
||||
|
||||
| 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
|
||||
|
||||
| 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_delete_item`
|
||||
|
||||
Delete an item from a Monday.com board
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `itemId` | string | Yes | The ID of the item to delete |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `id` | string | The ID of the deleted item |
|
||||
|
||||
### `monday_archive_item`
|
||||
|
||||
Archive an item on a Monday.com board
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `itemId` | string | Yes | The ID of the item to archive |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `id` | string | The ID of the archived item |
|
||||
|
||||
### `monday_move_item_to_group`
|
||||
|
||||
Move an item to a different group on a Monday.com board
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `itemId` | string | Yes | The ID of the item to move |
|
||||
| `groupId` | string | Yes | The ID of the target group |
|
||||
|
||||
#### Output
|
||||
|
||||
| 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`
|
||||
|
||||
Create a subitem under a parent item on Monday.com
|
||||
|
||||
#### Input
|
||||
|
||||
| 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
|
||||
|
||||
| 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`
|
||||
|
||||
Add an update (comment) to a Monday.com item
|
||||
|
||||
#### Input
|
||||
|
||||
| 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
|
||||
|
||||
| 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`
|
||||
|
||||
Create a new group on a Monday.com board
|
||||
|
||||
#### Input
|
||||
|
||||
| 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
|
||||
|
||||
| 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 |
|
||||
|
||||
|
||||
@@ -87,7 +87,7 @@ Read a specific page from a SharePoint site
|
||||
| ↳ `createdDateTime` | string | When the page was created |
|
||||
| ↳ `lastModifiedDateTime` | string | When the page was last modified |
|
||||
| `pages` | array | List of SharePoint pages |
|
||||
| ↳ `page` | object | The unique ID of the page |
|
||||
| ↳ `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 |
|
||||
@@ -95,7 +95,7 @@ Read a specific page from a SharePoint site
|
||||
| ↳ `pageLayout` | string | The layout type of the page |
|
||||
| ↳ `createdDateTime` | string | When the page was created |
|
||||
| ↳ `lastModifiedDateTime` | string | When the page was last modified |
|
||||
| ↳ `content` | object | Extracted text content from the page |
|
||||
| ↳ `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 |
|
||||
@@ -127,9 +127,9 @@ List details of all SharePoint sites
|
||||
| ↳ `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 | Server relative URL |
|
||||
| ↳ `root` | object | root output from the tool |
|
||||
| ↳ `serverRelativeUrl` | string | Server relative URL |
|
||||
| ↳ `siteCollection` | object | Site collection hostname |
|
||||
| ↳ `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 |
|
||||
|
||||
@@ -66,7 +66,7 @@ Integrate AWS Textract into your workflow to extract text, tables, forms, and ke
|
||||
| ↳ `Confidence` | number | Confidence score \(0-100\) |
|
||||
| ↳ `Page` | number | Page number |
|
||||
| ↳ `Geometry` | object | Location and bounding box information |
|
||||
| ↳ `BoundingBox` | object | Height as ratio of document height |
|
||||
| ↳ `BoundingBox` | object | BoundingBox output from the tool |
|
||||
| ↳ `Height` | number | Height as ratio of document height |
|
||||
| ↳ `Left` | number | Left position as ratio of document width |
|
||||
| ↳ `Top` | number | Top position as ratio of document height |
|
||||
|
||||
@@ -96,7 +96,7 @@ Retrieve insights and analytics for Typeform forms
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `fields` | array | Number of users who dropped off at this field |
|
||||
| `fields` | array | Analytics data for individual form fields |
|
||||
| ↳ `dropoffs` | number | Number of users who dropped off at this field |
|
||||
| ↳ `id` | string | Unique field ID |
|
||||
| ↳ `label` | string | Field label |
|
||||
@@ -104,15 +104,15 @@ Retrieve insights and analytics for Typeform forms
|
||||
| ↳ `title` | string | Field title/question |
|
||||
| ↳ `type` | string | Field type \(e.g., short_text, multiple_choice\) |
|
||||
| ↳ `views` | number | Number of times this field was viewed |
|
||||
| `form` | object | Average completion time for this platform |
|
||||
| ↳ `platforms` | array | Average completion time for this platform |
|
||||
| `form` | object | Form-level analytics and performance data |
|
||||
| ↳ `platforms` | array | Platform-specific analytics data |
|
||||
| ↳ `average_time` | number | Average completion time for this platform |
|
||||
| ↳ `completion_rate` | number | Completion rate for this platform |
|
||||
| ↳ `platform` | string | Platform name \(e.g., desktop, mobile\) |
|
||||
| ↳ `responses_count` | number | Number of responses from this platform |
|
||||
| ↳ `total_visits` | number | Total visits from this platform |
|
||||
| ↳ `unique_visits` | number | Unique visits from this platform |
|
||||
| ↳ `summary` | object | Overall average completion time |
|
||||
| ↳ `summary` | object | Overall form performance summary |
|
||||
| ↳ `average_time` | number | Overall average completion time |
|
||||
| ↳ `completion_rate` | number | Overall completion rate |
|
||||
| ↳ `responses_count` | number | Total number of responses |
|
||||
|
||||
60
apps/docs/content/docs/en/triggers/airtable.mdx
Normal file
60
apps/docs/content/docs/en/triggers/airtable.mdx
Normal file
@@ -0,0 +1,60 @@
|
||||
---
|
||||
title: Airtable
|
||||
description: Available Airtable triggers for automating workflows
|
||||
---
|
||||
|
||||
import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
<BlockInfoCard
|
||||
type="airtable"
|
||||
color="#E0E0E0"
|
||||
/>
|
||||
|
||||
Airtable provides 1 trigger for automating workflows based on events.
|
||||
|
||||
## Triggers
|
||||
|
||||
### Airtable Webhook
|
||||
|
||||
Trigger workflow from Airtable record changes like create, update, and delete events (requires Airtable credentials)
|
||||
|
||||
#### 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
|
||||
|
||||
| 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 |
|
||||
|
||||
185
apps/docs/content/docs/en/triggers/ashby.mdx
Normal file
185
apps/docs/content/docs/en/triggers/ashby.mdx
Normal file
@@ -0,0 +1,185 @@
|
||||
---
|
||||
title: Ashby
|
||||
description: Available Ashby triggers for automating workflows
|
||||
---
|
||||
|
||||
import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
<BlockInfoCard
|
||||
type="ashby"
|
||||
color="#5D4ED6"
|
||||
/>
|
||||
|
||||
Ashby provides 6 triggers for automating workflows based on events.
|
||||
|
||||
## Triggers
|
||||
|
||||
### Ashby Application Submitted
|
||||
|
||||
Trigger workflow when a new application is submitted
|
||||
|
||||
#### Configuration
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Yes | API Key |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `action` | string | The webhook event type \(e.g., applicationSubmit, candidateHire\) |
|
||||
| `application` | object | application output from the tool |
|
||||
| ↳ `id` | string | Application UUID |
|
||||
| ↳ `createdAt` | string | Application creation timestamp \(ISO 8601\) |
|
||||
| ↳ `updatedAt` | string | Application last update timestamp \(ISO 8601\) |
|
||||
| ↳ `status` | string | Application status \(Active, Hired, Archived, Lead\) |
|
||||
| ↳ `candidate` | object | candidate output from the tool |
|
||||
| ↳ `id` | string | Candidate UUID |
|
||||
| ↳ `name` | string | Candidate name |
|
||||
| ↳ `currentInterviewStage` | object | currentInterviewStage output from the tool |
|
||||
| ↳ `id` | string | Current interview stage UUID |
|
||||
| ↳ `title` | string | Current interview stage title |
|
||||
| ↳ `job` | object | job output from the tool |
|
||||
| ↳ `id` | string | Job UUID |
|
||||
| ↳ `title` | string | Job title |
|
||||
|
||||
|
||||
---
|
||||
|
||||
### Ashby Candidate Deleted
|
||||
|
||||
Trigger workflow when a candidate is deleted
|
||||
|
||||
#### Configuration
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Yes | API Key |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `action` | string | The webhook event type \(e.g., applicationSubmit, candidateHire\) |
|
||||
| `candidate` | object | candidate output from the tool |
|
||||
| ↳ `id` | string | Deleted candidate UUID |
|
||||
|
||||
|
||||
---
|
||||
|
||||
### Ashby Candidate Hired
|
||||
|
||||
Trigger workflow when a candidate is hired
|
||||
|
||||
#### Configuration
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Yes | API Key |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `action` | string | The webhook event type \(e.g., applicationSubmit, candidateHire\) |
|
||||
| `application` | object | application output from the tool |
|
||||
| ↳ `id` | string | Application UUID |
|
||||
| ↳ `createdAt` | string | Application creation timestamp \(ISO 8601\) |
|
||||
| ↳ `updatedAt` | string | Application last update timestamp \(ISO 8601\) |
|
||||
| ↳ `status` | string | Application status \(Hired\) |
|
||||
| ↳ `candidate` | object | candidate output from the tool |
|
||||
| ↳ `id` | string | Candidate UUID |
|
||||
| ↳ `name` | string | Candidate name |
|
||||
| ↳ `currentInterviewStage` | object | currentInterviewStage output from the tool |
|
||||
| ↳ `id` | string | Current interview stage UUID |
|
||||
| ↳ `title` | string | Current interview stage title |
|
||||
| ↳ `job` | object | job output from the tool |
|
||||
| ↳ `id` | string | Job UUID |
|
||||
| ↳ `title` | string | Job title |
|
||||
|
||||
|
||||
---
|
||||
|
||||
### Ashby Candidate Stage Change
|
||||
|
||||
Trigger workflow when a candidate changes interview stages
|
||||
|
||||
#### Configuration
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Yes | API Key |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `action` | string | The webhook event type \(e.g., applicationSubmit, candidateHire\) |
|
||||
| `application` | object | application output from the tool |
|
||||
| ↳ `id` | string | Application UUID |
|
||||
| ↳ `createdAt` | string | Application creation timestamp \(ISO 8601\) |
|
||||
| ↳ `updatedAt` | string | Application last update timestamp \(ISO 8601\) |
|
||||
| ↳ `status` | string | Application status \(Active, Hired, Archived, Lead\) |
|
||||
| ↳ `candidate` | object | candidate output from the tool |
|
||||
| ↳ `id` | string | Candidate UUID |
|
||||
| ↳ `name` | string | Candidate name |
|
||||
| ↳ `currentInterviewStage` | object | currentInterviewStage output from the tool |
|
||||
| ↳ `id` | string | Current interview stage UUID |
|
||||
| ↳ `title` | string | Current interview stage title |
|
||||
| ↳ `job` | object | job output from the tool |
|
||||
| ↳ `id` | string | Job UUID |
|
||||
| ↳ `title` | string | Job title |
|
||||
|
||||
|
||||
---
|
||||
|
||||
### Ashby Job Created
|
||||
|
||||
Trigger workflow when a new job is created
|
||||
|
||||
#### Configuration
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Yes | API Key |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `action` | string | The webhook event type \(e.g., applicationSubmit, candidateHire\) |
|
||||
| `job` | object | job output from the tool |
|
||||
| ↳ `id` | string | Job UUID |
|
||||
| ↳ `title` | string | Job title |
|
||||
| ↳ `confidential` | boolean | Whether the job is confidential |
|
||||
| ↳ `status` | string | Job status \(Open, Closed, Draft, Archived\) |
|
||||
| ↳ `employmentType` | string | Employment type \(Full-time, Part-time, etc.\) |
|
||||
|
||||
|
||||
---
|
||||
|
||||
### Ashby Offer Created
|
||||
|
||||
Trigger workflow when a new offer is created
|
||||
|
||||
#### Configuration
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Yes | API Key |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `action` | string | The webhook event type \(e.g., applicationSubmit, candidateHire\) |
|
||||
| `offer` | object | offer output from the tool |
|
||||
| ↳ `id` | string | Offer UUID |
|
||||
| ↳ `applicationId` | string | Associated application UUID |
|
||||
| ↳ `acceptanceStatus` | string | Offer acceptance status \(Accepted, Declined, Pending, Created, Cancelled, WaitingOnResponse\) |
|
||||
| ↳ `offerStatus` | string | Offer process status \(WaitingOnApprovalStart, WaitingOnOfferApproval, WaitingOnCandidateResponse, CandidateAccepted, CandidateRejected, OfferCancelled\) |
|
||||
| ↳ `decidedAt` | string | Offer decision timestamp \(ISO 8601\). Typically null at creation; populated after candidate responds. |
|
||||
| ↳ `latestVersion` | object | latestVersion output from the tool |
|
||||
| ↳ `id` | string | Latest offer version UUID |
|
||||
|
||||
513
apps/docs/content/docs/en/triggers/attio.mdx
Normal file
513
apps/docs/content/docs/en/triggers/attio.mdx
Normal file
@@ -0,0 +1,513 @@
|
||||
---
|
||||
title: Attio
|
||||
description: Available Attio triggers for automating workflows
|
||||
---
|
||||
|
||||
import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
<BlockInfoCard
|
||||
type="attio"
|
||||
color="#1D1E20"
|
||||
/>
|
||||
|
||||
Attio provides 22 triggers for automating workflows based on events.
|
||||
|
||||
## Triggers
|
||||
|
||||
### Attio Comment Created
|
||||
|
||||
Trigger workflow when a new comment is created in Attio
|
||||
|
||||
#### Configuration
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `triggerCredentials` | string | Yes | Attio Account |
|
||||
|
||||
#### Output
|
||||
|
||||
| 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
|
||||
|
||||
Trigger workflow when a comment is deleted in Attio
|
||||
|
||||
#### Configuration
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `triggerCredentials` | string | Yes | Attio Account |
|
||||
|
||||
#### Output
|
||||
|
||||
| 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
|
||||
|
||||
Trigger workflow when a comment thread is resolved in Attio
|
||||
|
||||
#### Configuration
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `triggerCredentials` | string | Yes | Attio Account |
|
||||
|
||||
#### Output
|
||||
|
||||
| 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
|
||||
|
||||
Trigger workflow when a comment thread is unresolved in Attio
|
||||
|
||||
#### Configuration
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `triggerCredentials` | string | Yes | Attio Account |
|
||||
|
||||
#### Output
|
||||
|
||||
| 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
|
||||
|
||||
Trigger workflow when a list is created in Attio
|
||||
|
||||
#### Configuration
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `triggerCredentials` | string | Yes | Attio Account |
|
||||
|
||||
#### Output
|
||||
|
||||
| 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
|
||||
|
||||
Trigger workflow when a list is deleted in Attio
|
||||
|
||||
#### Configuration
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `triggerCredentials` | string | Yes | Attio Account |
|
||||
|
||||
#### Output
|
||||
|
||||
| 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
|
||||
|
||||
Trigger workflow when a new list entry is created in Attio
|
||||
|
||||
#### Configuration
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `triggerCredentials` | string | Yes | Attio Account |
|
||||
|
||||
#### Output
|
||||
|
||||
| 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
|
||||
|
||||
Trigger workflow when a list entry is deleted in Attio
|
||||
|
||||
#### Configuration
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `triggerCredentials` | string | Yes | Attio Account |
|
||||
|
||||
#### Output
|
||||
|
||||
| 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
|
||||
|
||||
Trigger workflow when a list entry is updated in Attio
|
||||
|
||||
#### Configuration
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `triggerCredentials` | string | Yes | Attio Account |
|
||||
|
||||
#### Output
|
||||
|
||||
| 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
|
||||
|
||||
Trigger workflow when a list is updated in Attio
|
||||
|
||||
#### Configuration
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `triggerCredentials` | string | Yes | Attio Account |
|
||||
|
||||
#### Output
|
||||
|
||||
| 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
|
||||
|
||||
Trigger workflow when a new note is created in Attio
|
||||
|
||||
#### Configuration
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `triggerCredentials` | string | Yes | Attio Account |
|
||||
|
||||
#### Output
|
||||
|
||||
| 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
|
||||
|
||||
Trigger workflow when a note is deleted in Attio
|
||||
|
||||
#### Configuration
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `triggerCredentials` | string | Yes | Attio Account |
|
||||
|
||||
#### Output
|
||||
|
||||
| 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
|
||||
|
||||
Trigger workflow when a note is updated in Attio
|
||||
|
||||
#### Configuration
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `triggerCredentials` | string | Yes | Attio Account |
|
||||
|
||||
#### Output
|
||||
|
||||
| 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
|
||||
|
||||
Trigger workflow when a new record is created in Attio
|
||||
|
||||
#### Configuration
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `triggerCredentials` | string | Yes | Attio Account |
|
||||
|
||||
#### Output
|
||||
|
||||
| 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
|
||||
|
||||
Trigger workflow when a record is deleted in Attio
|
||||
|
||||
#### Configuration
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `triggerCredentials` | string | Yes | Attio Account |
|
||||
|
||||
#### Output
|
||||
|
||||
| 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
|
||||
|
||||
Trigger workflow when two records are merged in Attio
|
||||
|
||||
#### Configuration
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `triggerCredentials` | string | Yes | Attio Account |
|
||||
|
||||
#### Output
|
||||
|
||||
| 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
|
||||
|
||||
Trigger workflow when a record is updated in Attio
|
||||
|
||||
#### Configuration
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `triggerCredentials` | string | Yes | Attio Account |
|
||||
|
||||
#### Output
|
||||
|
||||
| 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
|
||||
|
||||
Trigger workflow when a new task is created in Attio
|
||||
|
||||
#### Configuration
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `triggerCredentials` | string | Yes | Attio Account |
|
||||
|
||||
#### Output
|
||||
|
||||
| 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
|
||||
|
||||
Trigger workflow when a task is deleted in Attio
|
||||
|
||||
#### Configuration
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `triggerCredentials` | string | Yes | Attio Account |
|
||||
|
||||
#### Output
|
||||
|
||||
| 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
|
||||
|
||||
Trigger workflow when a task is updated in Attio
|
||||
|
||||
#### Configuration
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `triggerCredentials` | string | Yes | Attio Account |
|
||||
|
||||
#### Output
|
||||
|
||||
| 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)
|
||||
|
||||
Trigger workflow on any Attio webhook event
|
||||
|
||||
#### Configuration
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `triggerCredentials` | string | Yes | Attio Account |
|
||||
|
||||
#### Output
|
||||
|
||||
| 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
|
||||
|
||||
Trigger workflow when a new member is added to the Attio workspace
|
||||
|
||||
#### Configuration
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `triggerCredentials` | string | Yes | Attio Account |
|
||||
|
||||
#### Output
|
||||
|
||||
| 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 |
|
||||
|
||||
293
apps/docs/content/docs/en/triggers/calcom.mdx
Normal file
293
apps/docs/content/docs/en/triggers/calcom.mdx
Normal file
@@ -0,0 +1,293 @@
|
||||
---
|
||||
title: Cal.com
|
||||
description: Available Cal.com triggers for automating workflows
|
||||
---
|
||||
|
||||
import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
<BlockInfoCard
|
||||
type="calcom"
|
||||
color="#FFFFFE"
|
||||
/>
|
||||
|
||||
Cal.com provides 9 triggers for automating workflows based on events.
|
||||
|
||||
## Triggers
|
||||
|
||||
### CalCom Booking Cancelled
|
||||
|
||||
Trigger workflow when a booking is cancelled in Cal.com
|
||||
|
||||
#### Configuration
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `webhookSecret` | string | No | Used to verify webhook requests via X-Cal-Signature-256 header. |
|
||||
|
||||
#### Output
|
||||
|
||||
| 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 |
|
||||
| ↳ `responses` | json | Booking form responses |
|
||||
| ↳ `metadata` | json | Custom metadata attached to the booking |
|
||||
|
||||
|
||||
---
|
||||
|
||||
### CalCom Booking Created
|
||||
|
||||
Trigger workflow when a new booking is created in Cal.com
|
||||
|
||||
#### Configuration
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `webhookSecret` | string | No | Used to verify webhook requests via X-Cal-Signature-256 header. |
|
||||
|
||||
#### Output
|
||||
|
||||
| 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 |
|
||||
| ↳ `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
|
||||
|
||||
Trigger workflow when payment is completed for a paid booking
|
||||
|
||||
#### Configuration
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `webhookSecret` | string | No | Used to verify webhook requests via X-Cal-Signature-256 header. |
|
||||
|
||||
#### Output
|
||||
|
||||
| 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 |
|
||||
| ↳ `metadata` | json | Custom metadata attached to the booking |
|
||||
|
||||
|
||||
---
|
||||
|
||||
### CalCom Booking Rejected
|
||||
|
||||
Trigger workflow when a booking request is rejected by the host
|
||||
|
||||
#### Configuration
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `webhookSecret` | string | No | Used to verify webhook requests via X-Cal-Signature-256 header. |
|
||||
|
||||
#### Output
|
||||
|
||||
| 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 |
|
||||
| ↳ `metadata` | json | Custom metadata attached to the booking |
|
||||
|
||||
|
||||
---
|
||||
|
||||
### CalCom Booking Requested
|
||||
|
||||
Trigger workflow when a booking request is submitted (pending confirmation)
|
||||
|
||||
#### Configuration
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `webhookSecret` | string | No | Used to verify webhook requests via X-Cal-Signature-256 header. |
|
||||
|
||||
#### Output
|
||||
|
||||
| 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 |
|
||||
| ↳ `responses` | json | Booking form responses |
|
||||
| ↳ `metadata` | json | Custom metadata attached to the booking |
|
||||
|
||||
|
||||
---
|
||||
|
||||
### CalCom Booking Rescheduled
|
||||
|
||||
Trigger workflow when a booking is rescheduled in Cal.com
|
||||
|
||||
#### Configuration
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `webhookSecret` | string | No | Used to verify webhook requests via X-Cal-Signature-256 header. |
|
||||
|
||||
#### Output
|
||||
|
||||
| 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\) |
|
||||
| ↳ `responses` | json | Booking form responses |
|
||||
| ↳ `metadata` | json | Custom metadata attached to the booking |
|
||||
|
||||
|
||||
---
|
||||
|
||||
### CalCom Meeting Ended
|
||||
|
||||
Trigger workflow when a Cal.com meeting ends
|
||||
|
||||
#### Configuration
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `webhookSecret` | string | No | Used to verify webhook requests via X-Cal-Signature-256 header. |
|
||||
|
||||
#### Output
|
||||
|
||||
| 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 |
|
||||
| ↳ `videoCallData` | json | Video call details |
|
||||
|
||||
|
||||
---
|
||||
|
||||
### CalCom Recording Ready
|
||||
|
||||
Trigger workflow when a meeting recording is ready for download
|
||||
|
||||
#### Configuration
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `webhookSecret` | string | No | Used to verify webhook requests via X-Cal-Signature-256 header. |
|
||||
|
||||
#### Output
|
||||
|
||||
| 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\) |
|
||||
|
||||
|
||||
---
|
||||
|
||||
### CalCom Webhook (All Events)
|
||||
|
||||
Trigger workflow on any Cal.com webhook event (configure event types in Cal.com)
|
||||
|
||||
#### Configuration
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `webhookSecret` | string | No | Used to verify webhook requests via X-Cal-Signature-256 header. |
|
||||
|
||||
#### Output
|
||||
|
||||
| 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\) |
|
||||
|
||||
181
apps/docs/content/docs/en/triggers/calendly.mdx
Normal file
181
apps/docs/content/docs/en/triggers/calendly.mdx
Normal file
@@ -0,0 +1,181 @@
|
||||
---
|
||||
title: Calendly
|
||||
description: Available Calendly triggers for automating workflows
|
||||
---
|
||||
|
||||
import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
<BlockInfoCard
|
||||
type="calendly"
|
||||
color="#FFFFFF"
|
||||
/>
|
||||
|
||||
Calendly provides 4 triggers for automating workflows based on events.
|
||||
|
||||
## Triggers
|
||||
|
||||
### Calendly Invitee Canceled
|
||||
|
||||
Trigger workflow when someone cancels a scheduled event on Calendly
|
||||
|
||||
#### Configuration
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Yes | Personal Access Token |
|
||||
| `organization` | string | Yes | Organization URI for the webhook subscription. Get this from |
|
||||
|
||||
#### Output
|
||||
|
||||
| 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 |
|
||||
| ↳ `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
|
||||
|
||||
Trigger workflow when someone schedules a new event on Calendly
|
||||
|
||||
#### Configuration
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Yes | Personal Access Token |
|
||||
| `organization` | string | Yes | Organization URI for the webhook subscription. Get this from |
|
||||
|
||||
#### Output
|
||||
|
||||
| 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 |
|
||||
| ↳ `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
|
||||
|
||||
Trigger workflow when someone submits a Calendly routing form
|
||||
|
||||
#### Configuration
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Yes | Personal Access Token |
|
||||
| `organization` | string | Yes | Organization URI for the webhook subscription. Get this from |
|
||||
|
||||
#### Output
|
||||
|
||||
| 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 |
|
||||
| ↳ `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
|
||||
|
||||
Trigger workflow from any Calendly webhook event
|
||||
|
||||
#### Configuration
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Yes | Personal Access Token |
|
||||
| `organization` | string | Yes | Organization URI for the webhook subscription. Get this from |
|
||||
|
||||
#### Output
|
||||
|
||||
| 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\) |
|
||||
|
||||
163
apps/docs/content/docs/en/triggers/circleback.mdx
Normal file
163
apps/docs/content/docs/en/triggers/circleback.mdx
Normal file
@@ -0,0 +1,163 @@
|
||||
---
|
||||
title: Circleback
|
||||
description: Available Circleback triggers for automating workflows
|
||||
---
|
||||
|
||||
import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
<BlockInfoCard
|
||||
type="circleback"
|
||||
color="linear-gradient(180deg, #E0F7FA 0%, #FFFFFF 100%)"
|
||||
/>
|
||||
|
||||
Circleback provides 3 triggers for automating workflows based on events.
|
||||
|
||||
## Triggers
|
||||
|
||||
### Circleback Meeting Completed
|
||||
|
||||
Trigger workflow when a meeting is processed and ready in Circleback
|
||||
|
||||
#### Configuration
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `webhookSecret` | string | No | Validates that webhook deliveries originate from Circleback using HMAC-SHA256. |
|
||||
|
||||
#### Output
|
||||
|
||||
| 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
|
||||
|
||||
Trigger workflow when meeting notes and action items are ready
|
||||
|
||||
#### Configuration
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `webhookSecret` | string | No | Validates that webhook deliveries originate from Circleback using HMAC-SHA256. |
|
||||
|
||||
#### Output
|
||||
|
||||
| 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
|
||||
|
||||
Generic webhook trigger for all Circleback events
|
||||
|
||||
#### Configuration
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `webhookSecret` | string | No | Validates that webhook deliveries originate from Circleback using HMAC-SHA256. |
|
||||
|
||||
#### Output
|
||||
|
||||
| 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 |
|
||||
|
||||
692
apps/docs/content/docs/en/triggers/confluence.mdx
Normal file
692
apps/docs/content/docs/en/triggers/confluence.mdx
Normal file
@@ -0,0 +1,692 @@
|
||||
---
|
||||
title: Confluence
|
||||
description: Available Confluence triggers for automating workflows
|
||||
---
|
||||
|
||||
import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
<BlockInfoCard
|
||||
type="confluence"
|
||||
color="#E0E0E0"
|
||||
/>
|
||||
|
||||
Confluence provides 23 triggers for automating workflows based on events.
|
||||
|
||||
## Triggers
|
||||
|
||||
### Confluence Attachment Created
|
||||
|
||||
Trigger workflow when an attachment is uploaded in Confluence
|
||||
|
||||
#### 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. Required to download attachment file content. |
|
||||
| `includeFileContent` | boolean | No | Download and include actual file content from attachments. Requires email, API token, and domain. |
|
||||
|
||||
#### Output
|
||||
|
||||
| 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\) |
|
||||
| `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\) |
|
||||
| `attachment` | object | attachment output from the tool |
|
||||
| ↳ `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
|
||||
|
||||
Trigger workflow when an attachment is removed in Confluence
|
||||
|
||||
#### 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. Required to download attachment file content. |
|
||||
| `includeFileContent` | boolean | No | Download and include actual file content from attachments. Requires email, API token, and domain. |
|
||||
|
||||
#### Output
|
||||
|
||||
| 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\) |
|
||||
| `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\) |
|
||||
| `attachment` | object | attachment output from the tool |
|
||||
| ↳ `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
|
||||
|
||||
Trigger workflow when an attachment is updated in Confluence
|
||||
|
||||
#### 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. Required to download attachment file content. |
|
||||
| `includeFileContent` | boolean | No | Download and include actual file content from attachments. Requires email, API token, and domain. |
|
||||
|
||||
#### Output
|
||||
|
||||
| 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\) |
|
||||
| `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\) |
|
||||
| `attachment` | object | attachment output from the tool |
|
||||
| ↳ `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
|
||||
|
||||
Trigger workflow when a blog post is created in Confluence
|
||||
|
||||
#### 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 |
|
||||
|
||||
#### Output
|
||||
|
||||
| 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\) |
|
||||
|
||||
|
||||
---
|
||||
|
||||
### Confluence Blog Post Removed
|
||||
|
||||
Trigger workflow when a blog post is removed in Confluence
|
||||
|
||||
#### 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 |
|
||||
|
||||
#### Output
|
||||
|
||||
| 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\) |
|
||||
|
||||
|
||||
---
|
||||
|
||||
### Confluence Blog Post Restored
|
||||
|
||||
Trigger workflow when a blog post is restored from trash in Confluence
|
||||
|
||||
#### 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 |
|
||||
|
||||
#### Output
|
||||
|
||||
| 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\) |
|
||||
|
||||
|
||||
---
|
||||
|
||||
### Confluence Blog Post Updated
|
||||
|
||||
Trigger workflow when a blog post is updated in Confluence
|
||||
|
||||
#### 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 |
|
||||
|
||||
#### Output
|
||||
|
||||
| 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\) |
|
||||
|
||||
|
||||
---
|
||||
|
||||
### Confluence Comment Created
|
||||
|
||||
Trigger workflow when a comment is created in Confluence
|
||||
|
||||
#### 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 |
|
||||
|
||||
#### Output
|
||||
|
||||
| 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\) |
|
||||
| `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\) |
|
||||
| `comment` | object | comment output from the tool |
|
||||
| ↳ `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
|
||||
|
||||
Trigger workflow when a comment is removed in Confluence
|
||||
|
||||
#### 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 |
|
||||
|
||||
#### Output
|
||||
|
||||
| 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\) |
|
||||
| `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\) |
|
||||
| `comment` | object | comment output from the tool |
|
||||
| ↳ `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
|
||||
|
||||
Trigger workflow when a comment is updated in Confluence
|
||||
|
||||
#### 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 |
|
||||
|
||||
#### Output
|
||||
|
||||
| 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\) |
|
||||
| `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\) |
|
||||
| `comment` | object | comment output from the tool |
|
||||
| ↳ `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
|
||||
|
||||
Trigger workflow when a label is added to content in Confluence
|
||||
|
||||
#### 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 |
|
||||
|
||||
#### Output
|
||||
|
||||
| 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
|
||||
|
||||
Trigger workflow when a label is removed from content in Confluence
|
||||
|
||||
#### 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 |
|
||||
|
||||
#### Output
|
||||
|
||||
| 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
|
||||
|
||||
Trigger workflow when a new page is created in Confluence
|
||||
|
||||
#### 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 |
|
||||
|
||||
#### Output
|
||||
|
||||
| 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\) |
|
||||
|
||||
|
||||
---
|
||||
|
||||
### Confluence Page Moved
|
||||
|
||||
Trigger workflow when a page is moved in Confluence
|
||||
|
||||
#### 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 |
|
||||
|
||||
#### Output
|
||||
|
||||
| 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\) |
|
||||
|
||||
|
||||
---
|
||||
|
||||
### Confluence Page Permissions Updated
|
||||
|
||||
Trigger workflow when page permissions are changed in Confluence
|
||||
|
||||
#### 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 |
|
||||
|
||||
#### Output
|
||||
|
||||
| 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\) |
|
||||
| `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\) |
|
||||
| `page` | object | page output from the tool |
|
||||
| ↳ `permissions` | json | Updated permissions object for the page |
|
||||
|
||||
|
||||
---
|
||||
|
||||
### Confluence Page Removed
|
||||
|
||||
Trigger workflow when a page is removed or trashed in Confluence
|
||||
|
||||
#### 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 |
|
||||
|
||||
#### Output
|
||||
|
||||
| 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\) |
|
||||
|
||||
|
||||
---
|
||||
|
||||
### Confluence Page Restored
|
||||
|
||||
Trigger workflow when a page is restored from trash in Confluence
|
||||
|
||||
#### 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 |
|
||||
|
||||
#### Output
|
||||
|
||||
| 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\) |
|
||||
|
||||
|
||||
---
|
||||
|
||||
### Confluence Page Updated
|
||||
|
||||
Trigger workflow when a page is updated in Confluence
|
||||
|
||||
#### 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 |
|
||||
|
||||
#### Output
|
||||
|
||||
| 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\) |
|
||||
|
||||
|
||||
---
|
||||
|
||||
### Confluence Space Created
|
||||
|
||||
Trigger workflow when a new space is created in Confluence
|
||||
|
||||
#### 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 |
|
||||
|
||||
#### Output
|
||||
|
||||
| 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
|
||||
|
||||
Trigger workflow when a space is removed in Confluence
|
||||
|
||||
#### 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 |
|
||||
|
||||
#### Output
|
||||
|
||||
| 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
|
||||
|
||||
Trigger workflow when a space is updated in Confluence
|
||||
|
||||
#### 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 |
|
||||
|
||||
#### Output
|
||||
|
||||
| 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
|
||||
|
||||
Trigger workflow when a new user is added to Confluence
|
||||
|
||||
#### 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 |
|
||||
|
||||
#### Output
|
||||
|
||||
| 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)
|
||||
|
||||
Trigger workflow on any Confluence webhook event
|
||||
|
||||
#### 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. Required to download attachment file content. |
|
||||
| `includeFileContent` | boolean | No | Download and include actual file content from attachments. Requires email, API token, and domain. |
|
||||
|
||||
#### Output
|
||||
|
||||
| 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\) |
|
||||
|
||||
95
apps/docs/content/docs/en/triggers/fathom.mdx
Normal file
95
apps/docs/content/docs/en/triggers/fathom.mdx
Normal file
@@ -0,0 +1,95 @@
|
||||
---
|
||||
title: Fathom
|
||||
description: Available Fathom triggers for automating workflows
|
||||
---
|
||||
|
||||
import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
<BlockInfoCard
|
||||
type="fathom"
|
||||
color="#181C1E"
|
||||
/>
|
||||
|
||||
Fathom provides 2 triggers for automating workflows based on events.
|
||||
|
||||
## Triggers
|
||||
|
||||
### Fathom New Meeting Content
|
||||
|
||||
Trigger workflow when new meeting content is ready in Fathom
|
||||
|
||||
#### 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
|
||||
|
||||
| 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 |
|
||||
| `calendar_invitees` | array | Array of calendar invitees with name and email |
|
||||
| `default_summary` | object | Meeting 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
|
||||
|
||||
Generic webhook trigger for all Fathom events
|
||||
|
||||
#### 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
|
||||
|
||||
| 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 |
|
||||
| `calendar_invitees` | array | Array of calendar invitees with name and email |
|
||||
| `default_summary` | object | Meeting 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 |
|
||||
|
||||
34
apps/docs/content/docs/en/triggers/fireflies.mdx
Normal file
34
apps/docs/content/docs/en/triggers/fireflies.mdx
Normal file
@@ -0,0 +1,34 @@
|
||||
---
|
||||
title: Fireflies
|
||||
description: Available Fireflies triggers for automating workflows
|
||||
---
|
||||
|
||||
import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
<BlockInfoCard
|
||||
type="fireflies"
|
||||
color="#100730"
|
||||
/>
|
||||
|
||||
Fireflies provides 1 trigger for automating workflows based on events.
|
||||
|
||||
## Triggers
|
||||
|
||||
### Fireflies Transcription Complete
|
||||
|
||||
Trigger workflow when a Fireflies meeting transcription is complete
|
||||
|
||||
#### Configuration
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `webhookSecret` | string | No | Secret key for HMAC signature verification \(set in Fireflies dashboard\) |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `meetingId` | string | The ID of the transcribed meeting |
|
||||
| `eventType` | string | The type of event \(Transcription completed\) |
|
||||
| `clientReferenceId` | string | Custom reference ID if set during upload |
|
||||
|
||||
1186
apps/docs/content/docs/en/triggers/github.mdx
Normal file
1186
apps/docs/content/docs/en/triggers/github.mdx
Normal file
File diff suppressed because it is too large
Load Diff
52
apps/docs/content/docs/en/triggers/gmail.mdx
Normal file
52
apps/docs/content/docs/en/triggers/gmail.mdx
Normal file
@@ -0,0 +1,52 @@
|
||||
---
|
||||
title: Gmail
|
||||
description: Available Gmail triggers for automating workflows
|
||||
---
|
||||
|
||||
import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
<BlockInfoCard
|
||||
type="gmail"
|
||||
color="#E0E0E0"
|
||||
/>
|
||||
|
||||
Gmail provides 1 trigger for automating workflows based on events.
|
||||
|
||||
All triggers below are **polling-based** — they check for new data on a schedule rather than receiving push notifications.
|
||||
|
||||
## Triggers
|
||||
|
||||
### Gmail Email Trigger
|
||||
|
||||
Triggers when new emails are received in Gmail (requires Gmail credentials)
|
||||
|
||||
#### 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., |
|
||||
| `markAsRead` | boolean | No | Automatically mark emails as read after processing |
|
||||
| `includeAttachments` | boolean | No | Download and include email attachments in the trigger payload |
|
||||
|
||||
#### Output
|
||||
|
||||
| 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` | string | 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 |
|
||||
|
||||
109
apps/docs/content/docs/en/triggers/gong.mdx
Normal file
109
apps/docs/content/docs/en/triggers/gong.mdx
Normal file
@@ -0,0 +1,109 @@
|
||||
---
|
||||
title: Gong
|
||||
description: Available Gong triggers for automating workflows
|
||||
---
|
||||
|
||||
import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
<BlockInfoCard
|
||||
type="gong"
|
||||
color="#8039DF"
|
||||
/>
|
||||
|
||||
Gong provides 2 triggers for automating workflows based on events.
|
||||
|
||||
## Triggers
|
||||
|
||||
### Gong Call Completed
|
||||
|
||||
Trigger workflow when a call is completed and processed in Gong
|
||||
|
||||
#### Configuration
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `gongJwtPublicKeyPem` | string | No | Required only when your Gong rule uses **Signed JWT header**. Sim verifies RS256, `webhook_url`, and `body_sha256` per Gong. If empty, only the webhook URL path authenticates the request. |
|
||||
|
||||
#### Output
|
||||
|
||||
| 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
|
||||
|
||||
Generic webhook trigger for all Gong events
|
||||
|
||||
#### Configuration
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `gongJwtPublicKeyPem` | string | No | Required only when your Gong rule uses **Signed JWT header**. Sim verifies RS256, `webhook_url`, and `body_sha256` per Gong. If empty, only the webhook URL path authenticates the request. |
|
||||
|
||||
#### Output
|
||||
|
||||
| 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`\) |
|
||||
|
||||
54
apps/docs/content/docs/en/triggers/google-calendar.mdx
Normal file
54
apps/docs/content/docs/en/triggers/google-calendar.mdx
Normal file
@@ -0,0 +1,54 @@
|
||||
---
|
||||
title: Google Calendar
|
||||
description: Available Google Calendar triggers for automating workflows
|
||||
---
|
||||
|
||||
import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
<BlockInfoCard
|
||||
type="google_calendar"
|
||||
color="#E0E0E0"
|
||||
/>
|
||||
|
||||
Google Calendar provides 1 trigger for automating workflows based on events.
|
||||
|
||||
All triggers below are **polling-based** — they check for new data on a schedule rather than receiving push notifications.
|
||||
|
||||
## Triggers
|
||||
|
||||
### Google Calendar Event Trigger
|
||||
|
||||
Triggers when events are created, updated, or cancelled in Google Calendar
|
||||
|
||||
#### 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
|
||||
|
||||
| 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 |
|
||||
|
||||
52
apps/docs/content/docs/en/triggers/google-drive.mdx
Normal file
52
apps/docs/content/docs/en/triggers/google-drive.mdx
Normal file
@@ -0,0 +1,52 @@
|
||||
---
|
||||
title: Google Drive
|
||||
description: Available Google Drive triggers for automating workflows
|
||||
---
|
||||
|
||||
import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
<BlockInfoCard
|
||||
type="google_drive"
|
||||
color="#E0E0E0"
|
||||
/>
|
||||
|
||||
Google Drive provides 1 trigger for automating workflows based on events.
|
||||
|
||||
All triggers below are **polling-based** — they check for new data on a schedule rather than receiving push notifications.
|
||||
|
||||
## Triggers
|
||||
|
||||
### Google Drive File Trigger
|
||||
|
||||
Triggers when files are created, modified, or deleted in Google Drive
|
||||
|
||||
#### 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
|
||||
|
||||
| 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 |
|
||||
|
||||
46
apps/docs/content/docs/en/triggers/google-sheets.mdx
Normal file
46
apps/docs/content/docs/en/triggers/google-sheets.mdx
Normal file
@@ -0,0 +1,46 @@
|
||||
---
|
||||
title: Google Sheets
|
||||
description: Available Google Sheets triggers for automating workflows
|
||||
---
|
||||
|
||||
import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
<BlockInfoCard
|
||||
type="google_sheets"
|
||||
color="#E0E0E0"
|
||||
/>
|
||||
|
||||
Google Sheets provides 1 trigger for automating workflows based on events.
|
||||
|
||||
All triggers below are **polling-based** — they check for new data on a schedule rather than receiving push notifications.
|
||||
|
||||
## Triggers
|
||||
|
||||
### Google Sheets New Row Trigger
|
||||
|
||||
Triggers when new rows are added to a Google Sheet
|
||||
|
||||
#### Configuration
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `triggerCredentials` | string | Yes | Connect your Google account to access Google Sheets. |
|
||||
| `spreadsheetId` | file-selector | Yes | The spreadsheet to monitor for new rows. |
|
||||
| `manualSpreadsheetId` | string | Yes | The spreadsheet to monitor for new rows. |
|
||||
| `sheetName` | sheet-selector | Yes | The sheet tab to monitor for new rows. |
|
||||
| `manualSheetName` | string | Yes | The sheet tab to monitor for new rows. |
|
||||
| `valueRenderOption` | string | No | How values are rendered. Formatted returns display strings, Unformatted returns raw numbers/booleans, Formula returns the formula text. |
|
||||
| `dateTimeRenderOption` | string | No | How dates and times are rendered. Only applies when Value Render is not |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `row` | json | Row data mapped to column headers from row 1 |
|
||||
| `rawRow` | json | Raw row values as an array |
|
||||
| `headers` | json | Column headers from row 1 |
|
||||
| `rowNumber` | number | The 1-based row number of the new row |
|
||||
| `spreadsheetId` | string | The spreadsheet ID |
|
||||
| `sheetName` | string | The sheet tab name |
|
||||
| `timestamp` | string | Event timestamp in ISO format |
|
||||
|
||||
41
apps/docs/content/docs/en/triggers/google_forms.mdx
Normal file
41
apps/docs/content/docs/en/triggers/google_forms.mdx
Normal file
@@ -0,0 +1,41 @@
|
||||
---
|
||||
title: Google Forms
|
||||
description: Available Google Forms triggers for automating workflows
|
||||
---
|
||||
|
||||
import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
<BlockInfoCard
|
||||
type="google_forms"
|
||||
color="#E0E0E0"
|
||||
/>
|
||||
|
||||
Google Forms provides 1 trigger for automating workflows based on events.
|
||||
|
||||
## Triggers
|
||||
|
||||
### Google Forms Webhook
|
||||
|
||||
Trigger workflow from Google Form submissions (via Apps Script forwarder)
|
||||
|
||||
#### Configuration
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `token` | string | Yes | We validate requests using this secret. Send it as Authorization: Bearer <token> or a custom header. |
|
||||
| `secretHeaderName` | string | No | If set, the webhook will validate this header equals your Shared Secret instead of Authorization. |
|
||||
| `triggerFormId` | string | No | Optional, for clarity and matching in workflows. Not required for webhook to work. |
|
||||
| `includeRawPayload` | boolean | No | Include the original payload from Apps Script in the workflow input. |
|
||||
| `setupScript` | string | No | Copy this code and paste it into your Google Forms Apps Script editor |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `responseId` | string | Unique response identifier \(if available\) |
|
||||
| `createTime` | string | Response creation timestamp |
|
||||
| `lastSubmittedTime` | string | Last submitted timestamp |
|
||||
| `formId` | string | Google Form ID |
|
||||
| `answers` | object | Normalized map of question -> answer |
|
||||
| `raw` | object | Original payload \(when enabled\) |
|
||||
|
||||
239
apps/docs/content/docs/en/triggers/grain.mdx
Normal file
239
apps/docs/content/docs/en/triggers/grain.mdx
Normal file
@@ -0,0 +1,239 @@
|
||||
---
|
||||
title: Grain
|
||||
description: Available Grain triggers for automating workflows
|
||||
---
|
||||
|
||||
import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
<BlockInfoCard
|
||||
type="grain"
|
||||
color="#F6FAF9"
|
||||
/>
|
||||
|
||||
Grain provides 8 triggers for automating workflows based on events.
|
||||
|
||||
## Triggers
|
||||
|
||||
### Grain All Events
|
||||
|
||||
Trigger on all actions (added, updated, removed) in a Grain view
|
||||
|
||||
#### Configuration
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Yes | Required to create the webhook in Grain. |
|
||||
| `viewId` | string | Yes | The view determines which content type fires events \(recordings, highlights, or stories\). |
|
||||
|
||||
#### Output
|
||||
|
||||
| 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 Created
|
||||
|
||||
Trigger workflow when a new highlight/clip is created in Grain
|
||||
|
||||
#### Configuration
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Yes | Required to create the webhook in Grain. |
|
||||
| `viewId` | string | Yes | Required by Grain to create the webhook subscription. |
|
||||
|
||||
#### Output
|
||||
|
||||
| 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 Updated
|
||||
|
||||
Trigger workflow when a highlight/clip is updated in Grain
|
||||
|
||||
#### Configuration
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Yes | Required to create the webhook in Grain. |
|
||||
| `viewId` | string | Yes | Required by Grain to create the webhook subscription. |
|
||||
|
||||
#### Output
|
||||
|
||||
| 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 Item Added
|
||||
|
||||
Trigger when a new item is added to a Grain view (recording, highlight, or story)
|
||||
|
||||
#### Configuration
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Yes | Required to create the webhook in Grain. |
|
||||
| `viewId` | string | Yes | The view determines which content type fires events \(recordings, highlights, or stories\). |
|
||||
|
||||
#### Output
|
||||
|
||||
| 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 Item Updated
|
||||
|
||||
Trigger when an item is updated in a Grain view (recording, highlight, or story)
|
||||
|
||||
#### Configuration
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Yes | Required to create the webhook in Grain. |
|
||||
| `viewId` | string | Yes | The view determines which content type fires events \(recordings, highlights, or stories\). |
|
||||
|
||||
#### Output
|
||||
|
||||
| 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 Created
|
||||
|
||||
Trigger workflow when a new recording is added in Grain
|
||||
|
||||
#### Configuration
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Yes | Required to create the webhook in Grain. |
|
||||
| `viewId` | string | Yes | Required by Grain to create the webhook subscription. |
|
||||
|
||||
#### Output
|
||||
|
||||
| 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 Updated
|
||||
|
||||
Trigger workflow when a recording is updated in Grain
|
||||
|
||||
#### Configuration
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Yes | Required to create the webhook in Grain. |
|
||||
| `viewId` | string | Yes | Required by Grain to create the webhook subscription. |
|
||||
|
||||
#### Output
|
||||
|
||||
| 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 Created
|
||||
|
||||
Trigger workflow when a new story is created in Grain
|
||||
|
||||
#### Configuration
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Yes | Required to create the webhook in Grain. |
|
||||
| `viewId` | string | Yes | Required by Grain to create the webhook subscription. |
|
||||
|
||||
#### Output
|
||||
|
||||
| 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 |
|
||||
|
||||
295
apps/docs/content/docs/en/triggers/greenhouse.mdx
Normal file
295
apps/docs/content/docs/en/triggers/greenhouse.mdx
Normal file
@@ -0,0 +1,295 @@
|
||||
---
|
||||
title: Greenhouse
|
||||
description: Available Greenhouse triggers for automating workflows
|
||||
---
|
||||
|
||||
import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
<BlockInfoCard
|
||||
type="greenhouse"
|
||||
color="#469776"
|
||||
/>
|
||||
|
||||
Greenhouse provides 8 triggers for automating workflows based on events.
|
||||
|
||||
## Triggers
|
||||
|
||||
### Greenhouse Candidate Hired
|
||||
|
||||
Trigger workflow when a candidate is hired
|
||||
|
||||
#### Configuration
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `secretKey` | string | No | When set, requests must include a valid Signature header \(HMAC-SHA256\). If left empty, the endpoint does not verify signatures—only use on a private URL you fully control. |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `applicationId` | number | Application id when present \(`payload.application.id` or flat `payload.application_id` on offers\) |
|
||||
| `candidateId` | number | Candidate id when `payload.application.candidate.id` is present |
|
||||
| `jobId` | number | Job id from `payload.job.id` or flat `payload.job_id` when present |
|
||||
| `action` | string | The webhook event type \(hire_candidate\) |
|
||||
| `payload` | object | payload output from the tool |
|
||||
| ↳ `application` | object | application output from the tool |
|
||||
| ↳ `id` | number | Application ID |
|
||||
| ↳ `status` | string | Application status |
|
||||
| ↳ `prospect` | boolean | Whether the applicant is a prospect |
|
||||
| ↳ `applied_at` | string | When the application was submitted |
|
||||
| ↳ `url` | string | Application URL in Greenhouse |
|
||||
| ↳ `current_stage` | object | current_stage output from the tool |
|
||||
| ↳ `id` | number | Current stage ID |
|
||||
| ↳ `name` | string | Current stage name |
|
||||
| ↳ `candidate` | object | candidate output from the tool |
|
||||
| ↳ `id` | number | Candidate ID |
|
||||
| ↳ `first_name` | string | First name |
|
||||
| ↳ `last_name` | string | Last name |
|
||||
| ↳ `title` | string | Current title |
|
||||
| ↳ `company` | string | Current company |
|
||||
| ↳ `email_addresses` | json | Email addresses |
|
||||
| ↳ `phone_numbers` | json | Phone numbers |
|
||||
| ↳ `recruiter` | json | Assigned recruiter |
|
||||
| ↳ `coordinator` | json | Assigned coordinator |
|
||||
| ↳ `jobs` | json | Associated jobs \(array\) |
|
||||
| ↳ `offer` | object | offer output from the tool |
|
||||
| ↳ `id` | number | Offer ID |
|
||||
| ↳ `version` | number | Offer version |
|
||||
| ↳ `starts_at` | string | Offer start date |
|
||||
| ↳ `custom_fields` | json | Offer custom fields |
|
||||
| ↳ `custom_fields` | json | Application custom fields |
|
||||
|
||||
|
||||
---
|
||||
|
||||
### Greenhouse Candidate Rejected
|
||||
|
||||
Trigger workflow when a candidate is rejected
|
||||
|
||||
#### Configuration
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `secretKey` | string | No | When set, requests must include a valid Signature header \(HMAC-SHA256\). If left empty, the endpoint does not verify signatures—only use on a private URL you fully control. |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `applicationId` | number | Application id when present \(`payload.application.id` or flat `payload.application_id` on offers\) |
|
||||
| `candidateId` | number | Candidate id when `payload.application.candidate.id` is present |
|
||||
| `jobId` | number | Job id from `payload.job.id` or flat `payload.job_id` when present |
|
||||
| `action` | string | The webhook event type \(reject_candidate\) |
|
||||
| `payload` | object | payload output from the tool |
|
||||
| ↳ `application` | object | application output from the tool |
|
||||
| ↳ `id` | number | Application ID |
|
||||
| ↳ `status` | string | Application status \(rejected\) |
|
||||
| ↳ `prospect` | boolean | Whether the applicant is a prospect |
|
||||
| ↳ `applied_at` | string | When the application was submitted |
|
||||
| ↳ `rejected_at` | string | When the candidate was rejected |
|
||||
| ↳ `url` | string | Application URL in Greenhouse |
|
||||
| ↳ `current_stage` | object | current_stage output from the tool |
|
||||
| ↳ `id` | number | Stage ID where rejected |
|
||||
| ↳ `name` | string | Stage name where rejected |
|
||||
| ↳ `candidate` | object | candidate output from the tool |
|
||||
| ↳ `id` | number | Candidate ID |
|
||||
| ↳ `first_name` | string | First name |
|
||||
| ↳ `last_name` | string | Last name |
|
||||
| ↳ `email_addresses` | json | Email addresses |
|
||||
| ↳ `phone_numbers` | json | Phone numbers |
|
||||
| ↳ `jobs` | json | Associated jobs \(array\) |
|
||||
| ↳ `rejection_reason` | json | Rejection reason object with id, name, and type fields |
|
||||
| ↳ `rejection_details` | json | Rejection details with custom fields |
|
||||
| ↳ `custom_fields` | json | Application custom fields |
|
||||
|
||||
|
||||
---
|
||||
|
||||
### Greenhouse Candidate Stage Change
|
||||
|
||||
Trigger workflow when a candidate changes interview stages
|
||||
|
||||
#### Configuration
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `secretKey` | string | No | When set, requests must include a valid Signature header \(HMAC-SHA256\). If left empty, the endpoint does not verify signatures—only use on a private URL you fully control. |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `applicationId` | number | Application id when present \(`payload.application.id` or flat `payload.application_id` on offers\) |
|
||||
| `candidateId` | number | Candidate id when `payload.application.candidate.id` is present |
|
||||
| `jobId` | number | Job id from `payload.job.id` or flat `payload.job_id` when present |
|
||||
| `action` | string | The webhook event type \(candidate_stage_change\) |
|
||||
| `payload` | object | payload output from the tool |
|
||||
| ↳ `application` | object | application output from the tool |
|
||||
| ↳ `id` | number | Application ID |
|
||||
| ↳ `status` | string | Application status |
|
||||
| ↳ `prospect` | boolean | Whether the applicant is a prospect |
|
||||
| ↳ `applied_at` | string | When the application was submitted |
|
||||
| ↳ `url` | string | Application URL in Greenhouse |
|
||||
| ↳ `current_stage` | object | current_stage output from the tool |
|
||||
| ↳ `id` | number | Current stage ID |
|
||||
| ↳ `name` | string | Current stage name |
|
||||
| ↳ `interviews` | json | Interviews in this stage |
|
||||
| ↳ `candidate` | object | candidate output from the tool |
|
||||
| ↳ `id` | number | Candidate ID |
|
||||
| ↳ `first_name` | string | First name |
|
||||
| ↳ `last_name` | string | Last name |
|
||||
| ↳ `title` | string | Current title |
|
||||
| ↳ `company` | string | Current company |
|
||||
| ↳ `email_addresses` | json | Email addresses |
|
||||
| ↳ `phone_numbers` | json | Phone numbers |
|
||||
| ↳ `jobs` | json | Associated jobs \(array\) |
|
||||
| ↳ `custom_fields` | json | Application custom fields |
|
||||
|
||||
|
||||
---
|
||||
|
||||
### Greenhouse Job Created
|
||||
|
||||
Trigger workflow when a new job is created
|
||||
|
||||
#### Configuration
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `secretKey` | string | No | When set, requests must include a valid Signature header \(HMAC-SHA256\). If left empty, the endpoint does not verify signatures—only use on a private URL you fully control. |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `applicationId` | number | Application id when present \(`payload.application.id` or flat `payload.application_id` on offers\) |
|
||||
| `candidateId` | number | Candidate id when `payload.application.candidate.id` is present |
|
||||
| `jobId` | number | Job id from `payload.job.id` or flat `payload.job_id` when present |
|
||||
| `action` | string | The webhook event type \(job_created\) |
|
||||
|
||||
|
||||
---
|
||||
|
||||
### Greenhouse Job Updated
|
||||
|
||||
Trigger workflow when a job is updated
|
||||
|
||||
#### Configuration
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `secretKey` | string | No | When set, requests must include a valid Signature header \(HMAC-SHA256\). If left empty, the endpoint does not verify signatures—only use on a private URL you fully control. |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `applicationId` | number | Application id when present \(`payload.application.id` or flat `payload.application_id` on offers\) |
|
||||
| `candidateId` | number | Candidate id when `payload.application.candidate.id` is present |
|
||||
| `jobId` | number | Job id from `payload.job.id` or flat `payload.job_id` when present |
|
||||
| `action` | string | The webhook event type \(job_updated\) |
|
||||
|
||||
|
||||
---
|
||||
|
||||
### Greenhouse New Application
|
||||
|
||||
Trigger workflow when a new application is submitted
|
||||
|
||||
#### Configuration
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `secretKey` | string | No | When set, requests must include a valid Signature header \(HMAC-SHA256\). If left empty, the endpoint does not verify signatures—only use on a private URL you fully control. |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `applicationId` | number | Application id when present \(`payload.application.id` or flat `payload.application_id` on offers\) |
|
||||
| `candidateId` | number | Candidate id when `payload.application.candidate.id` is present |
|
||||
| `jobId` | number | Job id from `payload.job.id` or flat `payload.job_id` when present |
|
||||
| `action` | string | The webhook event type \(new_candidate_application\) |
|
||||
| `payload` | object | payload output from the tool |
|
||||
| ↳ `application` | object | application output from the tool |
|
||||
| ↳ `id` | number | Application ID |
|
||||
| ↳ `status` | string | Application status |
|
||||
| ↳ `prospect` | boolean | Whether the applicant is a prospect |
|
||||
| ↳ `applied_at` | string | When the application was submitted |
|
||||
| ↳ `url` | string | Application URL in Greenhouse |
|
||||
| ↳ `current_stage` | object | current_stage output from the tool |
|
||||
| ↳ `id` | number | Current stage ID |
|
||||
| ↳ `name` | string | Current stage name |
|
||||
| ↳ `candidate` | object | candidate output from the tool |
|
||||
| ↳ `id` | number | Candidate ID |
|
||||
| ↳ `first_name` | string | First name |
|
||||
| ↳ `last_name` | string | Last name |
|
||||
| ↳ `title` | string | Current title |
|
||||
| ↳ `company` | string | Current company |
|
||||
| ↳ `created_at` | string | When the candidate was created |
|
||||
| ↳ `email_addresses` | json | Email addresses |
|
||||
| ↳ `phone_numbers` | json | Phone numbers |
|
||||
| ↳ `tags` | json | Candidate tags |
|
||||
| ↳ `jobs` | json | Associated jobs \(array\) |
|
||||
| ↳ `answers` | json | Application question answers |
|
||||
| ↳ `attachments` | json | Application attachments |
|
||||
| ↳ `custom_fields` | json | Application custom fields |
|
||||
|
||||
|
||||
---
|
||||
|
||||
### Greenhouse Offer Created
|
||||
|
||||
Trigger workflow when a new offer is created
|
||||
|
||||
#### Configuration
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `secretKey` | string | No | When set, requests must include a valid Signature header \(HMAC-SHA256\). If left empty, the endpoint does not verify signatures—only use on a private URL you fully control. |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `applicationId` | number | Application id when present \(`payload.application.id` or flat `payload.application_id` on offers\) |
|
||||
| `candidateId` | number | Candidate id when `payload.application.candidate.id` is present |
|
||||
| `jobId` | number | Job id from `payload.job.id` or flat `payload.job_id` when present |
|
||||
| `action` | string | The webhook event type \(offer_created\) |
|
||||
| `payload` | object | payload output from the tool |
|
||||
| ↳ `id` | number | Offer ID |
|
||||
| ↳ `application_id` | number | Associated application ID |
|
||||
| ↳ `job_id` | number | Associated job ID |
|
||||
| ↳ `user_id` | number | User who created the offer |
|
||||
| ↳ `version` | number | Offer version number |
|
||||
| ↳ `sent_on` | string | When the offer was sent |
|
||||
| ↳ `resolved_at` | string | When the offer was resolved |
|
||||
| ↳ `start_date` | string | Offer start date |
|
||||
| ↳ `notes` | string | Offer notes |
|
||||
| ↳ `offer_status` | string | Offer status |
|
||||
| ↳ `custom_fields` | json | Custom field values |
|
||||
|
||||
|
||||
---
|
||||
|
||||
### Greenhouse Webhook (Endpoint Events)
|
||||
|
||||
Trigger on whichever event types you select for this URL in Greenhouse. Sim does not filter deliveries for this trigger.
|
||||
|
||||
#### Configuration
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `secretKey` | string | No | When set, requests must include a valid Signature header \(HMAC-SHA256\). If left empty, the endpoint does not verify signatures—only use on a private URL you fully control. |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `applicationId` | number | Application id when present \(`payload.application.id` or flat `payload.application_id` on offers\) |
|
||||
| `candidateId` | number | Candidate id when `payload.application.candidate.id` is present |
|
||||
| `jobId` | number | Job id from `payload.job.id` or flat `payload.job_id` when present |
|
||||
| `action` | string | The webhook event type |
|
||||
| `payload` | json | Full event payload |
|
||||
|
||||
1144
apps/docs/content/docs/en/triggers/hubspot.mdx
Normal file
1144
apps/docs/content/docs/en/triggers/hubspot.mdx
Normal file
File diff suppressed because it is too large
Load Diff
54
apps/docs/content/docs/en/triggers/imap.mdx
Normal file
54
apps/docs/content/docs/en/triggers/imap.mdx
Normal file
@@ -0,0 +1,54 @@
|
||||
---
|
||||
title: IMAP
|
||||
description: Available IMAP triggers for automating workflows
|
||||
---
|
||||
|
||||
import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
<BlockInfoCard
|
||||
type="imap"
|
||||
color="#6366F1"
|
||||
/>
|
||||
|
||||
IMAP provides 1 trigger for automating workflows based on events.
|
||||
|
||||
All triggers below are **polling-based** — they check for new data on a schedule rather than receiving push notifications.
|
||||
|
||||
## Triggers
|
||||
|
||||
### IMAP Email Trigger
|
||||
|
||||
Triggers when new emails are received via IMAP (works with any email provider)
|
||||
|
||||
#### 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
|
||||
|
||||
| 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 |
|
||||
|
||||
163
apps/docs/content/docs/en/triggers/intercom.mdx
Normal file
163
apps/docs/content/docs/en/triggers/intercom.mdx
Normal file
@@ -0,0 +1,163 @@
|
||||
---
|
||||
title: Intercom
|
||||
description: Available Intercom triggers for automating workflows
|
||||
---
|
||||
|
||||
import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
<BlockInfoCard
|
||||
type="intercom"
|
||||
color="#E0E0E0"
|
||||
/>
|
||||
|
||||
Intercom provides 6 triggers for automating workflows based on events.
|
||||
|
||||
## Triggers
|
||||
|
||||
### Intercom Contact Created
|
||||
|
||||
Trigger workflow when a new lead is created in Intercom
|
||||
|
||||
#### Configuration
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `webhookSecret` | string | No | Your app |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `topic` | string | The webhook topic \(e.g., conversation.user.created\) |
|
||||
| `id` | string | Unique notification ID |
|
||||
| `app_id` | string | Your Intercom app ID |
|
||||
| `created_at` | number | Unix timestamp when the event occurred |
|
||||
| `delivery_attempts` | number | Number of delivery attempts for this notification |
|
||||
| `first_sent_at` | number | Unix timestamp of first delivery attempt |
|
||||
| `data` | json | data output from the tool |
|
||||
|
||||
|
||||
---
|
||||
|
||||
### Intercom Conversation Closed
|
||||
|
||||
Trigger workflow when a conversation is closed in Intercom
|
||||
|
||||
#### Configuration
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `webhookSecret` | string | No | Your app |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `topic` | string | The webhook topic \(e.g., conversation.user.created\) |
|
||||
| `id` | string | Unique notification ID |
|
||||
| `app_id` | string | Your Intercom app ID |
|
||||
| `created_at` | number | Unix timestamp when the event occurred |
|
||||
| `delivery_attempts` | number | Number of delivery attempts for this notification |
|
||||
| `first_sent_at` | number | Unix timestamp of first delivery attempt |
|
||||
| `data` | json | data output from the tool |
|
||||
|
||||
|
||||
---
|
||||
|
||||
### Intercom Conversation Created
|
||||
|
||||
Trigger workflow when a new conversation is created in Intercom
|
||||
|
||||
#### Configuration
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `webhookSecret` | string | No | Your app |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `topic` | string | The webhook topic \(e.g., conversation.user.created\) |
|
||||
| `id` | string | Unique notification ID |
|
||||
| `app_id` | string | Your Intercom app ID |
|
||||
| `created_at` | number | Unix timestamp when the event occurred |
|
||||
| `delivery_attempts` | number | Number of delivery attempts for this notification |
|
||||
| `first_sent_at` | number | Unix timestamp of first delivery attempt |
|
||||
| `data` | json | data output from the tool |
|
||||
|
||||
|
||||
---
|
||||
|
||||
### Intercom Conversation Reply
|
||||
|
||||
Trigger workflow when someone replies to an Intercom conversation
|
||||
|
||||
#### Configuration
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `webhookSecret` | string | No | Your app |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `topic` | string | The webhook topic \(e.g., conversation.user.created\) |
|
||||
| `id` | string | Unique notification ID |
|
||||
| `app_id` | string | Your Intercom app ID |
|
||||
| `created_at` | number | Unix timestamp when the event occurred |
|
||||
| `delivery_attempts` | number | Number of delivery attempts for this notification |
|
||||
| `first_sent_at` | number | Unix timestamp of first delivery attempt |
|
||||
| `data` | json | data output from the tool |
|
||||
|
||||
|
||||
---
|
||||
|
||||
### Intercom User Created
|
||||
|
||||
Trigger workflow when a new user is created in Intercom
|
||||
|
||||
#### Configuration
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `webhookSecret` | string | No | Your app |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `topic` | string | The webhook topic \(e.g., conversation.user.created\) |
|
||||
| `id` | string | Unique notification ID |
|
||||
| `app_id` | string | Your Intercom app ID |
|
||||
| `created_at` | number | Unix timestamp when the event occurred |
|
||||
| `delivery_attempts` | number | Number of delivery attempts for this notification |
|
||||
| `first_sent_at` | number | Unix timestamp of first delivery attempt |
|
||||
| `data` | json | data output from the tool |
|
||||
|
||||
|
||||
---
|
||||
|
||||
### Intercom Webhook (All Events)
|
||||
|
||||
Trigger workflow on any Intercom webhook event
|
||||
|
||||
#### Configuration
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `webhookSecret` | string | No | Your app |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `topic` | string | The webhook topic \(e.g., conversation.user.created\) |
|
||||
| `id` | string | Unique notification ID |
|
||||
| `app_id` | string | Your Intercom app ID |
|
||||
| `created_at` | number | Unix timestamp when the event occurred |
|
||||
| `delivery_attempts` | number | Number of delivery attempts for this notification |
|
||||
| `first_sent_at` | number | Unix timestamp of first delivery attempt |
|
||||
| `data` | json | data output from the tool |
|
||||
|
||||
976
apps/docs/content/docs/en/triggers/jira.mdx
Normal file
976
apps/docs/content/docs/en/triggers/jira.mdx
Normal file
@@ -0,0 +1,976 @@
|
||||
---
|
||||
title: Jira
|
||||
description: Available Jira triggers for automating workflows
|
||||
---
|
||||
|
||||
import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
<BlockInfoCard
|
||||
type="jira"
|
||||
color="#E0E0E0"
|
||||
/>
|
||||
|
||||
Jira provides 15 triggers for automating workflows based on events.
|
||||
|
||||
## Triggers
|
||||
|
||||
### Jira Comment Deleted
|
||||
|
||||
Trigger workflow when a comment is deleted from a Jira issue
|
||||
|
||||
#### 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
|
||||
|
||||
| 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
|
||||
|
||||
Trigger workflow when a comment is updated on a Jira issue
|
||||
|
||||
#### 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 updates trigger this workflow using JQL |
|
||||
|
||||
#### Output
|
||||
|
||||
| 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
|
||||
|
||||
Trigger workflow when a comment is added to a Jira issue
|
||||
|
||||
#### Configuration
|
||||
|
||||
| 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
|
||||
|
||||
| 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
|
||||
|
||||
Trigger workflow when a new issue is created in Jira
|
||||
|
||||
#### Configuration
|
||||
|
||||
| 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
|
||||
|
||||
| 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
|
||||
|
||||
Trigger workflow when an issue is deleted in Jira
|
||||
|
||||
#### Configuration
|
||||
|
||||
| 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
|
||||
|
||||
| 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
|
||||
|
||||
Trigger workflow when an issue is updated in Jira
|
||||
|
||||
#### Configuration
|
||||
|
||||
| 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 fields to monitor. Only trigger when these fields change. |
|
||||
|
||||
#### Output
|
||||
|
||||
| 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
|
||||
|
||||
Trigger workflow when a project is created in Jira
|
||||
|
||||
#### Configuration
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `webhookSecret` | string | No | Optional secret to validate webhook deliveries from Jira using HMAC signature |
|
||||
|
||||
#### Output
|
||||
|
||||
| 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
|
||||
|
||||
Trigger workflow when a sprint is closed in Jira
|
||||
|
||||
#### Configuration
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `webhookSecret` | string | No | Optional secret to validate webhook deliveries from Jira using HMAC signature |
|
||||
|
||||
#### Output
|
||||
|
||||
| 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
|
||||
|
||||
Trigger workflow when a sprint is created in Jira
|
||||
|
||||
#### Configuration
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `webhookSecret` | string | No | Optional secret to validate webhook deliveries from Jira using HMAC signature |
|
||||
|
||||
#### Output
|
||||
|
||||
| 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
|
||||
|
||||
Trigger workflow when a sprint is started in Jira
|
||||
|
||||
#### Configuration
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `webhookSecret` | string | No | Optional secret to validate webhook deliveries from Jira using HMAC signature |
|
||||
|
||||
#### Output
|
||||
|
||||
| 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
|
||||
|
||||
Trigger workflow when a version is released in Jira
|
||||
|
||||
#### Configuration
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `webhookSecret` | string | No | Optional secret to validate webhook deliveries from Jira using HMAC signature |
|
||||
|
||||
#### Output
|
||||
|
||||
| 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)
|
||||
|
||||
Trigger workflow on any Jira webhook event
|
||||
|
||||
#### Configuration
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `webhookSecret` | string | No | Optional secret to validate webhook deliveries from Jira using HMAC signature |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `changelog` | object | changelog output from the tool |
|
||||
| ↳ `id` | string | Changelog ID |
|
||||
| `comment` | object | comment output from the tool |
|
||||
| ↳ `id` | string | Comment ID |
|
||||
| ↳ `body` | string | Comment text/body |
|
||||
| ↳ `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\) |
|
||||
| `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 |
|
||||
| ↳ `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\) |
|
||||
|
||||
|
||||
---
|
||||
|
||||
### Jira Worklog Created
|
||||
|
||||
Trigger workflow when time is logged on a Jira issue
|
||||
|
||||
#### Configuration
|
||||
|
||||
| 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
|
||||
|
||||
| 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
|
||||
|
||||
Trigger workflow when a worklog entry is deleted from a Jira issue
|
||||
|
||||
#### Configuration
|
||||
|
||||
| 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
|
||||
|
||||
| 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
|
||||
|
||||
Trigger workflow when a worklog entry is updated on a Jira issue
|
||||
|
||||
#### Configuration
|
||||
|
||||
| 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
|
||||
|
||||
| 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 |
|
||||
|
||||
314
apps/docs/content/docs/en/triggers/jsm.mdx
Normal file
314
apps/docs/content/docs/en/triggers/jsm.mdx
Normal file
@@ -0,0 +1,314 @@
|
||||
---
|
||||
title: Jsm
|
||||
description: Available Jsm triggers for automating workflows
|
||||
---
|
||||
|
||||
import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
<BlockInfoCard
|
||||
type="jsm"
|
||||
color="#6B7280"
|
||||
/>
|
||||
|
||||
Jsm provides 5 triggers for automating workflows based on events.
|
||||
|
||||
## Triggers
|
||||
|
||||
### JSM Request Commented
|
||||
|
||||
Trigger workflow when a comment is added to a Jira Service Management request
|
||||
|
||||
#### 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
|
||||
|
||||
| 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
|
||||
|
||||
Trigger workflow when a new service request is created in Jira Service Management
|
||||
|
||||
#### 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
|
||||
|
||||
| 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
|
||||
|
||||
Trigger workflow when a service request is resolved in Jira Service Management
|
||||
|
||||
#### 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
|
||||
|
||||
| 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
|
||||
|
||||
Trigger workflow when a service request is updated in Jira Service Management
|
||||
|
||||
#### 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
|
||||
|
||||
| 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)
|
||||
|
||||
Trigger workflow on any Jira Service Management webhook event
|
||||
|
||||
#### 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
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `changelog` | object | changelog output from the tool |
|
||||
| ↳ `id` | string | Changelog ID |
|
||||
| `comment` | object | comment output from the tool |
|
||||
| ↳ `id` | string | Comment ID |
|
||||
| ↳ `body` | string | Comment text/body |
|
||||
| ↳ `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\) |
|
||||
|
||||
366
apps/docs/content/docs/en/triggers/lemlist.mdx
Normal file
366
apps/docs/content/docs/en/triggers/lemlist.mdx
Normal file
@@ -0,0 +1,366 @@
|
||||
---
|
||||
title: Lemlist
|
||||
description: Available Lemlist triggers for automating workflows
|
||||
---
|
||||
|
||||
import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
<BlockInfoCard
|
||||
type="lemlist"
|
||||
color="#316BFF"
|
||||
/>
|
||||
|
||||
Lemlist provides 9 triggers for automating workflows based on events.
|
||||
|
||||
## Triggers
|
||||
|
||||
### Lemlist Email Bounced
|
||||
|
||||
Trigger workflow when an email bounces
|
||||
|
||||
#### 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
|
||||
|
||||
| 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
|
||||
|
||||
Trigger workflow when a lead clicks a link in an email
|
||||
|
||||
#### 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
|
||||
|
||||
| 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
|
||||
|
||||
Trigger workflow when a lead opens an email
|
||||
|
||||
#### 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
|
||||
|
||||
| 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
|
||||
|
||||
Trigger workflow when a lead replies to an email
|
||||
|
||||
#### 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
|
||||
|
||||
| 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
|
||||
|
||||
Trigger workflow when an email is sent
|
||||
|
||||
#### 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
|
||||
|
||||
| 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
|
||||
|
||||
Trigger workflow when a lead is marked as interested
|
||||
|
||||
#### 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
|
||||
|
||||
| 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
|
||||
|
||||
Trigger workflow when a lead is marked as not interested
|
||||
|
||||
#### 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
|
||||
|
||||
| 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
|
||||
|
||||
Trigger workflow when a lead replies to a LinkedIn message
|
||||
|
||||
#### 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
|
||||
|
||||
| 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)
|
||||
|
||||
Trigger workflow on any Lemlist webhook event
|
||||
|
||||
#### 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
|
||||
|
||||
| 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\) |
|
||||
|
||||
703
apps/docs/content/docs/en/triggers/linear.mdx
Normal file
703
apps/docs/content/docs/en/triggers/linear.mdx
Normal file
@@ -0,0 +1,703 @@
|
||||
---
|
||||
title: Linear
|
||||
description: Available Linear triggers for automating workflows
|
||||
---
|
||||
|
||||
import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
<BlockInfoCard
|
||||
type="linear"
|
||||
color="#5E6AD2"
|
||||
/>
|
||||
|
||||
Linear provides 15 triggers for automating workflows based on events.
|
||||
|
||||
## Triggers
|
||||
|
||||
### Linear Comment Created
|
||||
|
||||
Trigger workflow when a new comment is created in Linear
|
||||
|
||||
#### Configuration
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Yes | API Key |
|
||||
| `teamId` | string | No | Team ID |
|
||||
|
||||
#### Output
|
||||
|
||||
| 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\) |
|
||||
| `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
|
||||
|
||||
Trigger workflow when a comment is updated in Linear
|
||||
|
||||
#### Configuration
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Yes | API Key |
|
||||
| `teamId` | string | No | Team ID |
|
||||
|
||||
#### Output
|
||||
|
||||
| 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\) |
|
||||
| `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
|
||||
|
||||
Trigger workflow when a new customer request is created in Linear
|
||||
|
||||
#### Configuration
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Yes | API Key |
|
||||
| `teamId` | string | No | Team ID |
|
||||
|
||||
#### Output
|
||||
|
||||
| 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\) |
|
||||
| `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
|
||||
|
||||
Trigger workflow when a customer request is updated in Linear
|
||||
|
||||
#### Configuration
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Yes | API Key |
|
||||
| `teamId` | string | No | Team ID |
|
||||
|
||||
#### Output
|
||||
|
||||
| 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\) |
|
||||
| `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
|
||||
|
||||
Trigger workflow when a new cycle is created in Linear
|
||||
|
||||
#### Configuration
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Yes | API Key |
|
||||
| `teamId` | string | No | Team ID |
|
||||
|
||||
#### Output
|
||||
|
||||
| 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\) |
|
||||
| `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
|
||||
|
||||
Trigger workflow when a cycle is updated in Linear
|
||||
|
||||
#### Configuration
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Yes | API Key |
|
||||
| `teamId` | string | No | Team ID |
|
||||
|
||||
#### Output
|
||||
|
||||
| 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\) |
|
||||
| `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
|
||||
|
||||
Trigger workflow when a new issue is created in Linear
|
||||
|
||||
#### Configuration
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Yes | API Key |
|
||||
| `teamId` | string | No | Team ID |
|
||||
|
||||
#### Output
|
||||
|
||||
| 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\) |
|
||||
| `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
|
||||
|
||||
Trigger workflow when an issue is removed/deleted in Linear
|
||||
|
||||
#### Configuration
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Yes | API Key |
|
||||
| `teamId` | string | No | Team ID |
|
||||
|
||||
#### Output
|
||||
|
||||
| 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\) |
|
||||
| `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
|
||||
|
||||
Trigger workflow when an issue is updated in Linear
|
||||
|
||||
#### Configuration
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Yes | API Key |
|
||||
| `teamId` | string | No | Team ID |
|
||||
|
||||
#### Output
|
||||
|
||||
| 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\) |
|
||||
| `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
|
||||
|
||||
Trigger workflow when a new label is created in Linear
|
||||
|
||||
#### Configuration
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Yes | API Key |
|
||||
| `teamId` | string | No | Team ID |
|
||||
|
||||
#### Output
|
||||
|
||||
| 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\) |
|
||||
| `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
|
||||
|
||||
Trigger workflow when a label is updated in Linear
|
||||
|
||||
#### Configuration
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Yes | API Key |
|
||||
| `teamId` | string | No | Team ID |
|
||||
|
||||
#### Output
|
||||
|
||||
| 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\) |
|
||||
| `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
|
||||
|
||||
Trigger workflow when a new project is created in Linear
|
||||
|
||||
#### Configuration
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Yes | API Key |
|
||||
| `teamId` | string | No | Team ID |
|
||||
|
||||
#### Output
|
||||
|
||||
| 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\) |
|
||||
| `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
|
||||
|
||||
Trigger workflow when a new project update is posted in Linear
|
||||
|
||||
#### Configuration
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Yes | API Key |
|
||||
| `teamId` | string | No | Team ID |
|
||||
|
||||
#### Output
|
||||
|
||||
| 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\) |
|
||||
| `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
|
||||
|
||||
Trigger workflow when a project is updated in Linear
|
||||
|
||||
#### Configuration
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Yes | API Key |
|
||||
| `teamId` | string | No | Team ID |
|
||||
|
||||
#### Output
|
||||
|
||||
| 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\) |
|
||||
| `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
|
||||
|
||||
Trigger workflow from Linear events you select when creating the webhook in Linear (not guaranteed to be every model or event type).
|
||||
|
||||
#### Configuration
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Yes | API Key |
|
||||
| `teamId` | string | No | Team ID |
|
||||
|
||||
#### Output
|
||||
|
||||
| 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\) |
|
||||
| `data` | object | Complete entity data object |
|
||||
| `updatedFrom` | object | Previous values for changed fields \(only present on update\) |
|
||||
|
||||
@@ -1,3 +1,50 @@
|
||||
{
|
||||
"pages": ["index", "start", "schedule", "webhook", "rss"]
|
||||
"pages": [
|
||||
"index",
|
||||
"start",
|
||||
"schedule",
|
||||
"webhook",
|
||||
"rss",
|
||||
"airtable",
|
||||
"ashby",
|
||||
"attio",
|
||||
"calcom",
|
||||
"calendly",
|
||||
"circleback",
|
||||
"confluence",
|
||||
"fathom",
|
||||
"fireflies",
|
||||
"github",
|
||||
"gmail",
|
||||
"gong",
|
||||
"google-calendar",
|
||||
"google-drive",
|
||||
"google-sheets",
|
||||
"google_forms",
|
||||
"grain",
|
||||
"greenhouse",
|
||||
"hubspot",
|
||||
"imap",
|
||||
"intercom",
|
||||
"jira",
|
||||
"jsm",
|
||||
"lemlist",
|
||||
"linear",
|
||||
"microsoft-teams",
|
||||
"monday",
|
||||
"notion",
|
||||
"outlook",
|
||||
"resend",
|
||||
"salesforce",
|
||||
"servicenow",
|
||||
"slack",
|
||||
"stripe",
|
||||
"telegram",
|
||||
"twilio_voice",
|
||||
"typeform",
|
||||
"vercel",
|
||||
"webflow",
|
||||
"whatsapp",
|
||||
"zoom"
|
||||
]
|
||||
}
|
||||
|
||||
92
apps/docs/content/docs/en/triggers/microsoft-teams.mdx
Normal file
92
apps/docs/content/docs/en/triggers/microsoft-teams.mdx
Normal file
@@ -0,0 +1,92 @@
|
||||
---
|
||||
title: Microsoft Teams
|
||||
description: Available Microsoft Teams triggers for automating workflows
|
||||
---
|
||||
|
||||
import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
<BlockInfoCard
|
||||
type="microsoft_teams"
|
||||
color="#E0E0E0"
|
||||
/>
|
||||
|
||||
Microsoft Teams provides 2 triggers for automating workflows based on events.
|
||||
|
||||
## Triggers
|
||||
|
||||
### Microsoft Teams Channel
|
||||
|
||||
Trigger workflow from Microsoft Teams channel messages via outgoing webhooks
|
||||
|
||||
#### 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
|
||||
|
||||
| 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
|
||||
|
||||
Trigger workflow from new messages in Microsoft Teams chats via Microsoft Graph subscriptions
|
||||
|
||||
#### Configuration
|
||||
|
||||
| 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
|
||||
|
||||
| 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 |
|
||||
|
||||
215
apps/docs/content/docs/en/triggers/monday.mdx
Normal file
215
apps/docs/content/docs/en/triggers/monday.mdx
Normal file
@@ -0,0 +1,215 @@
|
||||
---
|
||||
title: Monday
|
||||
description: Available Monday triggers for automating workflows
|
||||
---
|
||||
|
||||
import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
<BlockInfoCard
|
||||
type="monday"
|
||||
color="#FFFFFF"
|
||||
/>
|
||||
|
||||
Monday provides 9 triggers for automating workflows based on events.
|
||||
|
||||
## Triggers
|
||||
|
||||
### Monday Column Value Changed
|
||||
|
||||
Trigger workflow when any column value changes on a Monday.com board
|
||||
|
||||
#### Output
|
||||
|
||||
| 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
|
||||
|
||||
Trigger workflow when an item is archived on a Monday.com board
|
||||
|
||||
#### Output
|
||||
|
||||
| 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
|
||||
|
||||
Trigger workflow when a new item is created on a Monday.com board
|
||||
|
||||
#### Output
|
||||
|
||||
| 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
|
||||
|
||||
Trigger workflow when an item is deleted on a Monday.com board
|
||||
|
||||
#### Output
|
||||
|
||||
| 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
|
||||
|
||||
Trigger workflow when an item is moved to any group on a Monday.com board
|
||||
|
||||
#### Output
|
||||
|
||||
| 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
|
||||
|
||||
Trigger workflow when an item name changes on a Monday.com board
|
||||
|
||||
#### Output
|
||||
|
||||
| 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
|
||||
|
||||
Trigger workflow when a status column value changes on a Monday.com board
|
||||
|
||||
#### Output
|
||||
|
||||
| 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
|
||||
|
||||
Trigger workflow when a subitem is created on a Monday.com board
|
||||
|
||||
#### Output
|
||||
|
||||
| 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
|
||||
|
||||
Trigger workflow when an update or comment is posted on a Monday.com item
|
||||
|
||||
#### Output
|
||||
|
||||
| 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 |
|
||||
|
||||
331
apps/docs/content/docs/en/triggers/notion.mdx
Normal file
331
apps/docs/content/docs/en/triggers/notion.mdx
Normal file
@@ -0,0 +1,331 @@
|
||||
---
|
||||
title: Notion
|
||||
description: Available Notion triggers for automating workflows
|
||||
---
|
||||
|
||||
import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
<BlockInfoCard
|
||||
type="notion"
|
||||
color="#181C1E"
|
||||
/>
|
||||
|
||||
Notion provides 9 triggers for automating workflows based on events.
|
||||
|
||||
## Triggers
|
||||
|
||||
### Notion Comment Created
|
||||
|
||||
Trigger workflow when a comment or suggested edit is added in Notion
|
||||
|
||||
#### 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
|
||||
|
||||
| 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
|
||||
|
||||
Trigger workflow when a new database is created in Notion
|
||||
|
||||
#### 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
|
||||
|
||||
| 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 |
|
||||
| `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
|
||||
|
||||
Trigger workflow when a database is deleted in Notion
|
||||
|
||||
#### 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
|
||||
|
||||
| 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 |
|
||||
| `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
|
||||
|
||||
Trigger workflow when a database schema is modified in Notion
|
||||
|
||||
#### 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
|
||||
|
||||
| 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 |
|
||||
| `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
|
||||
|
||||
Trigger workflow when page content is changed in Notion
|
||||
|
||||
#### 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
|
||||
|
||||
| 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 |
|
||||
| `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
|
||||
|
||||
Trigger workflow when a new page is created in Notion
|
||||
|
||||
#### 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
|
||||
|
||||
| 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 |
|
||||
| `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
|
||||
|
||||
Trigger workflow when a page is deleted in Notion
|
||||
|
||||
#### 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
|
||||
|
||||
| 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 |
|
||||
| `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
|
||||
|
||||
Trigger workflow when page properties are modified in Notion
|
||||
|
||||
#### 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
|
||||
|
||||
| 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 |
|
||||
| `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)
|
||||
|
||||
Trigger workflow on any Notion webhook event
|
||||
|
||||
#### 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
|
||||
|
||||
| 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 |
|
||||
| `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 |
|
||||
|
||||
54
apps/docs/content/docs/en/triggers/outlook.mdx
Normal file
54
apps/docs/content/docs/en/triggers/outlook.mdx
Normal file
@@ -0,0 +1,54 @@
|
||||
---
|
||||
title: Outlook
|
||||
description: Available Outlook triggers for automating workflows
|
||||
---
|
||||
|
||||
import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
<BlockInfoCard
|
||||
type="outlook"
|
||||
color="#E0E0E0"
|
||||
/>
|
||||
|
||||
Outlook provides 1 trigger for automating workflows based on events.
|
||||
|
||||
All triggers below are **polling-based** — they check for new data on a schedule rather than receiving push notifications.
|
||||
|
||||
## Triggers
|
||||
|
||||
### Outlook Email Trigger
|
||||
|
||||
Triggers when new emails are received in Outlook (requires Microsoft credentials)
|
||||
|
||||
#### Configuration
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `triggerCredentials` | string | Yes | This trigger requires outlook credentials to access your account. |
|
||||
| `folderIds` | string | No | Choose which Outlook folders to monitor. Leave empty to monitor all emails. |
|
||||
| `folderFilterBehavior` | string | Yes | Include only emails from selected folders, or exclude emails from selected folders |
|
||||
| `markAsRead` | boolean | No | Automatically mark emails as read after processing |
|
||||
| `includeAttachments` | boolean | No | Download and include email attachments in the trigger payload |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `email` | object | email output from the tool |
|
||||
| ↳ `id` | string | Outlook message ID |
|
||||
| ↳ `conversationId` | string | Outlook conversation ID |
|
||||
| ↳ `subject` | string | Email subject line |
|
||||
| ↳ `from` | string | Sender email address |
|
||||
| ↳ `to` | string | Recipient email address |
|
||||
| ↳ `cc` | string | CC recipients |
|
||||
| ↳ `date` | string | Email date in ISO format |
|
||||
| ↳ `bodyText` | string | Plain text email body |
|
||||
| ↳ `bodyHtml` | string | HTML email body |
|
||||
| ↳ `hasAttachments` | boolean | Whether email has attachments |
|
||||
| ↳ `attachments` | file[] | Array of email attachments as files \(if includeAttachments is enabled\) |
|
||||
| ↳ `isRead` | boolean | Whether email is read |
|
||||
| ↳ `folderId` | string | Outlook folder ID where email is located |
|
||||
| ↳ `messageId` | string | Message ID for threading |
|
||||
| ↳ `threadId` | string | Thread ID for conversation threading |
|
||||
| `timestamp` | string | Event timestamp |
|
||||
|
||||
259
apps/docs/content/docs/en/triggers/resend.mdx
Normal file
259
apps/docs/content/docs/en/triggers/resend.mdx
Normal file
@@ -0,0 +1,259 @@
|
||||
---
|
||||
title: Resend
|
||||
description: Available Resend triggers for automating workflows
|
||||
---
|
||||
|
||||
import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
<BlockInfoCard
|
||||
type="resend"
|
||||
color="#181C1E"
|
||||
/>
|
||||
|
||||
Resend provides 8 triggers for automating workflows based on events.
|
||||
|
||||
## Triggers
|
||||
|
||||
### Resend Email Bounced
|
||||
|
||||
Trigger workflow when an email bounces
|
||||
|
||||
#### Configuration
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Yes | Required to create the webhook in Resend. |
|
||||
|
||||
#### Output
|
||||
|
||||
| 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
|
||||
|
||||
Trigger workflow when a link in an email is clicked
|
||||
|
||||
#### Configuration
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Yes | Required to create the webhook in Resend. |
|
||||
|
||||
#### Output
|
||||
|
||||
| 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
|
||||
|
||||
Trigger workflow when an email is marked as spam
|
||||
|
||||
#### Configuration
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Yes | Required to create the webhook in Resend. |
|
||||
|
||||
#### Output
|
||||
|
||||
| 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
|
||||
|
||||
Trigger workflow when an email is delivered
|
||||
|
||||
#### Configuration
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Yes | Required to create the webhook in Resend. |
|
||||
|
||||
#### Output
|
||||
|
||||
| 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
|
||||
|
||||
Trigger workflow when an email fails to send
|
||||
|
||||
#### Configuration
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Yes | Required to create the webhook in Resend. |
|
||||
|
||||
#### Output
|
||||
|
||||
| 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
|
||||
|
||||
Trigger workflow when an email is opened
|
||||
|
||||
#### Configuration
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Yes | Required to create the webhook in Resend. |
|
||||
|
||||
#### Output
|
||||
|
||||
| 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
|
||||
|
||||
Trigger workflow when an email is sent
|
||||
|
||||
#### Configuration
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Yes | Required to create the webhook in Resend. |
|
||||
|
||||
#### Output
|
||||
|
||||
| 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)
|
||||
|
||||
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 <code>data</code> for the full payload.
|
||||
|
||||
#### Configuration
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Yes | Required to create the webhook in Resend. |
|
||||
|
||||
#### Output
|
||||
|
||||
| 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 |
|
||||
|
||||
208
apps/docs/content/docs/en/triggers/salesforce.mdx
Normal file
208
apps/docs/content/docs/en/triggers/salesforce.mdx
Normal file
@@ -0,0 +1,208 @@
|
||||
---
|
||||
title: Salesforce
|
||||
description: Available Salesforce triggers for automating workflows
|
||||
---
|
||||
|
||||
import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
<BlockInfoCard
|
||||
type="salesforce"
|
||||
color="#E0E0E0"
|
||||
/>
|
||||
|
||||
Salesforce provides 6 triggers for automating workflows based on events.
|
||||
|
||||
## Triggers
|
||||
|
||||
### Salesforce Case Status Changed
|
||||
|
||||
Trigger workflow when a case status changes
|
||||
|
||||
#### Configuration
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `webhookSecret` | string | Yes | Required. Use the same value in your Salesforce HTTP Callout as Bearer token or X-Sim-Webhook-Secret. |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `eventType` | string | The type of event |
|
||||
| `simEventType` | string | Optional alias from the payload \(`simEventType`\). Empty when only `eventType` is sent. |
|
||||
| `objectType` | string | Salesforce object type \(Case\) |
|
||||
| `recordId` | string | Case ID |
|
||||
| `timestamp` | string | When the event occurred \(ISO 8601\) |
|
||||
| `record` | object | record output from the tool |
|
||||
| ↳ `Id` | string | Case ID |
|
||||
| ↳ `Subject` | string | Case subject |
|
||||
| ↳ `Status` | string | Current case status |
|
||||
| ↳ `Priority` | string | Case priority |
|
||||
| ↳ `CaseNumber` | string | Case number |
|
||||
| ↳ `AccountId` | string | Related Account ID |
|
||||
| ↳ `ContactId` | string | Related Contact ID |
|
||||
| ↳ `OwnerId` | string | Case owner ID |
|
||||
| `previousStatus` | string | Previous case status |
|
||||
| `newStatus` | string | New case status |
|
||||
| `payload` | json | Full webhook payload |
|
||||
|
||||
|
||||
---
|
||||
|
||||
### Salesforce Opportunity Stage Changed
|
||||
|
||||
Trigger workflow when an opportunity stage changes
|
||||
|
||||
#### Configuration
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `webhookSecret` | string | Yes | Required. Use the same value in your Salesforce HTTP Callout as Bearer token or X-Sim-Webhook-Secret. |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `eventType` | string | The type of event |
|
||||
| `simEventType` | string | Optional alias from the payload \(`simEventType`\). Empty when only `eventType` is sent. |
|
||||
| `objectType` | string | Salesforce object type \(Opportunity\) |
|
||||
| `recordId` | string | Opportunity ID |
|
||||
| `timestamp` | string | When the event occurred \(ISO 8601\) |
|
||||
| `record` | object | record output from the tool |
|
||||
| ↳ `Id` | string | Opportunity ID |
|
||||
| ↳ `Name` | string | Opportunity name |
|
||||
| ↳ `StageName` | string | Current stage name |
|
||||
| ↳ `Amount` | string | Deal amount |
|
||||
| ↳ `CloseDate` | string | Expected close date |
|
||||
| ↳ `Probability` | string | Win probability |
|
||||
| ↳ `AccountId` | string | Related Account ID \(standard Opportunity field\) |
|
||||
| ↳ `OwnerId` | string | Opportunity owner ID |
|
||||
| `previousStage` | string | Previous stage name |
|
||||
| `newStage` | string | New stage name |
|
||||
| `payload` | json | Full webhook payload |
|
||||
|
||||
|
||||
---
|
||||
|
||||
### Salesforce Record Created
|
||||
|
||||
Trigger workflow when a Salesforce record is created
|
||||
|
||||
#### Configuration
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `webhookSecret` | string | Yes | Required. Use the same value in your Salesforce HTTP Callout as Bearer token or X-Sim-Webhook-Secret. |
|
||||
| `objectType` | string | No | When set, the payload must include matching object type metadata \(for example objectType, sobjectType, or attributes.type\) or the event is rejected. |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `eventType` | string | The type of event \(e.g., created, updated, deleted\) |
|
||||
| `simEventType` | string | Optional alias from the payload \(`simEventType`\). Empty when only `eventType` is sent. |
|
||||
| `objectType` | string | Salesforce object type \(e.g., Account, Contact, Lead\) |
|
||||
| `recordId` | string | ID of the affected record |
|
||||
| `timestamp` | string | When the event occurred \(ISO 8601\) |
|
||||
| `record` | object | record output from the tool |
|
||||
| ↳ `Id` | string | Record ID |
|
||||
| ↳ `Name` | string | Record name |
|
||||
| ↳ `CreatedDate` | string | Record creation date |
|
||||
| ↳ `LastModifiedDate` | string | Last modification date |
|
||||
| ↳ `OwnerId` | string | Record owner ID \(standard field when sent in the Flow body\) |
|
||||
| ↳ `SystemModstamp` | string | System modstamp from the record \(ISO 8601\) when included in the payload |
|
||||
| `changedFields` | json | Fields that were changed \(for update events\) |
|
||||
| `payload` | json | Full webhook payload |
|
||||
|
||||
|
||||
---
|
||||
|
||||
### Salesforce Record Deleted
|
||||
|
||||
Trigger workflow when a Salesforce record is deleted
|
||||
|
||||
#### Configuration
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `webhookSecret` | string | Yes | Required. Use the same value in your Salesforce HTTP Callout as Bearer token or X-Sim-Webhook-Secret. |
|
||||
| `objectType` | string | No | When set, the payload must include matching object type metadata \(for example objectType, sobjectType, or attributes.type\) or the event is rejected. |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `eventType` | string | The type of event \(e.g., created, updated, deleted\) |
|
||||
| `simEventType` | string | Optional alias from the payload \(`simEventType`\). Empty when only `eventType` is sent. |
|
||||
| `objectType` | string | Salesforce object type \(e.g., Account, Contact, Lead\) |
|
||||
| `recordId` | string | ID of the affected record |
|
||||
| `timestamp` | string | When the event occurred \(ISO 8601\) |
|
||||
| `record` | object | record output from the tool |
|
||||
| ↳ `Id` | string | Record ID |
|
||||
| ↳ `Name` | string | Record name |
|
||||
| ↳ `CreatedDate` | string | Record creation date |
|
||||
| ↳ `LastModifiedDate` | string | Last modification date |
|
||||
| ↳ `OwnerId` | string | Record owner ID \(standard field when sent in the Flow body\) |
|
||||
| ↳ `SystemModstamp` | string | System modstamp from the record \(ISO 8601\) when included in the payload |
|
||||
| `changedFields` | json | Fields that were changed \(for update events\) |
|
||||
| `payload` | json | Full webhook payload |
|
||||
|
||||
|
||||
---
|
||||
|
||||
### Salesforce Record Updated
|
||||
|
||||
Trigger workflow when a Salesforce record is updated
|
||||
|
||||
#### Configuration
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `webhookSecret` | string | Yes | Required. Use the same value in your Salesforce HTTP Callout as Bearer token or X-Sim-Webhook-Secret. |
|
||||
| `objectType` | string | No | When set, the payload must include matching object type metadata \(for example objectType, sobjectType, or attributes.type\) or the event is rejected. |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `eventType` | string | The type of event \(e.g., created, updated, deleted\) |
|
||||
| `simEventType` | string | Optional alias from the payload \(`simEventType`\). Empty when only `eventType` is sent. |
|
||||
| `objectType` | string | Salesforce object type \(e.g., Account, Contact, Lead\) |
|
||||
| `recordId` | string | ID of the affected record |
|
||||
| `timestamp` | string | When the event occurred \(ISO 8601\) |
|
||||
| `record` | object | record output from the tool |
|
||||
| ↳ `Id` | string | Record ID |
|
||||
| ↳ `Name` | string | Record name |
|
||||
| ↳ `CreatedDate` | string | Record creation date |
|
||||
| ↳ `LastModifiedDate` | string | Last modification date |
|
||||
| ↳ `OwnerId` | string | Record owner ID \(standard field when sent in the Flow body\) |
|
||||
| ↳ `SystemModstamp` | string | System modstamp from the record \(ISO 8601\) when included in the payload |
|
||||
| `changedFields` | json | Fields that were changed \(for update events\) |
|
||||
| `payload` | json | Full webhook payload |
|
||||
|
||||
|
||||
---
|
||||
|
||||
### Salesforce Webhook (All Events)
|
||||
|
||||
Trigger workflow on any Salesforce webhook event
|
||||
|
||||
#### Configuration
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `webhookSecret` | string | Yes | Required. Use the same value in your Salesforce HTTP Callout as Bearer token or X-Sim-Webhook-Secret. |
|
||||
| `objectType` | string | No | When set, the payload must include matching object type metadata \(for example objectType, sobjectType, or attributes.type\) or the event is rejected. |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `eventType` | string | The type of event |
|
||||
| `simEventType` | string | Optional alias from the payload \(`simEventType`\). Empty when only `eventType` is sent. |
|
||||
| `objectType` | string | Salesforce object type |
|
||||
| `recordId` | string | ID of the affected record |
|
||||
| `timestamp` | string | When the event occurred \(ISO 8601\) |
|
||||
| `record` | json | Full record data |
|
||||
| `payload` | json | Full webhook payload |
|
||||
|
||||
210
apps/docs/content/docs/en/triggers/servicenow.mdx
Normal file
210
apps/docs/content/docs/en/triggers/servicenow.mdx
Normal file
@@ -0,0 +1,210 @@
|
||||
---
|
||||
title: ServiceNow
|
||||
description: Available ServiceNow triggers for automating workflows
|
||||
---
|
||||
|
||||
import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
<BlockInfoCard
|
||||
type="servicenow"
|
||||
color="#032D42"
|
||||
/>
|
||||
|
||||
ServiceNow provides 5 triggers for automating workflows based on events.
|
||||
|
||||
## Triggers
|
||||
|
||||
### ServiceNow Change Request Created
|
||||
|
||||
Trigger workflow when a new change request is created in ServiceNow
|
||||
|
||||
#### Configuration
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `webhookSecret` | string | Yes | Required. Use the same value in your ServiceNow Business Rule as Bearer token or X-Sim-Webhook-Secret. |
|
||||
| `tableName` | string | No | Optionally filter to a specific ServiceNow table |
|
||||
|
||||
#### Output
|
||||
|
||||
| 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
|
||||
|
||||
Trigger workflow when a change request is updated in ServiceNow
|
||||
|
||||
#### Configuration
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `webhookSecret` | string | Yes | Required. Use the same value in your ServiceNow Business Rule as Bearer token or X-Sim-Webhook-Secret. |
|
||||
| `tableName` | string | No | Optionally filter to a specific ServiceNow table |
|
||||
|
||||
#### Output
|
||||
|
||||
| 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
|
||||
|
||||
Trigger workflow when a new incident is created in ServiceNow
|
||||
|
||||
#### Configuration
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `webhookSecret` | string | Yes | Required. Use the same value in your ServiceNow Business Rule as Bearer token or X-Sim-Webhook-Secret. |
|
||||
| `tableName` | string | No | Optionally filter to a specific ServiceNow table |
|
||||
|
||||
#### Output
|
||||
|
||||
| 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
|
||||
|
||||
Trigger workflow when an incident is updated in ServiceNow
|
||||
|
||||
#### Configuration
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `webhookSecret` | string | Yes | Required. Use the same value in your ServiceNow Business Rule as Bearer token or X-Sim-Webhook-Secret. |
|
||||
| `tableName` | string | No | Optionally filter to a specific ServiceNow table |
|
||||
|
||||
#### Output
|
||||
|
||||
| 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)
|
||||
|
||||
Trigger workflow on any ServiceNow webhook event
|
||||
|
||||
#### Configuration
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `webhookSecret` | string | Yes | Required. Use the same value in your ServiceNow Business Rule as Bearer token or X-Sim-Webhook-Secret. |
|
||||
| `tableName` | string | No | Optionally filter to a specific ServiceNow table |
|
||||
|
||||
#### Output
|
||||
|
||||
| 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 |
|
||||
|
||||
51
apps/docs/content/docs/en/triggers/slack.mdx
Normal file
51
apps/docs/content/docs/en/triggers/slack.mdx
Normal file
@@ -0,0 +1,51 @@
|
||||
---
|
||||
title: Slack
|
||||
description: Available Slack triggers for automating workflows
|
||||
---
|
||||
|
||||
import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
<BlockInfoCard
|
||||
type="slack"
|
||||
color="#611f69"
|
||||
/>
|
||||
|
||||
Slack provides 1 trigger for automating workflows based on events.
|
||||
|
||||
## Triggers
|
||||
|
||||
### Slack Webhook
|
||||
|
||||
Trigger workflow from Slack events like mentions, messages, and reactions
|
||||
|
||||
#### Configuration
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `signingSecret` | string | Yes | The signing secret from your Slack app to validate request authenticity. |
|
||||
| `botToken` | string | No | The bot token from your Slack app. Required for downloading files attached to messages. |
|
||||
| `includeFiles` | boolean | No | Download and include file attachments from messages. Requires a bot token with files:read scope. |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `event` | object | Slack event data |
|
||||
| ↳ `event_type` | string | Type of Slack event \(e.g., app_mention, message\) |
|
||||
| ↳ `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 |
|
||||
| ↳ `timestamp` | string | Message timestamp from the triggering event |
|
||||
| ↳ `thread_ts` | string | Parent thread timestamp \(if message is in a thread\) |
|
||||
| ↳ `team_id` | string | Slack workspace/team 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 |
|
||||
| ↳ `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\) |
|
||||
|
||||
41
apps/docs/content/docs/en/triggers/stripe.mdx
Normal file
41
apps/docs/content/docs/en/triggers/stripe.mdx
Normal file
@@ -0,0 +1,41 @@
|
||||
---
|
||||
title: Stripe
|
||||
description: Available Stripe triggers for automating workflows
|
||||
---
|
||||
|
||||
import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
<BlockInfoCard
|
||||
type="stripe"
|
||||
color="#635BFF"
|
||||
/>
|
||||
|
||||
Stripe provides 1 trigger for automating workflows based on events.
|
||||
|
||||
## Triggers
|
||||
|
||||
### Stripe Webhook
|
||||
|
||||
Triggers when Stripe events occur (payments, subscriptions, invoices, etc.)
|
||||
|
||||
#### 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
|
||||
|
||||
| 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\) |
|
||||
|
||||
65
apps/docs/content/docs/en/triggers/telegram.mdx
Normal file
65
apps/docs/content/docs/en/triggers/telegram.mdx
Normal file
@@ -0,0 +1,65 @@
|
||||
---
|
||||
title: Telegram
|
||||
description: Available Telegram triggers for automating workflows
|
||||
---
|
||||
|
||||
import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
<BlockInfoCard
|
||||
type="telegram"
|
||||
color="#E0E0E0"
|
||||
/>
|
||||
|
||||
Telegram provides 1 trigger for automating workflows based on events.
|
||||
|
||||
## Triggers
|
||||
|
||||
### Telegram Webhook
|
||||
|
||||
Trigger workflow from Telegram bot messages and events
|
||||
|
||||
#### Configuration
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `botToken` | string | Yes | Your Telegram Bot Token from BotFather |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `message` | object | Telegram message data |
|
||||
| ↳ `id` | number | Telegram message ID |
|
||||
| ↳ `text` | string | Message text content \(if present\) |
|
||||
| ↳ `date` | number | Date the message was sent \(Unix timestamp\) |
|
||||
| ↳ `messageType` | string | Detected content type: text, photo, document, audio, video, voice, sticker, location, contact, poll |
|
||||
| ↳ `raw` | object | Raw Telegram message object |
|
||||
| ↳ `message_id` | number | Original Telegram message_id |
|
||||
| ↳ `date` | number | Original Telegram message date \(Unix timestamp\) |
|
||||
| ↳ `text` | string | Original Telegram text \(if present\) |
|
||||
| ↳ `caption` | string | Original Telegram caption \(if present\) |
|
||||
| ↳ `chat` | object | Chat information |
|
||||
| ↳ `id` | number | Chat identifier |
|
||||
| ↳ `username` | string | Chat username \(if available\) |
|
||||
| ↳ `first_name` | string | First name \(for private chats\) |
|
||||
| ↳ `last_name` | string | Last name \(for private chats\) |
|
||||
| ↳ `title` | string | Chat title \(for groups/channels\) |
|
||||
| ↳ `from` | object | Sender information |
|
||||
| ↳ `id` | number | Sender user ID |
|
||||
| ↳ `is_bot` | boolean | Whether the sender is a bot |
|
||||
| ↳ `first_name` | string | Sender first name |
|
||||
| ↳ `last_name` | string | Sender last name |
|
||||
| ↳ `username` | string | Sender username |
|
||||
| ↳ `language_code` | string | Sender language code \(if available\) |
|
||||
| ↳ `reply_to_message` | object | Original message being replied to |
|
||||
| ↳ `entities` | array | Message entities \(mentions, hashtags, URLs, etc.\) |
|
||||
| `sender` | object | Sender information |
|
||||
| ↳ `id` | number | Sender user ID |
|
||||
| ↳ `username` | string | Sender username \(if available\) |
|
||||
| ↳ `firstName` | string | Sender first name |
|
||||
| ↳ `lastName` | string | Sender last name |
|
||||
| ↳ `languageCode` | string | Sender language code \(if available\) |
|
||||
| ↳ `isBot` | boolean | Whether the sender is a bot |
|
||||
| `updateId` | number | Update ID for this webhook delivery |
|
||||
| `updateType` | string | Type of update: message, edited_message, channel_post, edited_channel_post, unknown |
|
||||
|
||||
66
apps/docs/content/docs/en/triggers/twilio_voice.mdx
Normal file
66
apps/docs/content/docs/en/triggers/twilio_voice.mdx
Normal file
@@ -0,0 +1,66 @@
|
||||
---
|
||||
title: Twilio Voice
|
||||
description: Available Twilio Voice triggers for automating workflows
|
||||
---
|
||||
|
||||
import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
<BlockInfoCard
|
||||
type="twilio_voice"
|
||||
color="#F22F46"
|
||||
/>
|
||||
|
||||
Twilio Voice provides 1 trigger for automating workflows based on events.
|
||||
|
||||
## Triggers
|
||||
|
||||
### Twilio Voice Webhook
|
||||
|
||||
Trigger workflow when phone calls are received via Twilio Voice
|
||||
|
||||
#### 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 <Response>\). 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
|
||||
|
||||
| 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 <Gather>\) |
|
||||
| `speechResult` | string | Speech recognition result \(if using <Gather> 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 |
|
||||
|
||||
78
apps/docs/content/docs/en/triggers/typeform.mdx
Normal file
78
apps/docs/content/docs/en/triggers/typeform.mdx
Normal file
@@ -0,0 +1,78 @@
|
||||
---
|
||||
title: Typeform
|
||||
description: Available Typeform triggers for automating workflows
|
||||
---
|
||||
|
||||
import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
<BlockInfoCard
|
||||
type="typeform"
|
||||
color="#262627"
|
||||
/>
|
||||
|
||||
Typeform provides 1 trigger for automating workflows based on events.
|
||||
|
||||
## Triggers
|
||||
|
||||
### Typeform Webhook
|
||||
|
||||
Trigger workflow when a Typeform submission is received
|
||||
|
||||
#### Configuration
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `formId` | string | Yes | The unique identifier for your Typeform. Find it in the form URL or form settings. |
|
||||
| `apiKey` | string | Yes | Required to automatically register the webhook with Typeform. Get yours at https://admin.typeform.com/account#/section/tokens |
|
||||
| `secret` | string | No | A secret string used to verify webhook authenticity. Highly recommended for security. Generate a secure random string \(min 20 characters recommended\). |
|
||||
| `includeDefinition` | boolean | No | Include the complete form structure \(questions, fields, endings\) in your workflow variables. Note: Typeform always sends this data, but enabling this makes it accessible in your workflow. |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `event_id` | string | Unique identifier for this webhook event |
|
||||
| `event_type` | string | Type of event \(always "form_response" for form submissions\) |
|
||||
| `form_id` | string | Typeform form identifier |
|
||||
| `token` | string | Unique response/submission identifier |
|
||||
| `submitted_at` | string | ISO timestamp when the form was submitted |
|
||||
| `landed_at` | string | ISO timestamp when the user first landed on the form |
|
||||
| `calculated` | object | Calculated values from the form |
|
||||
| ↳ `score` | number | Calculated score value |
|
||||
| `variables` | array | Array of dynamic variables |
|
||||
| ↳ `key` | string | Variable key |
|
||||
| ↳ `number` | number | Numeric value \(if type is number\) |
|
||||
| ↳ `text` | string | Text value \(if type is text\) |
|
||||
| `hidden` | object | Hidden fields passed to the form \(e.g., UTM parameters\) |
|
||||
| `answers` | array | Array of respondent answers \(only includes answered questions\) |
|
||||
| ↳ `text` | string | Text answer value |
|
||||
| ↳ `email` | string | Email answer value |
|
||||
| ↳ `number` | number | Number answer value |
|
||||
| ↳ `boolean` | boolean | Boolean answer value |
|
||||
| ↳ `date` | string | Date answer value \(ISO format\) |
|
||||
| ↳ `url` | string | URL answer value |
|
||||
| ↳ `file_url` | string | File URL answer value |
|
||||
| ↳ `choice` | object | Single choice answer |
|
||||
| ↳ `id` | string | Choice ID |
|
||||
| ↳ `ref` | string | Choice reference |
|
||||
| ↳ `label` | string | Choice label |
|
||||
| ↳ `choices` | object | Multiple choices answer |
|
||||
| ↳ `ids` | array | Array of choice IDs |
|
||||
| ↳ `refs` | array | Array of choice refs |
|
||||
| ↳ `labels` | array | Array of choice labels |
|
||||
| ↳ `field` | object | Field reference |
|
||||
| ↳ `id` | string | Field ID |
|
||||
| ↳ `ref` | string | Field reference |
|
||||
| `definition` | object | Form definition \(only included when "Include Form Definition" is enabled\) |
|
||||
| ↳ `id` | string | Form ID |
|
||||
| ↳ `title` | string | Form title |
|
||||
| ↳ `fields` | array | Array of form fields |
|
||||
| ↳ `id` | string | Field ID |
|
||||
| ↳ `ref` | string | Field reference |
|
||||
| ↳ `title` | string | Field title |
|
||||
| ↳ `endings` | array | Array of form endings |
|
||||
| `ending` | object | Ending screen information |
|
||||
| ↳ `id` | string | Ending screen ID |
|
||||
| ↳ `ref` | string | Ending screen reference |
|
||||
| `raw` | object | Complete original webhook payload from Typeform |
|
||||
|
||||
356
apps/docs/content/docs/en/triggers/vercel.mdx
Normal file
356
apps/docs/content/docs/en/triggers/vercel.mdx
Normal file
@@ -0,0 +1,356 @@
|
||||
---
|
||||
title: Vercel
|
||||
description: Available Vercel triggers for automating workflows
|
||||
---
|
||||
|
||||
import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
<BlockInfoCard
|
||||
type="vercel"
|
||||
color="#171717"
|
||||
/>
|
||||
|
||||
Vercel provides 8 triggers for automating workflows based on events.
|
||||
|
||||
## Triggers
|
||||
|
||||
### Vercel Deployment Canceled
|
||||
|
||||
Trigger workflow when a deployment is canceled
|
||||
|
||||
#### 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
|
||||
|
||||
| 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
|
||||
|
||||
Trigger workflow when a new deployment is created
|
||||
|
||||
#### 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
|
||||
|
||||
| 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
|
||||
|
||||
Trigger workflow when a deployment fails
|
||||
|
||||
#### 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
|
||||
|
||||
| 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
|
||||
|
||||
Trigger workflow when a deployment is ready to serve traffic
|
||||
|
||||
#### 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
|
||||
|
||||
| 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
|
||||
|
||||
Trigger workflow when a domain is created
|
||||
|
||||
#### 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
|
||||
|
||||
| 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 |
|
||||
| `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
|
||||
|
||||
Trigger workflow when a new project is created
|
||||
|
||||
#### 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
|
||||
|
||||
| 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 |
|
||||
|
||||
|
||||
---
|
||||
|
||||
### Vercel Project Removed
|
||||
|
||||
Trigger workflow when a project is removed
|
||||
|
||||
#### 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
|
||||
|
||||
| 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 |
|
||||
|
||||
|
||||
---
|
||||
|
||||
### 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
|
||||
|
||||
| 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
|
||||
|
||||
| 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 |
|
||||
| `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 |
|
||||
| `payload` | json | Full event payload |
|
||||
|
||||
131
apps/docs/content/docs/en/triggers/webflow.mdx
Normal file
131
apps/docs/content/docs/en/triggers/webflow.mdx
Normal file
@@ -0,0 +1,131 @@
|
||||
---
|
||||
title: Webflow
|
||||
description: Available Webflow triggers for automating workflows
|
||||
---
|
||||
|
||||
import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
<BlockInfoCard
|
||||
type="webflow"
|
||||
color="#E0E0E0"
|
||||
/>
|
||||
|
||||
Webflow provides 4 triggers for automating workflows based on events.
|
||||
|
||||
## Triggers
|
||||
|
||||
### Collection Item Changed
|
||||
|
||||
Trigger workflow when an item is updated in a Webflow CMS collection (requires Webflow credentials)
|
||||
|
||||
#### Configuration
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `triggerCredentials` | string | Yes | This trigger requires webflow credentials to access your account. |
|
||||
| `triggerSiteId` | string | Yes | The Webflow site to monitor |
|
||||
| `triggerCollectionId` | string | No | Optionally filter to monitor only a specific collection |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `siteId` | string | The site ID where the event occurred |
|
||||
| `collectionId` | string | The collection ID where the item was changed |
|
||||
| `payload` | object | payload output from the tool |
|
||||
| ↳ `id` | string | The ID of the changed item |
|
||||
| ↳ `cmsLocaleId` | string | CMS locale ID |
|
||||
| ↳ `lastPublished` | string | Last published timestamp |
|
||||
| ↳ `lastUpdated` | string | Last updated timestamp |
|
||||
| ↳ `createdOn` | string | Timestamp when the item was created |
|
||||
| ↳ `isArchived` | boolean | Whether the item is archived |
|
||||
| ↳ `isDraft` | boolean | Whether the item is a draft |
|
||||
| ↳ `fieldData` | object | The updated field data of the item |
|
||||
|
||||
|
||||
---
|
||||
|
||||
### Collection Item Created
|
||||
|
||||
Trigger workflow when a new item is created in a Webflow CMS collection (requires Webflow credentials)
|
||||
|
||||
#### Configuration
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `triggerCredentials` | string | Yes | This trigger requires webflow credentials to access your account. |
|
||||
| `triggerSiteId` | string | Yes | The Webflow site to monitor |
|
||||
| `triggerCollectionId` | string | No | Optionally filter to monitor only a specific collection |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `siteId` | string | The site ID where the event occurred |
|
||||
| `collectionId` | string | The collection ID where the item was created |
|
||||
| `payload` | object | payload output from the tool |
|
||||
| ↳ `id` | string | The ID of the created item |
|
||||
| ↳ `cmsLocaleId` | string | CMS locale ID |
|
||||
| ↳ `lastPublished` | string | Last published timestamp |
|
||||
| ↳ `lastUpdated` | string | Last updated timestamp |
|
||||
| ↳ `createdOn` | string | Timestamp when the item was created |
|
||||
| ↳ `isArchived` | boolean | Whether the item is archived |
|
||||
| ↳ `isDraft` | boolean | Whether the item is a draft |
|
||||
| ↳ `fieldData` | object | The field data of the item |
|
||||
|
||||
|
||||
---
|
||||
|
||||
### Collection Item Deleted
|
||||
|
||||
Trigger workflow when an item is deleted from a Webflow CMS collection (requires Webflow credentials)
|
||||
|
||||
#### Configuration
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `triggerCredentials` | string | Yes | This trigger requires webflow credentials to access your account. |
|
||||
| `triggerSiteId` | string | Yes | The Webflow site to monitor |
|
||||
| `triggerCollectionId` | string | No | Optionally filter to monitor only a specific collection |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `siteId` | string | The site ID where the event occurred |
|
||||
| `collectionId` | string | The collection ID where the item was deleted |
|
||||
| `payload` | object | payload output from the tool |
|
||||
| ↳ `id` | string | The ID of the deleted item |
|
||||
| ↳ `deletedOn` | string | Timestamp when the item was deleted |
|
||||
|
||||
|
||||
---
|
||||
|
||||
### Form Submission
|
||||
|
||||
Trigger workflow when a form is submitted on a Webflow site (requires Webflow credentials)
|
||||
|
||||
#### Configuration
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `triggerCredentials` | string | Yes | This trigger requires webflow credentials to access your account. |
|
||||
| `triggerSiteId` | string | Yes | The Webflow site to monitor |
|
||||
| `formName` | string | No | The name of the specific form to monitor \(optional - leave empty for all forms\) |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `siteId` | string | The site ID where the form was submitted |
|
||||
| `formId` | string | The form ID |
|
||||
| `name` | string | The name of the form |
|
||||
| `id` | string | The unique ID of the form submission |
|
||||
| `submittedAt` | string | Timestamp when the form was submitted |
|
||||
| `data` | object | The form submission field data \(keys are field names, values are submitted data\) |
|
||||
| `schema` | array | Form schema describing each field |
|
||||
| ↳ `fieldName` | string | Name of the form field |
|
||||
| ↳ `fieldType` | string | Type of input \(e.g., FormTextInput, FormEmail\) |
|
||||
| ↳ `fieldElementId` | string | Unique identifier for the form element \(UUID\) |
|
||||
| `formElementId` | string | The form element ID |
|
||||
|
||||
49
apps/docs/content/docs/en/triggers/whatsapp.mdx
Normal file
49
apps/docs/content/docs/en/triggers/whatsapp.mdx
Normal file
@@ -0,0 +1,49 @@
|
||||
---
|
||||
title: WhatsApp
|
||||
description: Available WhatsApp triggers for automating workflows
|
||||
---
|
||||
|
||||
import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
<BlockInfoCard
|
||||
type="whatsapp"
|
||||
color="#25D366"
|
||||
/>
|
||||
|
||||
WhatsApp provides 1 trigger for automating workflows based on events.
|
||||
|
||||
## Triggers
|
||||
|
||||
### WhatsApp Webhook
|
||||
|
||||
Trigger workflow from WhatsApp incoming messages and message status webhooks
|
||||
|
||||
#### Configuration
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `verificationToken` | string | Yes | Enter any secure token here. You |
|
||||
| `appSecret` | string | Yes | Required for WhatsApp POST signature verification. Sim uses it to validate the X-Hub-Signature-256 header on every webhook delivery. |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `eventType` | string | Webhook classification such as incoming_message, message_status, or mixed |
|
||||
| `messageId` | string | First WhatsApp message identifier \(wamid\) found in the webhook batch |
|
||||
| `from` | string | Sender phone number from the first incoming message in the batch |
|
||||
| `recipientId` | string | Recipient phone number from the first status update in the batch |
|
||||
| `phoneNumberId` | string | Business phone number ID from the first message or status item in the batch |
|
||||
| `displayPhoneNumber` | string | Business display phone number from the first message or status item in the batch |
|
||||
| `text` | string | Text body from the first incoming text message in the batch |
|
||||
| `timestamp` | string | Timestamp from the first message or status item in the batch |
|
||||
| `messageType` | string | Type of the first incoming message in the batch \(text, image, system, etc.\) |
|
||||
| `status` | string | First outgoing message status in the batch, such as sent, delivered, read, or failed |
|
||||
| `contact` | json | First sender contact in the batch \(wa_id, profile.name\) |
|
||||
| `webhookContacts` | json | All sender contact profiles from the webhook batch |
|
||||
| `messages` | json | All incoming message objects from the webhook batch, flattened across entries/changes |
|
||||
| `statuses` | json | All message status objects from the webhook batch, flattened across entries/changes |
|
||||
| `conversation` | json | Conversation metadata from the first status update in the batch \(id, expiration_timestamp, origin.type\) |
|
||||
| `pricing` | json | Pricing metadata from the first status update in the batch \(billable, pricing_model, category\) |
|
||||
| `raw` | json | Complete structured webhook payload from WhatsApp |
|
||||
|
||||
149
apps/docs/content/docs/en/triggers/zoom.mdx
Normal file
149
apps/docs/content/docs/en/triggers/zoom.mdx
Normal file
@@ -0,0 +1,149 @@
|
||||
---
|
||||
title: Zoom
|
||||
description: Available Zoom triggers for automating workflows
|
||||
---
|
||||
|
||||
import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
<BlockInfoCard
|
||||
type="zoom"
|
||||
color="#2D8CFF"
|
||||
/>
|
||||
|
||||
Zoom provides 6 triggers for automating workflows based on events.
|
||||
|
||||
## Triggers
|
||||
|
||||
### Zoom Meeting Ended
|
||||
|
||||
Trigger workflow when a Zoom meeting ends
|
||||
|
||||
#### Configuration
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `secretToken` | string | Yes | Found in your Zoom app |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `event` | string | The webhook event type \(e.g., meeting.started\) |
|
||||
| `event_ts` | number | Unix timestamp in milliseconds when the event occurred |
|
||||
| `payload` | object | payload output from the tool |
|
||||
| ↳ `account_id` | string | Zoom account ID |
|
||||
| ↳ `object` | object | Meeting details \(shape aligns with Zoom Meetings webhook object fields\) |
|
||||
|
||||
|
||||
---
|
||||
|
||||
### Zoom Meeting Started
|
||||
|
||||
Trigger workflow when a Zoom meeting starts
|
||||
|
||||
#### Configuration
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `secretToken` | string | Yes | Found in your Zoom app |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `event` | string | The webhook event type \(e.g., meeting.started\) |
|
||||
| `event_ts` | number | Unix timestamp in milliseconds when the event occurred |
|
||||
| `payload` | object | payload output from the tool |
|
||||
| ↳ `account_id` | string | Zoom account ID |
|
||||
| ↳ `object` | object | Meeting details \(shape aligns with Zoom Meetings webhook object fields\) |
|
||||
|
||||
|
||||
---
|
||||
|
||||
### Zoom Participant Joined
|
||||
|
||||
Trigger workflow when a participant joins a Zoom meeting
|
||||
|
||||
#### Configuration
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `secretToken` | string | Yes | Found in your Zoom app |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `event` | string | The webhook event type \(e.g., meeting.participant_joined\) |
|
||||
| `event_ts` | number | Unix timestamp in milliseconds when the event occurred |
|
||||
| `payload` | object | payload output from the tool |
|
||||
| ↳ `account_id` | string | Zoom account ID |
|
||||
| ↳ `object` | object | Meeting and participant details |
|
||||
|
||||
|
||||
---
|
||||
|
||||
### Zoom Participant Left
|
||||
|
||||
Trigger workflow when a participant leaves a Zoom meeting
|
||||
|
||||
#### Configuration
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `secretToken` | string | Yes | Found in your Zoom app |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `event` | string | The webhook event type \(e.g., meeting.participant_joined\) |
|
||||
| `event_ts` | number | Unix timestamp in milliseconds when the event occurred |
|
||||
| `payload` | object | payload output from the tool |
|
||||
| ↳ `account_id` | string | Zoom account ID |
|
||||
| ↳ `object` | object | Meeting and participant details |
|
||||
|
||||
|
||||
---
|
||||
|
||||
### Zoom Recording Completed
|
||||
|
||||
Trigger workflow when a Zoom cloud recording is completed
|
||||
|
||||
#### Configuration
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `secretToken` | string | Yes | Found in your Zoom app |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `event` | string | The webhook event type \(recording.completed\) |
|
||||
| `event_ts` | number | Unix timestamp in milliseconds when the event occurred |
|
||||
| `payload` | object | payload output from the tool |
|
||||
| ↳ `account_id` | string | Zoom account ID |
|
||||
| ↳ `object` | object | Cloud recording details \(aligns with Zoom cloud recording objects\) |
|
||||
|
||||
|
||||
---
|
||||
|
||||
### Zoom Webhook (All Events)
|
||||
|
||||
Trigger workflow on any Zoom webhook event
|
||||
|
||||
#### Configuration
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `secretToken` | string | Yes | Found in your Zoom app |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `event` | string | The webhook event type \(e.g., meeting.started, recording.completed\) |
|
||||
| `event_ts` | number | Unix timestamp in milliseconds when the event occurred |
|
||||
| `payload` | json | Complete webhook payload \(structure varies by event type\) |
|
||||
|
||||
90
apps/docs/content/docs/en/variables/index.mdx
Normal file
90
apps/docs/content/docs/en/variables/index.mdx
Normal file
@@ -0,0 +1,90 @@
|
||||
---
|
||||
title: Variables
|
||||
---
|
||||
|
||||
import { Callout } from 'fumadocs-ui/components/callout'
|
||||
import { Card, Cards } from 'fumadocs-ui/components/card'
|
||||
import { FAQ } from '@/components/ui/faq'
|
||||
|
||||
Sim has two systems for injecting dynamic values into your workflows: **workflow variables** for in-run state and **environment variables** for secrets and configuration.
|
||||
|
||||
## Variable Syntax at a Glance
|
||||
|
||||
| Syntax | What it references | Example |
|
||||
|--------|-------------------|---------|
|
||||
| `<variable.name>` | Workflow variable | `<variable.counter>` |
|
||||
| `<variable.obj.prop>` | Nested property | `<variable.config.retryCount>` |
|
||||
| `<blockname.field>` | Block output | `<agent.content>` |
|
||||
| `<loop.index>` | Loop iteration (inside loop) | `<loop.currentItem>` |
|
||||
| `<parallel.index>` | Parallel instance (inside parallel) | `<parallel.currentItem>` |
|
||||
| `{{KEY}}` | Environment variable | `{{OPENAI_API_KEY}}` |
|
||||
|
||||
Type `<` in any block text field to open the variable picker and browse available references.
|
||||
|
||||
## Workflow Variables
|
||||
|
||||
Workflow variables are a global store that any block can read or update during execution. They're defined in the **Variables** panel in the sidebar and support text, numbers, booleans, objects, and arrays.
|
||||
|
||||
Key behaviors:
|
||||
- **Global scope**: Accessible from any block in the workflow
|
||||
- **Run-scoped persistence**: Changes during a run are visible to subsequent blocks, but each new execution resets variables to their initial values
|
||||
- **Nested access**: Use dot notation for object properties (`<variable.config.timeout>`)
|
||||
- **Updated via the Variables block**: Use the [Variables block](/blocks/variables) to modify variable values mid-workflow
|
||||
|
||||
<Card title="Workflow Variables" href="/variables/workflow-variables">
|
||||
Full guide on creating, accessing, and updating workflow variables
|
||||
</Card>
|
||||
|
||||
## Environment Variables
|
||||
|
||||
Environment variables store sensitive values like API keys, tokens, and configuration that should never appear in logs or be visible in the workflow canvas.
|
||||
|
||||
### Creating Environment Variables
|
||||
|
||||
1. Go to **Settings** in your workspace
|
||||
2. Open the **Secrets** tab
|
||||
3. Click **Add** and enter a key-value pair
|
||||
|
||||
### Personal vs. Workspace
|
||||
|
||||
| Scope | Visibility | Use case |
|
||||
|-------|-----------|----------|
|
||||
| **Workspace** | All workspace members | Shared API keys, team configuration |
|
||||
| **Personal** | Only you | Your personal tokens, dev credentials |
|
||||
|
||||
When both a workspace and personal variable share the same key, the workspace value takes precedence.
|
||||
|
||||
### Using Environment Variables
|
||||
|
||||
Reference them with double curly braces in any block field:
|
||||
|
||||
```
|
||||
{{API_KEY}}
|
||||
```
|
||||
|
||||
<Callout type="info">
|
||||
Environment variable names must start with a letter or underscore and contain only letters, numbers, and underscores (e.g., `MY_API_KEY`).
|
||||
</Callout>
|
||||
|
||||
### Environment Variables vs. Credentials
|
||||
|
||||
| | Environment Variables | Credentials |
|
||||
|--|----------------------|-------------|
|
||||
| **Format** | Key-value string pairs | OAuth tokens, API keys with provider context |
|
||||
| **Syntax** | `{{KEY}}` | Selected via dropdown in block config |
|
||||
| **Best for** | Custom API keys, configuration values, feature flags | OAuth services (Slack, GitHub, Google), managed connections |
|
||||
| **Management** | Settings → Secrets | Settings → Credentials |
|
||||
|
||||
Use environment variables when you have a raw API key or config value. Use [credentials](/credentials) when connecting to a service that needs OAuth or managed token refresh.
|
||||
|
||||
## Name Conflicts
|
||||
|
||||
If a workflow variable and a block output share the same name, Sim resolves the reference in a fixed priority order: loop and parallel context first, then workflow variables, then environment variables, then block outputs. To avoid confusion, use distinct names for your variables and blocks.
|
||||
|
||||
<FAQ items={[
|
||||
{ question: "What's the difference between workflow variables and environment variables?", answer: "Workflow variables store runtime data (text, numbers, objects, arrays) that blocks can read and modify during execution. They use <variable.name> syntax. Environment variables store sensitive configuration like API keys using {{KEY}} syntax. They never appear in logs and are managed at the workspace or personal level." },
|
||||
{ question: "Can I use environment variables in the Function block?", answer: "Yes. Use the double curly brace syntax {{KEY}} directly in your code. The value is substituted before execution, so the actual secret never appears in logs or outputs." },
|
||||
{ question: "How do I share an API key with my team?", answer: "Create a workspace-scoped environment variable in Settings → Secrets. All workspace members will be able to use it in their workflows via {{KEY}} syntax." },
|
||||
{ question: "What happens if a variable name has spaces or mixed case?", answer: "Variable resolution is case-insensitive and ignores spaces. A variable named 'My Counter' can be referenced as <variable.mycounter> or <variable.My Counter>. However, using consistent naming (like camelCase) is recommended." },
|
||||
{ question: "Can I reference environment variables in the Agent system prompt?", answer: "Yes. You can use {{KEY}} syntax in any text field, including system prompts, to inject environment variable values." },
|
||||
]} />
|
||||
5
apps/docs/content/docs/en/variables/meta.json
Normal file
5
apps/docs/content/docs/en/variables/meta.json
Normal file
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"title": "Variables",
|
||||
"pages": ["index", "workflow-variables"],
|
||||
"defaultOpen": false
|
||||
}
|
||||
@@ -5,6 +5,7 @@ title: Workflow Variables
|
||||
import { Callout } from 'fumadocs-ui/components/callout'
|
||||
import { Step, Steps } from 'fumadocs-ui/components/steps'
|
||||
import { Tab, Tabs } from 'fumadocs-ui/components/tabs'
|
||||
import { Image } from '@/components/ui/image'
|
||||
import { Video } from '@/components/ui/video'
|
||||
import { FAQ } from '@/components/ui/faq'
|
||||
|
||||
@@ -42,11 +43,33 @@ The Variables feature serves as a central data store for your workflow, enabling
|
||||
|
||||
## Creating Variables
|
||||
|
||||
You can create and manage variables from the Variables panel in the sidebar. Each variable has:
|
||||
To open the Variables panel, click **⋯ → Variables** in the top-right of the workflow editor.
|
||||
|
||||
<div className="flex justify-center">
|
||||
<Image
|
||||
src="/static/blocks/variables-menu.png"
|
||||
alt="Opening the Variables panel from the toolbar menu"
|
||||
width={700}
|
||||
height={450}
|
||||
className="my-6"
|
||||
/>
|
||||
</div>
|
||||
|
||||
Each variable has:
|
||||
|
||||
- **Name**: A unique identifier used to reference the variable
|
||||
- **Value**: The data stored in the variable (supports various data types)
|
||||
- **Description** (optional): A note explaining the variable's purpose
|
||||
- **Type**: The data type (Plain, Number, Boolean, Object, Array)
|
||||
- **Value**: The data stored in the variable
|
||||
|
||||
<div className="flex justify-center">
|
||||
<Image
|
||||
src="/static/blocks/variables-panel.png"
|
||||
alt="Variables panel with a number variable"
|
||||
width={400}
|
||||
height={400}
|
||||
className="my-6"
|
||||
/>
|
||||
</div>
|
||||
|
||||
## Accessing Variables
|
||||
|
||||
@@ -69,12 +92,12 @@ Variables can be accessed from any block in your workflow using the variable dro
|
||||
|
||||
Variables in Sim can store various types of data:
|
||||
|
||||
<Tabs items={['Text', 'Numbers', 'Boolean', 'Objects', 'Arrays']}>
|
||||
<Tabs items={['Plain', 'Numbers', 'Boolean', 'Objects', 'Arrays']}>
|
||||
<Tab>
|
||||
```
|
||||
"Hello, World!"
|
||||
```
|
||||
<p className="mt-2">Text variables store strings of characters. They're useful for storing messages, names, and other text data.</p>
|
||||
<p className="mt-2">Plain variables store strings of characters. They're useful for storing messages, names, and other text data.</p>
|
||||
</Tab>
|
||||
<Tab>
|
||||
```
|
||||
|
||||
@@ -51,7 +51,7 @@ Bienvenido a Sim, un constructor visual de flujos de trabajo para aplicaciones d
|
||||
<Card title="Integración MCP" href="/mcp">
|
||||
Conecta servicios externos con el Protocolo de Contexto de Modelo
|
||||
</Card>
|
||||
<Card title="SDKs" href="/sdks">
|
||||
<Card title="SDKs" href="/api-reference">
|
||||
Integra Sim en tus aplicaciones
|
||||
</Card>
|
||||
</Cards>
|
||||
@@ -51,7 +51,7 @@ Bienvenue sur Sim, un constructeur visuel de flux de travail pour les applicatio
|
||||
<Card title="Intégration MCP" href="/mcp">
|
||||
Connectez des services externes avec le protocole de contexte de modèle
|
||||
</Card>
|
||||
<Card title="SDKs" href="/sdks">
|
||||
<Card title="SDKs" href="/api-reference">
|
||||
Intégrez Sim dans vos applications
|
||||
</Card>
|
||||
</Cards>
|
||||
@@ -51,7 +51,7 @@ Simへようこそ。AIアプリケーション用のビジュアルワークフ
|
||||
<Card title="MCP統合" href="/mcp">
|
||||
モデルコンテキストプロトコルで外部サービスを接続する
|
||||
</Card>
|
||||
<Card title="SDK" href="/sdks">
|
||||
<Card title="SDK" href="/api-reference">
|
||||
アプリケーションにSimを統合する
|
||||
</Card>
|
||||
</Cards>
|
||||
@@ -51,7 +51,7 @@ import { Card, Cards } from 'fumadocs-ui/components/card'
|
||||
<Card title="MCP 集成" href="/mcp">
|
||||
使用模型上下文协议连接外部服务
|
||||
</Card>
|
||||
<Card title="SDKs" href="/sdks">
|
||||
<Card title="SDKs" href="/api-reference">
|
||||
将 Sim 集成到您的应用程序中
|
||||
</Card>
|
||||
</Cards>
|
||||
@@ -5,6 +5,9 @@ const withMDX = createMDX()
|
||||
|
||||
const config: NextConfig = {
|
||||
reactStrictMode: true,
|
||||
images: {
|
||||
unoptimized: true,
|
||||
},
|
||||
experimental: {
|
||||
webpackMemoryOptimizations: true,
|
||||
webpackBuildWorker: true,
|
||||
|
||||
BIN
apps/docs/public/static/api-deployment/api-info.png
Normal file
BIN
apps/docs/public/static/api-deployment/api-info.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 177 KiB |
BIN
apps/docs/public/static/api-deployment/api-select-outputs.png
Normal file
BIN
apps/docs/public/static/api-deployment/api-select-outputs.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 246 KiB |
BIN
apps/docs/public/static/api-deployment/api-tab.png
Normal file
BIN
apps/docs/public/static/api-deployment/api-tab.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 245 KiB |
BIN
apps/docs/public/static/api-deployment/api-update-button.png
Normal file
BIN
apps/docs/public/static/api-deployment/api-update-button.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 14 KiB |
BIN
apps/docs/public/static/api-deployment/api-versions-menu.png
Normal file
BIN
apps/docs/public/static/api-deployment/api-versions-menu.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 67 KiB |
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user