mirror of
https://github.com/simstudioai/sim.git
synced 2026-01-09 23:17:59 -05:00
Compare commits
344 Commits
v0.5.23
...
fix/linear
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1e75f44b65 | ||
|
|
780b4fe22d | ||
|
|
c2180bf8a0 | ||
|
|
fdac4314d2 | ||
|
|
a54fcbc094 | ||
|
|
05904a73b2 | ||
|
|
1b22d2ce81 | ||
|
|
26dff7cffe | ||
|
|
020037728d | ||
|
|
cb12ceb82c | ||
|
|
0f32310ba6 | ||
|
|
730ddf5a66 | ||
|
|
ef4bec2c37 | ||
|
|
2bd27f9a4d | ||
|
|
3b4f7d6adb | ||
|
|
142c9a0428 | ||
|
|
9dc02f3728 | ||
|
|
833825f04a | ||
|
|
261becd129 | ||
|
|
3ecf7a15eb | ||
|
|
1420bfb73c | ||
|
|
02229f0cb2 | ||
|
|
a2451ef3d3 | ||
|
|
6a262f3988 | ||
|
|
5145ce1684 | ||
|
|
e5bd5e4474 | ||
|
|
e9aede087d | ||
|
|
ba2377f83b | ||
|
|
f502f984f3 | ||
|
|
74f371cc79 | ||
|
|
d248557042 | ||
|
|
8215a819e5 | ||
|
|
155f544ce8 | ||
|
|
22f949a41c | ||
|
|
f9aef6ae22 | ||
|
|
46b04a964d | ||
|
|
964b40de45 | ||
|
|
75aca00b6e | ||
|
|
d25084e05d | ||
|
|
445932c1c8 | ||
|
|
cc3f565d5e | ||
|
|
0977ed228f | ||
|
|
ed6b9c0c4a | ||
|
|
86bcdcf0d3 | ||
|
|
ac942416de | ||
|
|
195e0e8e3f | ||
|
|
1673ef98ac | ||
|
|
356b473dc3 | ||
|
|
8d15219c12 | ||
|
|
c3adcf315b | ||
|
|
4df5d56ac5 | ||
|
|
7515809df0 | ||
|
|
385e93f4bb | ||
|
|
096af4fdfa | ||
|
|
dc3de95c39 | ||
|
|
79be435918 | ||
|
|
852562cfdd | ||
|
|
4da128d77c | ||
|
|
0c8d05fc98 | ||
|
|
4301342ffb | ||
|
|
56e485d13b | ||
|
|
1ed746bacf | ||
|
|
bf5d0a5573 | ||
|
|
fb148c6203 | ||
|
|
b90cc5b874 | ||
|
|
4787909851 | ||
|
|
776f82c0a6 | ||
|
|
2cfd75a422 | ||
|
|
c77268c13d | ||
|
|
34bc115468 | ||
|
|
2697da5d9c | ||
|
|
eca91232bf | ||
|
|
7356edccbb | ||
|
|
9208375523 | ||
|
|
df099e9485 | ||
|
|
f8b1880575 | ||
|
|
a7a7c8601c | ||
|
|
97a9295230 | ||
|
|
e9e5721610 | ||
|
|
a08d86d42b | ||
|
|
400178a3b0 | ||
|
|
da1f668272 | ||
|
|
88065088bf | ||
|
|
1c626dfcae | ||
|
|
132aae1615 | ||
|
|
f44fc18041 | ||
|
|
7761b16b87 | ||
|
|
71130c8b0a | ||
|
|
7c0a3c15ac | ||
|
|
cdc1a832d7 | ||
|
|
aa9cc5604a | ||
|
|
fdba1cfac2 | ||
|
|
2e1ccb16f5 | ||
|
|
8651896277 | ||
|
|
3054d6c1ed | ||
|
|
3d75445459 | ||
|
|
5add2613ff | ||
|
|
bd0eca04d7 | ||
|
|
a60a1fc49a | ||
|
|
298546daf1 | ||
|
|
b60b98e42c | ||
|
|
7793a6d597 | ||
|
|
66b8434861 | ||
|
|
27ec4120bc | ||
|
|
1f0e3f2be6 | ||
|
|
88cda3a9ce | ||
|
|
d707d18ee6 | ||
|
|
b7f6bab282 | ||
|
|
61e7213425 | ||
|
|
3201abab56 | ||
|
|
d79696beae | ||
|
|
f604ca39a5 | ||
|
|
26ec12599f | ||
|
|
97372533ec | ||
|
|
66766a9d81 | ||
|
|
47a259b428 | ||
|
|
40a6bf5c8c | ||
|
|
da7eca9590 | ||
|
|
92b2e34d25 | ||
|
|
77521a3a57 | ||
|
|
cb8b9c547a | ||
|
|
b1cd8d151d | ||
|
|
1145f5c043 | ||
|
|
3a50ce4d99 | ||
|
|
810d2089cf | ||
|
|
8c89507247 | ||
|
|
169dd4a503 | ||
|
|
dc4e5d3bdc | ||
|
|
31de55cbdf | ||
|
|
eaca49037d | ||
|
|
2d26c0cb32 | ||
|
|
cdf3d759b9 | ||
|
|
bf8fbebe22 | ||
|
|
b23299dae4 | ||
|
|
6c8f1a81c1 | ||
|
|
2c36926a4e | ||
|
|
89c1085950 | ||
|
|
4e09c389e8 | ||
|
|
641ac58017 | ||
|
|
6c1e4ff7d6 | ||
|
|
40e30a11e9 | ||
|
|
d1ebad912e | ||
|
|
621f9a40c7 | ||
|
|
3100daa346 | ||
|
|
c252e885af | ||
|
|
b0748c82f9 | ||
|
|
f5245f3eca | ||
|
|
f2ef5f0811 | ||
|
|
37443a7b77 | ||
|
|
e0d96e2126 | ||
|
|
827dd0466f | ||
|
|
ccd92b9054 | ||
|
|
6af291ca9f | ||
|
|
be9ab4c833 | ||
|
|
ab3a3d12fe | ||
|
|
e01d4cb990 | ||
|
|
8c2c49eb14 | ||
|
|
086982c7a3 | ||
|
|
2b7807a7de | ||
|
|
2d4a660246 | ||
|
|
e981b1dc1b | ||
|
|
58fcb4ed80 | ||
|
|
e4d211c2f0 | ||
|
|
f21eaf1f10 | ||
|
|
942da8815d | ||
|
|
214632604d | ||
|
|
1ddbac1d2e | ||
|
|
35a57bfad4 | ||
|
|
f8678b179a | ||
|
|
0ebb45b2db | ||
|
|
6247f421bc | ||
|
|
6385d82b85 | ||
|
|
f91beb324e | ||
|
|
4f69b171f2 | ||
|
|
a1a189f328 | ||
|
|
7dc48510dc | ||
|
|
93fe68785e | ||
|
|
50c1c6775b | ||
|
|
df5f823d1c | ||
|
|
094f87fa1f | ||
|
|
65efa039da | ||
|
|
6b15a50311 | ||
|
|
65787d7cc3 | ||
|
|
656a6b8abd | ||
|
|
889b44c90a | ||
|
|
3a33ec929f | ||
|
|
24356d99ec | ||
|
|
6de1c04517 | ||
|
|
38be2b76c4 | ||
|
|
a2f14cab54 | ||
|
|
474762d6fb | ||
|
|
0005c3e465 | ||
|
|
fc40b4f7af | ||
|
|
2a7f51a2f6 | ||
|
|
90c3c43607 | ||
|
|
83d813a7cc | ||
|
|
811c736705 | ||
|
|
c6757311af | ||
|
|
b5b12ba2d1 | ||
|
|
0d30676e34 | ||
|
|
36bdccb449 | ||
|
|
f45730a89e | ||
|
|
04cd837e9c | ||
|
|
c23130a26e | ||
|
|
7575cd6f27 | ||
|
|
fbde64f0b0 | ||
|
|
25f7ed20f6 | ||
|
|
261aa3d72d | ||
|
|
9da19e84b7 | ||
|
|
e83afc0a62 | ||
|
|
1720fa8749 | ||
|
|
f3ad7750af | ||
|
|
78b7643e65 | ||
|
|
7ef1150383 | ||
|
|
67cfb21d08 | ||
|
|
a337af92bc | ||
|
|
b4a99779eb | ||
|
|
471cb4747c | ||
|
|
491bd783b5 | ||
|
|
5516fa39c3 | ||
|
|
21fa92bc41 | ||
|
|
26ca37328a | ||
|
|
731997f768 | ||
|
|
1d6975db49 | ||
|
|
c4a6d11cc0 | ||
|
|
7b5405e968 | ||
|
|
1ae3b47f5c | ||
|
|
3120a785df | ||
|
|
8775e76c32 | ||
|
|
9a6c68789d | ||
|
|
08bc1125bd | ||
|
|
f4f74da1dc | ||
|
|
de330d80f5 | ||
|
|
b7228d57f7 | ||
|
|
dcbeca1abe | ||
|
|
27ea333974 | ||
|
|
9861d3a0ac | ||
|
|
fdbf8be79b | ||
|
|
6f4f4e22f0 | ||
|
|
837aabca5e | ||
|
|
f7d2c9667f | ||
|
|
29befbc5f6 | ||
|
|
f9cfca92bf | ||
|
|
9cf8aaee1b | ||
|
|
25afacb25e | ||
|
|
0e6a1315d0 | ||
|
|
f0dc8e81d9 | ||
|
|
ab30d37020 | ||
|
|
12d42e29ac | ||
|
|
a5b7148375 | ||
|
|
57e6a0b621 | ||
|
|
b72e111e22 | ||
|
|
300aaa5368 | ||
|
|
bdcc42e566 | ||
|
|
a45bb1bf3b | ||
|
|
3a5363ac54 | ||
|
|
17b2e58c32 | ||
|
|
8d38c2f15e | ||
|
|
9762bbc451 | ||
|
|
e43afc8b6c | ||
|
|
fcf52ac4d5 | ||
|
|
842200bcf2 | ||
|
|
6009a7359f | ||
|
|
0acd86023c | ||
|
|
a0fb889644 | ||
|
|
431f206930 | ||
|
|
7443e28054 | ||
|
|
c962e3b398 | ||
|
|
d5b95cbd33 | ||
|
|
0fb084b9e4 | ||
|
|
95b9ca4670 | ||
|
|
746ff68a2e | ||
|
|
75a5b43252 | ||
|
|
8d0e50fd0d | ||
|
|
f7d1b06d75 | ||
|
|
73940ab390 | ||
|
|
f111dac020 | ||
|
|
690be530c8 | ||
|
|
4edb3be52d | ||
|
|
f526c36fc0 | ||
|
|
9c8d845ba4 | ||
|
|
65ac64c2cf | ||
|
|
9e3e18601c | ||
|
|
821d127c00 | ||
|
|
ecf5209e6f | ||
|
|
132f4bca38 | ||
|
|
d27f7c232b | ||
|
|
d06d2b01e3 | ||
|
|
92db054c53 | ||
|
|
cd7fa688c9 | ||
|
|
e359dc2946 | ||
|
|
0415eb47fe | ||
|
|
49d31c80f5 | ||
|
|
0ea600d0e8 | ||
|
|
deb085881f | ||
|
|
dda44f7382 | ||
|
|
668118b19b | ||
|
|
323e03520d | ||
|
|
ffcaa65590 | ||
|
|
cd66fa84d1 | ||
|
|
045475b9fe | ||
|
|
3334dfeefa | ||
|
|
cb9b88127f | ||
|
|
3c8478405c | ||
|
|
c4fd39df54 | ||
|
|
06d2db78ff | ||
|
|
516dee14b7 | ||
|
|
030ae5cc0a | ||
|
|
855e2c418c | ||
|
|
3bde9e853f | ||
|
|
31b795f8b1 | ||
|
|
57b6bc3684 | ||
|
|
8d4f2e0233 | ||
|
|
4da5dd7f74 | ||
|
|
e24f31cbce | ||
|
|
3b9cbeaa49 | ||
|
|
c592e54118 | ||
|
|
d02499a915 | ||
|
|
c0bb85479d | ||
|
|
b595273c3f | ||
|
|
193a15aca4 | ||
|
|
39d5d797ec | ||
|
|
3fbd57caf1 | ||
|
|
3db8f82449 | ||
|
|
207a14970b | ||
|
|
0997989f36 | ||
|
|
7fd912d8a9 | ||
|
|
c550e4591c | ||
|
|
a881dc1877 | ||
|
|
da36c453b5 | ||
|
|
635823664c | ||
|
|
14846ab05c | ||
|
|
6c99c841f4 | ||
|
|
37d7902fcd | ||
|
|
1e563b1e0a | ||
|
|
b5da61377c | ||
|
|
1d62ece915 | ||
|
|
bbab2ff732 | ||
|
|
18b7032494 | ||
|
|
76bc2fae83 | ||
|
|
1cfe229056 | ||
|
|
6791d968b8 | ||
|
|
163db5cf50 | ||
|
|
bbbb13af7e |
@@ -1,45 +1,35 @@
|
||||
---
|
||||
description: EMCN component library patterns with CVA
|
||||
description: EMCN component library patterns
|
||||
globs: ["apps/sim/components/emcn/**"]
|
||||
---
|
||||
|
||||
# EMCN Component Guidelines
|
||||
# EMCN Components
|
||||
|
||||
## When to Use CVA vs Direct Styles
|
||||
Import from `@/components/emcn`, never from subpaths (except CSS files).
|
||||
|
||||
**Use CVA (class-variance-authority) when:**
|
||||
- 2+ visual variants (primary, secondary, outline)
|
||||
- Multiple sizes or state variations
|
||||
- Example: Button with variants
|
||||
## CVA vs Direct Styles
|
||||
|
||||
**Use direct className when:**
|
||||
- Single consistent style
|
||||
- No variations needed
|
||||
- Example: Label with one style
|
||||
**Use CVA when:** 2+ variants (primary/secondary, sm/md/lg)
|
||||
|
||||
## Patterns
|
||||
|
||||
**With CVA:**
|
||||
```tsx
|
||||
const buttonVariants = cva('base-classes', {
|
||||
variants: {
|
||||
variant: { default: '...', primary: '...' },
|
||||
size: { sm: '...', md: '...' }
|
||||
}
|
||||
variants: { variant: { default: '...', primary: '...' } }
|
||||
})
|
||||
export { Button, buttonVariants }
|
||||
```
|
||||
|
||||
**Without CVA:**
|
||||
**Use direct className when:** Single consistent style, no variations
|
||||
|
||||
```tsx
|
||||
function Label({ className, ...props }) {
|
||||
return <Primitive className={cn('single-style-classes', className)} {...props} />
|
||||
return <Primitive className={cn('style-classes', className)} {...props} />
|
||||
}
|
||||
```
|
||||
|
||||
## Rules
|
||||
|
||||
- Use Radix UI primitives for accessibility
|
||||
- Export component and variants (if using CVA)
|
||||
- TSDoc with usage examples
|
||||
- Consistent tokens: `font-medium`, `text-[12px]`, `rounded-[4px]`
|
||||
- Always use `transition-colors` for hover states
|
||||
- `transition-colors` for hover states
|
||||
|
||||
@@ -8,7 +8,7 @@ alwaysApply: true
|
||||
You are a professional software engineer. All code must follow best practices: accurate, readable, clean, and efficient.
|
||||
|
||||
## Logging
|
||||
Use `logger.info`, `logger.warn`, `logger.error` instead of `console.log`.
|
||||
Import `createLogger` from `sim/logger`. Use `logger.info`, `logger.warn`, `logger.error` instead of `console.log`.
|
||||
|
||||
## Comments
|
||||
Use TSDoc for documentation. No `====` separators. No non-TSDoc comments.
|
||||
|
||||
@@ -10,58 +10,47 @@ globs: ["apps/sim/**"]
|
||||
2. **Composition Over Complexity**: Break down complex logic into smaller pieces
|
||||
3. **Type Safety First**: TypeScript interfaces for all props, state, return types
|
||||
4. **Predictable State**: Zustand for global state, useState for UI-only concerns
|
||||
5. **Performance by Default**: useMemo, useCallback, refs appropriately
|
||||
|
||||
## File Organization
|
||||
## Root-Level Structure
|
||||
|
||||
```
|
||||
apps/sim/
|
||||
├── app/ # Next.js app router (pages, API routes)
|
||||
├── blocks/ # Block definitions and registry
|
||||
├── components/ # Shared UI (emcn/, ui/)
|
||||
├── executor/ # Workflow execution engine
|
||||
├── hooks/ # Shared hooks (queries/, selectors/)
|
||||
├── lib/ # App-wide utilities
|
||||
├── providers/ # LLM provider integrations
|
||||
├── stores/ # Zustand stores
|
||||
├── tools/ # Tool definitions
|
||||
└── triggers/ # Trigger definitions
|
||||
```
|
||||
|
||||
## Feature Organization
|
||||
|
||||
Features live under `app/workspace/[workspaceId]/`:
|
||||
|
||||
```
|
||||
feature/
|
||||
├── components/ # Feature components
|
||||
│ └── sub-feature/ # Sub-feature with own components
|
||||
├── hooks/ # Custom hooks
|
||||
└── feature.tsx # Main component
|
||||
├── components/ # Feature components
|
||||
├── hooks/ # Feature-scoped hooks
|
||||
├── utils/ # Feature-scoped utilities (2+ consumers)
|
||||
├── feature.tsx # Main component
|
||||
└── page.tsx # Next.js page entry
|
||||
```
|
||||
|
||||
## Naming Conventions
|
||||
- **Components**: PascalCase (`WorkflowList`, `TriggerPanel`)
|
||||
- **Hooks**: camelCase with `use` prefix (`useWorkflowOperations`)
|
||||
- **Files**: kebab-case matching export (`workflow-list.tsx`)
|
||||
- **Stores**: kebab-case in stores/ (`sidebar/store.ts`)
|
||||
- **Components**: PascalCase (`WorkflowList`)
|
||||
- **Hooks**: `use` prefix (`useWorkflowOperations`)
|
||||
- **Files**: kebab-case (`workflow-list.tsx`)
|
||||
- **Stores**: `stores/feature/store.ts`
|
||||
- **Constants**: SCREAMING_SNAKE_CASE
|
||||
- **Interfaces**: PascalCase with suffix (`WorkflowListProps`)
|
||||
|
||||
## State Management
|
||||
## Utils Rules
|
||||
|
||||
**useState**: UI-only concerns (dropdown open, hover, form inputs)
|
||||
**Zustand**: Shared state, persistence, global app state
|
||||
**useRef**: DOM refs, avoiding dependency issues, mutable non-reactive values
|
||||
|
||||
## Component Extraction
|
||||
|
||||
**Extract to separate file when:**
|
||||
- Complex (50+ lines)
|
||||
- Used across 2+ files
|
||||
- Has own state/logic
|
||||
|
||||
**Keep inline when:**
|
||||
- Simple (< 10 lines)
|
||||
- Used in only 1 file
|
||||
- Purely presentational
|
||||
|
||||
**Never import utilities from another component file.** Extract shared helpers to `lib/` or `utils/`.
|
||||
|
||||
## Utils Files
|
||||
|
||||
**Never create a `utils.ts` file for a single consumer.** Inline the logic directly in the consuming component.
|
||||
|
||||
**Create `utils.ts` when:**
|
||||
- 2+ files import the same helper
|
||||
|
||||
**Prefer existing sources of truth:**
|
||||
- Before duplicating logic, check if a centralized helper already exists (e.g., `lib/logs/get-trigger-options.ts`)
|
||||
- Import from the source of truth rather than creating wrapper functions
|
||||
|
||||
**Location hierarchy:**
|
||||
- `lib/` — App-wide utilities (auth, billing, core)
|
||||
- `feature/utils.ts` — Feature-scoped utilities (used by 2+ components in the feature)
|
||||
- Inline — Single-use helpers (define directly in the component)
|
||||
- **Never create `utils.ts` for single consumer** - inline it
|
||||
- **Create `utils.ts` when** 2+ files need the same helper
|
||||
- **Check existing sources** before duplicating (`lib/` has many utilities)
|
||||
- **Location**: `lib/` (app-wide) → `feature/utils/` (feature-scoped) → inline (single-use)
|
||||
|
||||
@@ -6,59 +6,43 @@ globs: ["apps/sim/**/*.tsx"]
|
||||
# Component Patterns
|
||||
|
||||
## Structure Order
|
||||
|
||||
```typescript
|
||||
'use client' // Only if using hooks
|
||||
|
||||
// 1. Imports (external → internal → relative)
|
||||
// 2. Constants at module level
|
||||
// Imports (external → internal)
|
||||
// Constants at module level
|
||||
const CONFIG = { SPACING: 8 } as const
|
||||
|
||||
// 3. Props interface with TSDoc
|
||||
// Props interface
|
||||
interface ComponentProps {
|
||||
/** Description */
|
||||
requiredProp: string
|
||||
optionalProp?: boolean
|
||||
}
|
||||
|
||||
// 4. Component with TSDoc
|
||||
export function Component({ requiredProp, optionalProp = false }: ComponentProps) {
|
||||
// a. Refs
|
||||
// b. External hooks (useParams, useRouter)
|
||||
// c. Store hooks
|
||||
// d. Custom hooks
|
||||
// e. Local state
|
||||
// f. useMemo computations
|
||||
// g. useCallback handlers
|
||||
// f. useMemo
|
||||
// g. useCallback
|
||||
// h. useEffect
|
||||
// i. Return JSX
|
||||
}
|
||||
```
|
||||
|
||||
## Rules
|
||||
1. Add `'use client'` when using React hooks
|
||||
|
||||
1. `'use client'` only when using React hooks
|
||||
2. Always define props interface
|
||||
3. TSDoc on component: description, @param, @returns
|
||||
4. Extract constants with `as const`
|
||||
5. Use Tailwind only, no inline styles
|
||||
6. Semantic HTML (`aside`, `nav`, `article`)
|
||||
7. Include ARIA attributes where appropriate
|
||||
8. Optional chain callbacks: `onAction?.(id)`
|
||||
3. Extract constants with `as const`
|
||||
4. Semantic HTML (`aside`, `nav`, `article`)
|
||||
5. Optional chain callbacks: `onAction?.(id)`
|
||||
|
||||
## Factory Pattern with Caching
|
||||
## Component Extraction
|
||||
|
||||
When generating components for a specific signature (e.g., icons):
|
||||
**Extract when:** 50+ lines, used in 2+ files, or has own state/logic
|
||||
|
||||
```typescript
|
||||
const cache = new Map<string, React.ComponentType<{ className?: string }>>()
|
||||
|
||||
function getColorIcon(color: string) {
|
||||
if (cache.has(color)) return cache.get(color)!
|
||||
|
||||
const Icon = ({ className }: { className?: string }) => (
|
||||
<div className={cn(className, 'rounded-[3px]')} style={{ backgroundColor: color, width: 10, height: 10 }} />
|
||||
)
|
||||
Icon.displayName = `ColorIcon(${color})`
|
||||
cache.set(color, Icon)
|
||||
return Icon
|
||||
}
|
||||
```
|
||||
**Keep inline when:** < 10 lines, single use, purely presentational
|
||||
|
||||
@@ -6,21 +6,13 @@ globs: ["apps/sim/**/use-*.ts", "apps/sim/**/hooks/**/*.ts"]
|
||||
# Hook Patterns
|
||||
|
||||
## Structure
|
||||
|
||||
```typescript
|
||||
import { createLogger } from '@/lib/logs/console/logger'
|
||||
|
||||
const logger = createLogger('useFeatureName')
|
||||
|
||||
interface UseFeatureProps {
|
||||
id: string
|
||||
onSuccess?: (result: Result) => void
|
||||
}
|
||||
|
||||
/**
|
||||
* Hook description.
|
||||
* @param props - Configuration
|
||||
* @returns State and operations
|
||||
*/
|
||||
export function useFeature({ id, onSuccess }: UseFeatureProps) {
|
||||
// 1. Refs for stable dependencies
|
||||
const idRef = useRef(id)
|
||||
@@ -29,7 +21,6 @@ export function useFeature({ id, onSuccess }: UseFeatureProps) {
|
||||
// 2. State
|
||||
const [data, setData] = useState<Data | null>(null)
|
||||
const [isLoading, setIsLoading] = useState(false)
|
||||
const [error, setError] = useState<Error | null>(null)
|
||||
|
||||
// 3. Sync refs
|
||||
useEffect(() => {
|
||||
@@ -37,32 +28,27 @@ export function useFeature({ id, onSuccess }: UseFeatureProps) {
|
||||
onSuccessRef.current = onSuccess
|
||||
}, [id, onSuccess])
|
||||
|
||||
// 4. Operations with useCallback
|
||||
// 4. Operations (useCallback with empty deps when using refs)
|
||||
const fetchData = useCallback(async () => {
|
||||
setIsLoading(true)
|
||||
try {
|
||||
const result = await fetch(`/api/${idRef.current}`).then(r => r.json())
|
||||
setData(result)
|
||||
onSuccessRef.current?.(result)
|
||||
} catch (err) {
|
||||
setError(err as Error)
|
||||
logger.error('Failed', { error: err })
|
||||
} finally {
|
||||
setIsLoading(false)
|
||||
}
|
||||
}, []) // Empty deps - using refs
|
||||
}, [])
|
||||
|
||||
// 5. Return grouped by state/operations
|
||||
return { data, isLoading, error, fetchData }
|
||||
return { data, isLoading, fetchData }
|
||||
}
|
||||
```
|
||||
|
||||
## Rules
|
||||
|
||||
1. Single responsibility per hook
|
||||
2. Props interface required
|
||||
3. TSDoc required
|
||||
4. Use logger, not console.log
|
||||
5. Refs for stable callback dependencies
|
||||
6. Wrap returned functions in useCallback
|
||||
7. Always try/catch async operations
|
||||
8. Track loading/error states
|
||||
3. Refs for stable callback dependencies
|
||||
4. Wrap returned functions in useCallback
|
||||
5. Always try/catch async operations
|
||||
6. Track loading/error states
|
||||
|
||||
@@ -5,33 +5,57 @@ globs: ["apps/sim/**/*.ts", "apps/sim/**/*.tsx"]
|
||||
|
||||
# Import Patterns
|
||||
|
||||
## EMCN Components
|
||||
Import from `@/components/emcn`, never from subpaths like `@/components/emcn/components/modal/modal`.
|
||||
## Absolute Imports
|
||||
|
||||
**Exception**: CSS imports use actual file paths: `import '@/components/emcn/components/code/code.css'`
|
||||
**Always use absolute imports.** Never use relative imports.
|
||||
|
||||
## Feature Components
|
||||
Import from central folder indexes, not specific subfolders:
|
||||
```typescript
|
||||
// ✅ Correct
|
||||
import { Dashboard, Sidebar } from '@/app/workspace/[workspaceId]/logs/components'
|
||||
// ✓ Good
|
||||
import { useWorkflowStore } from '@/stores/workflows/store'
|
||||
import { Button } from '@/components/ui/button'
|
||||
|
||||
// ❌ Wrong
|
||||
import { Dashboard } from '@/app/workspace/[workspaceId]/logs/components/dashboard'
|
||||
// ✗ Bad
|
||||
import { useWorkflowStore } from '../../../stores/workflows/store'
|
||||
```
|
||||
|
||||
## Internal vs External
|
||||
- **Cross-feature**: Absolute paths through central index
|
||||
- **Within feature**: Relative paths (`./components/...`, `../utils`)
|
||||
## Barrel Exports
|
||||
|
||||
Use barrel exports (`index.ts`) when a folder has 3+ exports. Import from barrel, not individual files.
|
||||
|
||||
```typescript
|
||||
// ✓ Good
|
||||
import { Dashboard, Sidebar } from '@/app/workspace/[workspaceId]/logs/components'
|
||||
|
||||
// ✗ Bad
|
||||
import { Dashboard } from '@/app/workspace/[workspaceId]/logs/components/dashboard/dashboard'
|
||||
```
|
||||
|
||||
## No Re-exports
|
||||
|
||||
Do not re-export from non-barrel files. Import directly from the source.
|
||||
|
||||
```typescript
|
||||
// ✓ Good - import from where it's declared
|
||||
import { CORE_TRIGGER_TYPES } from '@/stores/logs/filters/types'
|
||||
|
||||
// ✗ Bad - re-exporting in utils.ts then importing from there
|
||||
import { CORE_TRIGGER_TYPES } from '@/app/workspace/.../utils'
|
||||
```
|
||||
|
||||
## Import Order
|
||||
|
||||
1. React/core libraries
|
||||
2. External libraries
|
||||
3. UI components (`@/components/emcn`, `@/components/ui`)
|
||||
4. Utilities (`@/lib/...`)
|
||||
5. Feature imports from indexes
|
||||
6. Relative imports
|
||||
5. Stores (`@/stores/...`)
|
||||
6. Feature imports
|
||||
7. CSS imports
|
||||
|
||||
## Types
|
||||
Use `type` keyword: `import type { WorkflowLog } from '...'`
|
||||
## Type Imports
|
||||
|
||||
Use `type` keyword for type-only imports:
|
||||
|
||||
```typescript
|
||||
import type { WorkflowLog } from '@/stores/logs/types'
|
||||
```
|
||||
|
||||
207
.cursor/rules/sim-integrations.mdc
Normal file
207
.cursor/rules/sim-integrations.mdc
Normal file
@@ -0,0 +1,207 @@
|
||||
---
|
||||
description: Adding new integrations (tools, blocks, triggers)
|
||||
globs: ["apps/sim/tools/**", "apps/sim/blocks/**", "apps/sim/triggers/**"]
|
||||
---
|
||||
|
||||
# Adding Integrations
|
||||
|
||||
## Overview
|
||||
|
||||
Adding a new integration typically requires:
|
||||
1. **Tools** - API operations (`tools/{service}/`)
|
||||
2. **Block** - UI component (`blocks/blocks/{service}.ts`)
|
||||
3. **Icon** - SVG icon (`components/icons.tsx`)
|
||||
4. **Trigger** (optional) - Webhooks/polling (`triggers/{service}/`)
|
||||
|
||||
Always look up the service's API docs first.
|
||||
|
||||
## 1. Tools (`tools/{service}/`)
|
||||
|
||||
```
|
||||
tools/{service}/
|
||||
├── index.ts # Export all tools
|
||||
├── types.ts # Params/response types
|
||||
├── {action}.ts # Individual tool (e.g., send_message.ts)
|
||||
└── ...
|
||||
```
|
||||
|
||||
**Tool file structure:**
|
||||
|
||||
```typescript
|
||||
// tools/{service}/{action}.ts
|
||||
import type { {Service}Params, {Service}Response } from '@/tools/{service}/types'
|
||||
import type { ToolConfig } from '@/tools/types'
|
||||
|
||||
export const {service}{Action}Tool: ToolConfig<{Service}Params, {Service}Response> = {
|
||||
id: '{service}_{action}',
|
||||
name: '{Service} {Action}',
|
||||
description: 'What this tool does',
|
||||
version: '1.0.0',
|
||||
oauth: { required: true, provider: '{service}' }, // if OAuth
|
||||
params: { /* param definitions */ },
|
||||
request: {
|
||||
url: '/api/tools/{service}/{action}',
|
||||
method: 'POST',
|
||||
headers: () => ({ 'Content-Type': 'application/json' }),
|
||||
body: (params) => ({ ...params }),
|
||||
},
|
||||
transformResponse: async (response) => {
|
||||
const data = await response.json()
|
||||
if (!data.success) throw new Error(data.error)
|
||||
return { success: true, output: data.output }
|
||||
},
|
||||
outputs: { /* output definitions */ },
|
||||
}
|
||||
```
|
||||
|
||||
**Register in `tools/registry.ts`:**
|
||||
|
||||
```typescript
|
||||
import { {service}{Action}Tool } from '@/tools/{service}'
|
||||
// Add to registry object
|
||||
{service}_{action}: {service}{Action}Tool,
|
||||
```
|
||||
|
||||
## 2. Block (`blocks/blocks/{service}.ts`)
|
||||
|
||||
```typescript
|
||||
import { {Service}Icon } from '@/components/icons'
|
||||
import type { BlockConfig } from '@/blocks/types'
|
||||
import type { {Service}Response } from '@/tools/{service}/types'
|
||||
|
||||
export const {Service}Block: BlockConfig<{Service}Response> = {
|
||||
type: '{service}',
|
||||
name: '{Service}',
|
||||
description: 'Short description',
|
||||
longDescription: 'Detailed description',
|
||||
category: 'tools',
|
||||
bgColor: '#hexcolor',
|
||||
icon: {Service}Icon,
|
||||
subBlocks: [ /* see SubBlock Properties below */ ],
|
||||
tools: {
|
||||
access: ['{service}_{action}', ...],
|
||||
config: {
|
||||
tool: (params) => `{service}_${params.operation}`,
|
||||
params: (params) => ({ ...params }),
|
||||
},
|
||||
},
|
||||
inputs: { /* input definitions */ },
|
||||
outputs: { /* output definitions */ },
|
||||
}
|
||||
```
|
||||
|
||||
### SubBlock Properties
|
||||
|
||||
```typescript
|
||||
{
|
||||
id: 'fieldName', // Unique identifier
|
||||
title: 'Field Label', // UI label
|
||||
type: 'short-input', // See SubBlock Types below
|
||||
placeholder: 'Hint text',
|
||||
required: true, // See Required below
|
||||
condition: { ... }, // See Condition below
|
||||
dependsOn: ['otherField'], // See DependsOn below
|
||||
mode: 'basic', // 'basic' | 'advanced' | 'both' | 'trigger'
|
||||
}
|
||||
```
|
||||
|
||||
**SubBlock Types:** `short-input`, `long-input`, `dropdown`, `code`, `switch`, `slider`, `oauth-input`, `channel-selector`, `user-selector`, `file-upload`, etc.
|
||||
|
||||
### `condition` - Show/hide based on another field
|
||||
|
||||
```typescript
|
||||
// Show when operation === 'send'
|
||||
condition: { field: 'operation', value: 'send' }
|
||||
|
||||
// Show when operation is 'send' OR 'read'
|
||||
condition: { field: 'operation', value: ['send', 'read'] }
|
||||
|
||||
// Show when operation !== 'send'
|
||||
condition: { field: 'operation', value: 'send', not: true }
|
||||
|
||||
// Complex: NOT in list AND another condition
|
||||
condition: {
|
||||
field: 'operation',
|
||||
value: ['list_channels', 'list_users'],
|
||||
not: true,
|
||||
and: { field: 'destinationType', value: 'dm', not: true }
|
||||
}
|
||||
```
|
||||
|
||||
### `required` - Field validation
|
||||
|
||||
```typescript
|
||||
// Always required
|
||||
required: true
|
||||
|
||||
// Conditionally required (same syntax as condition)
|
||||
required: { field: 'operation', value: 'send' }
|
||||
```
|
||||
|
||||
### `dependsOn` - Clear field when dependencies change
|
||||
|
||||
```typescript
|
||||
// Clear when credential changes
|
||||
dependsOn: ['credential']
|
||||
|
||||
// Clear when authMethod changes AND (credential OR botToken) changes
|
||||
dependsOn: { all: ['authMethod'], any: ['credential', 'botToken'] }
|
||||
```
|
||||
|
||||
### `mode` - When to show field
|
||||
|
||||
- `'basic'` - Only in basic mode (default UI)
|
||||
- `'advanced'` - Only in advanced mode (manual input)
|
||||
- `'both'` - Show in both modes (default)
|
||||
- `'trigger'` - Only when block is used as trigger
|
||||
|
||||
**Register in `blocks/registry.ts`:**
|
||||
|
||||
```typescript
|
||||
import { {Service}Block } from '@/blocks/blocks/{service}'
|
||||
// Add to registry object (alphabetically)
|
||||
{service}: {Service}Block,
|
||||
```
|
||||
|
||||
## 3. Icon (`components/icons.tsx`)
|
||||
|
||||
```typescript
|
||||
export function {Service}Icon(props: SVGProps<SVGSVGElement>) {
|
||||
return (
|
||||
<svg {...props} viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
{/* SVG path from service's brand assets */}
|
||||
</svg>
|
||||
)
|
||||
}
|
||||
```
|
||||
|
||||
## 4. Trigger (`triggers/{service}/`) - Optional
|
||||
|
||||
```
|
||||
triggers/{service}/
|
||||
├── index.ts # Export all triggers
|
||||
├── webhook.ts # Webhook handler
|
||||
├── utils.ts # Shared utilities
|
||||
└── {event}.ts # Specific event handlers
|
||||
```
|
||||
|
||||
**Register in `triggers/registry.ts`:**
|
||||
|
||||
```typescript
|
||||
import { {service}WebhookTrigger } from '@/triggers/{service}'
|
||||
// Add to TRIGGER_REGISTRY
|
||||
{service}_webhook: {service}WebhookTrigger,
|
||||
```
|
||||
|
||||
## Checklist
|
||||
|
||||
- [ ] Look up API docs for the service
|
||||
- [ ] Create `tools/{service}/types.ts` with proper types
|
||||
- [ ] Create tool files for each operation
|
||||
- [ ] Create `tools/{service}/index.ts` barrel export
|
||||
- [ ] Register tools in `tools/registry.ts`
|
||||
- [ ] Add icon to `components/icons.tsx`
|
||||
- [ ] Create block in `blocks/blocks/{service}.ts`
|
||||
- [ ] Register block in `blocks/registry.ts`
|
||||
- [ ] (Optional) Create triggers in `triggers/{service}/`
|
||||
- [ ] (Optional) Register triggers in `triggers/registry.ts`
|
||||
66
.cursor/rules/sim-queries.mdc
Normal file
66
.cursor/rules/sim-queries.mdc
Normal file
@@ -0,0 +1,66 @@
|
||||
---
|
||||
description: React Query patterns for the Sim application
|
||||
globs: ["apps/sim/hooks/queries/**/*.ts"]
|
||||
---
|
||||
|
||||
# React Query Patterns
|
||||
|
||||
All React Query hooks live in `hooks/queries/`.
|
||||
|
||||
## Query Key Factory
|
||||
|
||||
Every query file defines a keys factory:
|
||||
|
||||
```typescript
|
||||
export const entityKeys = {
|
||||
all: ['entity'] as const,
|
||||
list: (workspaceId?: string) => [...entityKeys.all, 'list', workspaceId ?? ''] as const,
|
||||
detail: (id?: string) => [...entityKeys.all, 'detail', id ?? ''] as const,
|
||||
}
|
||||
```
|
||||
|
||||
## File Structure
|
||||
|
||||
```typescript
|
||||
// 1. Query keys factory
|
||||
// 2. Types (if needed)
|
||||
// 3. Private fetch functions
|
||||
// 4. Exported hooks
|
||||
```
|
||||
|
||||
## Query Hook
|
||||
|
||||
```typescript
|
||||
export function useEntityList(workspaceId?: string, options?: { enabled?: boolean }) {
|
||||
return useQuery({
|
||||
queryKey: entityKeys.list(workspaceId),
|
||||
queryFn: () => fetchEntities(workspaceId as string),
|
||||
enabled: Boolean(workspaceId) && (options?.enabled ?? true),
|
||||
staleTime: 60 * 1000,
|
||||
placeholderData: keepPreviousData,
|
||||
})
|
||||
}
|
||||
```
|
||||
|
||||
## Mutation Hook
|
||||
|
||||
```typescript
|
||||
export function useCreateEntity() {
|
||||
const queryClient = useQueryClient()
|
||||
return useMutation({
|
||||
mutationFn: async (variables) => { /* fetch POST */ },
|
||||
onSuccess: () => queryClient.invalidateQueries({ queryKey: entityKeys.all }),
|
||||
})
|
||||
}
|
||||
```
|
||||
|
||||
## Optimistic Updates
|
||||
|
||||
For optimistic mutations syncing with Zustand, use `createOptimisticMutationHandlers` from `@/hooks/queries/utils/optimistic-mutation`.
|
||||
|
||||
## Naming
|
||||
|
||||
- **Keys**: `entityKeys`
|
||||
- **Query hooks**: `useEntity`, `useEntityList`
|
||||
- **Mutation hooks**: `useCreateEntity`, `useUpdateEntity`
|
||||
- **Fetch functions**: `fetchEntity` (private)
|
||||
@@ -5,53 +5,66 @@ globs: ["apps/sim/**/store.ts", "apps/sim/**/stores/**/*.ts"]
|
||||
|
||||
# Zustand Store Patterns
|
||||
|
||||
## Structure
|
||||
Stores live in `stores/`. Complex stores split into `store.ts` + `types.ts`.
|
||||
|
||||
## Basic Store
|
||||
|
||||
```typescript
|
||||
import { create } from 'zustand'
|
||||
import { devtools } from 'zustand/middleware'
|
||||
import type { FeatureState } from '@/stores/feature/types'
|
||||
|
||||
const initialState = { items: [] as Item[], activeId: null as string | null }
|
||||
|
||||
export const useFeatureStore = create<FeatureState>()(
|
||||
devtools(
|
||||
(set, get) => ({
|
||||
...initialState,
|
||||
setItems: (items) => set({ items }),
|
||||
addItem: (item) => set((state) => ({ items: [...state.items, item] })),
|
||||
reset: () => set(initialState),
|
||||
}),
|
||||
{ name: 'feature-store' }
|
||||
)
|
||||
)
|
||||
```
|
||||
|
||||
## Persisted Store
|
||||
|
||||
```typescript
|
||||
import { create } from 'zustand'
|
||||
import { persist } from 'zustand/middleware'
|
||||
|
||||
interface FeatureState {
|
||||
// State
|
||||
items: Item[]
|
||||
activeId: string | null
|
||||
|
||||
// Actions
|
||||
setItems: (items: Item[]) => void
|
||||
addItem: (item: Item) => void
|
||||
clearState: () => void
|
||||
}
|
||||
|
||||
const createInitialState = () => ({
|
||||
items: [],
|
||||
activeId: null,
|
||||
})
|
||||
|
||||
export const useFeatureStore = create<FeatureState>()(
|
||||
persist(
|
||||
(set) => ({
|
||||
...createInitialState(),
|
||||
|
||||
setItems: (items) => set({ items }),
|
||||
|
||||
addItem: (item) => set((state) => ({
|
||||
items: [...state.items, item],
|
||||
})),
|
||||
|
||||
clearState: () => set(createInitialState()),
|
||||
width: 300,
|
||||
setWidth: (width) => set({ width }),
|
||||
_hasHydrated: false,
|
||||
setHasHydrated: (v) => set({ _hasHydrated: v }),
|
||||
}),
|
||||
{
|
||||
name: 'feature-state',
|
||||
partialize: (state) => ({ items: state.items }),
|
||||
partialize: (state) => ({ width: state.width }),
|
||||
onRehydrateStorage: () => (state) => state?.setHasHydrated(true),
|
||||
}
|
||||
)
|
||||
)
|
||||
```
|
||||
|
||||
## Rules
|
||||
1. Interface includes state and actions
|
||||
2. Extract config to module constants
|
||||
3. TSDoc on store
|
||||
4. Only persist what's needed
|
||||
5. Immutable updates only - never mutate
|
||||
6. Use `set((state) => ...)` when depending on previous state
|
||||
7. Provide clear/reset actions
|
||||
|
||||
1. Use `devtools` middleware (named stores)
|
||||
2. Use `persist` only when data should survive reload
|
||||
3. `partialize` to persist only necessary state
|
||||
4. `_hasHydrated` pattern for persisted stores needing hydration tracking
|
||||
5. Immutable updates only
|
||||
6. `set((state) => ...)` when depending on previous state
|
||||
7. Provide `reset()` action
|
||||
|
||||
## Outside React
|
||||
|
||||
```typescript
|
||||
const items = useFeatureStore.getState().items
|
||||
useFeatureStore.setState({ items: newItems })
|
||||
```
|
||||
|
||||
@@ -6,13 +6,14 @@ globs: ["apps/sim/**/*.tsx", "apps/sim/**/*.css"]
|
||||
# Styling Rules
|
||||
|
||||
## Tailwind
|
||||
1. **No inline styles** - Use Tailwind classes exclusively
|
||||
2. **No duplicate dark classes** - Don't add `dark:` when value matches light mode
|
||||
3. **Exact values** - Use design system values (`text-[14px]`, `h-[25px]`)
|
||||
4. **Prefer px** - Use `px-[4px]` over `px-1`
|
||||
5. **Transitions** - Add `transition-colors` for interactive states
|
||||
|
||||
1. **No inline styles** - Use Tailwind classes
|
||||
2. **No duplicate dark classes** - Skip `dark:` when value matches light mode
|
||||
3. **Exact values** - `text-[14px]`, `h-[26px]`
|
||||
4. **Transitions** - `transition-colors` for interactive states
|
||||
|
||||
## Conditional Classes
|
||||
|
||||
```typescript
|
||||
import { cn } from '@/lib/utils'
|
||||
|
||||
@@ -23,25 +24,17 @@ import { cn } from '@/lib/utils'
|
||||
)} />
|
||||
```
|
||||
|
||||
## CSS Variables for Dynamic Styles
|
||||
## CSS Variables
|
||||
|
||||
For dynamic values (widths, heights) synced with stores:
|
||||
|
||||
```typescript
|
||||
// In store setter
|
||||
setSidebarWidth: (width) => {
|
||||
set({ sidebarWidth: width })
|
||||
// In store
|
||||
setWidth: (width) => {
|
||||
set({ width })
|
||||
document.documentElement.style.setProperty('--sidebar-width', `${width}px`)
|
||||
}
|
||||
|
||||
// In component
|
||||
<aside style={{ width: 'var(--sidebar-width)' }} />
|
||||
```
|
||||
|
||||
## Anti-Patterns
|
||||
```typescript
|
||||
// ❌ Bad
|
||||
<div style={{ width: 200 }}>
|
||||
<div className='text-[var(--text-primary)] dark:text-[var(--text-primary)]'>
|
||||
|
||||
// ✅ Good
|
||||
<div className='w-[200px]'>
|
||||
<div className='text-[var(--text-primary)]'>
|
||||
```
|
||||
|
||||
60
.cursor/rules/sim-testing.mdc
Normal file
60
.cursor/rules/sim-testing.mdc
Normal file
@@ -0,0 +1,60 @@
|
||||
---
|
||||
description: Testing patterns with Vitest
|
||||
globs: ["apps/sim/**/*.test.ts", "apps/sim/**/*.test.tsx"]
|
||||
---
|
||||
|
||||
# Testing Patterns
|
||||
|
||||
Use Vitest. Test files live next to source: `feature.ts` → `feature.test.ts`
|
||||
|
||||
## Structure
|
||||
|
||||
```typescript
|
||||
/**
|
||||
* Tests for [feature name]
|
||||
*
|
||||
* @vitest-environment node
|
||||
*/
|
||||
|
||||
// 1. Mocks BEFORE imports
|
||||
vi.mock('@sim/db', () => ({ db: { select: vi.fn() } }))
|
||||
vi.mock('@sim/logger', () => loggerMock)
|
||||
|
||||
// 2. Imports AFTER mocks
|
||||
import { describe, expect, it, vi, beforeEach, afterEach } from 'vitest'
|
||||
import { createSession, loggerMock } from '@sim/testing'
|
||||
import { myFunction } from '@/lib/feature'
|
||||
|
||||
describe('myFunction', () => {
|
||||
beforeEach(() => vi.clearAllMocks())
|
||||
|
||||
it('should do something', () => {
|
||||
expect(myFunction()).toBe(expected)
|
||||
})
|
||||
|
||||
it.concurrent('runs in parallel', () => { ... })
|
||||
})
|
||||
```
|
||||
|
||||
## @sim/testing Package
|
||||
|
||||
```typescript
|
||||
// Factories - create test data
|
||||
import { createBlock, createWorkflow, createSession } from '@sim/testing'
|
||||
|
||||
// Mocks - pre-configured mocks
|
||||
import { loggerMock, databaseMock, fetchMock } from '@sim/testing'
|
||||
|
||||
// Builders - fluent API for complex objects
|
||||
import { ExecutionBuilder, WorkflowBuilder } from '@sim/testing'
|
||||
```
|
||||
|
||||
## Rules
|
||||
|
||||
1. `@vitest-environment node` directive at file top
|
||||
2. **Mocks before imports** - `vi.mock()` calls must come first
|
||||
3. Use `@sim/testing` factories over manual test data
|
||||
4. `it.concurrent` for independent tests (faster)
|
||||
5. `beforeEach(() => vi.clearAllMocks())` to reset state
|
||||
6. Group related tests with nested `describe` blocks
|
||||
7. Test file naming: `*.test.ts` (not `*.spec.ts`)
|
||||
@@ -6,19 +6,15 @@ globs: ["apps/sim/**/*.ts", "apps/sim/**/*.tsx"]
|
||||
# TypeScript Rules
|
||||
|
||||
1. **No `any`** - Use proper types or `unknown` with type guards
|
||||
2. **Props interface** - Always define, even for simple components
|
||||
3. **Callback types** - Full signature with params and return type
|
||||
4. **Generics** - Use for reusable components/hooks
|
||||
5. **Const assertions** - `as const` for constant objects/arrays
|
||||
6. **Ref types** - Explicit: `useRef<HTMLDivElement>(null)`
|
||||
2. **Props interface** - Always define for components
|
||||
3. **Const assertions** - `as const` for constant objects/arrays
|
||||
4. **Ref types** - Explicit: `useRef<HTMLDivElement>(null)`
|
||||
5. **Type imports** - `import type { X }` for type-only imports
|
||||
|
||||
## Anti-Patterns
|
||||
```typescript
|
||||
// ❌ Bad
|
||||
// ✗ Bad
|
||||
const handleClick = (e: any) => {}
|
||||
useEffect(() => { doSomething(prop) }, []) // Missing dep
|
||||
|
||||
// ✅ Good
|
||||
// ✓ Good
|
||||
const handleClick = (e: React.MouseEvent<HTMLButtonElement>) => {}
|
||||
useEffect(() => { doSomething(prop) }, [prop])
|
||||
```
|
||||
|
||||
@@ -1,11 +1,67 @@
|
||||
# Git
|
||||
.git
|
||||
.gitignore
|
||||
|
||||
# Documentation
|
||||
LICENSE
|
||||
NOTICE
|
||||
README.md
|
||||
*.md
|
||||
docs/
|
||||
|
||||
# IDE and editor
|
||||
.vscode
|
||||
.idea
|
||||
*.swp
|
||||
*.swo
|
||||
|
||||
# Environment and config
|
||||
.env*
|
||||
!.env.example
|
||||
.prettierrc
|
||||
.prettierignore
|
||||
README.md
|
||||
.gitignore
|
||||
.husky
|
||||
.eslintrc*
|
||||
.eslintignore
|
||||
|
||||
# CI/CD and DevOps
|
||||
.github
|
||||
.devcontainer
|
||||
.env.example
|
||||
node_modules
|
||||
.husky
|
||||
docker-compose*.yml
|
||||
Dockerfile*
|
||||
|
||||
# Build artifacts and caches
|
||||
.next
|
||||
.turbo
|
||||
.cache
|
||||
dist
|
||||
build
|
||||
out
|
||||
coverage
|
||||
*.log
|
||||
|
||||
# Dependencies (will be installed fresh in container)
|
||||
node_modules
|
||||
.bun
|
||||
|
||||
# Test files
|
||||
**/*.test.ts
|
||||
**/*.test.tsx
|
||||
**/*.spec.ts
|
||||
**/*.spec.tsx
|
||||
__tests__
|
||||
__mocks__
|
||||
jest.config.*
|
||||
vitest.config.*
|
||||
|
||||
# TypeScript build info
|
||||
*.tsbuildinfo
|
||||
|
||||
# OS files
|
||||
.DS_Store
|
||||
Thumbs.db
|
||||
|
||||
# Temporary files
|
||||
tmp
|
||||
temp
|
||||
*.tmp
|
||||
|
||||
62
.github/workflows/ci.yml
vendored
62
.github/workflows/ci.yml
vendored
@@ -16,10 +16,35 @@ jobs:
|
||||
uses: ./.github/workflows/test-build.yml
|
||||
secrets: inherit
|
||||
|
||||
# Detect if this is a version release commit (e.g., "v0.5.24: ...")
|
||||
detect-version:
|
||||
name: Detect Version
|
||||
runs-on: blacksmith-4vcpu-ubuntu-2404
|
||||
if: github.event_name == 'push' && (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/staging')
|
||||
outputs:
|
||||
version: ${{ steps.extract.outputs.version }}
|
||||
is_release: ${{ steps.extract.outputs.is_release }}
|
||||
steps:
|
||||
- name: Extract version from commit message
|
||||
id: extract
|
||||
run: |
|
||||
COMMIT_MSG="${{ github.event.head_commit.message }}"
|
||||
# Only tag versions on main branch
|
||||
if [ "${{ github.ref }}" = "refs/heads/main" ] && [[ "$COMMIT_MSG" =~ ^(v[0-9]+\.[0-9]+\.[0-9]+): ]]; then
|
||||
VERSION="${BASH_REMATCH[1]}"
|
||||
echo "version=${VERSION}" >> $GITHUB_OUTPUT
|
||||
echo "is_release=true" >> $GITHUB_OUTPUT
|
||||
echo "✅ Detected release commit: ${VERSION}"
|
||||
else
|
||||
echo "version=" >> $GITHUB_OUTPUT
|
||||
echo "is_release=false" >> $GITHUB_OUTPUT
|
||||
echo "ℹ️ Not a release commit"
|
||||
fi
|
||||
|
||||
# Build AMD64 images and push to ECR immediately (+ GHCR for main)
|
||||
build-amd64:
|
||||
name: Build AMD64
|
||||
needs: test-build
|
||||
needs: [test-build, detect-version]
|
||||
if: github.event_name == 'push' && (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/staging')
|
||||
runs-on: blacksmith-8vcpu-ubuntu-2404
|
||||
permissions:
|
||||
@@ -93,6 +118,14 @@ jobs:
|
||||
GHCR_AMD64="${GHCR_IMAGE}:latest-amd64"
|
||||
GHCR_SHA="${GHCR_IMAGE}:${{ github.sha }}-amd64"
|
||||
TAGS="${TAGS},$GHCR_AMD64,$GHCR_SHA"
|
||||
|
||||
# Add version tag if this is a release commit
|
||||
if [ "${{ needs.detect-version.outputs.is_release }}" = "true" ]; then
|
||||
VERSION="${{ needs.detect-version.outputs.version }}"
|
||||
GHCR_VERSION="${GHCR_IMAGE}:${VERSION}-amd64"
|
||||
TAGS="${TAGS},$GHCR_VERSION"
|
||||
echo "📦 Adding version tag: ${VERSION}-amd64"
|
||||
fi
|
||||
fi
|
||||
|
||||
echo "tags=${TAGS}" >> $GITHUB_OUTPUT
|
||||
@@ -111,7 +144,7 @@ jobs:
|
||||
# Build ARM64 images for GHCR (main branch only, runs in parallel)
|
||||
build-ghcr-arm64:
|
||||
name: Build ARM64 (GHCR Only)
|
||||
needs: test-build
|
||||
needs: [test-build, detect-version]
|
||||
runs-on: blacksmith-8vcpu-ubuntu-2404-arm
|
||||
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
|
||||
permissions:
|
||||
@@ -146,7 +179,16 @@ jobs:
|
||||
id: meta
|
||||
run: |
|
||||
IMAGE="${{ matrix.image }}"
|
||||
echo "tags=${IMAGE}:latest-arm64,${IMAGE}:${{ github.sha }}-arm64" >> $GITHUB_OUTPUT
|
||||
TAGS="${IMAGE}:latest-arm64,${IMAGE}:${{ github.sha }}-arm64"
|
||||
|
||||
# Add version tag if this is a release commit
|
||||
if [ "${{ needs.detect-version.outputs.is_release }}" = "true" ]; then
|
||||
VERSION="${{ needs.detect-version.outputs.version }}"
|
||||
TAGS="${TAGS},${IMAGE}:${VERSION}-arm64"
|
||||
echo "📦 Adding version tag: ${VERSION}-arm64"
|
||||
fi
|
||||
|
||||
echo "tags=${TAGS}" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Build and push ARM64 to GHCR
|
||||
uses: useblacksmith/build-push-action@v2
|
||||
@@ -162,8 +204,8 @@ jobs:
|
||||
# Create GHCR multi-arch manifests (only for main, after both builds)
|
||||
create-ghcr-manifests:
|
||||
name: Create GHCR Manifests
|
||||
runs-on: blacksmith-8vcpu-ubuntu-2404
|
||||
needs: [build-amd64, build-ghcr-arm64]
|
||||
runs-on: blacksmith-2vcpu-ubuntu-2404
|
||||
needs: [build-amd64, build-ghcr-arm64, detect-version]
|
||||
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
|
||||
permissions:
|
||||
packages: write
|
||||
@@ -198,6 +240,16 @@ jobs:
|
||||
"${IMAGE_BASE}:${{ github.sha }}-arm64"
|
||||
docker manifest push "${IMAGE_BASE}:${{ github.sha }}"
|
||||
|
||||
# Create version manifest if this is a release commit
|
||||
if [ "${{ needs.detect-version.outputs.is_release }}" = "true" ]; then
|
||||
VERSION="${{ needs.detect-version.outputs.version }}"
|
||||
echo "📦 Creating version manifest: ${VERSION}"
|
||||
docker manifest create "${IMAGE_BASE}:${VERSION}" \
|
||||
"${IMAGE_BASE}:${VERSION}-amd64" \
|
||||
"${IMAGE_BASE}:${VERSION}-arm64"
|
||||
docker manifest push "${IMAGE_BASE}:${VERSION}"
|
||||
fi
|
||||
|
||||
# Check if docs changed
|
||||
check-docs-changes:
|
||||
name: Check Docs Changes
|
||||
|
||||
32
.github/workflows/test-build.yml
vendored
32
.github/workflows/test-build.yml
vendored
@@ -23,16 +23,17 @@ jobs:
|
||||
with:
|
||||
node-version: latest
|
||||
|
||||
- name: Cache Bun dependencies
|
||||
uses: actions/cache@v4
|
||||
- name: Mount Bun cache (Sticky Disk)
|
||||
uses: useblacksmith/stickydisk@v1
|
||||
with:
|
||||
path: |
|
||||
~/.bun/install/cache
|
||||
node_modules
|
||||
**/node_modules
|
||||
key: ${{ runner.os }}-bun-${{ hashFiles('**/bun.lock') }}
|
||||
restore-keys: |
|
||||
${{ runner.os }}-bun-
|
||||
key: ${{ github.repository }}-bun-cache
|
||||
path: ~/.bun/install/cache
|
||||
|
||||
- name: Mount node_modules (Sticky Disk)
|
||||
uses: useblacksmith/stickydisk@v1
|
||||
with:
|
||||
key: ${{ github.repository }}-node-modules
|
||||
path: ./node_modules
|
||||
|
||||
- name: Install dependencies
|
||||
run: bun install --frozen-lockfile
|
||||
@@ -48,6 +49,19 @@ jobs:
|
||||
ENCRYPTION_KEY: '7cf672e460e430c1fba707575c2b0e2ad5a99dddf9b7b7e3b5646e630861db1c' # dummy key for CI only
|
||||
run: bun run test
|
||||
|
||||
- name: Check schema and migrations are in sync
|
||||
working-directory: packages/db
|
||||
run: |
|
||||
bunx drizzle-kit generate --config=./drizzle.config.ts
|
||||
if [ -n "$(git status --porcelain ./migrations)" ]; then
|
||||
echo "❌ Schema and migrations are out of sync!"
|
||||
echo "Run 'cd packages/db && bunx drizzle-kit generate' and commit the new migrations."
|
||||
git status --porcelain ./migrations
|
||||
git diff ./migrations
|
||||
exit 1
|
||||
fi
|
||||
echo "✅ Schema and migrations are in sync"
|
||||
|
||||
- name: Build application
|
||||
env:
|
||||
NODE_OPTIONS: '--no-warnings'
|
||||
|
||||
304
CLAUDE.md
304
CLAUDE.md
@@ -1,47 +1,295 @@
|
||||
# Expert Programming Standards
|
||||
# Sim Studio Development Guidelines
|
||||
|
||||
**You are tasked with implementing solutions that follow best practices. You MUST be accurate, elegant, and efficient as an expert programmer.**
|
||||
You are a professional software engineer. All code must follow best practices: accurate, readable, clean, and efficient.
|
||||
|
||||
---
|
||||
## Global Standards
|
||||
|
||||
# Role
|
||||
- **Logging**: Import `createLogger` from `@sim/logger`. Use `logger.info`, `logger.warn`, `logger.error` instead of `console.log`
|
||||
- **Comments**: Use TSDoc for documentation. No `====` separators. No non-TSDoc comments
|
||||
- **Styling**: Never update global styles. Keep all styling local to components
|
||||
- **Package Manager**: Use `bun` and `bunx`, not `npm` and `npx`
|
||||
|
||||
You are a professional software engineer. All code you write MUST follow best practices, ensuring accuracy, quality, readability, and cleanliness. You MUST make FOCUSED EDITS that are EFFICIENT and ELEGANT.
|
||||
## Architecture
|
||||
|
||||
## Logs
|
||||
### Core Principles
|
||||
1. Single Responsibility: Each component, hook, store has one clear purpose
|
||||
2. Composition Over Complexity: Break down complex logic into smaller pieces
|
||||
3. Type Safety First: TypeScript interfaces for all props, state, return types
|
||||
4. Predictable State: Zustand for global state, useState for UI-only concerns
|
||||
|
||||
ENSURE that you use the logger.info and logger.warn and logger.error instead of the console.log whenever you want to display logs.
|
||||
### Root Structure
|
||||
```
|
||||
apps/sim/
|
||||
├── app/ # Next.js app router (pages, API routes)
|
||||
├── blocks/ # Block definitions and registry
|
||||
├── components/ # Shared UI (emcn/, ui/)
|
||||
├── executor/ # Workflow execution engine
|
||||
├── hooks/ # Shared hooks (queries/, selectors/)
|
||||
├── lib/ # App-wide utilities
|
||||
├── providers/ # LLM provider integrations
|
||||
├── stores/ # Zustand stores
|
||||
├── tools/ # Tool definitions
|
||||
└── triggers/ # Trigger definitions
|
||||
```
|
||||
|
||||
## Comments
|
||||
### Naming Conventions
|
||||
- Components: PascalCase (`WorkflowList`)
|
||||
- Hooks: `use` prefix (`useWorkflowOperations`)
|
||||
- Files: kebab-case (`workflow-list.tsx`)
|
||||
- Stores: `stores/feature/store.ts`
|
||||
- Constants: SCREAMING_SNAKE_CASE
|
||||
- Interfaces: PascalCase with suffix (`WorkflowListProps`)
|
||||
|
||||
You must use TSDOC for comments. Do not use ==== for comments to separate sections. Do not leave any comments that are not TSDOC.
|
||||
## Imports
|
||||
|
||||
## Global Styles
|
||||
**Always use absolute imports.** Never use relative imports.
|
||||
|
||||
You should not update the global styles unless it is absolutely necessary. Keep all styling local to components and files.
|
||||
```typescript
|
||||
// ✓ Good
|
||||
import { useWorkflowStore } from '@/stores/workflows/store'
|
||||
|
||||
## Bun
|
||||
// ✗ Bad
|
||||
import { useWorkflowStore } from '../../../stores/workflows/store'
|
||||
```
|
||||
|
||||
Use bun and bunx not npm and npx.
|
||||
Use barrel exports (`index.ts`) when a folder has 3+ exports. Do not re-export from non-barrel files; import directly from the source.
|
||||
|
||||
## Code Quality
|
||||
### Import Order
|
||||
1. React/core libraries
|
||||
2. External libraries
|
||||
3. UI components (`@/components/emcn`, `@/components/ui`)
|
||||
4. Utilities (`@/lib/...`)
|
||||
5. Stores (`@/stores/...`)
|
||||
6. Feature imports
|
||||
7. CSS imports
|
||||
|
||||
- Write clean, maintainable code that follows the project's existing patterns
|
||||
- Prefer composition over inheritance
|
||||
- Keep functions small and focused on a single responsibility
|
||||
- Use meaningful variable and function names
|
||||
- Handle errors gracefully and provide useful error messages
|
||||
- Write type-safe code with proper TypeScript types
|
||||
Use `import type { X }` for type-only imports.
|
||||
|
||||
## TypeScript
|
||||
|
||||
1. No `any` - Use proper types or `unknown` with type guards
|
||||
2. Always define props interface for components
|
||||
3. `as const` for constant objects/arrays
|
||||
4. Explicit ref types: `useRef<HTMLDivElement>(null)`
|
||||
|
||||
## Components
|
||||
|
||||
```typescript
|
||||
'use client' // Only if using hooks
|
||||
|
||||
const CONFIG = { SPACING: 8 } as const
|
||||
|
||||
interface ComponentProps {
|
||||
requiredProp: string
|
||||
optionalProp?: boolean
|
||||
}
|
||||
|
||||
export function Component({ requiredProp, optionalProp = false }: ComponentProps) {
|
||||
// Order: refs → external hooks → store hooks → custom hooks → state → useMemo → useCallback → useEffect → return
|
||||
}
|
||||
```
|
||||
|
||||
Extract when: 50+ lines, used in 2+ files, or has own state/logic. Keep inline when: < 10 lines, single use, purely presentational.
|
||||
|
||||
## Hooks
|
||||
|
||||
```typescript
|
||||
interface UseFeatureProps { id: string }
|
||||
|
||||
export function useFeature({ id }: UseFeatureProps) {
|
||||
const idRef = useRef(id)
|
||||
const [data, setData] = useState<Data | null>(null)
|
||||
|
||||
useEffect(() => { idRef.current = id }, [id])
|
||||
|
||||
const fetchData = useCallback(async () => { ... }, []) // Empty deps when using refs
|
||||
|
||||
return { data, fetchData }
|
||||
}
|
||||
```
|
||||
|
||||
## Zustand Stores
|
||||
|
||||
Stores live in `stores/`. Complex stores split into `store.ts` + `types.ts`.
|
||||
|
||||
```typescript
|
||||
import { create } from 'zustand'
|
||||
import { devtools } from 'zustand/middleware'
|
||||
|
||||
const initialState = { items: [] as Item[] }
|
||||
|
||||
export const useFeatureStore = create<FeatureState>()(
|
||||
devtools(
|
||||
(set, get) => ({
|
||||
...initialState,
|
||||
setItems: (items) => set({ items }),
|
||||
reset: () => set(initialState),
|
||||
}),
|
||||
{ name: 'feature-store' }
|
||||
)
|
||||
)
|
||||
```
|
||||
|
||||
Use `devtools` middleware. Use `persist` only when data should survive reload with `partialize` to persist only necessary state.
|
||||
|
||||
## React Query
|
||||
|
||||
All React Query hooks live in `hooks/queries/`.
|
||||
|
||||
```typescript
|
||||
export const entityKeys = {
|
||||
all: ['entity'] as const,
|
||||
list: (workspaceId?: string) => [...entityKeys.all, 'list', workspaceId ?? ''] as const,
|
||||
}
|
||||
|
||||
export function useEntityList(workspaceId?: string) {
|
||||
return useQuery({
|
||||
queryKey: entityKeys.list(workspaceId),
|
||||
queryFn: () => fetchEntities(workspaceId as string),
|
||||
enabled: Boolean(workspaceId),
|
||||
staleTime: 60 * 1000,
|
||||
placeholderData: keepPreviousData,
|
||||
})
|
||||
}
|
||||
```
|
||||
|
||||
## Styling
|
||||
|
||||
Use Tailwind only, no inline styles. Use `cn()` from `@/lib/utils` for conditional classes.
|
||||
|
||||
```typescript
|
||||
<div className={cn('base-classes', isActive && 'active-classes')} />
|
||||
```
|
||||
|
||||
## EMCN Components
|
||||
|
||||
Import from `@/components/emcn`, never from subpaths (except CSS files). Use CVA when 2+ variants exist.
|
||||
|
||||
## Testing
|
||||
|
||||
- Write tests for new functionality when appropriate
|
||||
- Ensure existing tests pass before completing work
|
||||
- Follow the project's testing conventions
|
||||
Use Vitest. Test files: `feature.ts` → `feature.test.ts`
|
||||
|
||||
## Performance
|
||||
```typescript
|
||||
/**
|
||||
* @vitest-environment node
|
||||
*/
|
||||
|
||||
- Consider performance implications of your code
|
||||
- Avoid unnecessary re-renders in React components
|
||||
- Use appropriate data structures and algorithms
|
||||
- Profile and optimize when necessary
|
||||
// Mocks BEFORE imports
|
||||
vi.mock('@sim/db', () => ({ db: { select: vi.fn() } }))
|
||||
|
||||
// Imports AFTER mocks
|
||||
import { describe, expect, it, vi } from 'vitest'
|
||||
import { createSession, loggerMock } from '@sim/testing'
|
||||
|
||||
describe('feature', () => {
|
||||
beforeEach(() => vi.clearAllMocks())
|
||||
it.concurrent('runs in parallel', () => { ... })
|
||||
})
|
||||
```
|
||||
|
||||
Use `@sim/testing` factories over manual test data.
|
||||
|
||||
## Utils Rules
|
||||
|
||||
- Never create `utils.ts` for single consumer - inline it
|
||||
- Create `utils.ts` when 2+ files need the same helper
|
||||
- Check existing sources in `lib/` before duplicating
|
||||
|
||||
## Adding Integrations
|
||||
|
||||
New integrations require: **Tools** → **Block** → **Icon** → (optional) **Trigger**
|
||||
|
||||
Always look up the service's API docs first.
|
||||
|
||||
### 1. Tools (`tools/{service}/`)
|
||||
|
||||
```
|
||||
tools/{service}/
|
||||
├── index.ts # Barrel export
|
||||
├── types.ts # Params/response types
|
||||
└── {action}.ts # Tool implementation
|
||||
```
|
||||
|
||||
**Tool structure:**
|
||||
```typescript
|
||||
export const serviceTool: ToolConfig<Params, Response> = {
|
||||
id: 'service_action',
|
||||
name: 'Service Action',
|
||||
description: '...',
|
||||
version: '1.0.0',
|
||||
oauth: { required: true, provider: 'service' },
|
||||
params: { /* ... */ },
|
||||
request: { url: '/api/tools/service/action', method: 'POST', ... },
|
||||
transformResponse: async (response) => { /* ... */ },
|
||||
outputs: { /* ... */ },
|
||||
}
|
||||
```
|
||||
|
||||
Register in `tools/registry.ts`.
|
||||
|
||||
### 2. Block (`blocks/blocks/{service}.ts`)
|
||||
|
||||
```typescript
|
||||
export const ServiceBlock: BlockConfig = {
|
||||
type: 'service',
|
||||
name: 'Service',
|
||||
description: '...',
|
||||
category: 'tools',
|
||||
bgColor: '#hexcolor',
|
||||
icon: ServiceIcon,
|
||||
subBlocks: [ /* see SubBlock Properties */ ],
|
||||
tools: { access: ['service_action'], config: { tool: (p) => `service_${p.operation}` } },
|
||||
inputs: { /* ... */ },
|
||||
outputs: { /* ... */ },
|
||||
}
|
||||
```
|
||||
|
||||
Register in `blocks/registry.ts` (alphabetically).
|
||||
|
||||
**SubBlock Properties:**
|
||||
```typescript
|
||||
{
|
||||
id: 'field', title: 'Label', type: 'short-input', placeholder: '...',
|
||||
required: true, // or condition object
|
||||
condition: { field: 'op', value: 'send' }, // show/hide
|
||||
dependsOn: ['credential'], // clear when dep changes
|
||||
mode: 'basic', // 'basic' | 'advanced' | 'both' | 'trigger'
|
||||
}
|
||||
```
|
||||
|
||||
**condition examples:**
|
||||
- `{ field: 'op', value: 'send' }` - show when op === 'send'
|
||||
- `{ field: 'op', value: ['a','b'] }` - show when op is 'a' OR 'b'
|
||||
- `{ field: 'op', value: 'x', not: true }` - show when op !== 'x'
|
||||
- `{ field: 'op', value: 'x', not: true, and: { field: 'type', value: 'dm', not: true } }` - complex
|
||||
|
||||
**dependsOn:** `['field']` or `{ all: ['a'], any: ['b', 'c'] }`
|
||||
|
||||
### 3. Icon (`components/icons.tsx`)
|
||||
|
||||
```typescript
|
||||
export function ServiceIcon(props: SVGProps<SVGSVGElement>) {
|
||||
return <svg {...props}>/* SVG from brand assets */</svg>
|
||||
}
|
||||
```
|
||||
|
||||
### 4. Trigger (`triggers/{service}/`) - Optional
|
||||
|
||||
```
|
||||
triggers/{service}/
|
||||
├── index.ts # Barrel export
|
||||
├── webhook.ts # Webhook handler
|
||||
└── {event}.ts # Event-specific handlers
|
||||
```
|
||||
|
||||
Register in `triggers/registry.ts`.
|
||||
|
||||
### Integration Checklist
|
||||
|
||||
- [ ] Look up API docs
|
||||
- [ ] Create `tools/{service}/` with types and tools
|
||||
- [ ] Register tools in `tools/registry.ts`
|
||||
- [ ] Add icon to `components/icons.tsx`
|
||||
- [ ] Create block in `blocks/blocks/{service}.ts`
|
||||
- [ ] Register block in `blocks/registry.ts`
|
||||
- [ ] (Optional) Create and register triggers
|
||||
|
||||
2
LICENSE
2
LICENSE
@@ -187,7 +187,7 @@
|
||||
same "printed page" as the copyright notice for easier
|
||||
identification within third-party archives.
|
||||
|
||||
Copyright 2025 Sim Studio, Inc.
|
||||
Copyright 2026 Sim Studio, Inc.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
|
||||
2
NOTICE
2
NOTICE
@@ -1,4 +1,4 @@
|
||||
Sim Studio
|
||||
Copyright 2025 Sim Studio
|
||||
Copyright 2026 Sim Studio
|
||||
|
||||
This product includes software developed for the Sim project.
|
||||
@@ -130,6 +130,7 @@ When running with Docker, use `host.docker.internal` if vLLM is on your host mac
|
||||
|
||||
**Requirements:**
|
||||
- [Bun](https://bun.sh/) runtime
|
||||
- [Node.js](https://nodejs.org/) v20+ (required for sandboxed code execution)
|
||||
- PostgreSQL 12+ with [pgvector extension](https://github.com/pgvector/pgvector) (required for AI embeddings)
|
||||
|
||||
**Note:** Sim uses vector embeddings for AI features like knowledge bases and semantic search, which requires the `pgvector` PostgreSQL extension.
|
||||
@@ -187,6 +188,7 @@ DATABASE_URL="postgresql://postgres:your_password@localhost:5432/simstudio"
|
||||
|
||||
Then run the migrations:
|
||||
```bash
|
||||
cd packages/db # Required so drizzle picks correct .env file
|
||||
bunx drizzle-kit migrate --config=./drizzle.config.ts
|
||||
```
|
||||
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
import type React from 'react'
|
||||
import { findNeighbour } from 'fumadocs-core/page-tree'
|
||||
import defaultMdxComponents from 'fumadocs-ui/mdx'
|
||||
import { DocsBody, DocsDescription, DocsPage, DocsTitle } from 'fumadocs-ui/page'
|
||||
@@ -10,14 +11,15 @@ import { LLMCopyButton } from '@/components/page-actions'
|
||||
import { StructuredData } from '@/components/structured-data'
|
||||
import { CodeBlock } from '@/components/ui/code-block'
|
||||
import { Heading } from '@/components/ui/heading'
|
||||
import { source } from '@/lib/source'
|
||||
import { type PageData, source } from '@/lib/source'
|
||||
|
||||
export default async function Page(props: { params: Promise<{ slug?: string[]; lang: string }> }) {
|
||||
const params = await props.params
|
||||
const page = source.getPage(params.slug, params.lang)
|
||||
if (!page) notFound()
|
||||
|
||||
const MDX = page.data.body
|
||||
const data = page.data as PageData
|
||||
const MDX = data.body
|
||||
const baseUrl = 'https://docs.sim.ai'
|
||||
|
||||
const pageTreeRecord = source.pageTree as Record<string, any>
|
||||
@@ -51,7 +53,7 @@ export default async function Page(props: { params: Promise<{ slug?: string[]; l
|
||||
|
||||
if (index === urlParts.length - 1) {
|
||||
breadcrumbs.push({
|
||||
name: page.data.title,
|
||||
name: data.title,
|
||||
url: `${baseUrl}${page.url}`,
|
||||
})
|
||||
} else {
|
||||
@@ -168,15 +170,15 @@ export default async function Page(props: { params: Promise<{ slug?: string[]; l
|
||||
return (
|
||||
<>
|
||||
<StructuredData
|
||||
title={page.data.title}
|
||||
description={page.data.description || ''}
|
||||
title={data.title}
|
||||
description={data.description || ''}
|
||||
url={`${baseUrl}${page.url}`}
|
||||
lang={params.lang}
|
||||
breadcrumb={breadcrumbs}
|
||||
/>
|
||||
<DocsPage
|
||||
toc={page.data.toc}
|
||||
full={page.data.full}
|
||||
toc={data.toc}
|
||||
full={data.full}
|
||||
breadcrumb={{
|
||||
enabled: false,
|
||||
}}
|
||||
@@ -207,20 +209,32 @@ export default async function Page(props: { params: Promise<{ slug?: string[]; l
|
||||
</div>
|
||||
<PageNavigationArrows previous={neighbours?.previous} next={neighbours?.next} />
|
||||
</div>
|
||||
<DocsTitle>{page.data.title}</DocsTitle>
|
||||
<DocsDescription>{page.data.description}</DocsDescription>
|
||||
<DocsTitle>{data.title}</DocsTitle>
|
||||
<DocsDescription>{data.description}</DocsDescription>
|
||||
</div>
|
||||
<DocsBody>
|
||||
<MDX
|
||||
components={{
|
||||
...defaultMdxComponents,
|
||||
CodeBlock,
|
||||
h1: (props) => <Heading as='h1' {...props} />,
|
||||
h2: (props) => <Heading as='h2' {...props} />,
|
||||
h3: (props) => <Heading as='h3' {...props} />,
|
||||
h4: (props) => <Heading as='h4' {...props} />,
|
||||
h5: (props) => <Heading as='h5' {...props} />,
|
||||
h6: (props) => <Heading as='h6' {...props} />,
|
||||
h1: (props: React.HTMLAttributes<HTMLHeadingElement>) => (
|
||||
<Heading as='h1' {...props} />
|
||||
),
|
||||
h2: (props: React.HTMLAttributes<HTMLHeadingElement>) => (
|
||||
<Heading as='h2' {...props} />
|
||||
),
|
||||
h3: (props: React.HTMLAttributes<HTMLHeadingElement>) => (
|
||||
<Heading as='h3' {...props} />
|
||||
),
|
||||
h4: (props: React.HTMLAttributes<HTMLHeadingElement>) => (
|
||||
<Heading as='h4' {...props} />
|
||||
),
|
||||
h5: (props: React.HTMLAttributes<HTMLHeadingElement>) => (
|
||||
<Heading as='h5' {...props} />
|
||||
),
|
||||
h6: (props: React.HTMLAttributes<HTMLHeadingElement>) => (
|
||||
<Heading as='h6' {...props} />
|
||||
),
|
||||
}}
|
||||
/>
|
||||
</DocsBody>
|
||||
@@ -240,13 +254,16 @@ export async function generateMetadata(props: {
|
||||
const page = source.getPage(params.slug, params.lang)
|
||||
if (!page) notFound()
|
||||
|
||||
const data = page.data as PageData
|
||||
const baseUrl = 'https://docs.sim.ai'
|
||||
const fullUrl = `${baseUrl}${page.url}`
|
||||
|
||||
const ogImageUrl = `${baseUrl}/api/og?title=${encodeURIComponent(data.title)}`
|
||||
|
||||
return {
|
||||
title: page.data.title,
|
||||
title: data.title,
|
||||
description:
|
||||
page.data.description || 'Sim visual workflow builder for AI applications documentation',
|
||||
data.description || 'Sim visual workflow builder for AI applications documentation',
|
||||
keywords: [
|
||||
'AI workflow builder',
|
||||
'visual workflow editor',
|
||||
@@ -255,16 +272,16 @@ export async function generateMetadata(props: {
|
||||
'AI agents',
|
||||
'no-code AI',
|
||||
'drag and drop workflows',
|
||||
page.data.title?.toLowerCase().split(' '),
|
||||
data.title?.toLowerCase().split(' '),
|
||||
]
|
||||
.flat()
|
||||
.filter(Boolean),
|
||||
authors: [{ name: 'Sim Team' }],
|
||||
category: 'Developer Tools',
|
||||
openGraph: {
|
||||
title: page.data.title,
|
||||
title: data.title,
|
||||
description:
|
||||
page.data.description || 'Sim visual workflow builder for AI applications documentation',
|
||||
data.description || 'Sim visual workflow builder for AI applications documentation',
|
||||
url: fullUrl,
|
||||
siteName: 'Sim Documentation',
|
||||
type: 'article',
|
||||
@@ -272,12 +289,23 @@ export async function generateMetadata(props: {
|
||||
alternateLocale: ['en', 'es', 'fr', 'de', 'ja', 'zh']
|
||||
.filter((lang) => lang !== params.lang)
|
||||
.map((lang) => (lang === 'en' ? 'en_US' : `${lang}_${lang.toUpperCase()}`)),
|
||||
images: [
|
||||
{
|
||||
url: ogImageUrl,
|
||||
width: 1200,
|
||||
height: 630,
|
||||
alt: data.title,
|
||||
},
|
||||
],
|
||||
},
|
||||
twitter: {
|
||||
card: 'summary',
|
||||
title: page.data.title,
|
||||
card: 'summary_large_image',
|
||||
title: data.title,
|
||||
description:
|
||||
page.data.description || 'Sim visual workflow builder for AI applications documentation',
|
||||
data.description || 'Sim visual workflow builder for AI applications documentation',
|
||||
images: [ogImageUrl],
|
||||
creator: '@simdotai',
|
||||
site: '@simdotai',
|
||||
},
|
||||
robots: {
|
||||
index: true,
|
||||
|
||||
23
apps/docs/app/[lang]/not-found.tsx
Normal file
23
apps/docs/app/[lang]/not-found.tsx
Normal file
@@ -0,0 +1,23 @@
|
||||
import { DocsBody, DocsPage } from 'fumadocs-ui/page'
|
||||
|
||||
export const metadata = {
|
||||
title: 'Page Not Found',
|
||||
}
|
||||
|
||||
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-[#8357FF] to-[#6F3DFA] 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>
|
||||
</DocsPage>
|
||||
)
|
||||
}
|
||||
152
apps/docs/app/api/og/route.tsx
Normal file
152
apps/docs/app/api/og/route.tsx
Normal file
@@ -0,0 +1,152 @@
|
||||
import { ImageResponse } from 'next/og'
|
||||
import type { NextRequest } from 'next/server'
|
||||
|
||||
export const runtime = 'edge'
|
||||
|
||||
const TITLE_FONT_SIZE = {
|
||||
large: 64,
|
||||
medium: 56,
|
||||
small: 48,
|
||||
} as const
|
||||
|
||||
function getTitleFontSize(title: string): number {
|
||||
if (title.length > 45) return TITLE_FONT_SIZE.small
|
||||
if (title.length > 30) return TITLE_FONT_SIZE.medium
|
||||
return TITLE_FONT_SIZE.large
|
||||
}
|
||||
|
||||
/**
|
||||
* Loads a Google Font dynamically by fetching the CSS and extracting the font URL.
|
||||
*/
|
||||
async function loadGoogleFont(font: string, weights: string, text: string): Promise<ArrayBuffer> {
|
||||
const url = `https://fonts.googleapis.com/css2?family=${font}:wght@${weights}&text=${encodeURIComponent(text)}`
|
||||
const css = await (await fetch(url)).text()
|
||||
const resource = css.match(/src: url\((.+)\) format\('(opentype|truetype)'\)/)
|
||||
|
||||
if (resource) {
|
||||
const response = await fetch(resource[1])
|
||||
if (response.status === 200) {
|
||||
return await response.arrayBuffer()
|
||||
}
|
||||
}
|
||||
|
||||
throw new Error('Failed to load font data')
|
||||
}
|
||||
|
||||
/**
|
||||
* Generates dynamic Open Graph images for documentation pages.
|
||||
*/
|
||||
export async function GET(request: NextRequest) {
|
||||
const { searchParams } = new URL(request.url)
|
||||
const title = searchParams.get('title') || 'Documentation'
|
||||
|
||||
const baseUrl = new URL(request.url).origin
|
||||
|
||||
const allText = `${title}docs.sim.ai`
|
||||
const fontData = await loadGoogleFont('Geist', '400;500;600', allText)
|
||||
|
||||
return new ImageResponse(
|
||||
<div
|
||||
style={{
|
||||
height: '100%',
|
||||
width: '100%',
|
||||
display: 'flex',
|
||||
flexDirection: 'column',
|
||||
background: '#0c0c0c',
|
||||
position: 'relative',
|
||||
fontFamily: 'Geist',
|
||||
}}
|
||||
>
|
||||
{/* Base gradient layer - subtle purple tint across the entire image */}
|
||||
<div
|
||||
style={{
|
||||
position: 'absolute',
|
||||
top: 0,
|
||||
left: 0,
|
||||
width: '100%',
|
||||
height: '100%',
|
||||
background:
|
||||
'radial-gradient(ellipse 150% 100% at 50% 100%, rgba(88, 28, 135, 0.15) 0%, rgba(88, 28, 135, 0.08) 25%, rgba(88, 28, 135, 0.03) 50%, transparent 80%)',
|
||||
display: 'flex',
|
||||
}}
|
||||
/>
|
||||
|
||||
{/* Secondary glow - adds depth without harsh edges */}
|
||||
<div
|
||||
style={{
|
||||
position: 'absolute',
|
||||
top: 0,
|
||||
left: 0,
|
||||
width: '100%',
|
||||
height: '100%',
|
||||
background:
|
||||
'radial-gradient(ellipse 100% 80% at 80% 90%, rgba(112, 31, 252, 0.12) 0%, rgba(112, 31, 252, 0.04) 40%, transparent 70%)',
|
||||
display: 'flex',
|
||||
}}
|
||||
/>
|
||||
|
||||
{/* Top darkening - creates natural vignette */}
|
||||
<div
|
||||
style={{
|
||||
position: 'absolute',
|
||||
top: 0,
|
||||
left: 0,
|
||||
width: '100%',
|
||||
height: '100%',
|
||||
background:
|
||||
'linear-gradient(180deg, rgba(0, 0, 0, 0.3) 0%, transparent 40%, transparent 100%)',
|
||||
display: 'flex',
|
||||
}}
|
||||
/>
|
||||
|
||||
{/* Content */}
|
||||
<div
|
||||
style={{
|
||||
display: 'flex',
|
||||
flexDirection: 'column',
|
||||
padding: '56px 72px',
|
||||
height: '100%',
|
||||
justifyContent: 'space-between',
|
||||
}}
|
||||
>
|
||||
{/* Logo */}
|
||||
<img src={`${baseUrl}/static/logo.png`} alt='sim' height={32} />
|
||||
|
||||
{/* Title */}
|
||||
<span
|
||||
style={{
|
||||
fontSize: getTitleFontSize(title),
|
||||
fontWeight: 600,
|
||||
color: '#ffffff',
|
||||
lineHeight: 1.1,
|
||||
letterSpacing: '-0.02em',
|
||||
}}
|
||||
>
|
||||
{title}
|
||||
</span>
|
||||
|
||||
{/* Footer */}
|
||||
<span
|
||||
style={{
|
||||
fontSize: 20,
|
||||
fontWeight: 500,
|
||||
color: '#71717a',
|
||||
}}
|
||||
>
|
||||
docs.sim.ai
|
||||
</span>
|
||||
</div>
|
||||
</div>,
|
||||
{
|
||||
width: 1200,
|
||||
height: 630,
|
||||
fonts: [
|
||||
{
|
||||
name: 'Geist',
|
||||
data: fontData,
|
||||
style: 'normal',
|
||||
},
|
||||
],
|
||||
}
|
||||
)
|
||||
}
|
||||
@@ -1,16 +1,126 @@
|
||||
import { createFromSource } from 'fumadocs-core/search/server'
|
||||
import { source } from '@/lib/source'
|
||||
import { sql } from 'drizzle-orm'
|
||||
import { type NextRequest, NextResponse } from 'next/server'
|
||||
import { db, docsEmbeddings } from '@/lib/db'
|
||||
import { generateSearchEmbedding } from '@/lib/embeddings'
|
||||
|
||||
export const revalidate = 3600 // Revalidate every hour
|
||||
export const runtime = 'nodejs'
|
||||
export const revalidate = 0
|
||||
|
||||
export const { GET } = createFromSource(source, {
|
||||
localeMap: {
|
||||
en: { language: 'english' },
|
||||
es: { language: 'spanish' },
|
||||
fr: { language: 'french' },
|
||||
de: { language: 'german' },
|
||||
// ja and zh are not supported by the stemmer library, so we'll skip language config for them
|
||||
ja: {},
|
||||
zh: {},
|
||||
},
|
||||
})
|
||||
/**
|
||||
* Hybrid search API endpoint
|
||||
* - English: Vector embeddings + keyword search
|
||||
* - Other languages: Keyword search only
|
||||
*/
|
||||
export async function GET(request: NextRequest) {
|
||||
try {
|
||||
const searchParams = request.nextUrl.searchParams
|
||||
const query = searchParams.get('query') || searchParams.get('q') || ''
|
||||
const locale = searchParams.get('locale') || 'en'
|
||||
const limit = Number.parseInt(searchParams.get('limit') || '10', 10)
|
||||
|
||||
if (!query || query.trim().length === 0) {
|
||||
return NextResponse.json([])
|
||||
}
|
||||
|
||||
const candidateLimit = limit * 3
|
||||
const similarityThreshold = 0.6
|
||||
|
||||
const localeMap: Record<string, string> = {
|
||||
en: 'english',
|
||||
es: 'spanish',
|
||||
fr: 'french',
|
||||
de: 'german',
|
||||
ja: 'simple', // PostgreSQL doesn't have Japanese support, use simple
|
||||
zh: 'simple', // PostgreSQL doesn't have Chinese support, use simple
|
||||
}
|
||||
const tsConfig = localeMap[locale] || 'simple'
|
||||
|
||||
const useVectorSearch = locale === 'en'
|
||||
let vectorResults: Array<{
|
||||
chunkId: string
|
||||
chunkText: string
|
||||
sourceDocument: string
|
||||
sourceLink: string
|
||||
headerText: string
|
||||
headerLevel: number
|
||||
similarity: number
|
||||
searchType: string
|
||||
}> = []
|
||||
|
||||
if (useVectorSearch) {
|
||||
const queryEmbedding = await generateSearchEmbedding(query)
|
||||
vectorResults = await db
|
||||
.select({
|
||||
chunkId: docsEmbeddings.chunkId,
|
||||
chunkText: docsEmbeddings.chunkText,
|
||||
sourceDocument: docsEmbeddings.sourceDocument,
|
||||
sourceLink: docsEmbeddings.sourceLink,
|
||||
headerText: docsEmbeddings.headerText,
|
||||
headerLevel: docsEmbeddings.headerLevel,
|
||||
similarity: sql<number>`1 - (${docsEmbeddings.embedding} <=> ${JSON.stringify(queryEmbedding)}::vector)`,
|
||||
searchType: sql<string>`'vector'`,
|
||||
})
|
||||
.from(docsEmbeddings)
|
||||
.where(
|
||||
sql`1 - (${docsEmbeddings.embedding} <=> ${JSON.stringify(queryEmbedding)}::vector) >= ${similarityThreshold}`
|
||||
)
|
||||
.orderBy(sql`${docsEmbeddings.embedding} <=> ${JSON.stringify(queryEmbedding)}::vector`)
|
||||
.limit(candidateLimit)
|
||||
}
|
||||
|
||||
const keywordResults = await db
|
||||
.select({
|
||||
chunkId: docsEmbeddings.chunkId,
|
||||
chunkText: docsEmbeddings.chunkText,
|
||||
sourceDocument: docsEmbeddings.sourceDocument,
|
||||
sourceLink: docsEmbeddings.sourceLink,
|
||||
headerText: docsEmbeddings.headerText,
|
||||
headerLevel: docsEmbeddings.headerLevel,
|
||||
similarity: sql<number>`ts_rank(${docsEmbeddings.chunkTextTsv}, plainto_tsquery(${tsConfig}, ${query}))`,
|
||||
searchType: sql<string>`'keyword'`,
|
||||
})
|
||||
.from(docsEmbeddings)
|
||||
.where(sql`${docsEmbeddings.chunkTextTsv} @@ plainto_tsquery(${tsConfig}, ${query})`)
|
||||
.orderBy(
|
||||
sql`ts_rank(${docsEmbeddings.chunkTextTsv}, plainto_tsquery(${tsConfig}, ${query})) DESC`
|
||||
)
|
||||
.limit(candidateLimit)
|
||||
|
||||
const seenIds = new Set<string>()
|
||||
const mergedResults = []
|
||||
|
||||
for (let i = 0; i < Math.max(vectorResults.length, keywordResults.length); i++) {
|
||||
if (i < vectorResults.length && !seenIds.has(vectorResults[i].chunkId)) {
|
||||
mergedResults.push(vectorResults[i])
|
||||
seenIds.add(vectorResults[i].chunkId)
|
||||
}
|
||||
if (i < keywordResults.length && !seenIds.has(keywordResults[i].chunkId)) {
|
||||
mergedResults.push(keywordResults[i])
|
||||
seenIds.add(keywordResults[i].chunkId)
|
||||
}
|
||||
}
|
||||
|
||||
const filteredResults = mergedResults.slice(0, limit)
|
||||
const searchResults = filteredResults.map((result) => {
|
||||
const title = result.headerText || result.sourceDocument.replace('.mdx', '')
|
||||
const pathParts = result.sourceDocument
|
||||
.replace('.mdx', '')
|
||||
.split('/')
|
||||
.map((part) => part.charAt(0).toUpperCase() + part.slice(1))
|
||||
|
||||
return {
|
||||
id: result.chunkId,
|
||||
type: 'page' as const,
|
||||
url: result.sourceLink,
|
||||
content: title,
|
||||
breadcrumbs: pathParts,
|
||||
}
|
||||
})
|
||||
|
||||
return NextResponse.json(searchResults)
|
||||
} catch (error) {
|
||||
console.error('Semantic search error:', error)
|
||||
|
||||
return NextResponse.json([])
|
||||
}
|
||||
}
|
||||
|
||||
@@ -56,6 +56,14 @@ export const metadata = {
|
||||
title: 'Sim Documentation - Visual Workflow Builder for AI Applications',
|
||||
description:
|
||||
'Comprehensive documentation for Sim - the visual workflow builder for AI applications. Create powerful AI agents, automation workflows, and data processing pipelines.',
|
||||
images: [
|
||||
{
|
||||
url: 'https://docs.sim.ai/api/og?title=Sim%20Documentation',
|
||||
width: 1200,
|
||||
height: 630,
|
||||
alt: 'Sim Documentation',
|
||||
},
|
||||
],
|
||||
},
|
||||
twitter: {
|
||||
card: 'summary_large_image',
|
||||
@@ -64,7 +72,7 @@ export const metadata = {
|
||||
'Comprehensive documentation for Sim - the visual workflow builder for AI applications.',
|
||||
creator: '@simdotai',
|
||||
site: '@simdotai',
|
||||
images: ['/og-image.png'],
|
||||
images: ['https://docs.sim.ai/api/og?title=Sim%20Documentation'],
|
||||
},
|
||||
robots: {
|
||||
index: true,
|
||||
|
||||
@@ -6,7 +6,10 @@ import { source } from '@/lib/source'
|
||||
|
||||
export const revalidate = false
|
||||
|
||||
export async function GET(_req: NextRequest, { params }: { params: Promise<{ slug?: string[] }> }) {
|
||||
export async function GET(
|
||||
_request: NextRequest,
|
||||
{ params }: { params: Promise<{ slug?: string[] }> }
|
||||
) {
|
||||
const { slug } = await params
|
||||
|
||||
let lang: (typeof i18n.languages)[number] = i18n.defaultLanguage
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -13,6 +13,7 @@ import {
|
||||
BrainIcon,
|
||||
BrowserUseIcon,
|
||||
CalendlyIcon,
|
||||
CirclebackIcon,
|
||||
ClayIcon,
|
||||
ConfluenceIcon,
|
||||
CursorIcon,
|
||||
@@ -27,6 +28,7 @@ import {
|
||||
ExaAIIcon,
|
||||
EyeIcon,
|
||||
FirecrawlIcon,
|
||||
FirefliesIcon,
|
||||
GithubIcon,
|
||||
GitLabIcon,
|
||||
GmailIcon,
|
||||
@@ -40,6 +42,8 @@ import {
|
||||
GoogleSlidesIcon,
|
||||
GoogleVaultIcon,
|
||||
GrafanaIcon,
|
||||
GrainIcon,
|
||||
GreptileIcon,
|
||||
HubspotIcon,
|
||||
HuggingFaceIcon,
|
||||
HunterIOIcon,
|
||||
@@ -48,12 +52,14 @@ import {
|
||||
IntercomIcon,
|
||||
JinaAIIcon,
|
||||
JiraIcon,
|
||||
JiraServiceManagementIcon,
|
||||
KalshiIcon,
|
||||
LinearIcon,
|
||||
LinkedInIcon,
|
||||
LinkupIcon,
|
||||
MailchimpIcon,
|
||||
MailgunIcon,
|
||||
MailServerIcon,
|
||||
Mem0Icon,
|
||||
MicrosoftExcelIcon,
|
||||
MicrosoftOneDriveIcon,
|
||||
@@ -75,7 +81,6 @@ import {
|
||||
PolymarketIcon,
|
||||
PostgresIcon,
|
||||
PosthogIcon,
|
||||
PylonIcon,
|
||||
QdrantIcon,
|
||||
RDSIcon,
|
||||
RedditIcon,
|
||||
@@ -86,10 +91,13 @@ import {
|
||||
SendgridIcon,
|
||||
SentryIcon,
|
||||
SerperIcon,
|
||||
ServiceNowIcon,
|
||||
SftpIcon,
|
||||
ShopifyIcon,
|
||||
SlackIcon,
|
||||
SmtpIcon,
|
||||
SpotifyIcon,
|
||||
SQSIcon,
|
||||
SshIcon,
|
||||
STTIcon,
|
||||
StagehandIcon,
|
||||
@@ -118,116 +126,123 @@ import {
|
||||
type IconComponent = ComponentType<SVGProps<SVGSVGElement>>
|
||||
|
||||
export const blockTypeToIconMap: Record<string, IconComponent> = {
|
||||
zoom: ZoomIcon,
|
||||
zep: ZepIcon,
|
||||
zendesk: ZendeskIcon,
|
||||
youtube: YouTubeIcon,
|
||||
x: xIcon,
|
||||
wordpress: WordpressIcon,
|
||||
wikipedia: WikipediaIcon,
|
||||
whatsapp: WhatsAppIcon,
|
||||
webflow: WebflowIcon,
|
||||
wealthbox: WealthboxIcon,
|
||||
vision: EyeIcon,
|
||||
video_generator: VideoIcon,
|
||||
typeform: TypeformIcon,
|
||||
twilio_voice: TwilioIcon,
|
||||
twilio_sms: TwilioIcon,
|
||||
tts: TTSIcon,
|
||||
trello: TrelloIcon,
|
||||
translate: TranslateIcon,
|
||||
thinking: BrainIcon,
|
||||
telegram: TelegramIcon,
|
||||
tavily: TavilyIcon,
|
||||
supabase: SupabaseIcon,
|
||||
stt: STTIcon,
|
||||
stripe: StripeIcon,
|
||||
stagehand_agent: StagehandIcon,
|
||||
stagehand: StagehandIcon,
|
||||
ssh: SshIcon,
|
||||
smtp: SmtpIcon,
|
||||
slack: SlackIcon,
|
||||
shopify: ShopifyIcon,
|
||||
sharepoint: MicrosoftSharepointIcon,
|
||||
sftp: SftpIcon,
|
||||
serper: SerperIcon,
|
||||
sentry: SentryIcon,
|
||||
sendgrid: SendgridIcon,
|
||||
search: SearchIcon,
|
||||
salesforce: SalesforceIcon,
|
||||
s3: S3Icon,
|
||||
resend: ResendIcon,
|
||||
reddit: RedditIcon,
|
||||
rds: RDSIcon,
|
||||
qdrant: QdrantIcon,
|
||||
pylon: PylonIcon,
|
||||
posthog: PosthogIcon,
|
||||
postgresql: PostgresIcon,
|
||||
polymarket: PolymarketIcon,
|
||||
pipedrive: PipedriveIcon,
|
||||
pinecone: PineconeIcon,
|
||||
perplexity: PerplexityIcon,
|
||||
parallel_ai: ParallelIcon,
|
||||
outlook: OutlookIcon,
|
||||
openai: OpenAIIcon,
|
||||
onedrive: MicrosoftOneDriveIcon,
|
||||
notion: NotionIcon,
|
||||
neo4j: Neo4jIcon,
|
||||
mysql: MySQLIcon,
|
||||
mongodb: MongoDBIcon,
|
||||
mistral_parse: MistralIcon,
|
||||
microsoft_teams: MicrosoftTeamsIcon,
|
||||
microsoft_planner: MicrosoftPlannerIcon,
|
||||
microsoft_excel: MicrosoftExcelIcon,
|
||||
memory: BrainIcon,
|
||||
mem0: Mem0Icon,
|
||||
mailgun: MailgunIcon,
|
||||
mailchimp: MailchimpIcon,
|
||||
linkup: LinkupIcon,
|
||||
linkedin: LinkedInIcon,
|
||||
linear: LinearIcon,
|
||||
knowledge: PackageSearchIcon,
|
||||
kalshi: KalshiIcon,
|
||||
jira: JiraIcon,
|
||||
jina: JinaAIIcon,
|
||||
intercom: IntercomIcon,
|
||||
incidentio: IncidentioIcon,
|
||||
image_generator: ImageIcon,
|
||||
hunter: HunterIOIcon,
|
||||
huggingface: HuggingFaceIcon,
|
||||
hubspot: HubspotIcon,
|
||||
grafana: GrafanaIcon,
|
||||
google_vault: GoogleVaultIcon,
|
||||
google_slides: GoogleSlidesIcon,
|
||||
google_sheets: GoogleSheetsIcon,
|
||||
google_groups: GoogleGroupsIcon,
|
||||
google_forms: GoogleFormsIcon,
|
||||
google_drive: GoogleDriveIcon,
|
||||
google_docs: GoogleDocsIcon,
|
||||
google_calendar: GoogleCalendarIcon,
|
||||
google_search: GoogleIcon,
|
||||
gmail: GmailIcon,
|
||||
gitlab: GitLabIcon,
|
||||
github: GithubIcon,
|
||||
firecrawl: FirecrawlIcon,
|
||||
file: DocumentIcon,
|
||||
exa: ExaAIIcon,
|
||||
elevenlabs: ElevenLabsIcon,
|
||||
elasticsearch: ElasticsearchIcon,
|
||||
dynamodb: DynamoDBIcon,
|
||||
duckduckgo: DuckDuckGoIcon,
|
||||
dropbox: DropboxIcon,
|
||||
discord: DiscordIcon,
|
||||
datadog: DatadogIcon,
|
||||
cursor: CursorIcon,
|
||||
confluence: ConfluenceIcon,
|
||||
clay: ClayIcon,
|
||||
calendly: CalendlyIcon,
|
||||
browser_use: BrowserUseIcon,
|
||||
asana: AsanaIcon,
|
||||
arxiv: ArxivIcon,
|
||||
apollo: ApolloIcon,
|
||||
apify: ApifyIcon,
|
||||
airtable: AirtableIcon,
|
||||
ahrefs: AhrefsIcon,
|
||||
airtable: AirtableIcon,
|
||||
apify: ApifyIcon,
|
||||
apollo: ApolloIcon,
|
||||
arxiv: ArxivIcon,
|
||||
asana: AsanaIcon,
|
||||
browser_use: BrowserUseIcon,
|
||||
calendly: CalendlyIcon,
|
||||
circleback: CirclebackIcon,
|
||||
clay: ClayIcon,
|
||||
confluence: ConfluenceIcon,
|
||||
cursor: CursorIcon,
|
||||
datadog: DatadogIcon,
|
||||
discord: DiscordIcon,
|
||||
dropbox: DropboxIcon,
|
||||
duckduckgo: DuckDuckGoIcon,
|
||||
dynamodb: DynamoDBIcon,
|
||||
elasticsearch: ElasticsearchIcon,
|
||||
elevenlabs: ElevenLabsIcon,
|
||||
exa: ExaAIIcon,
|
||||
file: DocumentIcon,
|
||||
firecrawl: FirecrawlIcon,
|
||||
fireflies: FirefliesIcon,
|
||||
github: GithubIcon,
|
||||
gitlab: GitLabIcon,
|
||||
gmail: GmailIcon,
|
||||
google_calendar: GoogleCalendarIcon,
|
||||
google_docs: GoogleDocsIcon,
|
||||
google_drive: GoogleDriveIcon,
|
||||
google_forms: GoogleFormsIcon,
|
||||
google_groups: GoogleGroupsIcon,
|
||||
google_search: GoogleIcon,
|
||||
google_sheets: GoogleSheetsIcon,
|
||||
google_slides: GoogleSlidesIcon,
|
||||
google_vault: GoogleVaultIcon,
|
||||
grafana: GrafanaIcon,
|
||||
grain: GrainIcon,
|
||||
greptile: GreptileIcon,
|
||||
hubspot: HubspotIcon,
|
||||
huggingface: HuggingFaceIcon,
|
||||
hunter: HunterIOIcon,
|
||||
image_generator: ImageIcon,
|
||||
imap: MailServerIcon,
|
||||
incidentio: IncidentioIcon,
|
||||
intercom: IntercomIcon,
|
||||
jina: JinaAIIcon,
|
||||
jira: JiraIcon,
|
||||
jira_service_management: JiraServiceManagementIcon,
|
||||
kalshi: KalshiIcon,
|
||||
knowledge: PackageSearchIcon,
|
||||
linear: LinearIcon,
|
||||
linkedin: LinkedInIcon,
|
||||
linkup: LinkupIcon,
|
||||
mailchimp: MailchimpIcon,
|
||||
mailgun: MailgunIcon,
|
||||
mem0: Mem0Icon,
|
||||
memory: BrainIcon,
|
||||
microsoft_excel: MicrosoftExcelIcon,
|
||||
microsoft_planner: MicrosoftPlannerIcon,
|
||||
microsoft_teams: MicrosoftTeamsIcon,
|
||||
mistral_parse: MistralIcon,
|
||||
mongodb: MongoDBIcon,
|
||||
mysql: MySQLIcon,
|
||||
neo4j: Neo4jIcon,
|
||||
notion: NotionIcon,
|
||||
onedrive: MicrosoftOneDriveIcon,
|
||||
openai: OpenAIIcon,
|
||||
outlook: OutlookIcon,
|
||||
parallel_ai: ParallelIcon,
|
||||
perplexity: PerplexityIcon,
|
||||
pinecone: PineconeIcon,
|
||||
pipedrive: PipedriveIcon,
|
||||
polymarket: PolymarketIcon,
|
||||
postgresql: PostgresIcon,
|
||||
posthog: PosthogIcon,
|
||||
qdrant: QdrantIcon,
|
||||
rds: RDSIcon,
|
||||
reddit: RedditIcon,
|
||||
resend: ResendIcon,
|
||||
s3: S3Icon,
|
||||
salesforce: SalesforceIcon,
|
||||
search: SearchIcon,
|
||||
sendgrid: SendgridIcon,
|
||||
sentry: SentryIcon,
|
||||
serper: SerperIcon,
|
||||
servicenow: ServiceNowIcon,
|
||||
sftp: SftpIcon,
|
||||
sharepoint: MicrosoftSharepointIcon,
|
||||
shopify: ShopifyIcon,
|
||||
slack: SlackIcon,
|
||||
smtp: SmtpIcon,
|
||||
spotify: SpotifyIcon,
|
||||
sqs: SQSIcon,
|
||||
ssh: SshIcon,
|
||||
stagehand: StagehandIcon,
|
||||
stripe: StripeIcon,
|
||||
stt: STTIcon,
|
||||
supabase: SupabaseIcon,
|
||||
tavily: TavilyIcon,
|
||||
telegram: TelegramIcon,
|
||||
thinking: BrainIcon,
|
||||
translate: TranslateIcon,
|
||||
trello: TrelloIcon,
|
||||
tts: TTSIcon,
|
||||
twilio_sms: TwilioIcon,
|
||||
twilio_voice: TwilioIcon,
|
||||
typeform: TypeformIcon,
|
||||
video_generator: VideoIcon,
|
||||
vision: EyeIcon,
|
||||
wealthbox: WealthboxIcon,
|
||||
webflow: WebflowIcon,
|
||||
whatsapp: WhatsAppIcon,
|
||||
wikipedia: WikipediaIcon,
|
||||
wordpress: WordpressIcon,
|
||||
x: xIcon,
|
||||
youtube: YouTubeIcon,
|
||||
zendesk: ZendeskIcon,
|
||||
zep: ZepIcon,
|
||||
zoom: ZoomIcon,
|
||||
}
|
||||
|
||||
89
apps/docs/content/docs/de/blocks/webhook.mdx
Normal file
89
apps/docs/content/docs/de/blocks/webhook.mdx
Normal file
@@ -0,0 +1,89 @@
|
||||
---
|
||||
title: Webhook
|
||||
---
|
||||
|
||||
import { Callout } from 'fumadocs-ui/components/callout'
|
||||
import { Image } from '@/components/ui/image'
|
||||
|
||||
Der Webhook-Block sendet HTTP-POST-Anfragen an externe Webhook-Endpunkte mit automatischen Webhook-Headern und optionaler HMAC-Signierung.
|
||||
|
||||
<div className="flex justify-center">
|
||||
<Image
|
||||
src="/static/blocks/webhook.png"
|
||||
alt="Webhook-Block"
|
||||
width={500}
|
||||
height={400}
|
||||
className="my-6"
|
||||
/>
|
||||
</div>
|
||||
|
||||
## Konfiguration
|
||||
|
||||
### Webhook-URL
|
||||
|
||||
Der Ziel-Endpunkt für Ihre Webhook-Anfrage. Unterstützt sowohl statische URLs als auch dynamische Werte aus anderen Blöcken.
|
||||
|
||||
### Payload
|
||||
|
||||
JSON-Daten, die im Anfrage-Body gesendet werden. Verwenden Sie den KI-Zauberstab, um Payloads zu generieren oder auf Workflow-Variablen zu verweisen:
|
||||
|
||||
```json
|
||||
{
|
||||
"event": "workflow.completed",
|
||||
"data": {
|
||||
"result": "<agent.content>",
|
||||
"timestamp": "<function.result>"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Signierungsgeheimnis
|
||||
|
||||
Optionales Geheimnis für die HMAC-SHA256-Payload-Signierung. Wenn angegeben, wird ein `X-Webhook-Signature`Header hinzugefügt:
|
||||
|
||||
```
|
||||
X-Webhook-Signature: t=1704067200000,v1=5d41402abc4b2a76b9719d911017c592...
|
||||
```
|
||||
|
||||
Um Signaturen zu verifizieren, berechnen Sie `HMAC-SHA256(secret, "${timestamp}.${body}")` und vergleichen Sie mit dem `v1`Wert.
|
||||
|
||||
### Zusätzliche Header
|
||||
|
||||
Benutzerdefinierte Schlüssel-Wert-Header, die in die Anfrage aufgenommen werden. Diese überschreiben alle automatischen Header mit demselben Namen.
|
||||
|
||||
## Automatische Header
|
||||
|
||||
Jede Anfrage enthält automatisch diese Header:
|
||||
|
||||
| Header | Beschreibung |
|
||||
|--------|-------------|
|
||||
| `Content-Type` | `application/json` |
|
||||
| `X-Webhook-Timestamp` | Unix-Zeitstempel in Millisekunden |
|
||||
| `X-Delivery-ID` | Eindeutige UUID für diese Zustellung |
|
||||
| `Idempotency-Key` | Identisch mit `X-Delivery-ID` zur Deduplizierung |
|
||||
|
||||
## Ausgaben
|
||||
|
||||
| Ausgabe | Typ | Beschreibung |
|
||||
|--------|------|-------------|
|
||||
| `data` | json | Antwort-Body vom Endpunkt |
|
||||
| `status` | number | HTTP-Statuscode |
|
||||
| `headers` | object | Antwort-Header |
|
||||
|
||||
## Beispiel-Anwendungsfälle
|
||||
|
||||
**Externe Dienste benachrichtigen** - Workflow-Ergebnisse an Slack, Discord oder benutzerdefinierte Endpunkte senden
|
||||
|
||||
```
|
||||
Agent → Function (format) → Webhook (notify)
|
||||
```
|
||||
|
||||
**Externe Workflows auslösen** - Prozesse in anderen Systemen starten, wenn Bedingungen erfüllt sind
|
||||
|
||||
```
|
||||
Condition (check) → Webhook (trigger) → Response
|
||||
```
|
||||
|
||||
<Callout>
|
||||
Der Webhook-Block verwendet immer POST. Für andere HTTP-Methoden oder mehr Kontrolle verwenden Sie den [API-Block](/blocks/api).
|
||||
</Callout>
|
||||
@@ -111,26 +111,24 @@ Verschiedene Blocktypen erzeugen unterschiedliche Ausgabestrukturen. Hier ist, w
|
||||
|
||||
```json
|
||||
{
|
||||
"content": "Original content passed through",
|
||||
"conditionResult": true,
|
||||
"selectedPath": {
|
||||
"blockId": "2acd9007-27e8-4510-a487-73d3b825e7c1",
|
||||
"blockType": "agent",
|
||||
"blockTitle": "Follow-up Agent"
|
||||
},
|
||||
"selectedConditionId": "condition-1"
|
||||
"selectedOption": "condition-1"
|
||||
}
|
||||
```
|
||||
|
||||
### Ausgabefelder des Condition-Blocks
|
||||
|
||||
- **content**: Der ursprüngliche, durchgeleitete Inhalt
|
||||
- **conditionResult**: Boolesches Ergebnis der Bedingungsauswertung
|
||||
- **selectedPath**: Informationen über den ausgewählten Pfad
|
||||
- **blockId**: ID des nächsten Blocks im ausgewählten Pfad
|
||||
- **blockType**: Typ des nächsten Blocks
|
||||
- **blockTitle**: Titel des nächsten Blocks
|
||||
- **selectedConditionId**: ID der ausgewählten Bedingung
|
||||
- **selectedOption**: ID der ausgewählten Bedingung
|
||||
|
||||
</Tab>
|
||||
<Tab>
|
||||
|
||||
@@ -49,40 +49,40 @@ Die Modellaufschlüsselung zeigt:
|
||||
|
||||
<Tabs items={['Hosted Models', 'Bring Your Own API Key']}>
|
||||
<Tab>
|
||||
**Gehostete Modelle** - Sim stellt API-Schlüssel mit einem 2,5-fachen Preismultiplikator bereit:
|
||||
**Gehostete Modelle** - Sim stellt API-Schlüssel mit einem 2-fachen Preismultiplikator bereit:
|
||||
|
||||
**OpenAI**
|
||||
| Modell | Basispreis (Eingabe/Ausgabe) | Gehosteter Preis (Eingabe/Ausgabe) |
|
||||
|-------|---------------------------|----------------------------|
|
||||
| GPT-5.1 | $1,25 / $10,00 | $3,13 / $25,00 |
|
||||
| GPT-5 | $1,25 / $10,00 | $3,13 / $25,00 |
|
||||
| GPT-5 Mini | $0,25 / $2,00 | $0,63 / $5,00 |
|
||||
| GPT-5 Nano | $0,05 / $0,40 | $0,13 / $1,00 |
|
||||
| GPT-4o | $2,50 / $10,00 | $6,25 / $25,00 |
|
||||
| GPT-4.1 | $2,00 / $8,00 | $5,00 / $20,00 |
|
||||
| GPT-4.1 Mini | $0,40 / $1,60 | $1,00 / $4,00 |
|
||||
| GPT-4.1 Nano | $0,10 / $0,40 | $0,25 / $1,00 |
|
||||
| o1 | $15,00 / $60,00 | $37,50 / $150,00 |
|
||||
| o3 | $2,00 / $8,00 | $5,00 / $20,00 |
|
||||
| o4 Mini | $1,10 / $4,40 | $2,75 / $11,00 |
|
||||
| GPT-5.1 | 1,25 $ / 10,00 $ | 2,50 $ / 20,00 $ |
|
||||
| GPT-5 | 1,25 $ / 10,00 $ | 2,50 $ / 20,00 $ |
|
||||
| GPT-5 Mini | 0,25 $ / 2,00 $ | 0,50 $ / 4,00 $ |
|
||||
| GPT-5 Nano | 0,05 $ / 0,40 $ | 0,10 $ / 0,80 $ |
|
||||
| GPT-4o | 2,50 $ / 10,00 $ | 5,00 $ / 20,00 $ |
|
||||
| GPT-4.1 | 2,00 $ / 8,00 $ | 4,00 $ / 16,00 $ |
|
||||
| GPT-4.1 Mini | 0,40 $ / 1,60 $ | 0,80 $ / 3,20 $ |
|
||||
| GPT-4.1 Nano | 0,10 $ / 0,40 $ | 0,20 $ / 0,80 $ |
|
||||
| o1 | 15,00 $ / 60,00 $ | 30,00 $ / 120,00 $ |
|
||||
| o3 | 2,00 $ / 8,00 $ | 4,00 $ / 16,00 $ |
|
||||
| o4 Mini | 1,10 $ / 4,40 $ | 2,20 $ / 8,80 $ |
|
||||
|
||||
**Anthropic**
|
||||
| Modell | Basispreis (Eingabe/Ausgabe) | Gehosteter Preis (Eingabe/Ausgabe) |
|
||||
|-------|---------------------------|----------------------------|
|
||||
| Claude Opus 4.5 | $5,00 / $25,00 | $12,50 / $62,50 |
|
||||
| Claude Opus 4.1 | $15,00 / $75,00 | $37,50 / $187,50 |
|
||||
| Claude Sonnet 4.5 | $3,00 / $15,00 | $7,50 / $37,50 |
|
||||
| Claude Sonnet 4.0 | $3,00 / $15,00 | $7,50 / $37,50 |
|
||||
| Claude Haiku 4.5 | $1,00 / $5,00 | $2,50 / $12,50 |
|
||||
| Claude Opus 4.5 | 5,00 $ / 25,00 $ | 10,00 $ / 50,00 $ |
|
||||
| Claude Opus 4.1 | 15,00 $ / 75,00 $ | 30,00 $ / 150,00 $ |
|
||||
| Claude Sonnet 4.5 | 3,00 $ / 15,00 $ | 6,00 $ / 30,00 $ |
|
||||
| Claude Sonnet 4.0 | 3,00 $ / 15,00 $ | 6,00 $ / 30,00 $ |
|
||||
| Claude Haiku 4.5 | 1,00 $ / 5,00 $ | 2,00 $ / 10,00 $ |
|
||||
|
||||
**Google**
|
||||
| Modell | Basispreis (Eingabe/Ausgabe) | Gehosteter Preis (Eingabe/Ausgabe) |
|
||||
|-------|---------------------------|----------------------------|
|
||||
| Gemini 3 Pro Preview | $2,00 / $12,00 | $5,00 / $30,00 |
|
||||
| Gemini 2.5 Pro | $0,15 / $0,60 | $0,38 / $1,50 |
|
||||
| Gemini 2.5 Flash | $0,15 / $0,60 | $0,38 / $1,50 |
|
||||
| Gemini 3 Pro Preview | 2,00 $ / 12,00 $ | 4,00 $ / 24,00 $ |
|
||||
| Gemini 2.5 Pro | 1,25 $ / 10,00 $ | 2,50 $ / 20,00 $ |
|
||||
| Gemini 2.5 Flash | 0,30 $ / 2,50 $ | 0,60 $ / 5,00 $ |
|
||||
|
||||
*Der 2,5-fache Multiplikator deckt Infrastruktur- und API-Verwaltungskosten ab.*
|
||||
*Der 2x-Multiplikator deckt Infrastruktur- und API-Verwaltungskosten ab.*
|
||||
</Tab>
|
||||
|
||||
<Tab>
|
||||
@@ -105,28 +105,32 @@ Die Modellaufschlüsselung zeigt:
|
||||
Die angezeigten Preise entsprechen den Tarifen vom 10. September 2025. Überprüfen Sie die Dokumentation der Anbieter für aktuelle Preise.
|
||||
</Callout>
|
||||
|
||||
## Bring Your Own Key (BYOK)
|
||||
|
||||
Sie können Ihre eigenen API-Schlüssel für gehostete Modelle (OpenAI, Anthropic, Google, Mistral) unter **Einstellungen → BYOK** verwenden, um Basispreise zu zahlen. Schlüssel werden verschlüsselt und gelten arbeitsbereichsweit.
|
||||
|
||||
## Strategien zur Kostenoptimierung
|
||||
|
||||
- **Modellauswahl**: Wählen Sie Modelle basierend auf der Komplexität der Aufgabe. Einfache Aufgaben können GPT-4.1-nano verwenden, während komplexes Denken möglicherweise o1 oder Claude Opus erfordert.
|
||||
- **Prompt-Engineering**: Gut strukturierte, präzise Prompts reduzieren den Token-Verbrauch ohne Qualitätseinbußen.
|
||||
- **Modellauswahl**: Wählen Sie Modelle basierend auf der Aufgabenkomplexität. Einfache Aufgaben können GPT-4.1-nano verwenden, während komplexes Reasoning o1 oder Claude Opus erfordern könnte.
|
||||
- **Prompt Engineering**: Gut strukturierte, prägnante Prompts reduzieren den Token-Verbrauch ohne Qualitätsverlust.
|
||||
- **Lokale Modelle**: Verwenden Sie Ollama oder VLLM für unkritische Aufgaben, um API-Kosten vollständig zu eliminieren.
|
||||
- **Caching und Wiederverwendung**: Speichern Sie häufig verwendete Ergebnisse in Variablen oder Dateien, um wiederholte KI-Modellaufrufe zu vermeiden.
|
||||
- **Batch-Verarbeitung**: Verarbeiten Sie mehrere Elemente in einer einzigen KI-Anfrage anstatt einzelne Aufrufe zu tätigen.
|
||||
- **Caching und Wiederverwendung**: Speichern Sie häufig verwendete Ergebnisse in Variablen oder Dateien, um wiederholte AI-Modellaufrufe zu vermeiden.
|
||||
- **Batch-Verarbeitung**: Verarbeiten Sie mehrere Elemente in einer einzigen AI-Anfrage, anstatt einzelne Aufrufe zu tätigen.
|
||||
|
||||
## Nutzungsüberwachung
|
||||
|
||||
Überwachen Sie Ihre Nutzung und Abrechnung unter Einstellungen → Abonnement:
|
||||
|
||||
- **Aktuelle Nutzung**: Echtzeit-Nutzung und -Kosten für den aktuellen Zeitraum
|
||||
- **Nutzungslimits**: Plangrenzen mit visuellen Fortschrittsanzeigen
|
||||
- **Aktuelle Nutzung**: Echtzeit-Nutzung und Kosten für den aktuellen Zeitraum
|
||||
- **Nutzungslimits**: Plan-Limits mit visuellen Fortschrittsindikatoren
|
||||
- **Abrechnungsdetails**: Prognostizierte Gebühren und Mindestverpflichtungen
|
||||
- **Planverwaltung**: Upgrade-Optionen und Abrechnungsverlauf
|
||||
- **Plan-Verwaltung**: Upgrade-Optionen und Abrechnungsverlauf
|
||||
|
||||
### Programmatische Nutzungsverfolgung
|
||||
### Programmatisches Nutzungs-Tracking
|
||||
|
||||
Sie können Ihre aktuelle Nutzung und Limits programmatisch über die API abfragen:
|
||||
|
||||
**Endpunkt:**
|
||||
**Endpoint:**
|
||||
|
||||
```text
|
||||
GET /api/users/me/usage-limits
|
||||
@@ -172,69 +176,69 @@ curl -X GET -H "X-API-Key: YOUR_API_KEY" -H "Content-Type: application/json" htt
|
||||
```
|
||||
|
||||
**Rate-Limit-Felder:**
|
||||
- `requestsPerMinute`: Dauerhafte Rate-Begrenzung (Tokens werden mit dieser Rate aufgefüllt)
|
||||
- `maxBurst`: Maximale Tokens, die Sie ansammeln können (Burst-Kapazität)
|
||||
- `remaining`: Aktuell verfügbare Tokens (können bis zu `maxBurst` sein)
|
||||
- `requestsPerMinute`: Dauerhaftes Rate-Limit (Tokens werden mit dieser Rate aufgefüllt)
|
||||
- `maxBurst`: Maximale Tokens, die Sie akkumulieren können (Burst-Kapazität)
|
||||
- `remaining`: Aktuell verfügbare Tokens (kann bis zu `maxBurst` betragen)
|
||||
|
||||
**Antwortfelder:**
|
||||
- `currentPeriodCost` spiegelt die Nutzung in der aktuellen Abrechnungsperiode wider
|
||||
- `limit` wird von individuellen Limits (Free/Pro) oder gepoolten Organisationslimits (Team/Enterprise) abgeleitet
|
||||
- `plan` ist der aktive Plan mit der höchsten Priorität, der mit Ihrem Benutzer verknüpft ist
|
||||
- `currentPeriodCost` spiegelt die Nutzung im aktuellen Abrechnungszeitraum wider
|
||||
- `limit` wird aus individuellen Limits (Free/Pro) oder gepoolten Organisationslimits (Team/Enterprise) abgeleitet
|
||||
- `plan` ist der Plan mit der höchsten Priorität, der Ihrem Benutzer zugeordnet ist
|
||||
|
||||
## Plan-Limits
|
||||
|
||||
Verschiedene Abonnementpläne haben unterschiedliche Nutzungslimits:
|
||||
Verschiedene Abonnement-Pläne haben unterschiedliche Nutzungslimits:
|
||||
|
||||
| Plan | Monatliches Nutzungslimit | Rate-Limits (pro Minute) |
|
||||
| Plan | Monatliches Nutzungslimit | Ratenlimits (pro Minute) |
|
||||
|------|-------------------|-------------------------|
|
||||
| **Free** | $10 | 5 sync, 10 async |
|
||||
| **Pro** | $100 | 10 sync, 50 async |
|
||||
| **Team** | $500 (gepoolt) | 50 sync, 100 async |
|
||||
| **Free** | 20 $ | 5 sync, 10 async |
|
||||
| **Pro** | 100 $ | 10 sync, 50 async |
|
||||
| **Team** | 500 $ (gemeinsam) | 50 sync, 100 async |
|
||||
| **Enterprise** | Individuell | Individuell |
|
||||
|
||||
## Abrechnungsmodell
|
||||
|
||||
Sim verwendet ein **Basisabonnement + Mehrverbrauch**-Abrechnungsmodell:
|
||||
Sim verwendet ein **Basis-Abonnement + Mehrverbrauch**-Abrechnungsmodell:
|
||||
|
||||
### Wie es funktioniert
|
||||
### So funktioniert es
|
||||
|
||||
**Pro-Plan ($20/Monat):**
|
||||
- Monatliches Abonnement beinhaltet $20 Nutzung
|
||||
- Nutzung unter $20 → Keine zusätzlichen Kosten
|
||||
- Nutzung über $20 → Zahlen Sie den Mehrverbrauch am Monatsende
|
||||
- Beispiel: $35 Nutzung = $20 (Abonnement) + $15 (Mehrverbrauch)
|
||||
**Pro-Plan (20 $/Monat):**
|
||||
- Monatsabonnement beinhaltet 20 $ Nutzung
|
||||
- Nutzung unter 20 $ → Keine zusätzlichen Gebühren
|
||||
- Nutzung über 20 $ → Mehrverbrauch am Monatsende zahlen
|
||||
- Beispiel: 35 $ Nutzung = 20 $ (Abonnement) + 15 $ (Mehrverbrauch)
|
||||
|
||||
**Team-Plan ($40/Benutzer/Monat):**
|
||||
- Gepoolte Nutzung für alle Teammitglieder
|
||||
- Mehrverbrauch wird aus der Gesamtnutzung des Teams berechnet
|
||||
**Team-Plan (40 $/Platz/Monat):**
|
||||
- Gemeinsame Nutzung über alle Teammitglieder
|
||||
- Mehrverbrauch wird aus der gesamten Team-Nutzung berechnet
|
||||
- Organisationsinhaber erhält eine Rechnung
|
||||
|
||||
**Enterprise-Pläne:**
|
||||
- Fester monatlicher Preis, kein Mehrverbrauch
|
||||
- Fester Monatspreis, kein Mehrverbrauch
|
||||
- Individuelle Nutzungslimits gemäß Vereinbarung
|
||||
|
||||
### Schwellenwert-Abrechnung
|
||||
|
||||
Wenn der nicht abgerechnete Mehrverbrauch $50 erreicht, berechnet Sim automatisch den gesamten nicht abgerechneten Betrag.
|
||||
Wenn der nicht abgerechnete Mehrverbrauch 50 $ erreicht, rechnet Sim automatisch den gesamten nicht abgerechneten Betrag ab.
|
||||
|
||||
**Beispiel:**
|
||||
- Tag 10: $70 Mehrverbrauch → Sofortige Abrechnung von $70
|
||||
- Tag 15: Zusätzliche $35 Nutzung ($105 insgesamt) → Bereits abgerechnet, keine Aktion
|
||||
- Tag 20: Weitere $50 Nutzung ($155 insgesamt, $85 nicht abgerechnet) → Sofortige Abrechnung von $85
|
||||
- Tag 10: 70 $ Mehrverbrauch → 70 $ sofort abrechnen
|
||||
- Tag 15: Zusätzliche 35 $ Nutzung (105 $ gesamt) → Bereits abgerechnet, keine Aktion
|
||||
- Tag 20: Weitere 50 $ Nutzung (155 $ gesamt, 85 $ nicht abgerechnet) → 85 $ sofort abrechnen
|
||||
|
||||
Dies verteilt große Überziehungsgebühren über den Monat, anstatt eine große Rechnung am Ende des Abrechnungszeitraums zu erhalten.
|
||||
Dies verteilt große Mehrverbrauchsgebühren über den Monat, anstatt einer großen Rechnung am Periodenende.
|
||||
|
||||
## Best Practices für Kostenmanagement
|
||||
|
||||
1. **Regelmäßig überwachen**: Überprüfen Sie Ihr Nutzungs-Dashboard häufig, um Überraschungen zu vermeiden
|
||||
2. **Budgets festlegen**: Nutzen Sie Planlimits als Leitplanken für Ihre Ausgaben
|
||||
2. **Budgets festlegen**: Nutzen Sie Plan-Limits als Leitplanken für Ihre Ausgaben
|
||||
3. **Workflows optimieren**: Überprüfen Sie kostenintensive Ausführungen und optimieren Sie Prompts oder Modellauswahl
|
||||
4. **Passende Modelle verwenden**: Passen Sie die Modellkomplexität an die Aufgabenanforderungen an
|
||||
5. **Ähnliche Aufgaben bündeln**: Kombinieren Sie wenn möglich mehrere Anfragen, um den Overhead zu reduzieren
|
||||
5. **Ähnliche Aufgaben bündeln**: Kombinieren Sie mehrere Anfragen, wenn möglich, um Overhead zu reduzieren
|
||||
|
||||
## Nächste Schritte
|
||||
|
||||
- Überprüfen Sie Ihre aktuelle Nutzung unter [Einstellungen → Abonnement](https://sim.ai/settings/subscription)
|
||||
- Erfahren Sie mehr über [Protokollierung](/execution/logging), um Ausführungsdetails zu verfolgen
|
||||
- Erkunden Sie die [Externe API](/execution/api) für programmatische Kostenüberwachung
|
||||
- Entdecken Sie die [externe API](/execution/api) für programmatische Kostenüberwachung
|
||||
- Sehen Sie sich [Workflow-Optimierungstechniken](/blocks) an, um Kosten zu reduzieren
|
||||
63
apps/docs/content/docs/de/keyboard-shortcuts/index.mdx
Normal file
63
apps/docs/content/docs/de/keyboard-shortcuts/index.mdx
Normal file
@@ -0,0 +1,63 @@
|
||||
---
|
||||
title: Tastaturkürzel
|
||||
description: Meistern Sie die Workflow-Arbeitsfläche mit Tastaturkürzeln und Maussteuerung
|
||||
---
|
||||
|
||||
import { Callout } from 'fumadocs-ui/components/callout'
|
||||
|
||||
Beschleunigen Sie die Erstellung Ihrer Workflows mit diesen Tastaturkürzeln und Maussteuerungen. Alle Tastenkombinationen funktionieren, wenn die Arbeitsfläche fokussiert ist (nicht beim Tippen in einem Eingabefeld).
|
||||
|
||||
<Callout type="info">
|
||||
**Mod** bezieht sich auf `Cmd` unter macOS und `Ctrl` unter Windows/Linux.
|
||||
</Callout>
|
||||
|
||||
## Arbeitsflächen-Steuerung
|
||||
|
||||
### Maussteuerung
|
||||
|
||||
| Aktion | Steuerung |
|
||||
|--------|---------|
|
||||
| Arbeitsfläche verschieben | Linksziehen auf leerer Fläche |
|
||||
| Arbeitsfläche verschieben | Scrollen oder Trackpad |
|
||||
| Mehrere Blöcke auswählen | Rechtsziehen zum Aufziehen eines Auswahlrahmens |
|
||||
| Block ziehen | Linksziehen auf Block-Kopfzeile |
|
||||
| Zur Auswahl hinzufügen | `Mod` + Klick auf Blöcke |
|
||||
|
||||
### Workflow-Aktionen
|
||||
|
||||
| Tastenkombination | Aktion |
|
||||
|----------|--------|
|
||||
| `Mod` + `Enter` | Workflow ausführen (oder abbrechen, falls aktiv) |
|
||||
| `Mod` + `Z` | Rückgängig |
|
||||
| `Mod` + `Shift` + `Z` | Wiederholen |
|
||||
| `Mod` + `C` | Ausgewählte Blöcke kopieren |
|
||||
| `Mod` + `V` | Blöcke einfügen |
|
||||
| `Delete` oder `Backspace` | Ausgewählte Blöcke oder Verbindungen löschen |
|
||||
| `Shift` + `L` | Arbeitsfläche automatisch anordnen |
|
||||
|
||||
## Panel-Navigation
|
||||
|
||||
Diese Tastenkombinationen wechseln zwischen den Panel-Tabs auf der rechten Seite der Arbeitsfläche.
|
||||
|
||||
| Tastenkombination | Aktion |
|
||||
|----------|--------|
|
||||
| `C` | Copilot-Tab fokussieren |
|
||||
| `T` | Toolbar-Tab fokussieren |
|
||||
| `E` | Editor-Tab fokussieren |
|
||||
| `Mod` + `F` | Toolbar-Suche fokussieren |
|
||||
|
||||
## Globale Navigation
|
||||
|
||||
| Tastenkombination | Aktion |
|
||||
|----------|--------|
|
||||
| `Mod` + `K` | Suche öffnen |
|
||||
| `Mod` + `Shift` + `A` | Neuen Agenten-Workflow hinzufügen |
|
||||
| `Mod` + `Y` | Zu Vorlagen gehen |
|
||||
| `Mod` + `L` | Zu Logs gehen |
|
||||
|
||||
## Dienstprogramm
|
||||
|
||||
| Tastenkombination | Aktion |
|
||||
|----------|--------|
|
||||
| `Mod` + `D` | Terminal-Konsole leeren |
|
||||
| `Mod` + `E` | Benachrichtigungen löschen |
|
||||
@@ -35,81 +35,87 @@ Sobald Ihre Dokumente verarbeitet sind, können Sie die einzelnen Chunks anzeige
|
||||
<Image src="/static/knowledgebase/knowledgebase.png" alt="Dokumentchunk-Ansicht mit verarbeiteten Inhalten" width={800} height={500} />
|
||||
|
||||
### Chunk-Konfiguration
|
||||
- **Standardgröße der Chunks**: 1.024 Zeichen
|
||||
- **Konfigurierbarer Bereich**: 100-4.000 Zeichen pro Chunk
|
||||
- **Intelligente Überlappung**: Standardmäßig 200 Zeichen zur Kontexterhaltung
|
||||
- **Hierarchische Aufteilung**: Respektiert Dokumentstruktur (Abschnitte, Absätze, Sätze)
|
||||
|
||||
### Bearbeitungsfunktionen
|
||||
Beim Erstellen einer Wissensdatenbank können Sie konfigurieren, wie Dokumente in Chunks aufgeteilt werden:
|
||||
|
||||
| Einstellung | Einheit | Standard | Bereich | Beschreibung |
|
||||
|---------|------|---------|-------|-------------|
|
||||
| **Maximale Chunk-Größe** | Tokens | 1.024 | 100-4.000 | Maximale Größe jedes Chunks (1 Token ≈ 4 Zeichen) |
|
||||
| **Minimale Chunk-Größe** | Zeichen | 1 | 1-2.000 | Minimale Chunk-Größe, um winzige Fragmente zu vermeiden |
|
||||
| **Überlappung** | Zeichen | 200 | 0-500 | Kontextüberlappung zwischen aufeinanderfolgenden Chunks |
|
||||
|
||||
- **Hierarchische Aufteilung**: Berücksichtigt die Dokumentstruktur (Abschnitte, Absätze, Sätze)
|
||||
|
||||
### Bearbeitungsmöglichkeiten
|
||||
- **Chunk-Inhalt bearbeiten**: Textinhalt einzelner Chunks ändern
|
||||
- **Chunk-Grenzen anpassen**: Chunks bei Bedarf zusammenführen oder teilen
|
||||
- **Chunk-Grenzen anpassen**: Chunks nach Bedarf zusammenführen oder aufteilen
|
||||
- **Metadaten hinzufügen**: Chunks mit zusätzlichem Kontext anreichern
|
||||
- **Massenoperationen**: Effiziente Verwaltung mehrerer Chunks
|
||||
- **Massenoperationen**: Mehrere Chunks effizient verwalten
|
||||
|
||||
## Erweiterte PDF-Verarbeitung
|
||||
|
||||
Für PDF-Dokumente bietet Sim erweiterte Verarbeitungsfunktionen:
|
||||
|
||||
### OCR-Unterstützung
|
||||
Bei Konfiguration mit Azure oder [Mistral OCR](https://docs.mistral.ai/ocr/):
|
||||
Wenn mit Azure oder [Mistral OCR](https://docs.mistral.ai/ocr/) konfiguriert:
|
||||
- **Verarbeitung gescannter Dokumente**: Text aus bildbasierten PDFs extrahieren
|
||||
- **Umgang mit gemischten Inhalten**: Verarbeitung von PDFs mit Text und Bildern
|
||||
- **Verarbeitung gemischter Inhalte**: PDFs mit Text und Bildern verarbeiten
|
||||
- **Hohe Genauigkeit**: Fortschrittliche KI-Modelle gewährleisten präzise Textextraktion
|
||||
|
||||
## Verwendung des Wissensblocks in Workflows
|
||||
## Verwendung des Knowledge-Blocks in Workflows
|
||||
|
||||
Sobald Ihre Dokumente verarbeitet sind, können Sie sie in Ihren KI-Workflows über den Wissensblock nutzen. Dies ermöglicht Retrieval-Augmented Generation (RAG), wodurch Ihre KI-Agenten auf Ihre Dokumentinhalte zugreifen und darüber nachdenken können, um genauere, kontextbezogene Antworten zu liefern.
|
||||
Sobald Ihre Dokumente verarbeitet sind, können Sie sie in Ihren KI-Workflows über den Knowledge-Block verwenden. Dies ermöglicht Retrieval-Augmented Generation (RAG), wodurch Ihre KI-Agenten auf Ihre Dokumentinhalte zugreifen und darüber nachdenken können, um genauere, kontextbezogene Antworten zu liefern.
|
||||
|
||||
<Image src="/static/knowledgebase/knowledgebase-2.png" alt="Verwendung des Wissensblocks in Workflows" width={800} height={500} />
|
||||
<Image src="/static/knowledgebase/knowledgebase-2.png" alt="Verwendung des Knowledge-Blocks in Workflows" width={800} height={500} />
|
||||
|
||||
### Funktionen des Wissensblocks
|
||||
- **Semantische Suche**: Relevante Inhalte mit natürlichsprachlichen Abfragen finden
|
||||
- **Kontextintegration**: Automatisches Einbinden relevanter Chunks in Agenten-Prompts
|
||||
- **Dynamischer Abruf**: Suche erfolgt in Echtzeit während der Workflow-Ausführung
|
||||
- **Relevanzbewertung**: Ergebnisse nach semantischer Ähnlichkeit geordnet
|
||||
### Knowledge-Block-Funktionen
|
||||
- **Semantische Suche**: Relevante Inhalte mithilfe natürlichsprachlicher Abfragen finden
|
||||
- **Kontextintegration**: Relevante Chunks automatisch in Agenten-Prompts einbinden
|
||||
- **Dynamisches Abrufen**: Suche erfolgt in Echtzeit während der Workflow-Ausführung
|
||||
- **Relevanz-Bewertung**: Ergebnisse nach semantischer Ähnlichkeit sortiert
|
||||
|
||||
### Integrationsoptionen
|
||||
- **System-Prompts**: Kontext für Ihre KI-Agenten bereitstellen
|
||||
- **Dynamischer Kontext**: Suche und Einbindung relevanter Informationen während Gesprächen
|
||||
- **Dokumentübergreifende Suche**: Abfrage über Ihre gesamte Wissensdatenbank
|
||||
- **Gefilterte Suche**: Kombination mit Tags für präzisen Inhaltsabruf
|
||||
- **System-Prompts**: Stellen Sie Ihren KI-Agenten Kontext bereit
|
||||
- **Dynamischer Kontext**: Suchen und fügen Sie relevante Informationen während Konversationen hinzu
|
||||
- **Multi-Dokument-Suche**: Durchsuchen Sie Ihre gesamte Wissensdatenbank
|
||||
- **Gefilterte Suche**: Kombinieren Sie mit Tags für präzises Abrufen von Inhalten
|
||||
|
||||
## Vektorsuchtechnologie
|
||||
## Vektor-Suchtechnologie
|
||||
|
||||
Sim verwendet Vektorsuche, die von [pgvector](https://github.com/pgvector/pgvector) unterstützt wird, um die Bedeutung und den Kontext Ihrer Inhalte zu verstehen:
|
||||
|
||||
### Semantisches Verständnis
|
||||
- **Kontextuelle Suche**: Findet relevante Inhalte, auch wenn exakte Schlüsselwörter nicht übereinstimmen
|
||||
- **Konzeptbasierte Abfrage**: Versteht Beziehungen zwischen Ideen
|
||||
- **Konzeptbasiertes Abrufen**: Versteht Beziehungen zwischen Ideen
|
||||
- **Mehrsprachige Unterstützung**: Funktioniert über verschiedene Sprachen hinweg
|
||||
- **Synonymerkennung**: Findet verwandte Begriffe und Konzepte
|
||||
|
||||
### Suchfunktionen
|
||||
- **Natürlichsprachige Abfragen**: Stellen Sie Fragen in natürlicher Sprache
|
||||
- **Natürlichsprachige Abfragen**: Stellen Sie Fragen in einfachem Deutsch
|
||||
- **Ähnlichkeitssuche**: Finden Sie konzeptionell ähnliche Inhalte
|
||||
- **Hybridsuche**: Kombiniert Vektor- und traditionelle Schlüsselwortsuche
|
||||
- **Konfigurierbare Ergebnisse**: Steuern Sie die Anzahl und den Relevanz-Schwellenwert der Ergebnisse
|
||||
- **Hybride Suche**: Kombiniert Vektor- und traditionelle Schlüsselwortsuche
|
||||
- **Konfigurierbare Ergebnisse**: Steuern Sie die Anzahl und Relevanzschwelle der Ergebnisse
|
||||
|
||||
## Dokumentenverwaltung
|
||||
|
||||
### Organisationsfunktionen
|
||||
- **Massenupload**: Laden Sie mehrere Dateien gleichzeitig über die asynchrone API hoch
|
||||
- **Verarbeitungsstatus**: Echtzeit-Updates zum Dokumentenverarbeitungsprozess
|
||||
- **Suchen und Filtern**: Finden Sie Dokumente schnell in großen Sammlungen
|
||||
- **Massen-Upload**: Laden Sie mehrere Dateien gleichzeitig über die asynchrone API hoch
|
||||
- **Verarbeitungsstatus**: Echtzeit-Updates zur Dokumentenverarbeitung
|
||||
- **Suchen und filtern**: Finden Sie Dokumente schnell in großen Sammlungen
|
||||
- **Metadaten-Tracking**: Automatische Erfassung von Dateiinformationen und Verarbeitungsdetails
|
||||
|
||||
### Sicherheit und Datenschutz
|
||||
- **Sichere Speicherung**: Dokumente werden mit Sicherheit auf Unternehmensniveau gespeichert
|
||||
- **Zugriffskontrolle**: Workspace-basierte Berechtigungen
|
||||
- **Verarbeitungsisolierung**: Jeder Workspace hat eine isolierte Dokumentenverarbeitung
|
||||
- **Verarbeitungsisolierung**: Jeder Workspace hat isolierte Dokumentenverarbeitung
|
||||
- **Datenaufbewahrung**: Konfigurieren Sie Richtlinien zur Dokumentenaufbewahrung
|
||||
|
||||
## Erste Schritte
|
||||
|
||||
1. **Navigieren Sie zu Ihrer Wissensdatenbank**: Zugriff über Ihre Workspace-Seitenleiste
|
||||
2. **Dokumente hochladen**: Drag & Drop oder wählen Sie Dateien zum Hochladen aus
|
||||
3. **Verarbeitung überwachen**: Beobachten Sie, wie Dokumente verarbeitet und in Chunks aufgeteilt werden
|
||||
4. **Chunks erkunden**: Sehen und bearbeiten Sie die verarbeiteten Inhalte
|
||||
5. **Zu Workflows hinzufügen**: Verwenden Sie den Wissensblock, um ihn in Ihre KI-Agenten zu integrieren
|
||||
2. **Dokumente hochladen**: Ziehen und ablegen oder Dateien zum Hochladen auswählen
|
||||
3. **Verarbeitung überwachen**: Beobachten Sie, wie Dokumente verarbeitet und in Abschnitte unterteilt werden
|
||||
4. **Abschnitte erkunden**: Zeigen Sie die verarbeiteten Inhalte an und bearbeiten Sie sie
|
||||
5. **Zu Workflows hinzufügen**: Verwenden Sie den Knowledge-Block, um mit Ihren KI-Agenten zu integrieren
|
||||
|
||||
Die Wissensdatenbank verwandelt Ihre statischen Dokumente in eine intelligente, durchsuchbare Ressource, die Ihre KI-Workflows für fundiertere und kontextbezogenere Antworten nutzen können.
|
||||
Die Wissensdatenbank verwandelt Ihre statischen Dokumente in eine intelligente, durchsuchbare Ressource, die Ihre KI-Workflows für fundiertere und kontextbezogene Antworten nutzen können.
|
||||
108
apps/docs/content/docs/de/mcp/deploy-workflows.mdx
Normal file
108
apps/docs/content/docs/de/mcp/deploy-workflows.mdx
Normal file
@@ -0,0 +1,108 @@
|
||||
---
|
||||
title: Workflows als MCP bereitstellen
|
||||
description: Stellen Sie Ihre Workflows als MCP-Tools für externe KI-Assistenten
|
||||
und Anwendungen bereit
|
||||
---
|
||||
|
||||
import { Video } from '@/components/ui/video'
|
||||
import { Callout } from 'fumadocs-ui/components/callout'
|
||||
|
||||
Stellen Sie Ihre Workflows als MCP-Tools bereit, um sie für externe KI-Assistenten wie Claude Desktop, Cursor und andere MCP-kompatible Clients zugänglich zu machen. Dies verwandelt Ihre Workflows in aufrufbare Tools, die von überall aus aufgerufen werden können.
|
||||
|
||||
## MCP-Server erstellen und verwalten
|
||||
|
||||
MCP-Server gruppieren Ihre Workflow-Tools zusammen. Erstellen und verwalten Sie sie in den Workspace-Einstellungen:
|
||||
|
||||
<div className="mx-auto w-full overflow-hidden rounded-lg">
|
||||
<Video src="mcp/mcp-server.mp4" width={700} height={450} />
|
||||
</div>
|
||||
|
||||
1. Navigieren Sie zu **Einstellungen → Bereitgestellte MCPs**
|
||||
2. Klicken Sie auf **Server erstellen**
|
||||
3. Geben Sie einen Namen und eine optionale Beschreibung ein
|
||||
4. Kopieren Sie die Server-URL zur Verwendung in Ihren MCP-Clients
|
||||
5. Zeigen Sie alle zum Server hinzugefügten Tools an und verwalten Sie diese
|
||||
|
||||
## Einen Workflow als Tool hinzufügen
|
||||
|
||||
Sobald Ihr Workflow bereitgestellt ist, können Sie ihn als MCP-Tool verfügbar machen:
|
||||
|
||||
<div className="mx-auto w-full overflow-hidden rounded-lg">
|
||||
<Video src="mcp/mcp-deploy-tool.mp4" width={700} height={450} />
|
||||
</div>
|
||||
|
||||
1. Öffnen Sie Ihren bereitgestellten Workflow
|
||||
2. Klicken Sie auf **Bereitstellen** und wechseln Sie zum Tab **MCP**
|
||||
3. Konfigurieren Sie den Tool-Namen und die Beschreibung
|
||||
4. Fügen Sie Beschreibungen für jeden Parameter hinzu (hilft der KI, Eingaben zu verstehen)
|
||||
5. Wählen Sie aus, zu welchen MCP-Servern es hinzugefügt werden soll
|
||||
|
||||
<Callout type="info">
|
||||
Der Workflow muss bereitgestellt sein, bevor er als MCP-Tool hinzugefügt werden kann.
|
||||
</Callout>
|
||||
|
||||
## Tool-Konfiguration
|
||||
|
||||
### Tool-Name
|
||||
Verwenden Sie Kleinbuchstaben, Zahlen und Unterstriche. Der Name sollte beschreibend sein und den MCP-Namenskonventionen folgen (z. B. `search_documents`, `send_email`).
|
||||
|
||||
### Beschreibung
|
||||
Schreiben Sie eine klare Beschreibung dessen, was das Tool tut. Dies hilft KI-Assistenten zu verstehen, wann das Tool verwendet werden soll.
|
||||
|
||||
### Parameter
|
||||
Die Eingabeformatfelder deines Workflows werden zu Tool-Parametern. Füge jedem Parameter Beschreibungen hinzu, um KI-Assistenten zu helfen, korrekte Werte bereitzustellen.
|
||||
|
||||
## MCP-Clients verbinden
|
||||
|
||||
Verwende die Server-URL aus den Einstellungen, um externe Anwendungen zu verbinden:
|
||||
|
||||
### Claude Desktop
|
||||
Füge dies zu deiner Claude Desktop-Konfiguration hinzu (`~/Library/Application Support/Claude/claude_desktop_config.json`):
|
||||
|
||||
```json
|
||||
{
|
||||
"mcpServers": {
|
||||
"my-sim-workflows": {
|
||||
"command": "npx",
|
||||
"args": ["-y", "mcp-remote", "YOUR_SERVER_URL"]
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Cursor
|
||||
Füge die Server-URL in den MCP-Einstellungen von Cursor mit demselben mcp-remote-Muster hinzu.
|
||||
|
||||
<Callout type="warn">
|
||||
Füge deinen API-Key-Header (`X-API-Key`) für authentifizierten Zugriff hinzu, wenn du mcp-remote oder andere HTTP-basierte MCP-Transporte verwendest.
|
||||
</Callout>
|
||||
|
||||
## Server-Verwaltung
|
||||
|
||||
In der Server-Detailansicht unter **Einstellungen → Bereitgestellte MCPs** können Sie:
|
||||
|
||||
- **Tools anzeigen**: Alle Workflows sehen, die einem Server hinzugefügt wurden
|
||||
- **URL kopieren**: Die Server-URL für MCP-Clients abrufen
|
||||
- **Workflows hinzufügen**: Weitere bereitgestellte Workflows als Tools hinzufügen
|
||||
- **Tools entfernen**: Workflows vom Server entfernen
|
||||
- **Server löschen**: Den gesamten Server und alle seine Tools entfernen
|
||||
|
||||
## So funktioniert es
|
||||
|
||||
Wenn ein MCP-Client dein Tool aufruft:
|
||||
|
||||
1. Die Anfrage wird an deiner MCP-Server-URL empfangen
|
||||
2. Sim validiert die Anfrage und ordnet Parameter den Workflow-Eingaben zu
|
||||
3. Der bereitgestellte Workflow wird mit den angegebenen Eingaben ausgeführt
|
||||
4. Die Ergebnisse werden an den MCP-Client zurückgegeben
|
||||
|
||||
Workflows werden mit derselben Bereitstellungsversion wie API-Aufrufe ausgeführt, was konsistentes Verhalten gewährleistet.
|
||||
|
||||
## Berechtigungsanforderungen
|
||||
|
||||
| Aktion | Erforderliche Berechtigung |
|
||||
|--------|-------------------|
|
||||
| MCP-Server erstellen | **Admin** |
|
||||
| Workflows zu Servern hinzufügen | **Write** oder **Admin** |
|
||||
| MCP-Server anzeigen | **Read**, **Write** oder **Admin** |
|
||||
| MCP-Server löschen | **Admin** |
|
||||
@@ -1,8 +1,10 @@
|
||||
---
|
||||
title: MCP (Model Context Protocol)
|
||||
title: MCP-Tools verwenden
|
||||
description: Externe Tools und Dienste über das Model Context Protocol verbinden
|
||||
---
|
||||
|
||||
import { Image } from '@/components/ui/image'
|
||||
import { Video } from '@/components/ui/video'
|
||||
import { Callout } from 'fumadocs-ui/components/callout'
|
||||
|
||||
Das Model Context Protocol ([MCP](https://modelcontextprotocol.com/)) ermöglicht es Ihnen, externe Tools und Dienste über ein standardisiertes Protokoll zu verbinden, wodurch Sie APIs und Dienste direkt in Ihre Workflows integrieren können. Mit MCP können Sie die Fähigkeiten von Sim erweitern, indem Sie benutzerdefinierte Integrationen hinzufügen, die nahtlos mit Ihren Agenten und Workflows zusammenarbeiten.
|
||||
@@ -20,18 +22,12 @@ MCP ist ein offener Standard, der es KI-Assistenten ermöglicht, sich sicher mit
|
||||
|
||||
MCP-Server stellen Sammlungen von Tools bereit, die Ihre Agenten nutzen können. Konfigurieren Sie diese in den Workspace-Einstellungen:
|
||||
|
||||
<div className="flex justify-center">
|
||||
<Image
|
||||
src="/static/blocks/mcp-1.png"
|
||||
alt="Konfiguration eines MCP-Servers in den Einstellungen"
|
||||
width={700}
|
||||
height={450}
|
||||
className="my-6"
|
||||
/>
|
||||
<div className="mx-auto w-full overflow-hidden rounded-lg">
|
||||
<Video src="mcp/settings-mcp-tools.mp4" width={700} height={450} />
|
||||
</div>
|
||||
|
||||
1. Navigieren Sie zu Ihren Workspace-Einstellungen
|
||||
2. Gehen Sie zum Abschnitt **MCP-Server**
|
||||
2. Gehen Sie zum Abschnitt **Bereitgestellte MCPs**
|
||||
3. Klicken Sie auf **MCP-Server hinzufügen**
|
||||
4. Geben Sie die Server-Konfigurationsdetails ein
|
||||
5. Speichern Sie die Konfiguration
|
||||
@@ -40,14 +36,18 @@ MCP-Server stellen Sammlungen von Tools bereit, die Ihre Agenten nutzen können.
|
||||
Sie können MCP-Server auch direkt über die Symbolleiste in einem Agent-Block für eine schnelle Einrichtung konfigurieren.
|
||||
</Callout>
|
||||
|
||||
## Verwendung von MCP-Tools in Agenten
|
||||
### Tools aktualisieren
|
||||
|
||||
Sobald MCP-Server konfiguriert sind, werden ihre Tools innerhalb Ihrer Agent-Blöcke verfügbar:
|
||||
Klicken Sie bei einem Server auf **Aktualisieren**, um die neuesten Tool-Schemas abzurufen und alle Agent-Blöcke, die diese Tools verwenden, automatisch mit den neuen Parameterdefinitionen zu aktualisieren.
|
||||
|
||||
## MCP-Tools in Agents verwenden
|
||||
|
||||
Sobald MCP-Server konfiguriert sind, werden ihre Tools in Ihren Agent-Blöcken verfügbar:
|
||||
|
||||
<div className="flex justify-center">
|
||||
<Image
|
||||
src="/static/blocks/mcp-2.png"
|
||||
alt="Verwendung eines MCP-Tools im Agent-Block"
|
||||
alt="Using MCP Tool in Agent Block"
|
||||
width={700}
|
||||
height={450}
|
||||
className="my-6"
|
||||
@@ -55,25 +55,25 @@ Sobald MCP-Server konfiguriert sind, werden ihre Tools innerhalb Ihrer Agent-Bl
|
||||
</div>
|
||||
|
||||
1. Öffnen Sie einen **Agent**-Block
|
||||
2. Im Abschnitt **Tools** sehen Sie die verfügbaren MCP-Tools
|
||||
2. Im Bereich **Tools** sehen Sie die verfügbaren MCP-Tools
|
||||
3. Wählen Sie die Tools aus, die der Agent verwenden soll
|
||||
4. Der Agent kann nun während der Ausführung auf diese Tools zugreifen
|
||||
|
||||
## Eigenständiger MCP-Tool-Block
|
||||
|
||||
Für eine genauere Kontrolle können Sie den dedizierten MCP-Tool-Block verwenden, um bestimmte MCP-Tools auszuführen:
|
||||
Für eine präzisere Steuerung können Sie den dedizierten MCP-Tool-Block verwenden, um bestimmte MCP-Tools auszuführen:
|
||||
|
||||
<div className="flex justify-center">
|
||||
<Image
|
||||
src="/static/blocks/mcp-3.png"
|
||||
alt="Eigenständiger MCP-Tool-Block"
|
||||
alt="Standalone MCP Tool Block"
|
||||
width={700}
|
||||
height={450}
|
||||
className="my-6"
|
||||
/>
|
||||
</div>
|
||||
|
||||
Der MCP-Tool-Block ermöglicht es Ihnen:
|
||||
Der MCP-Tool-Block ermöglicht Ihnen:
|
||||
- Jedes konfigurierte MCP-Tool direkt auszuführen
|
||||
- Spezifische Parameter an das Tool zu übergeben
|
||||
- Die Ausgabe des Tools in nachfolgenden Workflow-Schritten zu verwenden
|
||||
@@ -81,9 +81,9 @@ Der MCP-Tool-Block ermöglicht es Ihnen:
|
||||
|
||||
### Wann MCP-Tool vs. Agent verwenden
|
||||
|
||||
**Verwenden Sie einen Agenten mit MCP-Tools, wenn:**
|
||||
- Sie möchten, dass die KI entscheidet, welche Tools zu verwenden sind
|
||||
- Sie komplexe Überlegungen benötigen, wann und wie Tools eingesetzt werden sollen
|
||||
**Verwenden Sie Agent mit MCP-Tools, wenn:**
|
||||
- Sie möchten, dass die KI entscheidet, welche Tools verwendet werden
|
||||
- Sie komplexes Reasoning darüber benötigen, wann und wie Tools verwendet werden
|
||||
- Sie eine natürlichsprachliche Interaktion mit den Tools wünschen
|
||||
|
||||
**Verwenden Sie den MCP-Tool-Block, wenn:**
|
||||
@@ -93,7 +93,7 @@ Der MCP-Tool-Block ermöglicht es Ihnen:
|
||||
|
||||
## Berechtigungsanforderungen
|
||||
|
||||
MCP-Funktionalität erfordert spezifische Workspace-Berechtigungen:
|
||||
Die MCP-Funktionalität erfordert spezifische Workspace-Berechtigungen:
|
||||
|
||||
| Aktion | Erforderliche Berechtigung |
|
||||
|--------|-------------------|
|
||||
@@ -105,7 +105,7 @@ MCP-Funktionalität erfordert spezifische Workspace-Berechtigungen:
|
||||
## Häufige Anwendungsfälle
|
||||
|
||||
### Datenbankintegration
|
||||
Verbinden Sie sich mit Datenbanken, um Daten innerhalb Ihrer Workflows abzufragen, einzufügen oder zu aktualisieren.
|
||||
Verbinden Sie sich mit Datenbanken, um Daten in Ihren Workflows abzufragen, einzufügen oder zu aktualisieren.
|
||||
|
||||
### API-Integrationen
|
||||
Greifen Sie auf externe APIs und Webdienste zu, die keine integrierten Sim-Integrationen haben.
|
||||
@@ -113,8 +113,8 @@ Greifen Sie auf externe APIs und Webdienste zu, die keine integrierten Sim-Integ
|
||||
### Dateisystemzugriff
|
||||
Lesen, schreiben und bearbeiten Sie Dateien auf lokalen oder entfernten Dateisystemen.
|
||||
|
||||
### Benutzerdefinierte Geschäftslogik
|
||||
Führen Sie benutzerdefinierte Skripte oder Tools aus, die auf die Bedürfnisse Ihrer Organisation zugeschnitten sind.
|
||||
### Individuelle Geschäftslogik
|
||||
Führen Sie benutzerdefinierte Skripte oder Tools aus, die spezifisch für die Anforderungen Ihrer Organisation sind.
|
||||
|
||||
### Echtzeit-Datenzugriff
|
||||
Rufen Sie Live-Daten von externen Systemen während der Workflow-Ausführung ab.
|
||||
@@ -128,12 +128,12 @@ Rufen Sie Live-Daten von externen Systemen während der Workflow-Ausführung ab.
|
||||
|
||||
## Fehlerbehebung
|
||||
|
||||
### MCP-Server erscheint nicht
|
||||
### MCP-Server wird nicht angezeigt
|
||||
- Überprüfen Sie, ob die Serverkonfiguration korrekt ist
|
||||
- Prüfen Sie, ob Sie die erforderlichen Berechtigungen haben
|
||||
- Stellen Sie sicher, dass der MCP-Server läuft und zugänglich ist
|
||||
- Prüfen Sie, ob Sie über die erforderlichen Berechtigungen verfügen
|
||||
- Stellen Sie sicher, dass der MCP-Server läuft und erreichbar ist
|
||||
|
||||
### Fehler bei der Tool-Ausführung
|
||||
### Tool-Ausführungsfehler
|
||||
- Überprüfen Sie, ob die Tool-Parameter korrekt formatiert sind
|
||||
- Prüfen Sie die MCP-Server-Logs auf Fehlermeldungen
|
||||
- Stellen Sie sicher, dass die erforderliche Authentifizierung konfiguriert ist
|
||||
@@ -141,4 +141,4 @@ Rufen Sie Live-Daten von externen Systemen während der Workflow-Ausführung ab.
|
||||
### Berechtigungsfehler
|
||||
- Bestätigen Sie Ihre Workspace-Berechtigungsstufe
|
||||
- Prüfen Sie, ob der MCP-Server zusätzliche Authentifizierung erfordert
|
||||
- Stellen Sie sicher, dass der Server für Ihren Workspace richtig konfiguriert ist
|
||||
- Überprüfen Sie, ob der Server ordnungsgemäß für Ihren Workspace konfiguriert ist
|
||||
@@ -51,10 +51,9 @@ Führe einen APIFY-Aktor synchron aus und erhalte Ergebnisse (maximal 5 Minuten)
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Ob die Aktor-Ausführung erfolgreich war |
|
||||
| `runId` | string | APIFY-Ausführungs-ID |
|
||||
| `status` | string | Ausführungsstatus \(SUCCEEDED, FAILED, usw.\) |
|
||||
| `datasetId` | string | Dataset-ID mit Ergebnissen |
|
||||
| `success` | boolean | Ob der Actor-Lauf erfolgreich war |
|
||||
| `runId` | string | APIFY-Lauf-ID |
|
||||
| `status` | string | Laufstatus \(SUCCEEDED, FAILED, usw.\) |
|
||||
| `items` | array | Dataset-Elemente \(falls abgeschlossen\) |
|
||||
|
||||
### `apify_run_actor_async`
|
||||
|
||||
@@ -34,7 +34,14 @@ Eine einzelne Aufgabe anhand der GID abrufen oder mehrere Aufgaben mit Filtern e
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Erfolgsstatus der Operation |
|
||||
| `output` | object | Details einer einzelnen Aufgabe oder Array von Aufgaben, abhängig davon, ob taskGid angegeben wurde |
|
||||
| `ts` | string | Zeitstempel der Antwort |
|
||||
| `gid` | string | Global eindeutige Kennung der Aufgabe |
|
||||
| `resource_type` | string | Ressourcentyp \(task\) |
|
||||
| `resource_subtype` | string | Ressourcen-Subtyp |
|
||||
| `name` | string | Aufgabenname |
|
||||
| `notes` | string | Aufgabennotizen oder -beschreibung |
|
||||
| `completed` | boolean | Ob die Aufgabe abgeschlossen ist |
|
||||
| `assignee` | object | Details zum Zugewiesenen |
|
||||
|
||||
### `asana_create_task`
|
||||
|
||||
@@ -54,8 +61,14 @@ Eine neue Aufgabe in Asana erstellen
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Status des Operationserfolgs |
|
||||
| `output` | object | Details der erstellten Aufgabe mit Zeitstempel, GID, Name, Notizen und Permalink |
|
||||
| `success` | boolean | Erfolgsstatus der Operation |
|
||||
| `ts` | string | Zeitstempel der Antwort |
|
||||
| `gid` | string | Global eindeutige Kennung der Aufgabe |
|
||||
| `name` | string | Aufgabenname |
|
||||
| `notes` | string | Aufgabennotizen oder -beschreibung |
|
||||
| `completed` | boolean | Ob die Aufgabe abgeschlossen ist |
|
||||
| `created_at` | string | Zeitstempel der Aufgabenerstellung |
|
||||
| `permalink_url` | string | URL zur Aufgabe in Asana |
|
||||
|
||||
### `asana_update_task`
|
||||
|
||||
@@ -77,7 +90,12 @@ Eine bestehende Aufgabe in Asana aktualisieren
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Erfolgsstatus der Operation |
|
||||
| `output` | object | Aktualisierte Aufgabendetails mit Zeitstempel, GID, Name, Notizen und Änderungszeitstempel |
|
||||
| `ts` | string | Zeitstempel der Antwort |
|
||||
| `gid` | string | Global eindeutige Kennung der Aufgabe |
|
||||
| `name` | string | Aufgabenname |
|
||||
| `notes` | string | Aufgabennotizen oder -beschreibung |
|
||||
| `completed` | boolean | Ob die Aufgabe abgeschlossen ist |
|
||||
| `modified_at` | string | Zeitstempel der letzten Änderung der Aufgabe |
|
||||
|
||||
### `asana_get_projects`
|
||||
|
||||
@@ -94,7 +112,8 @@ Alle Projekte aus einem Asana-Workspace abrufen
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Erfolgsstatus der Operation |
|
||||
| `output` | object | Liste der Projekte mit ihrer GID, Name und Ressourcentyp |
|
||||
| `ts` | string | Zeitstempel der Antwort |
|
||||
| `projects` | array | Array von Projekten |
|
||||
|
||||
### `asana_search_tasks`
|
||||
|
||||
@@ -115,7 +134,8 @@ Nach Aufgaben in einem Asana-Workspace suchen
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Erfolgsstatus der Operation |
|
||||
| `output` | object | Liste der Aufgaben, die den Suchkriterien entsprechen |
|
||||
| `ts` | string | Zeitstempel der Antwort |
|
||||
| `tasks` | array | Array von passenden Aufgaben |
|
||||
|
||||
### `asana_add_comment`
|
||||
|
||||
@@ -133,7 +153,11 @@ Einen Kommentar (Story) zu einer Asana-Aufgabe hinzufügen
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Erfolgsstatus der Operation |
|
||||
| `output` | object | Kommentardetails einschließlich gid, Text, Erstellungszeitstempel und Autor |
|
||||
| `ts` | string | Zeitstempel der Antwort |
|
||||
| `gid` | string | Global eindeutige Kennung des Kommentars |
|
||||
| `text` | string | Textinhalt des Kommentars |
|
||||
| `created_at` | string | Erstellungszeitstempel des Kommentars |
|
||||
| `created_by` | object | Details zum Autor des Kommentars |
|
||||
|
||||
## Hinweise
|
||||
|
||||
|
||||
59
apps/docs/content/docs/de/tools/circleback.mdx
Normal file
59
apps/docs/content/docs/de/tools/circleback.mdx
Normal file
@@ -0,0 +1,59 @@
|
||||
---
|
||||
title: Circleback
|
||||
description: KI-gestützte Meeting-Notizen und Aufgaben
|
||||
---
|
||||
|
||||
import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
<BlockInfoCard
|
||||
type="circleback"
|
||||
color="linear-gradient(180deg, #E0F7FA 0%, #FFFFFF 100%)"
|
||||
/>
|
||||
|
||||
{/* MANUAL-CONTENT-START:intro */}
|
||||
[Circleback](https://circleback.ai/) ist eine KI-gestützte Plattform, die Meeting-Notizen, Aufgaben, Transkripte und Aufzeichnungen für Ihr Team automatisiert. Wenn ein Meeting abgeschlossen ist, verarbeitet Circleback die Konversation und liefert detaillierte Notizen und Aufgaben sowie ein Transkript und eine Aufzeichnung (sofern verfügbar). Dies hilft Teams dabei, Erkenntnisse effizient zu erfassen, Aufgaben zu verteilen und sicherzustellen, dass nichts übersehen wird – alles nahtlos in Ihre Workflows integriert.
|
||||
|
||||
Mit der Sim Circleback-Integration können Sie:
|
||||
|
||||
- **Detaillierte Meeting-Notizen und Aufgaben erhalten**: Sammeln Sie automatisch gut formatierte Meeting-Zusammenfassungen und verfolgen Sie umsetzbare Aufgaben, die während Ihrer Anrufe besprochen wurden.
|
||||
- **Auf vollständige Meeting-Aufzeichnungen und Transkripte zugreifen**: Erhalten Sie die vollständige Konversation und die zugehörige Aufzeichnung, um wichtige Momente einfach zu überprüfen oder mit Kollegen zu teilen.
|
||||
- **Teilnehmerinformationen und Meeting-Kontext erfassen**: Teilnehmerlisten, Meeting-Metadaten und Tags helfen dabei, Ihre Daten organisiert und umsetzbar zu halten.
|
||||
- **Erkenntnisse direkt in Ihre Workflows liefern**: Lösen Sie Automatisierungen aus oder senden Sie Circleback-Daten an andere Systeme, sobald ein Meeting beendet ist, mithilfe der leistungsstarken Webhook-Trigger von Sim.
|
||||
|
||||
**So funktioniert es in Sim:**
|
||||
Circleback verwendet Webhook-Trigger: Sobald ein Meeting verarbeitet wurde, werden die Daten automatisch an Ihren Agenten oder Ihre Automatisierung übertragen. Sie können weitere Automatisierungen basierend auf folgenden Ereignissen erstellen:
|
||||
|
||||
- Meeting abgeschlossen (alle verarbeiteten Daten verfügbar)
|
||||
- Neue Notizen (Notizen sind verfügbar, noch bevor das Meeting vollständig verarbeitet ist)
|
||||
- Raw-Webhook-Integration für erweiterte Anwendungsfälle
|
||||
|
||||
**Die folgenden Informationen sind in der Circleback-Meeting-Webhook-Payload verfügbar:**
|
||||
|
||||
| Feld | Typ | Beschreibung |
|
||||
|----------------|---------|----------------------------------------------------|
|
||||
| `id` | number | Circleback Meeting-ID |
|
||||
| `name` | string | Meeting-Titel |
|
||||
| `url` | string | Virtueller Meeting-Link (Zoom, Meet, Teams usw.) |
|
||||
| `createdAt` | string | Zeitstempel der Meeting-Erstellung |
|
||||
| `duration` | number | Dauer in Sekunden |
|
||||
| `recordingUrl` | string | Aufzeichnungs-URL (24 Stunden gültig) |
|
||||
| `tags` | json | Array von Tags |
|
||||
| `icalUid` | string | Kalender-Event-ID |
|
||||
| `attendees` | json | Array von Teilnehmer-Objekten |
|
||||
| `notes` | string | Meeting-Notizen in Markdown |
|
||||
| `actionItems` | json | Array von Aufgaben |
|
||||
| `transcript` | json | Array von Transkript-Segmenten |
|
||||
| `insights` | json | Vom Nutzer erstellte Insights |
|
||||
| `meeting` | json | Vollständige Meeting-Daten |
|
||||
|
||||
Egal, ob Sie sofortige Zusammenfassungen verteilen, Aufgaben protokollieren oder benutzerdefinierte Workflows erstellen möchten, die durch neue Meeting-Daten ausgelöst werden – Circleback und Sim machen es nahtlos, alles rund um Ihre Meetings automatisch zu verwalten.
|
||||
{/* MANUAL-CONTENT-END */}
|
||||
|
||||
## Nutzungsanleitung
|
||||
|
||||
Erhalten Sie Meeting-Notizen, Aufgaben, Transkripte und Aufzeichnungen, wenn Meetings verarbeitet werden. Circleback nutzt Webhooks, um Daten an Ihre Workflows zu übermitteln.
|
||||
|
||||
## Hinweise
|
||||
|
||||
- Kategorie: `triggers`
|
||||
- Typ: `circleback`
|
||||
@@ -221,9 +221,36 @@ Löscht einen Kommentar von einer Confluence-Seite.
|
||||
| `commentId` | string | Gelöschte Kommentar-ID |
|
||||
| `deleted` | boolean | Löschstatus |
|
||||
|
||||
### `confluence_upload_attachment`
|
||||
|
||||
Laden Sie eine Datei als Anhang zu einer Confluence-Seite hoch.
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `domain` | string | Ja | Ihre Confluence-Domain (z.B. ihrfirma.atlassian.net) |
|
||||
| `pageId` | string | Ja | Confluence-Seiten-ID, an die die Datei angehängt werden soll |
|
||||
| `file` | file | Ja | Die als Anhang hochzuladende Datei |
|
||||
| `fileName` | string | Nein | Optionaler benutzerdefinierter Dateiname für den Anhang |
|
||||
| `comment` | string | Nein | Optionaler Kommentar zum Anhang |
|
||||
| `cloudId` | string | Nein | Confluence Cloud-ID für die Instanz. Wenn nicht angegeben, wird sie über die Domain abgerufen. |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `ts` | string | Zeitstempel des Uploads |
|
||||
| `attachmentId` | string | Hochgeladene Anhangs-ID |
|
||||
| `title` | string | Dateiname des Anhangs |
|
||||
| `fileSize` | number | Dateigröße in Bytes |
|
||||
| `mediaType` | string | MIME-Typ des Anhangs |
|
||||
| `downloadUrl` | string | Download-URL für den Anhang |
|
||||
| `pageId` | string | Seiten-ID, zu der der Anhang hinzugefügt wurde |
|
||||
|
||||
### `confluence_list_attachments`
|
||||
|
||||
Listet alle Anhänge einer Confluence-Seite auf.
|
||||
Listen Sie alle Anhänge einer Confluence-Seite auf.
|
||||
|
||||
#### Eingabe
|
||||
|
||||
@@ -243,7 +270,7 @@ Listet alle Anhänge einer Confluence-Seite auf.
|
||||
|
||||
### `confluence_delete_attachment`
|
||||
|
||||
Löscht einen Anhang von einer Confluence-Seite (wird in den Papierkorb verschoben).
|
||||
Löschen eines Anhangs von einer Confluence-Seite (wird in den Papierkorb verschoben).
|
||||
|
||||
#### Eingabe
|
||||
|
||||
@@ -263,7 +290,7 @@ Löscht einen Anhang von einer Confluence-Seite (wird in den Papierkorb verschob
|
||||
|
||||
### `confluence_list_labels`
|
||||
|
||||
Alle Labels einer Confluence-Seite auflisten.
|
||||
Listet alle Labels einer Confluence-Seite auf.
|
||||
|
||||
#### Eingabe
|
||||
|
||||
@@ -282,7 +309,7 @@ Alle Labels einer Confluence-Seite auflisten.
|
||||
|
||||
### `confluence_get_space`
|
||||
|
||||
Details zu einem bestimmten Confluence-Space abrufen.
|
||||
Ruft Details zu einem bestimmten Confluence-Space ab.
|
||||
|
||||
#### Eingabe
|
||||
|
||||
@@ -306,7 +333,7 @@ Details zu einem bestimmten Confluence-Space abrufen.
|
||||
|
||||
### `confluence_list_spaces`
|
||||
|
||||
Alle für den Benutzer zugänglichen Confluence-Spaces auflisten.
|
||||
Listet alle Confluence-Spaces auf, auf die der Benutzer zugreifen kann.
|
||||
|
||||
#### Eingabe
|
||||
|
||||
|
||||
@@ -46,11 +46,11 @@ Durchsuchen Sie das Web mit Exa AI. Liefert relevante Suchergebnisse mit Titeln,
|
||||
| `type` | string | Nein | Suchtyp: neural, keyword, auto oder fast \(Standard: auto\) |
|
||||
| `includeDomains` | string | Nein | Kommagetrennte Liste von Domains, die in den Ergebnissen enthalten sein sollen |
|
||||
| `excludeDomains` | string | Nein | Kommagetrennte Liste von Domains, die aus den Ergebnissen ausgeschlossen werden sollen |
|
||||
| `category` | string | Nein | Nach Kategorie filtern: company, research_paper, news_article, pdf, github, tweet, movie, song, personal_site |
|
||||
| `category` | string | Nein | Nach Kategorie filtern: company, research paper, news, pdf, github, tweet, personal site, linkedin profile, financial report |
|
||||
| `text` | boolean | Nein | Vollständigen Textinhalt in Ergebnissen einschließen \(Standard: false\) |
|
||||
| `highlights` | boolean | Nein | Hervorgehobene Ausschnitte in Ergebnissen einschließen \(Standard: false\) |
|
||||
| `summary` | boolean | Nein | KI-generierte Zusammenfassungen in Ergebnissen einschließen \(Standard: false\) |
|
||||
| `livecrawl` | string | Nein | Live-Crawling-Modus: always, fallback oder never \(Standard: never\) |
|
||||
| `livecrawl` | string | Nein | Live-Crawling-Modus: never \(Standard\), fallback, always oder preferred \(immer livecrawl versuchen, bei Fehlschlag auf Cache zurückgreifen\) |
|
||||
| `apiKey` | string | Ja | Exa AI API-Schlüssel |
|
||||
|
||||
#### Ausgabe
|
||||
@@ -69,11 +69,11 @@ Ruft den Inhalt von Webseiten mit Exa AI ab. Gibt den Titel, Textinhalt und opti
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `urls` | string | Ja | Kommagetrennte Liste von URLs, von denen Inhalte abgerufen werden sollen |
|
||||
| `text` | boolean | Nein | Wenn true, gibt den vollständigen Seitentext mit Standardeinstellungen zurück. Wenn false, deaktiviert die Textrückgabe. |
|
||||
| `summaryQuery` | string | Nein | Abfrage zur Steuerung der Zusammenfassungserstellung |
|
||||
| `subpages` | number | Nein | Anzahl der Unterseiten, die von den angegebenen URLs gecrawlt werden sollen |
|
||||
| `summaryQuery` | string | Nein | Anfrage zur Steuerung der Zusammenfassungserstellung |
|
||||
| `subpages` | number | Nein | Anzahl der Unterseiten, die von den bereitgestellten URLs gecrawlt werden sollen |
|
||||
| `subpageTarget` | string | Nein | Kommagetrennte Schlüsselwörter zur Zielausrichtung auf bestimmte Unterseiten \(z.B. "docs,tutorial,about"\) |
|
||||
| `highlights` | boolean | Nein | Hervorgehobene Ausschnitte in Ergebnissen einschließen \(Standard: false\) |
|
||||
| `livecrawl` | string | Nein | Live-Crawling-Modus: always, fallback oder never \(Standard: never\) |
|
||||
| `livecrawl` | string | Nein | Live-Crawling-Modus: never \(Standard\), fallback, always oder preferred \(immer livecrawl versuchen, bei Fehlschlag auf Cache zurückgreifen\) |
|
||||
| `apiKey` | string | Ja | Exa AI API-Schlüssel |
|
||||
|
||||
#### Ausgabe
|
||||
@@ -95,11 +95,10 @@ Finde Webseiten, die einer bestimmten URL ähnlich sind, mit Exa AI. Gibt eine L
|
||||
| `text` | boolean | Nein | Ob der vollständige Text der ähnlichen Seiten eingeschlossen werden soll |
|
||||
| `includeDomains` | string | Nein | Kommagetrennte Liste von Domains, die in den Ergebnissen enthalten sein sollen |
|
||||
| `excludeDomains` | string | Nein | Kommagetrennte Liste von Domains, die aus den Ergebnissen ausgeschlossen werden sollen |
|
||||
| `excludeSourceDomain` | boolean | Nein | Quell-Domain aus Ergebnissen ausschließen \(Standard: false\) |
|
||||
| `category` | string | Nein | Nach Kategorie filtern: company, research_paper, news_article, pdf, github, tweet, movie, song, personal_site |
|
||||
| `excludeSourceDomain` | boolean | Nein | Die Quell-Domain aus den Ergebnissen ausschließen \(Standard: false\) |
|
||||
| `highlights` | boolean | Nein | Hervorgehobene Ausschnitte in Ergebnissen einschließen \(Standard: false\) |
|
||||
| `summary` | boolean | Nein | KI-generierte Zusammenfassungen in Ergebnissen einschließen \(Standard: false\) |
|
||||
| `livecrawl` | string | Nein | Live-Crawling-Modus: always, fallback oder never \(Standard: never\) |
|
||||
| `livecrawl` | string | Nein | Live-Crawling-Modus: never \(Standard\), fallback, always oder preferred \(versucht immer livecrawl, fällt auf Cache zurück, wenn es fehlschlägt\) |
|
||||
| `apiKey` | string | Ja | Exa AI API-Schlüssel |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
@@ -144,8 +144,33 @@ Extrahieren Sie strukturierte Daten aus vollständigen Webseiten mithilfe von na
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Ob der Extraktionsvorgang erfolgreich war |
|
||||
| `data` | object | Extrahierte strukturierte Daten gemäß dem Schema oder Prompt |
|
||||
| `sources` | array | Datenquellen \(nur wenn showSources aktiviert ist\) |
|
||||
| `data` | object | Extrahierte strukturierte Daten gemäß dem Schema oder der Eingabeaufforderung |
|
||||
|
||||
### `firecrawl_agent`
|
||||
|
||||
Autonomer Web-Datenextraktions-Agent. Sucht und sammelt Informationen basierend auf natürlichsprachlichen Anweisungen, ohne dass spezifische URLs erforderlich sind.
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `prompt` | string | Ja | Natürlichsprachliche Beschreibung der zu extrahierenden Daten \(max. 10.000 Zeichen\) |
|
||||
| `urls` | json | Nein | Optionales Array von URLs, auf die sich der Agent konzentrieren soll |
|
||||
| `schema` | json | Nein | JSON-Schema, das die Struktur der zu extrahierenden Daten definiert |
|
||||
| `maxCredits` | number | Nein | Maximale Credits, die für diese Agent-Aufgabe verwendet werden sollen |
|
||||
| `strictConstrainToURLs` | boolean | Nein | Wenn true, besucht der Agent nur URLs, die im urls-Array angegeben sind |
|
||||
| `apiKey` | string | Ja | Firecrawl API-Schlüssel |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Ob die Agent-Operation erfolgreich war |
|
||||
| `status` | string | Aktueller Status des Agent-Jobs \(processing, completed, failed\) |
|
||||
| `data` | object | Vom Agent extrahierte Daten |
|
||||
| `creditsUsed` | number | Anzahl der von dieser Agent-Aufgabe verbrauchten Credits |
|
||||
| `expiresAt` | string | Zeitstempel, wann die Ergebnisse ablaufen \(24 Stunden\) |
|
||||
| `sources` | object | Array der vom Agent verwendeten Quell-URLs |
|
||||
|
||||
## Hinweise
|
||||
|
||||
|
||||
233
apps/docs/content/docs/de/tools/fireflies.mdx
Normal file
233
apps/docs/content/docs/de/tools/fireflies.mdx
Normal file
@@ -0,0 +1,233 @@
|
||||
---
|
||||
title: Fireflies
|
||||
description: Interagieren Sie mit Fireflies.ai-Besprechungstranskripten und -aufzeichnungen
|
||||
---
|
||||
|
||||
import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
<BlockInfoCard
|
||||
type="fireflies"
|
||||
color="#100730"
|
||||
/>
|
||||
|
||||
{/* MANUAL-CONTENT-START:intro */}
|
||||
[Fireflies.ai](https://fireflies.ai/) ist eine Plattform für Besprechungstranskription und -intelligenz, die sich in Sim integriert und es Ihren Agenten ermöglicht, direkt mit Besprechungsaufzeichnungen, Transkripten und Erkenntnissen über No-Code-Automatisierungen zu arbeiten.
|
||||
|
||||
Die Fireflies-Integration in Sim bietet Tools für:
|
||||
|
||||
- **Besprechungstranskripte auflisten:** Rufen Sie mehrere Besprechungen und deren Zusammenfassungsinformationen für Ihr Team oder Konto ab.
|
||||
- **Vollständige Transkriptdetails abrufen:** Greifen Sie auf detaillierte Transkripte zu, einschließlich Zusammenfassungen, Aktionspunkten, Themen und Teilnehmeranalysen für jede Besprechung.
|
||||
- **Audio oder Video hochladen:** Laden Sie Audio-/Videodateien hoch oder geben Sie URLs zur Transkription an – optional können Sie Sprache, Titel, Teilnehmer festlegen und automatisierte Besprechungsnotizen erhalten.
|
||||
- **Transkripte durchsuchen:** Finden Sie Besprechungen nach Stichwort, Teilnehmer, Moderator oder Zeitraum, um relevante Diskussionen schnell zu lokalisieren.
|
||||
- **Transkripte löschen:** Entfernen Sie bestimmte Besprechungstranskripte aus Ihrem Fireflies-Workspace.
|
||||
- **Soundbites (Bites) erstellen:** Extrahieren und markieren Sie wichtige Momente aus Transkripten als Audio- oder Videoclips.
|
||||
- **Workflows bei Transkriptionsabschluss auslösen:** Aktivieren Sie Sim-Workflows automatisch, wenn eine Fireflies-Besprechungstranskription abgeschlossen ist, mithilfe des bereitgestellten Webhook-Triggers – dies ermöglicht Echtzeit-Automatisierungen und Benachrichtigungen basierend auf neuen Besprechungsdaten.
|
||||
|
||||
Durch die Kombination dieser Funktionen können Sie Aktionen nach Besprechungen optimieren, strukturierte Erkenntnisse extrahieren, Benachrichtigungen automatisieren, Aufzeichnungen verwalten und benutzerdefinierte Workflows rund um die Anrufe Ihrer Organisation orchestrieren – alles sicher unter Verwendung Ihres API-Schlüssels und Ihrer Fireflies-Anmeldedaten.
|
||||
{/* MANUAL-CONTENT-END */}
|
||||
|
||||
## Nutzungsanweisungen
|
||||
|
||||
Integrieren Sie Fireflies.ai in den Workflow. Verwalten Sie Besprechungstranskripte, fügen Sie Bots zu Live-Besprechungen hinzu, erstellen Sie Soundbites und mehr. Kann auch Workflows auslösen, wenn Transkriptionen abgeschlossen sind.
|
||||
|
||||
## Tools
|
||||
|
||||
### `fireflies_list_transcripts`
|
||||
|
||||
Meeting-Transkripte von Fireflies.ai mit optionaler Filterung auflisten
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Ja | Fireflies API-Schlüssel |
|
||||
| `keyword` | string | Nein | Suchbegriff im Meeting-Titel oder Transkript |
|
||||
| `fromDate` | string | Nein | Transkripte ab diesem Datum filtern \(ISO 8601-Format\) |
|
||||
| `toDate` | string | Nein | Transkripte bis zu diesem Datum filtern \(ISO 8601-Format\) |
|
||||
| `hostEmail` | string | Nein | Nach E-Mail-Adresse des Meeting-Hosts filtern |
|
||||
| `participants` | string | Nein | Nach E-Mail-Adressen der Teilnehmer filtern \(durch Komma getrennt\) |
|
||||
| `limit` | number | Nein | Maximale Anzahl der zurückzugebenden Transkripte \(max. 50\) |
|
||||
| `skip` | number | Nein | Anzahl der zu überspringenden Transkripte für Paginierung |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `transcripts` | array | Liste der Transkripte |
|
||||
| `count` | number | Anzahl der zurückgegebenen Transkripte |
|
||||
|
||||
### `fireflies_get_transcript`
|
||||
|
||||
Ein einzelnes Transkript mit vollständigen Details einschließlich Zusammenfassung, Aktionspunkten und Analysen abrufen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Ja | Fireflies API-Schlüssel |
|
||||
| `transcriptId` | string | Ja | Die abzurufende Transkript-ID |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `transcript` | object | Das Transkript mit vollständigen Details |
|
||||
|
||||
### `fireflies_get_user`
|
||||
|
||||
Ruft Benutzerinformationen von Fireflies.ai ab. Gibt den aktuellen Benutzer zurück, wenn keine ID angegeben ist.
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Ja | Fireflies-API-Schlüssel |
|
||||
| `userId` | string | Nein | Abzurufende Benutzer-ID \(optional, Standardwert ist der Inhaber des API-Schlüssels\) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `user` | object | Benutzerinformationen |
|
||||
|
||||
### `fireflies_list_users`
|
||||
|
||||
Listet alle Benutzer in Ihrem Fireflies.ai-Team auf
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Ja | Fireflies-API-Schlüssel |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `users` | array | Liste der Teammitglieder |
|
||||
|
||||
### `fireflies_upload_audio`
|
||||
|
||||
Lädt eine Audiodatei-URL zur Transkription zu Fireflies.ai hoch
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Ja | Fireflies-API-Schlüssel |
|
||||
| `audioFile` | file | Nein | Audio-/Videodatei zur Transkription hochladen |
|
||||
| `audioUrl` | string | Nein | Öffentliche HTTPS-URL der Audio-/Videodatei \(MP3, MP4, WAV, M4A, OGG\) |
|
||||
| `title` | string | Nein | Titel für das Meeting/Transkript |
|
||||
| `webhook` | string | Nein | Webhook-URL zur Benachrichtigung, wenn die Transkription abgeschlossen ist |
|
||||
| `language` | string | Nein | Sprachcode für die Transkription \(z. B. „es" für Spanisch, „de" für Deutsch\) |
|
||||
| `attendees` | string | Nein | Teilnehmer im JSON-Format: \[\{"displayName": "Name", "email": "email@example.com"\}\] |
|
||||
| `clientReferenceId` | string | Nein | Benutzerdefinierte Referenz-ID zur Nachverfolgung |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Ob der Upload erfolgreich war |
|
||||
| `title` | string | Titel des hochgeladenen Meetings |
|
||||
| `message` | string | Statusmeldung von Fireflies |
|
||||
|
||||
### `fireflies_delete_transcript`
|
||||
|
||||
Ein Transkript von Fireflies.ai löschen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Ja | Fireflies API-Schlüssel |
|
||||
| `transcriptId` | string | Ja | Die zu löschende Transkript-ID |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Ob das Transkript erfolgreich gelöscht wurde |
|
||||
|
||||
### `fireflies_add_to_live_meeting`
|
||||
|
||||
Fügen Sie den Fireflies.ai-Bot zu einem laufenden Meeting hinzu, um aufzuzeichnen und zu transkribieren
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Ja | Fireflies API-Schlüssel |
|
||||
| `meetingLink` | string | Ja | Gültige Meeting-URL \(Zoom, Google Meet, Microsoft Teams, etc.\) |
|
||||
| `title` | string | Nein | Titel für das Meeting \(max. 256 Zeichen\) |
|
||||
| `meetingPassword` | string | Nein | Passwort für das Meeting, falls erforderlich \(max. 32 Zeichen\) |
|
||||
| `duration` | number | Nein | Meetingdauer in Minuten \(15–120, Standard: 60\) |
|
||||
| `language` | string | Nein | Sprachcode für die Transkription \(z. B. "en", "es", "de"\) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Ob der Bot erfolgreich zum Meeting hinzugefügt wurde |
|
||||
|
||||
### `fireflies_create_bite`
|
||||
|
||||
Erstellen Sie einen Soundbite/Highlight aus einem bestimmten Zeitbereich in einem Transkript
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Ja | Fireflies API-Schlüssel |
|
||||
| `transcriptId` | string | Ja | ID des Transkripts, aus dem der Bite erstellt werden soll |
|
||||
| `startTime` | number | Ja | Startzeit des Bites in Sekunden |
|
||||
| `endTime` | number | Ja | Endzeit des Bites in Sekunden |
|
||||
| `name` | string | Nein | Name für den Bite \(max. 256 Zeichen\) |
|
||||
| `mediaType` | string | Nein | Medientyp: "video" oder "audio" |
|
||||
| `summary` | string | Nein | Zusammenfassung für den Bite \(max. 500 Zeichen\) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `bite` | object | Details des erstellten Bites |
|
||||
|
||||
### `fireflies_list_bites`
|
||||
|
||||
Soundbites/Highlights von Fireflies.ai auflisten
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Ja | Fireflies API-Schlüssel |
|
||||
| `transcriptId` | string | Nein | Bites für ein bestimmtes Transkript filtern |
|
||||
| `mine` | boolean | Nein | Nur Bites zurückgeben, die dem Besitzer des API-Schlüssels gehören \(Standard: true\) |
|
||||
| `limit` | number | Nein | Maximale Anzahl der zurückzugebenden Bites \(max. 50\) |
|
||||
| `skip` | number | Nein | Anzahl der zu überspringenden Bites für die Paginierung |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `bites` | array | Liste der Bites/Soundbites |
|
||||
|
||||
### `fireflies_list_contacts`
|
||||
|
||||
Alle Kontakte aus Ihren Fireflies.ai-Meetings auflisten
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Ja | Fireflies-API-Schlüssel |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `contacts` | array | Liste der Kontakte aus Meetings |
|
||||
|
||||
## Hinweise
|
||||
|
||||
- Kategorie: `tools`
|
||||
- Typ: `fireflies`
|
||||
@@ -1,231 +0,0 @@
|
||||
---
|
||||
title: Webhook
|
||||
description: Empfangen Sie Webhooks von jedem Dienst durch Konfiguration eines
|
||||
benutzerdefinierten Webhooks.
|
||||
---
|
||||
|
||||
import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
import { Image } from '@/components/ui/image'
|
||||
|
||||
<BlockInfoCard
|
||||
type="generic_webhook"
|
||||
color="#10B981"
|
||||
/>
|
||||
|
||||
<div className="flex justify-center">
|
||||
<Image
|
||||
src="/static/blocks/webhook.png"
|
||||
alt="Webhook-Block-Konfiguration"
|
||||
width={500}
|
||||
height={400}
|
||||
className="my-6"
|
||||
/>
|
||||
</div>
|
||||
|
||||
## Übersicht
|
||||
|
||||
Der generische Webhook-Block ermöglicht den Empfang von Webhooks von jedem externen Dienst. Dies ist ein flexibler Trigger, der jede JSON-Nutzlast verarbeiten kann und sich daher ideal für die Integration mit Diensten eignet, die keinen dedizierten Sim-Block haben.
|
||||
|
||||
## Grundlegende Verwendung
|
||||
|
||||
### Einfacher Durchleitungsmodus
|
||||
|
||||
Ohne ein definiertes Eingabeformat leitet der Webhook den gesamten Anforderungstext unverändert weiter:
|
||||
|
||||
```bash
|
||||
curl -X POST https://sim.ai/api/webhooks/trigger/{webhook-path} \
|
||||
-H "Content-Type: application/json" \
|
||||
-H "X-Sim-Secret: your-secret" \
|
||||
-d '{
|
||||
"message": "Test webhook trigger",
|
||||
"data": {
|
||||
"key": "value"
|
||||
}
|
||||
}'
|
||||
```
|
||||
|
||||
Greifen Sie in nachgelagerten Blöcken auf die Daten zu mit:
|
||||
- `<webhook1.message>` → "Test webhook trigger"
|
||||
- `<webhook1.data.key>` → "value"
|
||||
|
||||
### Strukturiertes Eingabeformat (optional)
|
||||
|
||||
Definieren Sie ein Eingabeschema, um typisierte Felder zu erhalten und erweiterte Funktionen wie Datei-Uploads zu aktivieren:
|
||||
|
||||
**Konfiguration des Eingabeformats:**
|
||||
|
||||
```json
|
||||
[
|
||||
{ "name": "message", "type": "string" },
|
||||
{ "name": "priority", "type": "number" },
|
||||
{ "name": "documents", "type": "files" }
|
||||
]
|
||||
```
|
||||
|
||||
**Webhook-Anfrage:**
|
||||
|
||||
```bash
|
||||
curl -X POST https://sim.ai/api/webhooks/trigger/{webhook-path} \
|
||||
-H "Content-Type: application/json" \
|
||||
-H "X-Sim-Secret: your-secret" \
|
||||
-d '{
|
||||
"message": "Invoice submission",
|
||||
"priority": 1,
|
||||
"documents": [
|
||||
{
|
||||
"type": "file",
|
||||
"data": "data:application/pdf;base64,JVBERi0xLjQK...",
|
||||
"name": "invoice.pdf",
|
||||
"mime": "application/pdf"
|
||||
}
|
||||
]
|
||||
}'
|
||||
```
|
||||
|
||||
## Datei-Uploads
|
||||
|
||||
### Unterstützte Dateiformate
|
||||
|
||||
Der Webhook unterstützt zwei Dateieingabeformate:
|
||||
|
||||
#### 1. Base64-kodierte Dateien
|
||||
Zum direkten Hochladen von Dateiinhalten:
|
||||
|
||||
```json
|
||||
{
|
||||
"documents": [
|
||||
{
|
||||
"type": "file",
|
||||
"data": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgA...",
|
||||
"name": "screenshot.png",
|
||||
"mime": "image/png"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
- **Maximale Größe**: 20MB pro Datei
|
||||
- **Format**: Standard-Daten-URL mit Base64-Kodierung
|
||||
- **Speicherung**: Dateien werden in sicheren Ausführungsspeicher hochgeladen
|
||||
|
||||
#### 2. URL-Referenzen
|
||||
Zum Übergeben vorhandener Datei-URLs:
|
||||
|
||||
```json
|
||||
{
|
||||
"documents": [
|
||||
{
|
||||
"type": "url",
|
||||
"data": "https://example.com/files/document.pdf",
|
||||
"name": "document.pdf",
|
||||
"mime": "application/pdf"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
### Zugriff auf Dateien in nachgelagerten Blöcken
|
||||
|
||||
Dateien werden in `UserFile`Objekte mit den folgenden Eigenschaften verarbeitet:
|
||||
|
||||
```typescript
|
||||
{
|
||||
id: string, // Unique file identifier
|
||||
name: string, // Original filename
|
||||
url: string, // Presigned URL (valid for 5 minutes)
|
||||
size: number, // File size in bytes
|
||||
type: string, // MIME type
|
||||
key: string, // Storage key
|
||||
uploadedAt: string, // ISO timestamp
|
||||
expiresAt: string // ISO timestamp (5 minutes)
|
||||
}
|
||||
```
|
||||
|
||||
**Zugriff in Blöcken:**
|
||||
- `<webhook1.documents[0].url>` → Download-URL
|
||||
- `<webhook1.documents[0].name>` → "invoice.pdf"
|
||||
- `<webhook1.documents[0].size>` → 524288
|
||||
- `<webhook1.documents[0].type>` → "application/pdf"
|
||||
|
||||
### Vollständiges Datei-Upload-Beispiel
|
||||
|
||||
```bash
|
||||
# Create a base64-encoded file
|
||||
echo "Hello World" | base64
|
||||
# SGVsbG8gV29ybGQK
|
||||
|
||||
# Send webhook with file
|
||||
curl -X POST https://sim.ai/api/webhooks/trigger/{webhook-path} \
|
||||
-H "Content-Type: application/json" \
|
||||
-H "X-Sim-Secret: your-secret" \
|
||||
-d '{
|
||||
"subject": "Document for review",
|
||||
"attachments": [
|
||||
{
|
||||
"type": "file",
|
||||
"data": "data:text/plain;base64,SGVsbG8gV29ybGQK",
|
||||
"name": "sample.txt",
|
||||
"mime": "text/plain"
|
||||
}
|
||||
]
|
||||
}'
|
||||
```
|
||||
|
||||
## Authentifizierung
|
||||
|
||||
### Authentifizierung konfigurieren (Optional)
|
||||
|
||||
In der Webhook-Konfiguration:
|
||||
1. Aktiviere "Authentifizierung erforderlich"
|
||||
2. Setze einen geheimen Token
|
||||
3. Wähle den Header-Typ:
|
||||
- **Benutzerdefinierter Header**: `X-Sim-Secret: your-token`
|
||||
- **Authorization Bearer**: `Authorization: Bearer your-token`
|
||||
|
||||
### Verwendung der Authentifizierung
|
||||
|
||||
```bash
|
||||
# With custom header
|
||||
curl -X POST https://sim.ai/api/webhooks/trigger/{webhook-path} \
|
||||
-H "Content-Type: application/json" \
|
||||
-H "X-Sim-Secret: your-secret-token" \
|
||||
-d '{"message": "Authenticated request"}'
|
||||
|
||||
# With bearer token
|
||||
curl -X POST https://sim.ai/api/webhooks/trigger/{webhook-path} \
|
||||
-H "Content-Type: application/json" \
|
||||
-H "Authorization: Bearer your-secret-token" \
|
||||
-d '{"message": "Authenticated request"}'
|
||||
```
|
||||
|
||||
## Best Practices
|
||||
|
||||
1. **Eingabeformat für Struktur verwenden**: Definiere ein Eingabeformat, wenn du das erwartete Schema kennst. Dies bietet:
|
||||
- Typvalidierung
|
||||
- Bessere Autovervollständigung im Editor
|
||||
- Datei-Upload-Funktionen
|
||||
|
||||
2. **Authentifizierung**: Aktiviere immer die Authentifizierung für Produktions-Webhooks, um unbefugten Zugriff zu verhindern.
|
||||
|
||||
3. **Dateigrößenbeschränkungen**: Halte Dateien unter 20 MB. Verwende für größere Dateien URL-Referenzen.
|
||||
|
||||
4. **Dateiablauf**: Heruntergeladene Dateien haben URLs mit einer Gültigkeit von 5 Minuten. Verarbeite sie umgehend oder speichere sie an anderer Stelle, wenn sie länger benötigt werden.
|
||||
|
||||
5. **Fehlerbehandlung**: Die Webhook-Verarbeitung erfolgt asynchron. Überprüfe die Ausführungsprotokolle auf Fehler.
|
||||
|
||||
6. **Testen**: Verwende die Schaltfläche "Webhook testen" im Editor, um deine Konfiguration vor der Bereitstellung zu validieren.
|
||||
|
||||
## Anwendungsfälle
|
||||
|
||||
- **Formularübermittlungen**: Empfange Daten von benutzerdefinierten Formularen mit Datei-Uploads
|
||||
- **Drittanbieter-Integrationen**: Verbinde mit Diensten, die Webhooks senden (Stripe, GitHub usw.)
|
||||
- **Dokumentenverarbeitung**: Akzeptiere Dokumente von externen Systemen zur Verarbeitung
|
||||
- **Ereignisbenachrichtigungen**: Empfange Ereignisdaten aus verschiedenen Quellen
|
||||
- **Benutzerdefinierte APIs**: Erstelle benutzerdefinierte API-Endpunkte für deine Anwendungen
|
||||
|
||||
## Hinweise
|
||||
|
||||
- Kategorie: `triggers`
|
||||
- Typ: `generic_webhook`
|
||||
- **Dateiunterstützung**: Verfügbar über Eingabeformat-Konfiguration
|
||||
- **Maximale Dateigröße**: 20 MB pro Datei
|
||||
@@ -34,7 +34,8 @@ Alle Gruppen in einer Google Workspace-Domain auflisten
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `output` | json | Google Groups API-Antwortdaten |
|
||||
| `groups` | json | Array von Gruppenobjekten |
|
||||
| `nextPageToken` | string | Token zum Abrufen der nächsten Ergebnisseite |
|
||||
|
||||
### `google_groups_get_group`
|
||||
|
||||
@@ -50,7 +51,7 @@ Details einer bestimmten Google-Gruppe nach E-Mail oder Gruppen-ID abrufen
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `output` | json | Google Groups API-Antwortdaten |
|
||||
| `group` | json | Gruppenobjekt |
|
||||
|
||||
### `google_groups_create_group`
|
||||
|
||||
@@ -68,7 +69,7 @@ Eine neue Google-Gruppe in der Domain erstellen
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `output` | json | Google Groups API-Antwortdaten |
|
||||
| `group` | json | Erstelltes Gruppenobjekt |
|
||||
|
||||
### `google_groups_update_group`
|
||||
|
||||
@@ -87,7 +88,7 @@ Eine bestehende Google-Gruppe aktualisieren
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `output` | json | Google Groups API-Antwortdaten |
|
||||
| `group` | json | Aktualisiertes Gruppenobjekt |
|
||||
|
||||
### `google_groups_delete_group`
|
||||
|
||||
@@ -103,7 +104,7 @@ Eine Google-Gruppe löschen
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `output` | json | Google Groups API-Antwortdaten |
|
||||
| `message` | string | Erfolgsmeldung |
|
||||
|
||||
### `google_groups_list_members`
|
||||
|
||||
@@ -122,7 +123,8 @@ Alle Mitglieder einer Google-Gruppe auflisten
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `output` | json | Google Groups API-Antwortdaten |
|
||||
| `members` | json | Array von Mitgliederobjekten |
|
||||
| `nextPageToken` | string | Token zum Abrufen der nächsten Ergebnisseite |
|
||||
|
||||
### `google_groups_get_member`
|
||||
|
||||
@@ -139,7 +141,7 @@ Details eines bestimmten Mitglieds in einer Google-Gruppe abrufen
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `output` | json | Google Groups API-Antwortdaten |
|
||||
| `member` | json | Mitgliederobjekt |
|
||||
|
||||
### `google_groups_add_member`
|
||||
|
||||
@@ -157,7 +159,7 @@ Ein neues Mitglied zu einer Google-Gruppe hinzufügen
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `output` | json | Google Groups API-Antwortdaten |
|
||||
| `member` | json | Hinzugefügtes Mitgliederobjekt |
|
||||
|
||||
### `google_groups_remove_member`
|
||||
|
||||
@@ -174,7 +176,7 @@ Ein Mitglied aus einer Google-Gruppe entfernen
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `output` | json | Google Groups API-Antwortdaten |
|
||||
| `message` | string | Erfolgsmeldung |
|
||||
|
||||
### `google_groups_update_member`
|
||||
|
||||
@@ -192,7 +194,7 @@ Ein Mitglied aktualisieren
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `output` | json | Google Groups API-Antwortdaten |
|
||||
| `member` | json | Aktualisiertes Mitgliederobjekt |
|
||||
|
||||
### `google_groups_has_member`
|
||||
|
||||
@@ -209,7 +211,7 @@ Prüfen, ob ein Benutzer Mitglied einer Google-Gruppe ist
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `output` | json | Google Groups API-Antwortdaten |
|
||||
| `isMember` | boolean | Gibt an, ob der Benutzer ein Mitglied der Gruppe ist |
|
||||
|
||||
## Hinweise
|
||||
|
||||
|
||||
@@ -35,8 +35,7 @@ Einen Export in einer Angelegenheit erstellen
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `output` | json | Vault API-Antwortdaten |
|
||||
| `file` | json | Heruntergeladene Exportdatei \(UserFile\) aus Ausführungsdateien |
|
||||
| `export` | json | Erstelltes Export-Objekt |
|
||||
|
||||
### `google_vault_list_matters_export`
|
||||
|
||||
@@ -55,8 +54,9 @@ Exporte für eine Angelegenheit auflisten
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `output` | json | Vault API-Antwortdaten |
|
||||
| `file` | json | Heruntergeladene Exportdatei \(UserFile\) aus Ausführungsdateien |
|
||||
| `exports` | json | Array von Export-Objekten |
|
||||
| `export` | json | Einzelnes Export-Objekt \(wenn exportId angegeben ist\) |
|
||||
| `nextPageToken` | string | Token zum Abrufen der nächsten Ergebnisseite |
|
||||
|
||||
### `google_vault_download_export_file`
|
||||
|
||||
@@ -95,8 +95,7 @@ Eine Aufbewahrung in einer Angelegenheit erstellen
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `output` | json | Vault-API-Antwortdaten |
|
||||
| `file` | json | Heruntergeladene Exportdatei \(UserFile\) aus Ausführungsdateien |
|
||||
| `hold` | json | Erstelltes Hold-Objekt |
|
||||
|
||||
### `google_vault_list_matters_holds`
|
||||
|
||||
@@ -113,10 +112,11 @@ Aufbewahrungen für eine Angelegenheit auflisten
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Beschreibung |
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `output` | json | Vault API-Antwortdaten |
|
||||
| `file` | json | Heruntergeladene Exportdatei \(UserFile\) aus Ausführungsdateien |
|
||||
| `holds` | json | Array von Hold-Objekten |
|
||||
| `hold` | json | Einzelnes Hold-Objekt \(wenn holdId angegeben ist\) |
|
||||
| `nextPageToken` | string | Token zum Abrufen der nächsten Ergebnisseite |
|
||||
|
||||
### `google_vault_create_matters`
|
||||
|
||||
@@ -131,10 +131,9 @@ Einen neuen Fall in Google Vault erstellen
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Beschreibung |
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `output` | json | Vault API-Antwortdaten |
|
||||
| `file` | json | Heruntergeladene Exportdatei \(UserFile\) aus Ausführungsdateien |
|
||||
| `matter` | json | Erstelltes Matter-Objekt |
|
||||
|
||||
### `google_vault_list_matters`
|
||||
|
||||
@@ -150,10 +149,11 @@ Fälle auflisten oder einen bestimmten Fall abrufen, wenn matterId angegeben ist
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Beschreibung |
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `output` | json | Vault API-Antwortdaten |
|
||||
| `file` | json | Heruntergeladene Exportdatei \(UserFile\) aus Ausführungsdateien |
|
||||
| `matters` | json | Array von Matter-Objekten |
|
||||
| `matter` | json | Einzelnes Matter-Objekt \(wenn matterId angegeben ist\) |
|
||||
| `nextPageToken` | string | Token zum Abrufen der nächsten Ergebnisseite |
|
||||
|
||||
## Hinweise
|
||||
|
||||
|
||||
@@ -321,7 +321,7 @@ Eine Anmerkung auf einem Dashboard oder als globale Anmerkung erstellen
|
||||
| `organizationId` | string | Nein | Organisations-ID für Multi-Org-Grafana-Instanzen |
|
||||
| `text` | string | Ja | Der Textinhalt der Anmerkung |
|
||||
| `tags` | string | Nein | Kommagetrennte Liste von Tags |
|
||||
| `dashboardUid` | string | Nein | UID des Dashboards, zu dem die Anmerkung hinzugefügt werden soll \(optional für globale Anmerkungen\) |
|
||||
| `dashboardUid` | string | Ja | UID des Dashboards, zu dem die Anmerkung hinzugefügt werden soll |
|
||||
| `panelId` | number | Nein | ID des Panels, zu dem die Anmerkung hinzugefügt werden soll |
|
||||
| `time` | number | Nein | Startzeit in Epochenmillisekunden \(standardmäßig jetzt\) |
|
||||
| `timeEnd` | number | Nein | Endzeit in Epochenmillisekunden \(für Bereichsanmerkungen\) |
|
||||
@@ -346,11 +346,11 @@ Anmerkungen nach Zeitraum, Dashboard oder Tags abfragen
|
||||
| `organizationId` | string | Nein | Organisations-ID für Multi-Org-Grafana-Instanzen |
|
||||
| `from` | number | Nein | Startzeit in Epochenmillisekunden |
|
||||
| `to` | number | Nein | Endzeit in Epochenmillisekunden |
|
||||
| `dashboardUid` | string | Nein | Nach Dashboard-UID filtern |
|
||||
| `dashboardUid` | string | Ja | Dashboard-UID, von der Anmerkungen abgefragt werden sollen |
|
||||
| `panelId` | number | Nein | Nach Panel-ID filtern |
|
||||
| `tags` | string | Nein | Kommagetrennte Liste von Tags, nach denen gefiltert werden soll |
|
||||
| `tags` | string | Nein | Kommagetrennte Liste von Tags zum Filtern |
|
||||
| `type` | string | Nein | Nach Typ filtern \(alert oder annotation\) |
|
||||
| `limit` | number | Nein | Maximale Anzahl von zurückzugebenden Anmerkungen |
|
||||
| `limit` | number | Nein | Maximale Anzahl der zurückzugebenden Anmerkungen |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
@@ -481,12 +481,22 @@ Einen neuen Ordner in Grafana erstellen
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| Parameter | Type | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `id` | number | Die numerische ID des erstellten Ordners |
|
||||
| `uid` | string | Die UID des erstellten Ordners |
|
||||
| `title` | string | Der Titel des erstellten Ordners |
|
||||
| `url` | string | Der URL-Pfad zum Ordner |
|
||||
| `hasAcl` | boolean | Ob der Ordner benutzerdefinierte ACL-Berechtigungen hat |
|
||||
| `canSave` | boolean | Ob der aktuelle Benutzer den Ordner speichern kann |
|
||||
| `canEdit` | boolean | Ob der aktuelle Benutzer den Ordner bearbeiten kann |
|
||||
| `canAdmin` | boolean | Ob der aktuelle Benutzer Administratorrechte für den Ordner hat |
|
||||
| `canDelete` | boolean | Ob der aktuelle Benutzer den Ordner löschen kann |
|
||||
| `createdBy` | string | Benutzername desjenigen, der den Ordner erstellt hat |
|
||||
| `created` | string | Zeitstempel, wann der Ordner erstellt wurde |
|
||||
| `updatedBy` | string | Benutzername desjenigen, der den Ordner zuletzt aktualisiert hat |
|
||||
| `updated` | string | Zeitstempel, wann der Ordner zuletzt aktualisiert wurde |
|
||||
| `version` | number | Versionsnummer des Ordners |
|
||||
|
||||
## Notizen
|
||||
|
||||
|
||||
218
apps/docs/content/docs/de/tools/grain.mdx
Normal file
218
apps/docs/content/docs/de/tools/grain.mdx
Normal file
@@ -0,0 +1,218 @@
|
||||
---
|
||||
title: Grain
|
||||
description: Zugriff auf Meeting-Aufzeichnungen, Transkripte und KI-Zusammenfassungen
|
||||
---
|
||||
|
||||
import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
<BlockInfoCard
|
||||
type="grain"
|
||||
color="#F6FAF9"
|
||||
/>
|
||||
|
||||
{/* MANUAL-CONTENT-START:intro */}
|
||||
[Grain](https://grain.com/) ist eine moderne Plattform zum Erfassen, Speichern und Teilen von Meeting-Aufzeichnungen, Transkripten, Highlights und KI-gestützten Zusammenfassungen. Grain ermöglicht es Teams, Gespräche in umsetzbare Erkenntnisse zu verwandeln und alle über wichtige Momente aus Meetings auf dem Laufenden zu halten.
|
||||
|
||||
Mit Grain können Sie:
|
||||
|
||||
- **Auf durchsuchbare Aufzeichnungen und Transkripte zugreifen**: Finden und überprüfen Sie jedes Meeting nach Stichwort, Teilnehmer oder Thema.
|
||||
- **Highlights und Clips teilen**: Erfassen Sie wichtige Momente und teilen Sie kurze Video-/Audio-Highlights in Ihrem Team oder in Workflows.
|
||||
- **KI-generierte Zusammenfassungen erhalten**: Erstellen Sie automatisch Meeting-Zusammenfassungen, Aktionspunkte und wichtige Erkenntnisse mithilfe der fortschrittlichen KI von Grain.
|
||||
- **Meetings nach Team oder Typ organisieren**: Taggen und kategorisieren Sie Aufzeichnungen für einfachen Zugriff und Reporting.
|
||||
|
||||
Die Sim-Grain-Integration ermöglicht es Ihren Agenten:
|
||||
|
||||
- Meeting-Aufzeichnungen und Details nach flexiblen Filtern (Datum/Uhrzeit, Teilnehmer, Team usw.) aufzulisten, zu suchen und abzurufen.
|
||||
- Auf KI-Zusammenfassungen, Teilnehmer, Highlights und andere Metadaten für Meetings zuzugreifen, um Automatisierungen oder Analysen zu unterstützen.
|
||||
- Workflows auszulösen, sobald neue Meetings verarbeitet, Zusammenfassungen generiert oder Highlights über Grain-Webhooks erstellt werden.
|
||||
- Grain-Daten einfach in andere Tools zu überführen oder Teammitglieder zu benachrichtigen, sobald etwas Wichtiges in einem Meeting passiert.
|
||||
|
||||
Ob Sie Follow-up-Aktionen automatisieren, wichtige Gespräche dokumentieren oder Erkenntnisse in Ihrer Organisation sichtbar machen möchten – Grain und Sim machen es einfach, Meeting-Intelligence mit Ihren Workflows zu verbinden.
|
||||
{/* MANUAL-CONTENT-END */}
|
||||
|
||||
## Nutzungsanweisungen
|
||||
|
||||
Integrieren Sie Grain in Ihren Workflow. Greifen Sie auf Meeting-Aufzeichnungen, Transkripte, Highlights und KI-generierte Zusammenfassungen zu. Kann auch Workflows basierend auf Grain-Webhook-Ereignissen auslösen.
|
||||
|
||||
## Tools
|
||||
|
||||
### `grain_list_recordings`
|
||||
|
||||
Aufzeichnungen von Grain mit optionalen Filtern und Paginierung auflisten
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Ja | Grain API-Schlüssel \(Personal Access Token\) |
|
||||
| `cursor` | string | Nein | Paginierungs-Cursor für nächste Seite |
|
||||
| `beforeDatetime` | string | Nein | Nur Aufzeichnungen vor diesem ISO8601-Zeitstempel |
|
||||
| `afterDatetime` | string | Nein | Nur Aufzeichnungen nach diesem ISO8601-Zeitstempel |
|
||||
| `participantScope` | string | Nein | Filter: "internal" oder "external" |
|
||||
| `titleSearch` | string | Nein | Suchbegriff zum Filtern nach Aufzeichnungstitel |
|
||||
| `teamId` | string | Nein | Nach Team-UUID filtern |
|
||||
| `meetingTypeId` | string | Nein | Nach Meeting-Typ-UUID filtern |
|
||||
| `includeHighlights` | boolean | Nein | Highlights/Clips in Antwort einschließen |
|
||||
| `includeParticipants` | boolean | Nein | Teilnehmerliste in Antwort einschließen |
|
||||
| `includeAiSummary` | boolean | Nein | KI-generierte Zusammenfassung einschließen |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `recordings` | array | Array von Aufzeichnungsobjekten |
|
||||
|
||||
### `grain_get_recording`
|
||||
|
||||
Details einer einzelnen Aufzeichnung nach ID abrufen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Ja | Grain API-Schlüssel \(Personal Access Token\) |
|
||||
| `recordingId` | string | Ja | Die Aufzeichnungs-UUID |
|
||||
| `includeHighlights` | boolean | Nein | Highlights/Clips einschließen |
|
||||
| `includeParticipants` | boolean | Nein | Teilnehmerliste einschließen |
|
||||
| `includeAiSummary` | boolean | Nein | KI-Zusammenfassung einschließen |
|
||||
| `includeCalendarEvent` | boolean | Nein | Kalenderereignisdaten einschließen |
|
||||
| `includeHubspot` | boolean | Nein | HubSpot-Verknüpfungen einschließen |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `id` | string | Aufnahme-UUID |
|
||||
| `title` | string | Aufnahmetitel |
|
||||
| `start_datetime` | string | ISO8601-Startzeitstempel |
|
||||
| `end_datetime` | string | ISO8601-Endzeitstempel |
|
||||
| `duration_ms` | number | Dauer in Millisekunden |
|
||||
| `media_type` | string | audio, transcript oder video |
|
||||
| `source` | string | Aufnahmequelle \(zoom, meet, teams, etc.\) |
|
||||
| `url` | string | URL zur Ansicht in Grain |
|
||||
| `thumbnail_url` | string | Vorschaubild-URL |
|
||||
| `tags` | array | Array von Tag-Strings |
|
||||
| `teams` | array | Teams, zu denen die Aufnahme gehört |
|
||||
| `meeting_type` | object | Meeting-Typ-Informationen \(id, name, scope\) |
|
||||
| `highlights` | array | Highlights \(falls enthalten\) |
|
||||
| `participants` | array | Teilnehmer \(falls enthalten\) |
|
||||
| `ai_summary` | object | KI-Zusammenfassungstext \(falls enthalten\) |
|
||||
| `calendar_event` | object | Kalenderereignisdaten \(falls enthalten\) |
|
||||
| `hubspot` | object | HubSpot-Verknüpfungen \(falls enthalten\) |
|
||||
|
||||
### `grain_get_transcript`
|
||||
|
||||
Vollständiges Transkript einer Aufnahme abrufen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Ja | Grain-API-Schlüssel \(Personal Access Token\) |
|
||||
| `recordingId` | string | Ja | Die Aufnahme-UUID |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `transcript` | array | Array von Transkriptabschnitten |
|
||||
|
||||
### `grain_list_teams`
|
||||
|
||||
Alle Teams im Workspace auflisten
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Ja | Grain API-Schlüssel \(Personal Access Token\) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `teams` | array | Array von Team-Objekten |
|
||||
|
||||
### `grain_list_meeting_types`
|
||||
|
||||
Alle Meeting-Typen im Workspace auflisten
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Ja | Grain API-Schlüssel \(Personal Access Token\) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `meeting_types` | array | Array von Meeting-Typ-Objekten |
|
||||
|
||||
### `grain_create_hook`
|
||||
|
||||
Einen Webhook erstellen, um Aufzeichnungs-Events zu empfangen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Ja | Grain API-Schlüssel \(Personal Access Token\) |
|
||||
| `hookUrl` | string | Ja | Webhook-Endpunkt-URL \(muss mit 2xx antworten\) |
|
||||
| `filterBeforeDatetime` | string | Nein | Filter: Aufzeichnungen vor diesem Datum |
|
||||
| `filterAfterDatetime` | string | Nein | Filter: Aufzeichnungen nach diesem Datum |
|
||||
| `filterParticipantScope` | string | Nein | Filter: "internal" oder "external" |
|
||||
| `filterTeamId` | string | Nein | Filter: spezifische Team-UUID |
|
||||
| `filterMeetingTypeId` | string | Nein | Filter: spezifischer Meeting-Typ |
|
||||
| `includeHighlights` | boolean | Nein | Highlights in Webhook-Payload einschließen |
|
||||
| `includeParticipants` | boolean | Nein | Teilnehmer in Webhook-Payload einschließen |
|
||||
| `includeAiSummary` | boolean | Nein | KI-Zusammenfassung in Webhook-Payload einschließen |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `id` | string | Hook-UUID |
|
||||
| `enabled` | boolean | Ob der Hook aktiv ist |
|
||||
| `hook_url` | string | Die Webhook-URL |
|
||||
| `filter` | object | Angewendete Filter |
|
||||
| `include` | object | Enthaltene Felder |
|
||||
| `inserted_at` | string | ISO8601-Erstellungszeitstempel |
|
||||
|
||||
### `grain_list_hooks`
|
||||
|
||||
Alle Webhooks für das Konto auflisten
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Ja | Grain-API-Schlüssel \(Personal Access Token\) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `hooks` | array | Array von Hook-Objekten |
|
||||
|
||||
### `grain_delete_hook`
|
||||
|
||||
Einen Webhook anhand der ID löschen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Ja | Grain-API-Schlüssel \(Personal Access Token\) |
|
||||
| `hookId` | string | Ja | Die zu löschende Hook-UUID |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | True, wenn der Webhook erfolgreich gelöscht wurde |
|
||||
|
||||
## Hinweise
|
||||
|
||||
- Kategorie: `tools`
|
||||
- Typ: `grain`
|
||||
136
apps/docs/content/docs/de/tools/greptile.mdx
Normal file
136
apps/docs/content/docs/de/tools/greptile.mdx
Normal file
@@ -0,0 +1,136 @@
|
||||
---
|
||||
title: Greptile
|
||||
description: KI-gestützte Codebase-Suche und Fragen & Antworten
|
||||
---
|
||||
|
||||
import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
<BlockInfoCard
|
||||
type="greptile"
|
||||
color="#e5e5e5"
|
||||
/>
|
||||
|
||||
{/* MANUAL-CONTENT-START:intro */}
|
||||
[Greptile](https://greptile.com/) ist ein KI-gestütztes Entwicklertool zum Durchsuchen und Abfragen von Quellcode über ein oder mehrere Repositories hinweg. Greptile ermöglicht es Entwicklern, komplexe Fragen zur Codebase schnell in natürlicher Sprache zu beantworten, relevante Dateien oder Symbole zu finden und Einblicke in unbekannten oder Legacy-Code zu gewinnen.
|
||||
|
||||
Mit Greptile können Sie:
|
||||
|
||||
- **Komplexe Fragen zu Ihrer Codebase in natürlicher Sprache stellen**: Erhalten Sie KI-generierte Antworten zu Architektur, Verwendungsmustern oder spezifischen Implementierungen.
|
||||
- **Relevanten Code, Dateien oder Funktionen sofort finden**: Suchen Sie mit Schlüsselwörtern oder natürlichsprachlichen Abfragen und springen Sie direkt zu passenden Zeilen, Dateien oder Codeblöcken.
|
||||
- **Abhängigkeiten und Beziehungen verstehen**: Entdecken Sie, wo Funktionen aufgerufen werden, wie Module miteinander verbunden sind oder wo APIs in großen Codebasen verwendet werden.
|
||||
- **Onboarding und Code-Exploration beschleunigen**: Arbeiten Sie sich schnell in neue Projekte ein oder debuggen Sie knifflige Probleme, ohne tiefgreifenden Vorkontext zu benötigen.
|
||||
|
||||
Die Sim Greptile-Integration ermöglicht es Ihren KI-Agenten:
|
||||
|
||||
- Private und öffentliche Repositories mithilfe der fortschrittlichen Sprachmodelle von Greptile abzufragen und zu durchsuchen.
|
||||
- Kontextuell relevante Code-Snippets, Dateiverweise und Erklärungen abzurufen, um Code-Reviews, Dokumentation und Entwicklungsworkflows zu unterstützen.
|
||||
- Automatisierungen in Sim-Workflows basierend auf Such-/Abfrageergebnissen auszulösen oder Code-Intelligenz direkt in Ihre Prozesse einzubetten.
|
||||
|
||||
Egal, ob Sie die Produktivität von Entwicklern beschleunigen, Dokumentation automatisieren oder das Verständnis Ihres Teams für eine komplexe Codebase verbessern möchten – Greptile und Sim bieten nahtlosen Zugriff auf Code-Intelligenz und Suche, genau dort, wo Sie sie benötigen.
|
||||
{/* MANUAL-CONTENT-END */}
|
||||
|
||||
## Nutzungsanleitung
|
||||
|
||||
Fragen Sie Codebasen mit natürlicher Sprache über Greptile ab und durchsuchen Sie sie. Erhalten Sie KI-generierte Antworten zu Ihrem Code, finden Sie relevante Dateien und verstehen Sie komplexe Codebasen.
|
||||
|
||||
## Tools
|
||||
|
||||
### `greptile_query`
|
||||
|
||||
Durchsuchen Sie Repositories in natürlicher Sprache und erhalten Sie Antworten mit relevanten Code-Referenzen. Greptile nutzt KI, um Ihre Codebasis zu verstehen und Fragen zu beantworten.
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `query` | string | Ja | Frage in natürlicher Sprache zur Codebasis |
|
||||
| `repositories` | string | Ja | Kommagetrennte Liste von Repositories. Format: "github:branch:owner/repo" oder nur "owner/repo" \(Standard ist github:main\) |
|
||||
| `sessionId` | string | Nein | Sitzungs-ID für Gesprächskontinuität |
|
||||
| `genius` | boolean | Nein | Genius-Modus für gründlichere Analyse aktivieren \(langsamer, aber genauer\) |
|
||||
| `apiKey` | string | Ja | Greptile-API-Schlüssel |
|
||||
| `githubToken` | string | Ja | GitHub Personal Access Token mit Lesezugriff auf Repositories |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `message` | string | KI-generierte Antwort auf die Anfrage |
|
||||
| `sources` | array | Relevante Code-Referenzen, die die Antwort unterstützen |
|
||||
|
||||
### `greptile_search`
|
||||
|
||||
Durchsuchen Sie Repositories in natürlicher Sprache und erhalten Sie relevante Code-Referenzen ohne Generierung einer Antwort. Nützlich zum Auffinden spezifischer Code-Stellen.
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `query` | string | Ja | Suchanfrage in natürlicher Sprache zum Auffinden relevanten Codes |
|
||||
| `repositories` | string | Ja | Kommagetrennte Liste von Repositories. Format: "github:branch:owner/repo" oder nur "owner/repo" \(Standard ist github:main\) |
|
||||
| `sessionId` | string | Nein | Sitzungs-ID für Gesprächskontinuität |
|
||||
| `genius` | boolean | Nein | Genius-Modus für gründlichere Suche aktivieren \(langsamer, aber genauer\) |
|
||||
| `apiKey` | string | Ja | Greptile-API-Schlüssel |
|
||||
| `githubToken` | string | Ja | GitHub Personal Access Token mit Lesezugriff auf Repositories |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `sources` | array | Relevante Code-Referenzen, die zur Suchanfrage passen |
|
||||
|
||||
### `greptile_index_repo`
|
||||
|
||||
Übermitteln Sie ein Repository zur Indexierung durch Greptile. Die Indexierung muss abgeschlossen sein, bevor das Repository abgefragt werden kann. Kleine Repositories benötigen 3-5 Minuten, größere können über eine Stunde dauern.
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `remote` | string | Ja | Git-Remote-Typ: github oder gitlab |
|
||||
| `repository` | string | Ja | Repository im Format owner/repo \(z. B. "facebook/react"\) |
|
||||
| `branch` | string | Ja | Zu indexierender Branch \(z. B. "main" oder "master"\) |
|
||||
| `reload` | boolean | Nein | Neuindexierung erzwingen, auch wenn bereits indexiert |
|
||||
| `notify` | boolean | Nein | E-Mail-Benachrichtigung senden, wenn Indexierung abgeschlossen ist |
|
||||
| `apiKey` | string | Ja | Greptile-API-Schlüssel |
|
||||
| `githubToken` | string | Ja | GitHub Personal Access Token mit Lesezugriff auf Repository |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `repositoryId` | string | Eindeutige Kennung für das indexierte Repository \(Format: remote:branch:owner/repo\) |
|
||||
| `statusEndpoint` | string | URL-Endpunkt zur Überprüfung des Indexierungsstatus |
|
||||
| `message` | string | Statusmeldung über den Indexierungsvorgang |
|
||||
|
||||
### `greptile_status`
|
||||
|
||||
Überprüfen Sie den Indexierungsstatus eines Repositories. Verwenden Sie dies, um zu verifizieren, ob ein Repository abfragebereit ist, oder um den Indexierungsfortschritt zu überwachen.
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `remote` | string | Ja | Git-Remote-Typ: github oder gitlab |
|
||||
| `repository` | string | Ja | Repository im Format owner/repo \(z. B. "facebook/react"\) |
|
||||
| `branch` | string | Ja | Branch-Name \(z. B. "main" oder "master"\) |
|
||||
| `apiKey` | string | Ja | Greptile-API-Schlüssel |
|
||||
| `githubToken` | string | Ja | GitHub Personal Access Token mit Lesezugriff auf das Repository |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `repository` | string | Repository-Name \(owner/repo\) |
|
||||
| `remote` | string | Git-Remote \(github/gitlab\) |
|
||||
| `branch` | string | Branch-Name |
|
||||
| `private` | boolean | Ob das Repository privat ist |
|
||||
| `status` | string | Indexierungsstatus: submitted, cloning, processing, completed oder failed |
|
||||
| `filesProcessed` | number | Anzahl der bisher verarbeiteten Dateien |
|
||||
| `numFiles` | number | Gesamtanzahl der Dateien im Repository |
|
||||
| `sampleQuestions` | array | Beispielfragen für das indexierte Repository |
|
||||
| `sha` | string | Git-Commit-SHA der indexierten Version |
|
||||
|
||||
## Hinweise
|
||||
|
||||
- Kategorie: `tools`
|
||||
- Typ: `greptile`
|
||||
@@ -46,10 +46,11 @@ Alle Benutzer vom HubSpot-Konto abrufen
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Status des Operationserfolgs |
|
||||
| `output` | object | Benutzerdaten |
|
||||
| `users` | array | Array von HubSpot-Benutzerobjekten |
|
||||
| `metadata` | object | Operationsmetadaten |
|
||||
| `success` | boolean | Erfolgsstatus der Operation |
|
||||
|
||||
### `hubspot_list_contacts`
|
||||
|
||||
@@ -68,8 +69,10 @@ Alle Kontakte vom HubSpot-Konto mit Paginierungsunterstützung abrufen
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `contacts` | array | Array von HubSpot-Kontaktobjekten |
|
||||
| `paging` | object | Paginierungsinformationen |
|
||||
| `metadata` | object | Operationsmetadaten |
|
||||
| `success` | boolean | Erfolgsstatus der Operation |
|
||||
| `output` | object | Kontaktdaten |
|
||||
|
||||
### `hubspot_get_contact`
|
||||
|
||||
@@ -88,8 +91,9 @@ Einen einzelnen Kontakt anhand von ID oder E-Mail aus HubSpot abrufen
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `contact` | object | HubSpot-Kontaktobjekt mit Eigenschaften |
|
||||
| `metadata` | object | Operationsmetadaten |
|
||||
| `success` | boolean | Erfolgsstatus der Operation |
|
||||
| `output` | object | Kontaktdaten |
|
||||
|
||||
### `hubspot_create_contact`
|
||||
|
||||
@@ -106,8 +110,9 @@ Erstellt einen neuen Kontakt in HubSpot. Erfordert mindestens eines der folgende
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `contact` | object | Erstelltes HubSpot-Kontaktobjekt |
|
||||
| `metadata` | object | Operationsmetadaten |
|
||||
| `success` | boolean | Erfolgsstatus der Operation |
|
||||
| `output` | object | Daten des erstellten Kontakts |
|
||||
|
||||
### `hubspot_update_contact`
|
||||
|
||||
@@ -125,8 +130,9 @@ Aktualisiert einen bestehenden Kontakt in HubSpot anhand von ID oder E-Mail
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `contact` | object | Aktualisiertes HubSpot-Kontaktobjekt |
|
||||
| `metadata` | object | Operationsmetadaten |
|
||||
| `success` | boolean | Erfolgsstatus der Operation |
|
||||
| `output` | object | Daten des aktualisierten Kontakts |
|
||||
|
||||
### `hubspot_search_contacts`
|
||||
|
||||
@@ -147,8 +153,11 @@ Suche nach Kontakten in HubSpot mit Filtern, Sortierung und Abfragen
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `contacts` | array | Array übereinstimmender HubSpot-Kontaktobjekte |
|
||||
| `total` | number | Gesamtanzahl übereinstimmender Kontakte |
|
||||
| `paging` | object | Paginierungsinformationen |
|
||||
| `metadata` | object | Operationsmetadaten |
|
||||
| `success` | boolean | Erfolgsstatus der Operation |
|
||||
| `output` | object | Suchergebnisse |
|
||||
|
||||
### `hubspot_list_companies`
|
||||
|
||||
@@ -167,8 +176,10 @@ Alle Unternehmen aus dem HubSpot-Konto mit Paginierungsunterstützung abrufen
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `companies` | array | Array von HubSpot-Unternehmensobjekten |
|
||||
| `paging` | object | Paginierungsinformationen |
|
||||
| `metadata` | object | Operationsmetadaten |
|
||||
| `success` | boolean | Erfolgsstatus der Operation |
|
||||
| `output` | object | Unternehmensdaten |
|
||||
|
||||
### `hubspot_get_company`
|
||||
|
||||
@@ -187,8 +198,9 @@ Ruft ein einzelnes Unternehmen anhand der ID oder Domain von HubSpot ab
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `company` | object | HubSpot-Unternehmensobjekt mit Eigenschaften |
|
||||
| `metadata` | object | Operationsmetadaten |
|
||||
| `success` | boolean | Erfolgsstatus der Operation |
|
||||
| `output` | object | Unternehmensdaten |
|
||||
|
||||
### `hubspot_create_company`
|
||||
|
||||
@@ -205,8 +217,9 @@ Erstellt ein neues Unternehmen in HubSpot
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `company` | object | Erstelltes HubSpot-Unternehmensobjekt |
|
||||
| `metadata` | object | Operationsmetadaten |
|
||||
| `success` | boolean | Erfolgsstatus der Operation |
|
||||
| `output` | object | Daten des erstellten Unternehmens |
|
||||
|
||||
### `hubspot_update_company`
|
||||
|
||||
@@ -224,8 +237,9 @@ Aktualisiert ein bestehendes Unternehmen in HubSpot anhand der ID oder Domain
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `company` | object | Aktualisiertes HubSpot-Unternehmensobjekt |
|
||||
| `metadata` | object | Operationsmetadaten |
|
||||
| `success` | boolean | Erfolgsstatus der Operation |
|
||||
| `output` | object | Aktualisierte Unternehmensdaten |
|
||||
|
||||
### `hubspot_search_companies`
|
||||
|
||||
@@ -246,8 +260,11 @@ Suche nach Unternehmen in HubSpot mit Filtern, Sortierung und Abfragen
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `companies` | array | Array übereinstimmender HubSpot-Unternehmensobjekte |
|
||||
| `total` | number | Gesamtzahl übereinstimmender Unternehmen |
|
||||
| `paging` | object | Paginierungsinformationen |
|
||||
| `metadata` | object | Operationsmetadaten |
|
||||
| `success` | boolean | Erfolgsstatus der Operation |
|
||||
| `output` | object | Suchergebnisse |
|
||||
|
||||
### `hubspot_list_deals`
|
||||
|
||||
@@ -266,8 +283,10 @@ Alle Deals vom HubSpot-Konto mit Paginierungsunterstützung abrufen
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `deals` | array | Array von HubSpot-Deal-Objekten |
|
||||
| `paging` | object | Paginierungsinformationen |
|
||||
| `metadata` | object | Operationsmetadaten |
|
||||
| `success` | boolean | Erfolgsstatus der Operation |
|
||||
| `output` | object | Deals-Daten |
|
||||
|
||||
## Hinweise
|
||||
|
||||
|
||||
36
apps/docs/content/docs/de/tools/imap.mdx
Normal file
36
apps/docs/content/docs/de/tools/imap.mdx
Normal file
@@ -0,0 +1,36 @@
|
||||
---
|
||||
title: IMAP-E-Mail
|
||||
description: Workflows auslösen, wenn neue E-Mails über IMAP eintreffen
|
||||
(funktioniert mit jedem E-Mail-Anbieter)
|
||||
---
|
||||
|
||||
import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
<BlockInfoCard
|
||||
type="imap"
|
||||
color="#6366F1"
|
||||
/>
|
||||
|
||||
{/* MANUAL-CONTENT-START:intro */}
|
||||
Der IMAP-E-Mail-Trigger ermöglicht es Ihren Sim-Workflows, automatisch zu starten, sobald eine neue E-Mail in einem Postfach empfangen wird, das das IMAP-Protokoll unterstützt. Dies funktioniert mit Gmail, Outlook, Yahoo und den meisten anderen E-Mail-Anbietern.
|
||||
|
||||
Mit dem IMAP-Trigger können Sie:
|
||||
|
||||
- **E-Mail-Verarbeitung automatisieren**: Starten Sie Workflows in Echtzeit, wenn neue Nachrichten in Ihrem Posteingang eintreffen.
|
||||
- **Nach Absender, Betreff oder Ordner filtern**: Konfigurieren Sie Ihren Trigger so, dass er nur auf E-Mails reagiert, die bestimmte Bedingungen erfüllen.
|
||||
- **Anhänge extrahieren und verarbeiten**: Laden Sie Dateianhänge automatisch herunter und verwenden Sie sie in Ihren automatisierten Abläufen.
|
||||
- **E-Mail-Inhalte parsen und verwenden**: Greifen Sie auf Betreff, Absender, Empfänger, vollständigen Text und andere Metadaten in nachfolgenden Workflow-Schritten zu.
|
||||
- **Mit jedem E-Mail-Anbieter integrieren**: Funktioniert mit jedem Dienst, der standardmäßigen IMAP-Zugriff bietet, ohne Vendor-Lock-in.
|
||||
- **Bei ungelesenen, markierten oder benutzerdefinierten Kriterien auslösen**: Richten Sie erweiterte Filter für die Arten von E-Mails ein, die Ihre Workflows starten.
|
||||
|
||||
Mit Sim gibt Ihnen die IMAP-Integration die Möglichkeit, E-Mails in eine handlungsfähige Automatisierungsquelle zu verwandeln. Reagieren Sie auf Kundenanfragen, verarbeiten Sie Benachrichtigungen, starten Sie Daten-Pipelines und mehr – direkt aus Ihrem E-Mail-Posteingang, ohne manuelles Eingreifen.
|
||||
{/* MANUAL-CONTENT-END */}
|
||||
|
||||
## Nutzungsanleitung
|
||||
|
||||
Verbinden Sie sich über das IMAP-Protokoll mit jedem E-Mail-Server, um Workflows auszulösen, wenn neue E-Mails empfangen werden. Unterstützt Gmail, Outlook, Yahoo und jeden anderen IMAP-kompatiblen E-Mail-Anbieter.
|
||||
|
||||
## Hinweise
|
||||
|
||||
- Kategorie: `triggers`
|
||||
- Typ: `imap`
|
||||
@@ -38,6 +38,7 @@ Erstellen Sie einen neuen Kontakt in Intercom mit E-Mail, external_id oder Rolle
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `role` | string | Nein | Die Rolle des Kontakts. Akzeptiert 'user' oder 'lead'. Standardmäßig 'lead', wenn nicht angegeben. |
|
||||
| `email` | string | Nein | Die E-Mail-Adresse des Kontakts |
|
||||
| `external_id` | string | Nein | Eine eindeutige Kennung für den Kontakt, die vom Client bereitgestellt wird |
|
||||
| `phone` | string | Nein | Die Telefonnummer des Kontakts |
|
||||
@@ -45,16 +46,16 @@ Erstellen Sie einen neuen Kontakt in Intercom mit E-Mail, external_id oder Rolle
|
||||
| `avatar` | string | Nein | Eine Avatar-Bild-URL für den Kontakt |
|
||||
| `signed_up_at` | number | Nein | Der Zeitpunkt der Registrierung des Benutzers als Unix-Zeitstempel |
|
||||
| `last_seen_at` | number | Nein | Der Zeitpunkt, zu dem der Benutzer zuletzt gesehen wurde, als Unix-Zeitstempel |
|
||||
| `owner_id` | string | Nein | Die ID eines Administrators, dem die Kontoinhaberschaft des Kontakts zugewiesen wurde |
|
||||
| `unsubscribed_from_emails` | boolean | Nein | Ob der Kontakt E-Mails abbestellt hat |
|
||||
| `custom_attributes` | string | Nein | Benutzerdefinierte Attribute als JSON-Objekt \(z.B. \{"attribute_name": "value"\}\) |
|
||||
| `owner_id` | string | Nein | Die ID eines Administrators, dem die Kontoverantwortung für den Kontakt zugewiesen wurde |
|
||||
| `unsubscribed_from_emails` | boolean | Nein | Ob der Kontakt von E-Mails abgemeldet ist |
|
||||
| `custom_attributes` | string | Nein | Benutzerdefinierte Attribute als JSON-Objekt \(z. B. \{"attribute_name": "value"\}\) |
|
||||
| `company_id` | string | Nein | Unternehmens-ID, mit der der Kontakt bei der Erstellung verknüpft werden soll |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Erfolgsstatus der Operation |
|
||||
| `output` | object | Erstellte Kontaktdaten |
|
||||
| `contact` | object | Erstelltes Kontaktobjekt |
|
||||
|
||||
### `intercom_get_contact`
|
||||
|
||||
@@ -70,8 +71,7 @@ Einen einzelnen Kontakt anhand der ID von Intercom abrufen
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Erfolgsstatus der Operation |
|
||||
| `output` | object | Kontaktdaten |
|
||||
| `contact` | object | Kontaktobjekt |
|
||||
|
||||
### `intercom_update_contact`
|
||||
|
||||
@@ -81,23 +81,25 @@ Einen bestehenden Kontakt in Intercom aktualisieren
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `contactId` | string | Ja | Zu aktualisierende Kontakt-ID |
|
||||
| `contactId` | string | Ja | Kontakt-ID, die aktualisiert werden soll |
|
||||
| `role` | string | Nein | Die Rolle des Kontakts. Akzeptiert 'user' oder 'lead'. |
|
||||
| `external_id` | string | Nein | Eine eindeutige Kennung für den Kontakt, die vom Client bereitgestellt wird |
|
||||
| `email` | string | Nein | Die E-Mail-Adresse des Kontakts |
|
||||
| `phone` | string | Nein | Die Telefonnummer des Kontakts |
|
||||
| `name` | string | Nein | Der Name des Kontakts |
|
||||
| `avatar` | string | Nein | Eine Avatar-Bild-URL für den Kontakt |
|
||||
| `signed_up_at` | number | Nein | Der Zeitpunkt der Registrierung des Benutzers als Unix-Timestamp |
|
||||
| `last_seen_at` | number | Nein | Der Zeitpunkt, zu dem der Benutzer zuletzt gesehen wurde, als Unix-Timestamp |
|
||||
| `owner_id` | string | Nein | Die ID eines Administrators, dem die Kontoeigentümerschaft des Kontakts zugewiesen wurde |
|
||||
| `unsubscribed_from_emails` | boolean | Nein | Ob der Kontakt E-Mails abbestellt hat |
|
||||
| `custom_attributes` | string | Nein | Benutzerdefinierte Attribute als JSON-Objekt \(z.B. \{"attribut_name": "wert"\}\) |
|
||||
| `signed_up_at` | number | Nein | Der Zeitpunkt der Registrierung des Benutzers als Unix-Zeitstempel |
|
||||
| `last_seen_at` | number | Nein | Der Zeitpunkt, zu dem der Benutzer zuletzt gesehen wurde, als Unix-Zeitstempel |
|
||||
| `owner_id` | string | Nein | Die ID eines Administrators, dem die Kontoverantwortung für den Kontakt zugewiesen wurde |
|
||||
| `unsubscribed_from_emails` | boolean | Nein | Ob der Kontakt von E-Mails abgemeldet ist |
|
||||
| `custom_attributes` | string | Nein | Benutzerdefinierte Attribute als JSON-Objekt \(z. B. \{"attribute_name": "value"\}\) |
|
||||
| `company_id` | string | Nein | Unternehmens-ID, mit der der Kontakt verknüpft werden soll |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Erfolgsstatus der Operation |
|
||||
| `output` | object | Aktualisierte Kontaktdaten |
|
||||
| `contact` | object | Aktualisiertes Kontaktobjekt |
|
||||
|
||||
### `intercom_list_contacts`
|
||||
|
||||
@@ -114,8 +116,7 @@ Alle Kontakte von Intercom mit Paginierungsunterstützung auflisten
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Status des Operationserfolgs |
|
||||
| `output` | object | Liste der Kontakte |
|
||||
| `contacts` | array | Array von Kontaktobjekten |
|
||||
|
||||
### `intercom_search_contacts`
|
||||
|
||||
@@ -125,16 +126,17 @@ Suche nach Kontakten in Intercom mit einer Abfrage
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `query` | string | Ja | Suchabfrage (z.B., \{"field":"email","operator":"=","value":"user@example.com"\}) |
|
||||
| `query` | string | Ja | Suchabfrage (z. B. \{"field":"email","operator":"=","value":"user@example.com"\}) |
|
||||
| `per_page` | number | Nein | Anzahl der Ergebnisse pro Seite (max: 150) |
|
||||
| `starting_after` | string | Nein | Cursor für Paginierung |
|
||||
| `sort_field` | string | Nein | Feld zum Sortieren (z. B. "name", "created_at", "last_seen_at") |
|
||||
| `sort_order` | string | Nein | Sortierreihenfolge: "ascending" oder "descending" |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Status des Operationserfolgs |
|
||||
| `output` | object | Suchergebnisse |
|
||||
| `contacts` | array | Array von übereinstimmenden Kontaktobjekten |
|
||||
|
||||
### `intercom_delete_contact`
|
||||
|
||||
@@ -150,8 +152,9 @@ Einen Kontakt aus Intercom nach ID löschen
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Status des Operationserfolgs |
|
||||
| `output` | object | Löschergebnis |
|
||||
| `id` | string | ID des gelöschten Kontakts |
|
||||
| `deleted` | boolean | Ob der Kontakt gelöscht wurde |
|
||||
| `metadata` | object | Metadaten der Operation |
|
||||
|
||||
### `intercom_create_company`
|
||||
|
||||
@@ -163,19 +166,19 @@ Ein Unternehmen in Intercom erstellen oder aktualisieren
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `company_id` | string | Ja | Ihre eindeutige Kennung für das Unternehmen |
|
||||
| `name` | string | Nein | Der Name des Unternehmens |
|
||||
| `website` | string | Nein | Die Unternehmenswebsite |
|
||||
| `plan` | string | Nein | Der Unternehmensplan |
|
||||
| `website` | string | Nein | Die Website des Unternehmens |
|
||||
| `plan` | string | Nein | Der Name des Unternehmensplans |
|
||||
| `size` | number | Nein | Die Anzahl der Mitarbeiter im Unternehmen |
|
||||
| `industry` | string | Nein | Die Branche, in der das Unternehmen tätig ist |
|
||||
| `monthly_spend` | number | Nein | Wie viel Umsatz das Unternehmen für Ihr Geschäft generiert. Hinweis: Dieses Feld kürzt Dezimalzahlen auf ganze Zahlen \(z.B. wird aus 155,98 die Zahl 155\) |
|
||||
| `monthly_spend` | number | Nein | Wie viel Umsatz das Unternehmen für Ihr Geschäft generiert. Hinweis: Dieses Feld rundet Dezimalzahlen auf ganze Zahlen ab (z. B. wird 155,98 zu 155) |
|
||||
| `custom_attributes` | string | Nein | Benutzerdefinierte Attribute als JSON-Objekt |
|
||||
| `remote_created_at` | number | Nein | Der Zeitpunkt, zu dem das Unternehmen von Ihnen erstellt wurde, als Unix-Zeitstempel |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Status des Operationserfolgs |
|
||||
| `output` | object | Erstellte oder aktualisierte Unternehmensdaten |
|
||||
| `company` | object | Erstelltes oder aktualisiertes Unternehmensobjekt |
|
||||
|
||||
### `intercom_get_company`
|
||||
|
||||
@@ -191,8 +194,7 @@ Ein einzelnes Unternehmen anhand der ID von Intercom abrufen
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Status des Operationserfolgs |
|
||||
| `output` | object | Unternehmensdaten |
|
||||
| `company` | object | Unternehmensobjekt |
|
||||
|
||||
### `intercom_list_companies`
|
||||
|
||||
@@ -204,13 +206,13 @@ Listet alle Unternehmen von Intercom mit Paginierungsunterstützung auf. Hinweis
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `per_page` | number | Nein | Anzahl der Ergebnisse pro Seite |
|
||||
| `page` | number | Nein | Seitennummer |
|
||||
| `starting_after` | string | Nein | Cursor für Paginierung (bevorzugt gegenüber seitenbasierter Paginierung) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Status des Operationserfolgs |
|
||||
| `output` | object | Liste der Unternehmen |
|
||||
| `companies` | array | Array von Unternehmensobjekten |
|
||||
|
||||
### `intercom_get_conversation`
|
||||
|
||||
@@ -221,14 +223,14 @@ Eine einzelne Konversation anhand der ID von Intercom abrufen
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `conversationId` | string | Ja | Konversations-ID zum Abrufen |
|
||||
| `display_as` | string | Nein | Auf "plaintext" setzen, um Nachrichten im Klartext abzurufen |
|
||||
| `display_as` | string | Nein | Auf "plaintext" setzen, um Nachrichten als reinen Text abzurufen |
|
||||
| `include_translations` | boolean | Nein | Wenn true, werden Konversationsteile in die erkannte Sprache der Konversation übersetzt |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Status des Operationserfolgs |
|
||||
| `output` | object | Konversationsdaten |
|
||||
| `conversation` | object | Konversationsobjekt |
|
||||
|
||||
### `intercom_list_conversations`
|
||||
|
||||
@@ -238,15 +240,16 @@ Alle Konversationen von Intercom mit Paginierungsunterstützung auflisten
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `per_page` | number | Nein | Anzahl der Ergebnisse pro Seite \(max: 150\) |
|
||||
| `per_page` | number | Nein | Anzahl der Ergebnisse pro Seite (max: 150) |
|
||||
| `starting_after` | string | Nein | Cursor für Paginierung |
|
||||
| `sort` | string | Nein | Feld zum Sortieren (z. B. "waiting_since", "updated_at", "created_at") |
|
||||
| `order` | string | Nein | Sortierreihenfolge: "asc" (aufsteigend) oder "desc" (absteigend) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Status des Operationserfolgs |
|
||||
| `output` | object | Liste der Konversationen |
|
||||
| `conversations` | array | Array von Konversationsobjekten |
|
||||
|
||||
### `intercom_reply_conversation`
|
||||
|
||||
@@ -256,18 +259,18 @@ Als Administrator auf eine Konversation in Intercom antworten
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `conversationId` | string | Ja | Konversations-ID, auf die geantwortet werden soll |
|
||||
| `conversationId` | string | Ja | Konversations-ID zum Antworten |
|
||||
| `message_type` | string | Ja | Nachrichtentyp: "comment" oder "note" |
|
||||
| `body` | string | Ja | Der Textinhalt der Antwort |
|
||||
| `admin_id` | string | Nein | Die ID des Administrators, der die Antwort verfasst. Wenn nicht angegeben, wird ein Standard-Administrator \(Operator/Fin\) verwendet. |
|
||||
| `attachment_urls` | string | Nein | Kommagetrennte Liste von Bild-URLs \(max. 10\) |
|
||||
| `admin_id` | string | Nein | Die ID des Administrators, der die Antwort verfasst. Falls nicht angegeben, wird ein Standard-Administrator (Operator/Fin) verwendet. |
|
||||
| `attachment_urls` | string | Nein | Kommagetrennte Liste von Bild-URLs (max. 10) |
|
||||
| `created_at` | number | Nein | Unix-Zeitstempel für den Zeitpunkt der Erstellung der Antwort. Falls nicht angegeben, wird die aktuelle Zeit verwendet. |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Status des Operationserfolgs |
|
||||
| `output` | object | Aktualisierte Konversation mit Antwort |
|
||||
| `conversation` | object | Aktualisiertes Konversationsobjekt |
|
||||
|
||||
### `intercom_search_conversations`
|
||||
|
||||
@@ -278,15 +281,16 @@ Nach Konversationen in Intercom mit einer Abfrage suchen
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `query` | string | Ja | Suchabfrage als JSON-Objekt |
|
||||
| `per_page` | number | Nein | Anzahl der Ergebnisse pro Seite (max: 150) |
|
||||
| `per_page` | number | Nein | Anzahl der Ergebnisse pro Seite \(max: 150\) |
|
||||
| `starting_after` | string | Nein | Cursor für Paginierung |
|
||||
| `sort_field` | string | Nein | Feld, nach dem sortiert werden soll \(z. B. "created_at", "updated_at"\) |
|
||||
| `sort_order` | string | Nein | Sortierreihenfolge: "ascending" oder "descending" |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Status des Operationserfolgs |
|
||||
| `output` | object | Suchergebnisse |
|
||||
| `conversations` | array | Array von übereinstimmenden Konversationsobjekten |
|
||||
|
||||
### `intercom_create_ticket`
|
||||
|
||||
@@ -297,15 +301,18 @@ Ein neues Ticket in Intercom erstellen
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `ticket_type_id` | string | Ja | Die ID des Ticket-Typs |
|
||||
| `contacts` | string | Ja | JSON-Array von Kontakt-Identifikatoren (z.B. \{"id": "contact_id"\}) |
|
||||
| `contacts` | string | Ja | JSON-Array von Kontaktkennungen \(z. B. \[\{"id": "contact_id"\}\]\) |
|
||||
| `ticket_attributes` | string | Ja | JSON-Objekt mit Ticket-Attributen einschließlich _default_title_ und _default_description_ |
|
||||
| `company_id` | string | Nein | Unternehmens-ID, mit der das Ticket verknüpft werden soll |
|
||||
| `created_at` | number | Nein | Unix-Zeitstempel für den Zeitpunkt der Ticket-Erstellung. Wenn nicht angegeben, wird die aktuelle Zeit verwendet. |
|
||||
| `conversation_to_link_id` | string | Nein | ID einer vorhandenen Konversation, die mit diesem Ticket verknüpft werden soll |
|
||||
| `disable_notifications` | boolean | Nein | Wenn true, werden Benachrichtigungen bei der Ticket-Erstellung unterdrückt |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Beschreibung |
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Erfolgsstatus der Operation |
|
||||
| `output` | object | Erstellte Ticket-Daten |
|
||||
| `ticket` | object | Erstelltes Ticket-Objekt |
|
||||
|
||||
### `intercom_get_ticket`
|
||||
|
||||
@@ -319,10 +326,9 @@ Ein einzelnes Ticket anhand der ID von Intercom abrufen
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Beschreibung |
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Erfolgsstatus der Operation |
|
||||
| `output` | object | Ticket-Daten |
|
||||
| `ticket` | object | Ticket-Objekt |
|
||||
|
||||
### `intercom_create_message`
|
||||
|
||||
@@ -330,22 +336,23 @@ Eine neue vom Administrator initiierte Nachricht in Intercom erstellen und sende
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Erforderlich | Beschreibung |
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `message_type` | string | Ja | Nachrichtentyp: "inapp" oder "email" |
|
||||
| `message_type` | string | Ja | Nachrichtentyp: "inapp" für In-App-Nachrichten oder "email" für E-Mail-Nachrichten |
|
||||
| `template` | string | Ja | Nachrichtenvorlagenstil: "plain" für einfachen Text oder "personal" für personalisierten Stil |
|
||||
| `subject` | string | Nein | Der Betreff der Nachricht \(für E-Mail-Typ\) |
|
||||
| `body` | string | Ja | Der Inhalt der Nachricht |
|
||||
| `from_type` | string | Ja | Absendertyp: "admin" |
|
||||
| `from_id` | string | Ja | Die ID des Administrators, der die Nachricht sendet |
|
||||
| `to_type` | string | Ja | Empfängertyp: "contact" |
|
||||
| `to_id` | string | Ja | Die ID des Kontakts, der die Nachricht empfängt |
|
||||
| `created_at` | number | Nein | Unix-Zeitstempel für den Zeitpunkt der Nachrichtenerstellung. Wenn nicht angegeben, wird die aktuelle Zeit verwendet. |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Beschreibung |
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Erfolgsstatus der Operation |
|
||||
| `output` | object | Erstellte Nachrichtendaten |
|
||||
| `message` | object | Erstelltes Nachrichtenobjekt |
|
||||
|
||||
## Notizen
|
||||
|
||||
|
||||
@@ -61,8 +61,6 @@ Extrahieren und verarbeiten Sie Webinhalte in sauberen, LLM-freundlichen Text mi
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `content` | string | Der extrahierte Inhalt von der URL, verarbeitet zu sauberem, LLM-freundlichem Text |
|
||||
| `links` | array | Liste der auf der Seite gefundenen Links (wenn gatherLinks oder withLinksummary aktiviert ist) |
|
||||
| `images` | array | Liste der auf der Seite gefundenen Bilder (wenn withImagesummary aktiviert ist) |
|
||||
|
||||
### `jina_search`
|
||||
|
||||
|
||||
@@ -48,8 +48,13 @@ Ruft detaillierte Informationen zu einem bestimmten Jira-Issue ab
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Status des Operationserfolgs |
|
||||
| `output` | object | Jira-Issue-Details mit Issue-Key, Zusammenfassung, Beschreibung, Erstellungs- und Aktualisierungszeitstempeln |
|
||||
| `ts` | string | Zeitstempel der Operation |
|
||||
| `issueKey` | string | Issue-Key \(z.B. PROJ-123\) |
|
||||
| `summary` | string | Issue-Zusammenfassung |
|
||||
| `description` | json | Inhalt der Issue-Beschreibung |
|
||||
| `created` | string | Zeitstempel der Issue-Erstellung |
|
||||
| `updated` | string | Zeitstempel der letzten Issue-Aktualisierung |
|
||||
| `issue` | json | Vollständiges Issue-Objekt mit allen Feldern |
|
||||
|
||||
### `jira_update`
|
||||
|
||||
@@ -73,8 +78,9 @@ Ein Jira-Issue aktualisieren
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Erfolgsstatus der Operation |
|
||||
| `output` | object | Aktualisierte Jira-Issue-Details mit Zeitstempel, Issue-Key, Zusammenfassung und Erfolgsstatus |
|
||||
| `ts` | string | Zeitstempel der Operation |
|
||||
| `issueKey` | string | Aktualisierter Issue-Key \(z.B. PROJ-123\) |
|
||||
| `summary` | string | Issue-Zusammenfassung nach der Aktualisierung |
|
||||
|
||||
### `jira_write`
|
||||
|
||||
@@ -84,21 +90,30 @@ Ein Jira-Issue erstellen
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `domain` | string | Ja | Ihre Jira-Domain (z.B. ihrfirma.atlassian.net) |
|
||||
| `domain` | string | Ja | Ihre Jira-Domain \(z.B. ihrfirma.atlassian.net\) |
|
||||
| `projectId` | string | Ja | Projekt-ID für das Issue |
|
||||
| `summary` | string | Ja | Zusammenfassung für das Issue |
|
||||
| `description` | string | Nein | Beschreibung für das Issue |
|
||||
| `priority` | string | Nein | Priorität für das Issue |
|
||||
| `assignee` | string | Nein | Bearbeiter für das Issue |
|
||||
| `cloudId` | string | Nein | Jira Cloud-ID für die Instanz. Wenn nicht angegeben, wird sie anhand der Domain abgerufen. |
|
||||
| `issueType` | string | Ja | Art des zu erstellenden Issues (z.B. Task, Story) |
|
||||
| `priority` | string | Nein | Prioritäts-ID oder -Name für das Issue \(z.B. "10000" oder "High"\) |
|
||||
| `assignee` | string | Nein | Account-ID des Bearbeiters für das Issue |
|
||||
| `cloudId` | string | Nein | Jira Cloud-ID für die Instanz. Wenn nicht angegeben, wird sie über die Domain abgerufen. |
|
||||
| `issueType` | string | Ja | Typ des zu erstellenden Issues \(z.B. Task, Story\) |
|
||||
| `labels` | array | Nein | Labels für das Issue \(Array von Label-Namen\) |
|
||||
| `duedate` | string | Nein | Fälligkeitsdatum für das Issue \(Format: YYYY-MM-DD\) |
|
||||
| `reporter` | string | Nein | Account-ID des Melders für das Issue |
|
||||
| `environment` | string | Nein | Umgebungsinformationen für das Issue |
|
||||
| `customFieldId` | string | Nein | Benutzerdefinierte Feld-ID \(z.B. customfield_10001\) |
|
||||
| `customFieldValue` | string | Nein | Wert für das benutzerdefinierte Feld |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Erfolgsstatus der Operation |
|
||||
| `output` | object | Erstellte Jira-Issue-Details mit Zeitstempel, Issue-Key, Zusammenfassung, Erfolgsstatus und URL |
|
||||
| `ts` | string | Zeitstempel der Operation |
|
||||
| `issueKey` | string | Erstellter Issue-Key \(z.B. PROJ-123\) |
|
||||
| `summary` | string | Issue-Zusammenfassung |
|
||||
| `url` | string | URL zum erstellten Issue |
|
||||
| `assigneeId` | string | Account-ID des zugewiesenen Benutzers \(falls zugewiesen\) |
|
||||
|
||||
### `jira_bulk_read`
|
||||
|
||||
@@ -116,8 +131,7 @@ Mehrere Jira-Issues in Masse abrufen
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Erfolgsstatus der Operation |
|
||||
| `output` | array | Array von Jira-Issues mit Zusammenfassung, Beschreibung, Erstellungs- und Aktualisierungszeitstempeln |
|
||||
| `issues` | array | Array von Jira-Issues mit Zeitstempel, Zusammenfassung, Beschreibung, Erstellungs- und Aktualisierungszeitstempeln |
|
||||
|
||||
### `jira_delete_issue`
|
||||
|
||||
@@ -136,8 +150,8 @@ Ein Jira-Issue löschen
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Erfolgsstatus der Operation |
|
||||
| `output` | object | Details zum gelöschten Issue mit Zeitstempel, Issue-Key und Erfolgsstatus |
|
||||
| `ts` | string | Zeitstempel der Operation |
|
||||
| `issueKey` | string | Gelöschter Issue-Key |
|
||||
|
||||
### `jira_assign_issue`
|
||||
|
||||
@@ -156,8 +170,9 @@ Ein Jira-Issue einem Benutzer zuweisen
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Erfolgsstatus der Operation |
|
||||
| `output` | object | Zuweisungsdetails mit Zeitstempel, Issue-Key, Bearbeiter-ID und Erfolgsstatus |
|
||||
| `ts` | string | Zeitstempel der Operation |
|
||||
| `issueKey` | string | Issue-Key, der zugewiesen wurde |
|
||||
| `assigneeId` | string | Konto-ID des Bearbeiters |
|
||||
|
||||
### `jira_transition_issue`
|
||||
|
||||
@@ -177,8 +192,9 @@ Ein Jira-Issue zwischen Workflow-Status verschieben (z.B. To Do -> In Progress)
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Erfolgsstatus der Operation |
|
||||
| `output` | object | Übergangsdetails mit Zeitstempel, Issue-Key, Übergangs-ID und Erfolgsstatus |
|
||||
| `ts` | string | Zeitstempel der Operation |
|
||||
| `issueKey` | string | Issue-Key, der übergangen wurde |
|
||||
| `transitionId` | string | Angewendete Übergangs-ID |
|
||||
|
||||
### `jira_search_issues`
|
||||
|
||||
@@ -199,8 +215,11 @@ Nach Jira-Issues mit JQL (Jira Query Language) suchen
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Erfolgsstatus der Operation |
|
||||
| `output` | object | Suchergebnisse mit Zeitstempel, Gesamtanzahl, Paginierungsdetails und Array der übereinstimmenden Issues |
|
||||
| `ts` | string | Zeitstempel der Operation |
|
||||
| `total` | number | Gesamtanzahl der übereinstimmenden Issues |
|
||||
| `startAt` | number | Paginierungsstartindex |
|
||||
| `maxResults` | number | Maximale Ergebnisse pro Seite |
|
||||
| `issues` | array | Array übereinstimmender Issues mit Key, Zusammenfassung, Status, Bearbeiter, Erstellungs- und Aktualisierungsdatum |
|
||||
|
||||
### `jira_add_comment`
|
||||
|
||||
@@ -219,8 +238,10 @@ Einen Kommentar zu einem Jira-Issue hinzufügen
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Erfolgsstatus der Operation |
|
||||
| `output` | object | Kommentardetails mit Zeitstempel, Issue-Key, Kommentar-ID, Inhalt und Erfolgsstatus |
|
||||
| `ts` | string | Zeitstempel der Operation |
|
||||
| `issueKey` | string | Issue-Key, zu dem der Kommentar hinzugefügt wurde |
|
||||
| `commentId` | string | Erstellte Kommentar-ID |
|
||||
| `body` | string | Kommentartextinhalt |
|
||||
|
||||
### `jira_get_comments`
|
||||
|
||||
@@ -240,8 +261,10 @@ Alle Kommentare eines Jira-Issues abrufen
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Erfolgsstatus der Operation |
|
||||
| `output` | object | Kommentardaten mit Zeitstempel, Issue-Key, Gesamtanzahl und Array von Kommentaren |
|
||||
| `ts` | string | Zeitstempel der Operation |
|
||||
| `issueKey` | string | Issue-Key |
|
||||
| `total` | number | Gesamtanzahl der Kommentare |
|
||||
| `comments` | array | Array von Kommentaren mit ID, Autor, Inhalt, Erstellungs- und Aktualisierungsdatum |
|
||||
|
||||
### `jira_update_comment`
|
||||
|
||||
@@ -261,8 +284,10 @@ Einen bestehenden Kommentar zu einem Jira-Issue aktualisieren
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Erfolgsstatus der Operation |
|
||||
| `output` | object | Aktualisierte Kommentardetails mit Zeitstempel, Issue-Key, Kommentar-ID, Textinhalt und Erfolgsstatus |
|
||||
| `ts` | string | Zeitstempel der Operation |
|
||||
| `issueKey` | string | Issue-Key |
|
||||
| `commentId` | string | Aktualisierte Kommentar-ID |
|
||||
| `body` | string | Aktualisierter Kommentartext |
|
||||
|
||||
### `jira_delete_comment`
|
||||
|
||||
@@ -281,8 +306,9 @@ Einen Kommentar aus einem Jira-Issue löschen
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Erfolgsstatus der Operation |
|
||||
| `output` | object | Löschdetails mit Zeitstempel, Issue-Key, Kommentar-ID und Erfolgsstatus |
|
||||
| `ts` | string | Zeitstempel der Operation |
|
||||
| `issueKey` | string | Issue-Key |
|
||||
| `commentId` | string | ID des gelöschten Kommentars |
|
||||
|
||||
### `jira_get_attachments`
|
||||
|
||||
@@ -300,8 +326,9 @@ Alle Anhänge eines Jira-Issues abrufen
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Erfolgsstatus der Operation |
|
||||
| `output` | object | Anhangsdaten mit Zeitstempel, Issue-Key und Array von Anhängen |
|
||||
| `ts` | string | Zeitstempel der Operation |
|
||||
| `issueKey` | string | Issue-Key |
|
||||
| `attachments` | array | Array von Anhängen mit ID, Dateiname, Größe, MIME-Typ, Erstellungsdatum und Autor |
|
||||
|
||||
### `jira_delete_attachment`
|
||||
|
||||
@@ -319,8 +346,8 @@ Einen Anhang von einem Jira-Issue löschen
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Erfolgsstatus der Operation |
|
||||
| `output` | object | Löschdetails mit Zeitstempel, Anhangs-ID und Erfolgsstatus |
|
||||
| `ts` | string | Zeitstempel der Operation |
|
||||
| `attachmentId` | string | ID des gelöschten Anhangs |
|
||||
|
||||
### `jira_add_worklog`
|
||||
|
||||
@@ -341,8 +368,10 @@ Einen Zeiterfassungseintrag zu einem Jira-Issue hinzufügen
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Erfolgsstatus der Operation |
|
||||
| `output` | object | Worklog-Details mit Zeitstempel, Issue-Key, Worklog-ID, aufgewendeter Zeit in Sekunden und Erfolgsstatus |
|
||||
| `ts` | string | Zeitstempel der Operation |
|
||||
| `issueKey` | string | Issue-Key, zu dem der Worklog hinzugefügt wurde |
|
||||
| `worklogId` | string | ID des erstellten Worklogs |
|
||||
| `timeSpentSeconds` | number | Aufgewendete Zeit in Sekunden |
|
||||
|
||||
### `jira_get_worklogs`
|
||||
|
||||
@@ -362,8 +391,10 @@ Alle Worklog-Einträge eines Jira-Issues abrufen
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Erfolgsstatus der Operation |
|
||||
| `output` | object | Worklog-Daten mit Zeitstempel, Issue-Key, Gesamtanzahl und Array von Worklogs |
|
||||
| `ts` | string | Zeitstempel der Operation |
|
||||
| `issueKey` | string | Issue-Key |
|
||||
| `total` | number | Gesamtanzahl der Worklogs |
|
||||
| `worklogs` | array | Array von Worklogs mit ID, Autor, aufgewendeter Zeit in Sekunden, aufgewendeter Zeit, Kommentar, Erstellungs-, Aktualisierungs- und Startdatum |
|
||||
|
||||
### `jira_update_worklog`
|
||||
|
||||
@@ -385,8 +416,9 @@ Aktualisieren eines vorhandenen Worklog-Eintrags in einem Jira-Issue
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Erfolgsstatus der Operation |
|
||||
| `output` | object | Worklog-Aktualisierungsdetails mit Zeitstempel, Issue-Key, Worklog-ID und Erfolgsstatus |
|
||||
| `ts` | string | Zeitstempel der Operation |
|
||||
| `issueKey` | string | Issue-Key |
|
||||
| `worklogId` | string | ID des aktualisierten Worklogs |
|
||||
|
||||
### `jira_delete_worklog`
|
||||
|
||||
@@ -405,8 +437,9 @@ Löschen eines Worklog-Eintrags aus einem Jira-Issue
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Erfolgsstatus der Operation |
|
||||
| `output` | object | Löschdetails mit Zeitstempel, Issue-Key, Worklog-ID und Erfolgsstatus |
|
||||
| `ts` | string | Zeitstempel der Operation |
|
||||
| `issueKey` | string | Issue-Key |
|
||||
| `worklogId` | string | ID des gelöschten Worklogs |
|
||||
|
||||
### `jira_create_issue_link`
|
||||
|
||||
@@ -427,8 +460,11 @@ Eine Verknüpfungsbeziehung zwischen zwei Jira-Issues erstellen
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Erfolgsstatus der Operation |
|
||||
| `output` | object | Issue-Verknüpfungsdetails mit Zeitstempel, eingehendem Issue-Key, ausgehendem Issue-Key, Verknüpfungstyp und Erfolgsstatus |
|
||||
| `ts` | string | Zeitstempel der Operation |
|
||||
| `inwardIssue` | string | Key des eingehenden Issues |
|
||||
| `outwardIssue` | string | Key des ausgehenden Issues |
|
||||
| `linkType` | string | Art der Issue-Verknüpfung |
|
||||
| `linkId` | string | ID der erstellten Verknüpfung |
|
||||
|
||||
### `jira_delete_issue_link`
|
||||
|
||||
@@ -446,8 +482,8 @@ Eine Verknüpfung zwischen zwei Jira-Issues löschen
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Erfolgsstatus der Operation |
|
||||
| `output` | object | Löschdetails mit Zeitstempel, Link-ID und Erfolgsstatus |
|
||||
| `ts` | string | Zeitstempel der Operation |
|
||||
| `linkId` | string | ID der gelöschten Verknüpfung |
|
||||
|
||||
### `jira_add_watcher`
|
||||
|
||||
@@ -466,8 +502,9 @@ Einen Beobachter zu einem Jira-Issue hinzufügen, um Benachrichtigungen über Ak
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Erfolgsstatus der Operation |
|
||||
| `output` | object | Beobachterdetails mit Zeitstempel, Issue-Key, Beobachter-Account-ID und Erfolgsstatus |
|
||||
| `ts` | string | Zeitstempel der Operation |
|
||||
| `issueKey` | string | Issue-Key |
|
||||
| `watcherAccountId` | string | Account-ID des hinzugefügten Beobachters |
|
||||
|
||||
### `jira_remove_watcher`
|
||||
|
||||
@@ -486,8 +523,33 @@ Einen Beobachter von einem Jira-Issue entfernen
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Erfolgsstatus der Operation |
|
||||
| `output` | object | Entfernungsdetails mit Zeitstempel, Issue-Key, Beobachter-Konto-ID und Erfolgsstatus |
|
||||
| `ts` | string | Zeitstempel der Operation |
|
||||
| `issueKey` | string | Issue-Key |
|
||||
| `watcherAccountId` | string | Account-ID des entfernten Beobachters |
|
||||
|
||||
### `jira_get_users`
|
||||
|
||||
Jira-Benutzer abrufen. Wenn eine Account-ID angegeben wird, wird ein einzelner Benutzer zurückgegeben. Andernfalls wird eine Liste aller Benutzer zurückgegeben.
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `domain` | string | Ja | Ihre Jira-Domain \(z.B. ihrfirma.atlassian.net\) |
|
||||
| `accountId` | string | Nein | Optionale Account-ID, um einen bestimmten Benutzer abzurufen. Wenn nicht angegeben, werden alle Benutzer zurückgegeben. |
|
||||
| `startAt` | number | Nein | Der Index des ersten zurückzugebenden Benutzers \(für Paginierung, Standard: 0\) |
|
||||
| `maxResults` | number | Nein | Maximale Anzahl der zurückzugebenden Benutzer \(Standard: 50\) |
|
||||
| `cloudId` | string | Nein | Jira Cloud-ID für die Instanz. Wenn nicht angegeben, wird sie anhand der Domain abgerufen. |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `ts` | string | Zeitstempel der Operation |
|
||||
| `users` | json | Array von Benutzern mit accountId, displayName, emailAddress, active-Status und avatarUrls |
|
||||
| `total` | number | Gesamtanzahl der zurückgegebenen Benutzer |
|
||||
| `startAt` | number | Startindex für Paginierung |
|
||||
| `maxResults` | number | Maximale Ergebnisse pro Seite |
|
||||
|
||||
## Hinweise
|
||||
|
||||
|
||||
486
apps/docs/content/docs/de/tools/jira_service_management.mdx
Normal file
486
apps/docs/content/docs/de/tools/jira_service_management.mdx
Normal file
@@ -0,0 +1,486 @@
|
||||
---
|
||||
title: Jira Service Management
|
||||
description: Interagieren Sie mit Jira Service Management
|
||||
---
|
||||
|
||||
import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
<BlockInfoCard
|
||||
type="jira_service_management"
|
||||
color="#E0E0E0"
|
||||
/>
|
||||
|
||||
## Nutzungsanweisungen
|
||||
|
||||
Integrieren Sie Jira Service Management für IT-Service-Management. Erstellen und verwalten Sie Service-Anfragen, bearbeiten Sie Kunden und Organisationen, verfolgen Sie SLAs und verwalten Sie Warteschlangen.
|
||||
|
||||
## Tools
|
||||
|
||||
### `jsm_get_service_desks`
|
||||
|
||||
Alle Service Desks aus Jira Service Management abrufen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `domain` | string | Ja | Ihre Jira-Domain \(z. B. ihrfirma.atlassian.net\) |
|
||||
| `cloudId` | string | Nein | Jira Cloud ID für die Instanz |
|
||||
| `start` | number | Nein | Startindex für Paginierung \(Standard: 0\) |
|
||||
| `limit` | number | Nein | Maximale Anzahl zurückzugebender Ergebnisse \(Standard: 50\) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `ts` | string | Zeitstempel der Operation |
|
||||
| `serviceDesks` | json | Array von Service Desks |
|
||||
| `total` | number | Gesamtanzahl der Service Desks |
|
||||
| `isLastPage` | boolean | Ob dies die letzte Seite ist |
|
||||
|
||||
### `jsm_get_request_types`
|
||||
|
||||
Anfragetypen für einen Service Desk in Jira Service Management abrufen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `domain` | string | Ja | Ihre Jira-Domain \(z. B. ihrfirma.atlassian.net\) |
|
||||
| `cloudId` | string | Nein | Jira Cloud ID für die Instanz |
|
||||
| `serviceDeskId` | string | Ja | Service Desk ID, für die Anfragetypen abgerufen werden sollen |
|
||||
| `start` | number | Nein | Startindex für Paginierung \(Standard: 0\) |
|
||||
| `limit` | number | Nein | Maximale Anzahl zurückzugebender Ergebnisse \(Standard: 50\) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `ts` | string | Zeitstempel der Operation |
|
||||
| `requestTypes` | json | Array von Anfragetypen |
|
||||
| `total` | number | Gesamtanzahl der Anfragetypen |
|
||||
| `isLastPage` | boolean | Ob dies die letzte Seite ist |
|
||||
|
||||
### `jsm_create_request`
|
||||
|
||||
Erstellen Sie eine neue Serviceanfrage in Jira Service Management
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `domain` | string | Ja | Ihre Jira-Domain \(z. B. ihrfirma.atlassian.net\) |
|
||||
| `cloudId` | string | Nein | Jira Cloud ID für die Instanz |
|
||||
| `serviceDeskId` | string | Ja | Service-Desk-ID, in der die Anfrage erstellt werden soll |
|
||||
| `requestTypeId` | string | Ja | Anfragetyp-ID für die neue Anfrage |
|
||||
| `summary` | string | Ja | Zusammenfassung/Titel für die Serviceanfrage |
|
||||
| `description` | string | Nein | Beschreibung für die Serviceanfrage |
|
||||
| `raiseOnBehalfOf` | string | Nein | Konto-ID des Kunden, für den die Anfrage im Namen gestellt werden soll |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `ts` | string | Zeitstempel der Operation |
|
||||
| `issueId` | string | Erstellte Anfrage-Issue-ID |
|
||||
| `issueKey` | string | Erstellter Anfrage-Issue-Key \(z. B. SD-123\) |
|
||||
| `requestTypeId` | string | Anfragetyp-ID |
|
||||
| `serviceDeskId` | string | Service-Desk-ID |
|
||||
| `success` | boolean | Ob die Anfrage erfolgreich erstellt wurde |
|
||||
| `url` | string | URL zur erstellten Anfrage |
|
||||
|
||||
### `jsm_get_request`
|
||||
|
||||
Eine einzelne Serviceanfrage aus Jira Service Management abrufen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `domain` | string | Ja | Ihre Jira-Domain \(z. B. ihrfirma.atlassian.net\) |
|
||||
| `cloudId` | string | Nein | Jira Cloud ID für die Instanz |
|
||||
| `issueIdOrKey` | string | Ja | Vorgangs-ID oder -Schlüssel \(z. B. SD-123\) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `ts` | string | Zeitstempel der Operation |
|
||||
|
||||
### `jsm_get_requests`
|
||||
|
||||
Mehrere Serviceanfragen aus Jira Service Management abrufen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `domain` | string | Ja | Ihre Jira-Domain \(z. B. ihrfirma.atlassian.net\) |
|
||||
| `cloudId` | string | Nein | Jira Cloud ID für die Instanz |
|
||||
| `serviceDeskId` | string | Nein | Nach Service-Desk-ID filtern |
|
||||
| `requestOwnership` | string | Nein | Nach Eigentümerschaft filtern: OWNED_REQUESTS, PARTICIPATED_REQUESTS, ORGANIZATION, ALL_REQUESTS |
|
||||
| `requestStatus` | string | Nein | Nach Status filtern: OPEN, CLOSED, ALL |
|
||||
| `searchTerm` | string | Nein | Suchbegriff zum Filtern von Anfragen |
|
||||
| `start` | number | Nein | Startindex für Paginierung \(Standard: 0\) |
|
||||
| `limit` | number | Nein | Maximale Anzahl zurückzugebender Ergebnisse \(Standard: 50\) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `ts` | string | Zeitstempel der Operation |
|
||||
| `requests` | json | Array von Serviceanfragen |
|
||||
| `total` | number | Gesamtanzahl der Anfragen |
|
||||
| `isLastPage` | boolean | Ob dies die letzte Seite ist |
|
||||
|
||||
### `jsm_add_comment`
|
||||
|
||||
Einen Kommentar (öffentlich oder intern) zu einer Serviceanfrage in Jira Service Management hinzufügen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `domain` | string | Ja | Ihre Jira-Domain \(z. B. ihrfirma.atlassian.net\) |
|
||||
| `cloudId` | string | Nein | Jira Cloud-ID für die Instanz |
|
||||
| `issueIdOrKey` | string | Ja | Vorgangs-ID oder -Schlüssel \(z. B. SD-123\) |
|
||||
| `body` | string | Ja | Kommentartext |
|
||||
| `isPublic` | boolean | Ja | Ob der Kommentar öffentlich \(für Kunden sichtbar\) oder intern ist |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `ts` | string | Zeitstempel der Operation |
|
||||
| `issueIdOrKey` | string | Vorgangs-ID oder -Schlüssel |
|
||||
| `commentId` | string | ID des erstellten Kommentars |
|
||||
| `body` | string | Kommentartext |
|
||||
| `isPublic` | boolean | Ob der Kommentar öffentlich ist |
|
||||
| `success` | boolean | Ob der Kommentar erfolgreich hinzugefügt wurde |
|
||||
|
||||
### `jsm_get_comments`
|
||||
|
||||
Kommentare für eine Serviceanfrage in Jira Service Management abrufen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `domain` | string | Ja | Ihre Jira-Domain \(z. B. ihrfirma.atlassian.net\) |
|
||||
| `cloudId` | string | Nein | Jira Cloud-ID für die Instanz |
|
||||
| `issueIdOrKey` | string | Ja | Vorgangs-ID oder -Schlüssel \(z. B. SD-123\) |
|
||||
| `isPublic` | boolean | Nein | Nur öffentliche Kommentare filtern |
|
||||
| `internal` | boolean | Nein | Nur interne Kommentare filtern |
|
||||
| `start` | number | Nein | Startindex für Paginierung \(Standard: 0\) |
|
||||
| `limit` | number | Nein | Maximale Anzahl zurückzugebender Ergebnisse \(Standard: 50\) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `ts` | string | Zeitstempel der Operation |
|
||||
| `issueIdOrKey` | string | Vorgangs-ID oder -Schlüssel |
|
||||
| `comments` | json | Array von Kommentaren |
|
||||
| `total` | number | Gesamtanzahl der Kommentare |
|
||||
| `isLastPage` | boolean | Ob dies die letzte Seite ist |
|
||||
|
||||
### `jsm_get_customers`
|
||||
|
||||
Kunden für einen Service Desk in Jira Service Management abrufen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `domain` | string | Ja | Ihre Jira-Domain \(z. B. ihrfirma.atlassian.net\) |
|
||||
| `cloudId` | string | Nein | Jira Cloud-ID für die Instanz |
|
||||
| `serviceDeskId` | string | Ja | Service-Desk-ID, für die Kunden abgerufen werden sollen |
|
||||
| `query` | string | Nein | Suchabfrage zum Filtern von Kunden |
|
||||
| `start` | number | Nein | Startindex für Paginierung \(Standard: 0\) |
|
||||
| `limit` | number | Nein | Maximale Anzahl zurückzugebender Ergebnisse \(Standard: 50\) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `ts` | string | Zeitstempel der Operation |
|
||||
| `customers` | json | Array von Kunden |
|
||||
| `total` | number | Gesamtanzahl der Kunden |
|
||||
| `isLastPage` | boolean | Ob dies die letzte Seite ist |
|
||||
|
||||
### `jsm_add_customer`
|
||||
|
||||
Kunden zu einem Service Desk in Jira Service Management hinzufügen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `domain` | string | Ja | Ihre Jira-Domain \(z. B. ihrfirma.atlassian.net\) |
|
||||
| `cloudId` | string | Nein | Jira Cloud-ID für die Instanz |
|
||||
| `serviceDeskId` | string | Ja | Service-Desk-ID, zu der Kunden hinzugefügt werden sollen |
|
||||
| `emails` | string | Ja | Kommagetrennte E-Mail-Adressen, die als Kunden hinzugefügt werden sollen |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `ts` | string | Zeitstempel der Operation |
|
||||
| `serviceDeskId` | string | Service-Desk-ID |
|
||||
| `success` | boolean | Ob Kunden erfolgreich hinzugefügt wurden |
|
||||
|
||||
### `jsm_get_organizations`
|
||||
|
||||
Organisationen für einen Service Desk in Jira Service Management abrufen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `domain` | string | Ja | Ihre Jira-Domain \(z. B. ihrfirma.atlassian.net\) |
|
||||
| `cloudId` | string | Nein | Jira Cloud-ID für die Instanz |
|
||||
| `serviceDeskId` | string | Ja | Service-Desk-ID, für die Organisationen abgerufen werden sollen |
|
||||
| `start` | number | Nein | Startindex für Paginierung \(Standard: 0\) |
|
||||
| `limit` | number | Nein | Maximale Anzahl zurückzugebender Ergebnisse \(Standard: 50\) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `ts` | string | Zeitstempel der Operation |
|
||||
| `organizations` | json | Array von Organisationen |
|
||||
| `total` | number | Gesamtanzahl der Organisationen |
|
||||
| `isLastPage` | boolean | Ob dies die letzte Seite ist |
|
||||
|
||||
### `jsm_create_organization`
|
||||
|
||||
Eine neue Organisation in Jira Service Management erstellen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `domain` | string | Ja | Ihre Jira-Domain \(z. B. ihrfirma.atlassian.net\) |
|
||||
| `cloudId` | string | Nein | Jira Cloud ID für die Instanz |
|
||||
| `name` | string | Ja | Name der zu erstellenden Organisation |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `ts` | string | Zeitstempel der Operation |
|
||||
| `organizationId` | string | ID der erstellten Organisation |
|
||||
| `name` | string | Name der erstellten Organisation |
|
||||
| `success` | boolean | Ob die Operation erfolgreich war |
|
||||
|
||||
### `jsm_add_organization`
|
||||
|
||||
Eine Organisation zu einem Service Desk in Jira Service Management hinzufügen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `domain` | string | Ja | Ihre Jira-Domain \(z. B. ihrfirma.atlassian.net\) |
|
||||
| `cloudId` | string | Nein | Jira Cloud ID für die Instanz |
|
||||
| `serviceDeskId` | string | Ja | Service Desk ID, zu der die Organisation hinzugefügt werden soll |
|
||||
| `organizationId` | string | Ja | Organisations-ID, die zum Service Desk hinzugefügt werden soll |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `ts` | string | Zeitstempel der Operation |
|
||||
| `serviceDeskId` | string | Service Desk ID |
|
||||
| `organizationId` | string | Hinzugefügte Organisations-ID |
|
||||
| `success` | boolean | Ob die Operation erfolgreich war |
|
||||
|
||||
### `jsm_get_queues`
|
||||
|
||||
Warteschlangen für einen Service Desk in Jira Service Management abrufen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `domain` | string | Ja | Ihre Jira-Domain \(z. B. ihrfirma.atlassian.net\) |
|
||||
| `cloudId` | string | Nein | Jira Cloud ID für die Instanz |
|
||||
| `serviceDeskId` | string | Ja | Service Desk ID, für die Warteschlangen abgerufen werden sollen |
|
||||
| `includeCount` | boolean | Nein | Vorgangsanzahl für jede Warteschlange einbeziehen |
|
||||
| `start` | number | Nein | Startindex für Paginierung \(Standard: 0\) |
|
||||
| `limit` | number | Nein | Maximale Anzahl zurückzugebender Ergebnisse \(Standard: 50\) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `ts` | string | Zeitstempel der Operation |
|
||||
| `queues` | json | Array von Warteschlangen |
|
||||
| `total` | number | Gesamtanzahl der Warteschlangen |
|
||||
| `isLastPage` | boolean | Ob dies die letzte Seite ist |
|
||||
|
||||
### `jsm_get_sla`
|
||||
|
||||
SLA-Informationen für eine Serviceanfrage in Jira Service Management abrufen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `domain` | string | Ja | Ihre Jira-Domain \(z. B. ihrfirma.atlassian.net\) |
|
||||
| `cloudId` | string | Nein | Jira Cloud ID für die Instanz |
|
||||
| `issueIdOrKey` | string | Ja | Vorgangs-ID oder -Schlüssel \(z. B. SD-123\) |
|
||||
| `start` | number | Nein | Startindex für Paginierung \(Standard: 0\) |
|
||||
| `limit` | number | Nein | Maximale Anzahl zurückzugebender Ergebnisse \(Standard: 50\) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `ts` | string | Zeitstempel der Operation |
|
||||
| `issueIdOrKey` | string | Vorgangs-ID oder -Schlüssel |
|
||||
| `slas` | json | Array mit SLA-Informationen |
|
||||
| `total` | number | Gesamtanzahl der SLAs |
|
||||
| `isLastPage` | boolean | Ob dies die letzte Seite ist |
|
||||
|
||||
### `jsm_get_transitions`
|
||||
|
||||
Verfügbare Übergänge für eine Serviceanfrage in Jira Service Management abrufen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `domain` | string | Ja | Ihre Jira-Domain \(z. B. ihrfirma.atlassian.net\) |
|
||||
| `cloudId` | string | Nein | Jira Cloud-ID für die Instanz |
|
||||
| `issueIdOrKey` | string | Ja | Vorgangs-ID oder -Schlüssel \(z. B. SD-123\) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `ts` | string | Zeitstempel der Operation |
|
||||
| `issueIdOrKey` | string | Vorgangs-ID oder -Schlüssel |
|
||||
| `transitions` | json | Array mit verfügbaren Übergängen |
|
||||
|
||||
### `jsm_transition_request`
|
||||
|
||||
Eine Serviceanfrage in einen neuen Status in Jira Service Management überführen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `domain` | string | Ja | Ihre Jira-Domain \(z. B. ihrfirma.atlassian.net\) |
|
||||
| `cloudId` | string | Nein | Jira Cloud-ID für die Instanz |
|
||||
| `issueIdOrKey` | string | Ja | Vorgangs-ID oder -Schlüssel \(z. B. SD-123\) |
|
||||
| `transitionId` | string | Ja | Anzuwendende Übergangs-ID |
|
||||
| `comment` | string | Nein | Optionaler Kommentar, der während des Übergangs hinzugefügt werden kann |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `ts` | string | Zeitstempel der Operation |
|
||||
| `issueIdOrKey` | string | Issue-ID oder -Schlüssel |
|
||||
| `transitionId` | string | Angewendete Übergangs-ID |
|
||||
| `success` | boolean | Ob der Übergang erfolgreich war |
|
||||
|
||||
### `jsm_get_participants`
|
||||
|
||||
Teilnehmer für eine Anfrage in Jira Service Management abrufen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `domain` | string | Ja | Ihre Jira-Domain \(z. B. ihrfirma.atlassian.net\) |
|
||||
| `cloudId` | string | Nein | Jira Cloud-ID für die Instanz |
|
||||
| `issueIdOrKey` | string | Ja | Issue-ID oder -Schlüssel \(z. B. SD-123\) |
|
||||
| `start` | number | Nein | Startindex für Paginierung \(Standard: 0\) |
|
||||
| `limit` | number | Nein | Maximale Anzahl zurückzugebender Ergebnisse \(Standard: 50\) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `ts` | string | Zeitstempel der Operation |
|
||||
| `issueIdOrKey` | string | Issue-ID oder -Schlüssel |
|
||||
| `participants` | json | Array von Teilnehmern |
|
||||
| `total` | number | Gesamtanzahl der Teilnehmer |
|
||||
| `isLastPage` | boolean | Ob dies die letzte Seite ist |
|
||||
|
||||
### `jsm_add_participants`
|
||||
|
||||
Teilnehmer zu einer Anfrage in Jira Service Management hinzufügen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `domain` | string | Ja | Ihre Jira-Domain \(z. B. ihrfirma.atlassian.net\) |
|
||||
| `cloudId` | string | Nein | Jira Cloud-ID für die Instanz |
|
||||
| `issueIdOrKey` | string | Ja | Issue-ID oder -Schlüssel \(z. B. SD-123\) |
|
||||
| `accountIds` | string | Ja | Durch Kommas getrennte Account-IDs, die als Teilnehmer hinzugefügt werden sollen |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `ts` | string | Zeitstempel der Operation |
|
||||
| `issueIdOrKey` | string | Vorgangs-ID oder -Schlüssel |
|
||||
| `participants` | json | Array der hinzugefügten Teilnehmer |
|
||||
| `success` | boolean | Ob die Operation erfolgreich war |
|
||||
|
||||
### `jsm_get_approvals`
|
||||
|
||||
Genehmigungen für eine Anfrage in Jira Service Management abrufen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `domain` | string | Ja | Ihre Jira-Domain \(z. B. ihrfirma.atlassian.net\) |
|
||||
| `cloudId` | string | Nein | Jira Cloud-ID für die Instanz |
|
||||
| `issueIdOrKey` | string | Ja | Vorgangs-ID oder -Schlüssel \(z. B. SD-123\) |
|
||||
| `start` | number | Nein | Startindex für Paginierung \(Standard: 0\) |
|
||||
| `limit` | number | Nein | Maximale Anzahl zurückzugebender Ergebnisse \(Standard: 50\) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `ts` | string | Zeitstempel der Operation |
|
||||
| `issueIdOrKey` | string | Vorgangs-ID oder -Schlüssel |
|
||||
| `approvals` | json | Array der Genehmigungen |
|
||||
| `total` | number | Gesamtanzahl der Genehmigungen |
|
||||
| `isLastPage` | boolean | Ob dies die letzte Seite ist |
|
||||
|
||||
### `jsm_answer_approval`
|
||||
|
||||
Eine Genehmigungsanfrage in Jira Service Management genehmigen oder ablehnen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `domain` | string | Ja | Ihre Jira-Domain \(z. B. ihrfirma.atlassian.net\) |
|
||||
| `cloudId` | string | Nein | Jira Cloud-ID für die Instanz |
|
||||
| `issueIdOrKey` | string | Ja | Vorgangs-ID oder -Schlüssel \(z. B. SD-123\) |
|
||||
| `approvalId` | string | Ja | Genehmigungs-ID zur Beantwortung |
|
||||
| `decision` | string | Ja | Entscheidung: "approve" oder "decline" |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `ts` | string | Zeitstempel der Operation |
|
||||
| `issueIdOrKey` | string | Issue-ID oder -Schlüssel |
|
||||
| `approvalId` | string | Genehmigungs-ID |
|
||||
| `decision` | string | Getroffene Entscheidung \(genehmigen/ablehnen\) |
|
||||
| `success` | boolean | Ob die Operation erfolgreich war |
|
||||
|
||||
## Hinweise
|
||||
|
||||
- Kategorie: `tools`
|
||||
- Typ: `jira_service_management`
|
||||
@@ -123,8 +123,6 @@ Kontostand und Portfoliowert von Kalshi abrufen
|
||||
| --------- | ---- | ----------- |
|
||||
| `balance` | number | Kontostand in Cent |
|
||||
| `portfolioValue` | number | Portfoliowert in Cent |
|
||||
| `balanceDollars` | number | Kontostand in Dollar |
|
||||
| `portfolioValueDollars` | number | Portfoliowert in Dollar |
|
||||
|
||||
### `kalshi_get_positions`
|
||||
|
||||
|
||||
@@ -10,55 +10,52 @@ import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
color="#F64F9E"
|
||||
/>
|
||||
|
||||
## Gebrauchsanweisung
|
||||
## Nutzungsanweisungen
|
||||
|
||||
Memory in den Workflow integrieren. Kann Erinnerungen hinzufügen, eine Erinnerung abrufen, alle Erinnerungen abrufen und Erinnerungen löschen.
|
||||
Integrieren Sie Memory in den Workflow. Kann Erinnerungen hinzufügen, abrufen, alle Erinnerungen abrufen und Erinnerungen löschen.
|
||||
|
||||
## Tools
|
||||
|
||||
### `memory_add`
|
||||
|
||||
Füge eine neue Erinnerung zur Datenbank hinzu oder ergänze bestehende Erinnerungen mit derselben ID.
|
||||
Fügen Sie eine neue Erinnerung zur Datenbank hinzu oder hängen Sie sie an eine bestehende Erinnerung mit derselben ID an.
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `conversationId` | string | Nein | Konversationskennung (z.B. user-123, session-abc). Wenn bereits eine Erinnerung mit dieser conversationId für diesen Block existiert, wird die neue Nachricht angehängt. |
|
||||
| `id` | string | Nein | Legacy-Parameter für die Konversationskennung. Verwenden Sie stattdessen conversationId. Für Abwärtskompatibilität bereitgestellt. |
|
||||
| `role` | string | Ja | Rolle für Agent-Erinnerung (user, assistant oder system) |
|
||||
| `conversationId` | string | Nein | Konversationskennung \(z. B. user-123, session-abc\). Wenn bereits eine Erinnerung mit dieser conversationId existiert, wird die neue Nachricht an diese angehängt. |
|
||||
| `id` | string | Nein | Legacy-Parameter für Konversationskennung. Verwenden Sie stattdessen conversationId. Wird aus Gründen der Abwärtskompatibilität bereitgestellt. |
|
||||
| `role` | string | Ja | Rolle für Agent-Erinnerung \(user, assistant oder system\) |
|
||||
| `content` | string | Ja | Inhalt für Agent-Erinnerung |
|
||||
| `blockId` | string | Nein | Optionale Block-ID. Wenn nicht angegeben, wird die aktuelle Block-ID aus dem Ausführungskontext verwendet oder standardmäßig "default" gesetzt. |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Ob der Speicher erfolgreich hinzugefügt wurde |
|
||||
| `memories` | array | Array von Speicherobjekten einschließlich des neuen oder aktualisierten Speichers |
|
||||
| `success` | boolean | Ob die Erinnerung erfolgreich hinzugefügt wurde |
|
||||
| `memories` | array | Array von Erinnerungsobjekten einschließlich der neuen oder aktualisierten Erinnerung |
|
||||
| `error` | string | Fehlermeldung, falls der Vorgang fehlgeschlagen ist |
|
||||
|
||||
### `memory_get`
|
||||
|
||||
Erinnerungen nach conversationId, blockId, blockName oder einer Kombination abrufen. Gibt alle übereinstimmenden Erinnerungen zurück.
|
||||
Erinnerung nach conversationId abrufen. Gibt übereinstimmende Erinnerungen zurück.
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `conversationId` | string | Nein | Konversationskennung (z.B. user-123, session-abc). Wenn allein angegeben, werden alle Erinnerungen für diese Konversation über alle Blöcke hinweg zurückgegeben. |
|
||||
| `id` | string | Nein | Legacy-Parameter für die Konversationskennung. Verwenden Sie stattdessen conversationId. Für Abwärtskompatibilität bereitgestellt. |
|
||||
| `blockId` | string | Nein | Block-Kennung. Wenn allein angegeben, werden alle Erinnerungen für diesen Block über alle Konversationen hinweg zurückgegeben. Wenn mit conversationId angegeben, werden Erinnerungen für diese spezifische Konversation in diesem Block zurückgegeben. |
|
||||
| `blockName` | string | Nein | Blockname. Alternative zu blockId. Wenn allein angegeben, werden alle Erinnerungen für Blöcke mit diesem Namen zurückgegeben. Wenn mit conversationId angegeben, werden Erinnerungen für diese Konversation in Blöcken mit diesem Namen zurückgegeben. |
|
||||
| `conversationId` | string | Nein | Konversationskennung \(z. B. user-123, session-abc\). Gibt Erinnerungen für diese Konversation zurück. |
|
||||
| `id` | string | Nein | Legacy-Parameter für Konversationskennung. Verwenden Sie stattdessen conversationId. Wird aus Gründen der Abwärtskompatibilität bereitgestellt. |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Ob die Erinnerung erfolgreich abgerufen wurde |
|
||||
| `memories` | array | Array von Speicherobjekten mit conversationId, blockId, blockName und data-Feldern |
|
||||
| `success` | boolean | Ob der Speicher erfolgreich abgerufen wurde |
|
||||
| `memories` | array | Array von Speicherobjekten mit conversationId- und data-Feldern |
|
||||
| `message` | string | Erfolgs- oder Fehlermeldung |
|
||||
| `error` | string | Fehlermeldung, wenn der Vorgang fehlgeschlagen ist |
|
||||
| `error` | string | Fehlermeldung, falls fehlgeschlagen |
|
||||
|
||||
### `memory_get_all`
|
||||
|
||||
@@ -73,31 +70,29 @@ Alle Speicher aus der Datenbank abrufen
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Ob alle Erinnerungen erfolgreich abgerufen wurden |
|
||||
| `memories` | array | Array aller Speicherobjekte mit key, conversationId, blockId, blockName und data-Feldern |
|
||||
| `success` | boolean | Ob alle Speicher erfolgreich abgerufen wurden |
|
||||
| `memories` | array | Array aller Speicherobjekte mit key-, conversationId- und data-Feldern |
|
||||
| `message` | string | Erfolgs- oder Fehlermeldung |
|
||||
| `error` | string | Fehlermeldung, wenn der Vorgang fehlgeschlagen ist |
|
||||
| `error` | string | Fehlermeldung, falls fehlgeschlagen |
|
||||
|
||||
### `memory_delete`
|
||||
|
||||
Löschen von Erinnerungen nach conversationId, blockId, blockName oder einer Kombination davon. Unterstützt Massenlöschung.
|
||||
Speicher nach conversationId löschen.
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `conversationId` | string | Nein | Konversationskennung (z.B. user-123, session-abc). Wenn allein angegeben, werden alle Erinnerungen für diese Konversation über alle Blöcke hinweg gelöscht. |
|
||||
| `id` | string | Nein | Legacy-Parameter für die Konversationskennung. Verwenden Sie stattdessen conversationId. Für Abwärtskompatibilität bereitgestellt. |
|
||||
| `blockId` | string | Nein | Block-Kennung. Wenn allein angegeben, werden alle Erinnerungen für diesen Block über alle Konversationen hinweg gelöscht. Wenn mit conversationId angegeben, werden Erinnerungen für diese spezifische Konversation in diesem Block gelöscht. |
|
||||
| `blockName` | string | Nein | Blockname. Alternative zu blockId. Wenn allein angegeben, werden alle Erinnerungen für Blöcke mit diesem Namen gelöscht. Wenn mit conversationId angegeben, werden Erinnerungen für diese Konversation in Blöcken mit diesem Namen gelöscht. |
|
||||
| `conversationId` | string | Nein | Konversationskennung (z. B. user-123, session-abc). Löscht alle Speicher für diese Konversation. |
|
||||
| `id` | string | Nein | Legacy-Parameter für Konversationskennung. Verwenden Sie stattdessen conversationId. Wird aus Gründen der Abwärtskompatibilität bereitgestellt. |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Ob die Erinnerung erfolgreich gelöscht wurde |
|
||||
| `success` | boolean | Ob der Speicher erfolgreich gelöscht wurde |
|
||||
| `message` | string | Erfolgs- oder Fehlermeldung |
|
||||
| `error` | string | Fehlermeldung, wenn der Vorgang fehlgeschlagen ist |
|
||||
| `error` | string | Fehlermeldung, falls fehlgeschlagen |
|
||||
|
||||
## Hinweise
|
||||
|
||||
|
||||
@@ -91,11 +91,11 @@ Führen Sie umfassende tiefgehende Recherchen im Web mit Parallel AI durch. Synt
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `status` | string | Aufgabenstatus (laufend, abgeschlossen, fehlgeschlagen) |
|
||||
| `status` | string | Aufgabenstatus (abgeschlossen, fehlgeschlagen) |
|
||||
| `run_id` | string | Eindeutige ID für diese Rechercheaufgabe |
|
||||
| `message` | string | Statusmeldung (für laufende Aufgaben) |
|
||||
| `message` | string | Statusmeldung |
|
||||
| `content` | object | Rechercheergebnisse (strukturiert basierend auf output_schema) |
|
||||
| `basis` | array | Zitate und Quellen mit Auszügen und Vertrauensstufen |
|
||||
| `basis` | array | Zitate und Quellen mit Begründung und Vertrauensstufen |
|
||||
|
||||
## Hinweise
|
||||
|
||||
|
||||
@@ -51,8 +51,9 @@ Generieren Sie Vervollständigungen mit Perplexity AI-Chatmodellen
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Status des Operationserfolgs |
|
||||
| `output` | object | Ergebnisse der Chat-Vervollständigung |
|
||||
| `content` | string | Generierter Textinhalt |
|
||||
| `model` | string | Für die Generierung verwendetes Modell |
|
||||
| `usage` | object | Informationen zur Token-Nutzung |
|
||||
|
||||
### `perplexity_search`
|
||||
|
||||
@@ -76,8 +77,7 @@ Erhalte bewertete Suchergebnisse von Perplexity
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Status des Operationserfolgs |
|
||||
| `output` | object | Suchergebnisse |
|
||||
| `results` | array | Array von Suchergebnissen |
|
||||
|
||||
## Hinweise
|
||||
|
||||
|
||||
@@ -70,8 +70,7 @@ Text-Datensätze in einen Pinecone-Index einfügen oder aktualisieren
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `statusText` | string | Status des Einfügevorgangs |
|
||||
| `upsertedCount` | number | Anzahl der erfolgreich eingefügten Datensätze |
|
||||
| `statusText` | string | Status der Upsert-Operation |
|
||||
|
||||
### `pinecone_search_text`
|
||||
|
||||
|
||||
@@ -49,10 +49,11 @@ Alle Deals von Pipedrive mit optionalen Filtern abrufen
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Beschreibung |
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `deals` | array | Array von Deal-Objekten aus Pipedrive |
|
||||
| `metadata` | object | Operationsmetadaten |
|
||||
| `success` | boolean | Erfolgsstatus der Operation |
|
||||
| `output` | object | Deals-Daten und Metadaten |
|
||||
|
||||
### `pipedrive_get_deal`
|
||||
|
||||
@@ -66,10 +67,11 @@ Detaillierte Informationen über einen bestimmten Deal abrufen
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Beschreibung |
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `deal` | object | Deal-Objekt mit vollständigen Details |
|
||||
| `metadata` | object | Operationsmetadaten |
|
||||
| `success` | boolean | Erfolgsstatus der Operation |
|
||||
| `output` | object | Deal-Details |
|
||||
|
||||
### `pipedrive_create_deal`
|
||||
|
||||
@@ -93,8 +95,9 @@ Einen neuen Deal in Pipedrive erstellen
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `deal` | object | Das erstellte Deal-Objekt |
|
||||
| `metadata` | object | Operationsmetadaten |
|
||||
| `success` | boolean | Erfolgsstatus der Operation |
|
||||
| `output` | object | Details des erstellten Deals |
|
||||
|
||||
### `pipedrive_update_deal`
|
||||
|
||||
@@ -115,8 +118,9 @@ Aktualisieren eines bestehenden Deals in Pipedrive
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `deal` | object | Das aktualisierte Deal-Objekt |
|
||||
| `metadata` | object | Operationsmetadaten |
|
||||
| `success` | boolean | Erfolgsstatus der Operation |
|
||||
| `output` | object | Details des aktualisierten Deals |
|
||||
|
||||
### `pipedrive_get_files`
|
||||
|
||||
@@ -133,10 +137,11 @@ Dateien von Pipedrive mit optionalen Filtern abrufen
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Beschreibung |
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Status des Operationserfolgs |
|
||||
| `output` | object | Dateidaten |
|
||||
| `files` | array | Array von Datei-Objekten aus Pipedrive |
|
||||
| `metadata` | object | Operationsmetadaten |
|
||||
| `success` | boolean | Erfolgsstatus der Operation |
|
||||
|
||||
### `pipedrive_get_mail_messages`
|
||||
|
||||
@@ -151,10 +156,11 @@ E-Mail-Threads aus dem Pipedrive-Postfach abrufen
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Beschreibung |
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Status des Operationserfolgs |
|
||||
| `output` | object | E-Mail-Thread-Daten |
|
||||
| `messages` | array | Array von E-Mail-Thread-Objekten aus der Pipedrive-Mailbox |
|
||||
| `metadata` | object | Operationsmetadaten |
|
||||
| `success` | boolean | Erfolgsstatus der Operation |
|
||||
|
||||
### `pipedrive_get_mail_thread`
|
||||
|
||||
@@ -168,10 +174,11 @@ Alle Nachrichten aus einem bestimmten E-Mail-Thread abrufen
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Beschreibung |
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `messages` | array | Array von E-Mail-Nachrichtenobjekten aus dem Thread |
|
||||
| `metadata` | object | Operationsmetadaten einschließlich Thread-ID |
|
||||
| `success` | boolean | Status des Operationserfolgs |
|
||||
| `output` | object | Nachrichtendaten des E-Mail-Threads |
|
||||
|
||||
### `pipedrive_get_pipelines`
|
||||
|
||||
@@ -190,8 +197,9 @@ Alle Pipelines aus Pipedrive abrufen
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Erfolgsstatus der Operation |
|
||||
| `output` | object | Pipeline-Daten |
|
||||
| `pipelines` | array | Array von Pipeline-Objekten aus Pipedrive |
|
||||
| `metadata` | object | Operationsmetadaten |
|
||||
| `success` | boolean | Status des Operationserfolgs |
|
||||
|
||||
### `pipedrive_get_pipeline_deals`
|
||||
|
||||
@@ -210,8 +218,9 @@ Alle Deals in einer bestimmten Pipeline abrufen
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Erfolgsstatus der Operation |
|
||||
| `output` | object | Pipeline-Deals-Daten |
|
||||
| `deals` | array | Array von Deal-Objekten aus der Pipeline |
|
||||
| `metadata` | object | Operationsmetadaten einschließlich Pipeline-ID |
|
||||
| `success` | boolean | Status des Operationserfolgs |
|
||||
|
||||
### `pipedrive_get_projects`
|
||||
|
||||
@@ -229,8 +238,10 @@ Alle Projekte oder ein bestimmtes Projekt von Pipedrive abrufen
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Erfolgsstatus der Operation |
|
||||
| `output` | object | Projektdaten oder Details eines einzelnen Projekts |
|
||||
| `projects` | array | Array von Projektobjekten (bei Auflistung aller) |
|
||||
| `project` | object | Einzelnes Projektobjekt (wenn project_id angegeben ist) |
|
||||
| `metadata` | object | Operationsmetadaten |
|
||||
| `success` | boolean | Status des Operationserfolgs |
|
||||
|
||||
### `pipedrive_create_project`
|
||||
|
||||
@@ -249,8 +260,9 @@ Erstelle ein neues Projekt in Pipedrive
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `project` | object | Das erstellte Projektobjekt |
|
||||
| `metadata` | object | Operationsmetadaten |
|
||||
| `success` | boolean | Status des Operationserfolgs |
|
||||
| `output` | object | Details des erstellten Projekts |
|
||||
|
||||
### `pipedrive_get_activities`
|
||||
|
||||
@@ -271,8 +283,9 @@ Aktivitäten (Aufgaben) von Pipedrive mit optionalen Filtern abrufen
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `activities` | array | Array von Aktivitätsobjekten aus Pipedrive |
|
||||
| `metadata` | object | Operationsmetadaten |
|
||||
| `success` | boolean | Status des Operationserfolgs |
|
||||
| `output` | object | Aktivitätsdaten |
|
||||
|
||||
### `pipedrive_create_activity`
|
||||
|
||||
@@ -296,8 +309,9 @@ Eine neue Aktivität (Aufgabe) in Pipedrive erstellen
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `activity` | object | Das erstellte Aktivitätsobjekt |
|
||||
| `metadata` | object | Operationsmetadaten |
|
||||
| `success` | boolean | Status des Operationserfolgs |
|
||||
| `output` | object | Details der erstellten Aktivität |
|
||||
|
||||
### `pipedrive_update_activity`
|
||||
|
||||
@@ -317,10 +331,11 @@ Eine bestehende Aktivität (Aufgabe) in Pipedrive aktualisieren
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Beschreibung |
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Erfolgsstatus der Operation |
|
||||
| `output` | object | Aktualisierte Aktivitätsdetails |
|
||||
| `activity` | object | Das aktualisierte Aktivitätsobjekt |
|
||||
| `metadata` | object | Operationsmetadaten |
|
||||
| `success` | boolean | Status des Operationserfolgs |
|
||||
|
||||
### `pipedrive_get_leads`
|
||||
|
||||
@@ -339,10 +354,12 @@ Alle Leads oder einen bestimmten Lead von Pipedrive abrufen
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Beschreibung |
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Erfolgsstatus der Operation |
|
||||
| `output` | object | Lead-Daten oder Details eines einzelnen Leads |
|
||||
| `leads` | array | Array von Lead-Objekten (bei Auflistung aller) |
|
||||
| `lead` | object | Einzelnes Lead-Objekt (wenn lead_id angegeben ist) |
|
||||
| `metadata` | object | Operationsmetadaten |
|
||||
| `success` | boolean | Status des Operationserfolgs |
|
||||
|
||||
### `pipedrive_create_lead`
|
||||
|
||||
@@ -363,10 +380,11 @@ Einen neuen Lead in Pipedrive erstellen
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Beschreibung |
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Erfolgsstatus der Operation |
|
||||
| `output` | object | Details des erstellten Leads |
|
||||
| `lead` | object | Das erstellte Lead-Objekt |
|
||||
| `metadata` | object | Operationsmetadaten |
|
||||
| `success` | boolean | Status des Operationserfolgs |
|
||||
|
||||
### `pipedrive_update_lead`
|
||||
|
||||
@@ -388,10 +406,11 @@ Einen vorhandenen Lead in Pipedrive aktualisieren
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Beschreibung |
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Erfolgsstatus der Operation |
|
||||
| `output` | object | Details des aktualisierten Leads |
|
||||
| `lead` | object | Das aktualisierte Lead-Objekt |
|
||||
| `metadata` | object | Operationsmetadaten |
|
||||
| `success` | boolean | Status des Operationserfolgs |
|
||||
|
||||
### `pipedrive_delete_lead`
|
||||
|
||||
@@ -407,8 +426,9 @@ Einen bestimmten Lead aus Pipedrive löschen
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Erfolgsstatus der Operation |
|
||||
| `output` | object | Löschergebnis |
|
||||
| `data` | object | Löschbestätigungsdaten |
|
||||
| `metadata` | object | Operationsmetadaten |
|
||||
| `success` | boolean | Status des Operationserfolgs |
|
||||
|
||||
## Hinweise
|
||||
|
||||
|
||||
@@ -1,807 +0,0 @@
|
||||
---
|
||||
title: Pylon
|
||||
description: Verwalten Sie Kundensupport-Anfragen, Konten, Kontakte, Benutzer,
|
||||
Teams und Tags in Pylon
|
||||
---
|
||||
|
||||
import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
<BlockInfoCard
|
||||
type="pylon"
|
||||
color="#E8F4FA"
|
||||
/>
|
||||
|
||||
{/* MANUAL-CONTENT-START:intro */}
|
||||
[Pylon](https://usepylon.com/) ist eine fortschrittliche Kundensupport- und Erfolgsplattform, die entwickelt wurde, um Ihnen bei der Verwaltung aller Aspekte Ihrer Kundenbeziehungen zu helfen – von Support-Anfragen bis hin zu Konten, Kontakten, Benutzern, Teams und darüber hinaus. Pylon ermöglicht Support- und Erfolgsteams, effizient und programmatisch mit einer umfangreichen API und umfassenden Werkzeugen zu arbeiten.
|
||||
|
||||
Mit Pylon in Sim können Sie:
|
||||
|
||||
- **Support-Anfragen verwalten:**
|
||||
- Support-Anfragen auflisten, erstellen, abrufen, aktualisieren und löschen für effizientes Falltracking.
|
||||
- Anfragen durchsuchen und zurückstellen, um Agenten zu helfen, fokussiert und organisiert zu bleiben.
|
||||
- Verwalten von Anfrage-Followern und externen Anfragen für nahtlose Zusammenarbeit mit internen und externen Stakeholdern.
|
||||
|
||||
- **Vollständige Kontoverwaltung:**
|
||||
- Kundenkonten auflisten, erstellen, abrufen, aktualisieren und löschen.
|
||||
- Massenaktualisierung von Konten programmatisch durchführen.
|
||||
- Konten durchsuchen, um schnell kundenrelevante Informationen für Support oder Outreach zu finden.
|
||||
|
||||
- **Kontaktverwaltung:**
|
||||
- Kontakte auflisten, erstellen, abrufen, aktualisieren, löschen und durchsuchen – verwalten Sie alle Personen, die mit Ihren Konten verbunden sind.
|
||||
|
||||
- **Benutzer- und Team-Operationen:**
|
||||
- Benutzer in Ihrem Pylon-Workspace auflisten, abrufen, aktualisieren und durchsuchen.
|
||||
- Teams auflisten, erstellen, abrufen und aktualisieren, um Ihre Support-Organisation und Arbeitsabläufe zu strukturieren.
|
||||
|
||||
- **Tagging und Organisation:**
|
||||
- Tags auflisten, abrufen, erstellen, aktualisieren und löschen zur Kategorisierung von Anfragen, Konten oder Kontakten.
|
||||
|
||||
- **Nachrichtenbearbeitung:**
|
||||
- Sensible Nachrichteninhalte direkt aus Ihren Workflows redigieren für Datenschutz und Compliance.
|
||||
|
||||
Durch die Integration von Pylon-Tools in Sim können Ihre Agenten jeden Aspekt der Support-Operationen automatisieren:
|
||||
- Automatisches Öffnen, Aktualisieren oder Priorisieren neuer Anfragen bei Kundenereignissen.
|
||||
- Synchronisierte Konto- und Kontaktdaten über Ihren gesamten Tech-Stack hinweg pflegen.
|
||||
- Gespräche weiterleiten, Eskalationen bearbeiten und Ihre Support-Daten mithilfe von Tags und Teams organisieren.
|
||||
- Sicherstellen, dass sensible Daten ordnungsgemäß verwaltet werden, indem Nachrichten bei Bedarf redigiert werden.
|
||||
|
||||
Die Endpunkte von Pylon bieten granulare Kontrolle für das vollständige Lifecycle-Management von Kundenanliegen und -beziehungen. Ob beim Skalieren eines Support-Desks, bei der Unterstützung proaktiver Kundenbetreuung oder bei der Integration mit anderen Systemen – Pylon in Sim ermöglicht erstklassige CRM-Automatisierung – sicher, flexibel und skalierbar.
|
||||
{/* MANUAL-CONTENT-END */}
|
||||
|
||||
## Nutzungsanleitung
|
||||
|
||||
Integrieren Sie Pylon in den Workflow. Verwalten Sie Anliegen (auflisten, erstellen, abrufen, aktualisieren, löschen, suchen, zurückstellen, Follower, externe Anliegen), Konten (auflisten, erstellen, abrufen, aktualisieren, löschen, Massenaktualisierung, suchen), Kontakte (auflisten, erstellen, abrufen, aktualisieren, löschen, suchen), Benutzer (auflisten, abrufen, aktualisieren, suchen), Teams (auflisten, abrufen, erstellen, aktualisieren), Tags (auflisten, abrufen, erstellen, aktualisieren, löschen) und Nachrichten (redigieren).
|
||||
|
||||
## Tools
|
||||
|
||||
### `pylon_list_issues`
|
||||
|
||||
Eine Liste von Anliegen innerhalb eines bestimmten Zeitraums abrufen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiToken` | string | Ja | Pylon API-Token |
|
||||
| `startTime` | string | Ja | Startzeit im RFC3339-Format \(z.B. 2024-01-01T00:00:00Z\) |
|
||||
| `endTime` | string | Ja | Endzeit im RFC3339-Format \(z.B. 2024-01-31T23:59:59Z\) |
|
||||
| `cursor` | string | Nein | Paginierungscursor für die nächste Ergebnisseite |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Status des Operationserfolgs |
|
||||
| `output` | object | Liste der Anliegen |
|
||||
|
||||
### `pylon_create_issue`
|
||||
|
||||
Ein neues Anliegen mit bestimmten Eigenschaften erstellen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiToken` | string | Ja | Pylon API-Token |
|
||||
| `title` | string | Ja | Titel des Problems |
|
||||
| `bodyHtml` | string | Ja | Inhalt des Problems im HTML-Format |
|
||||
| `accountId` | string | Nein | Konto-ID, die mit dem Problem verknüpft werden soll |
|
||||
| `assigneeId` | string | Nein | Benutzer-ID, der das Problem zugewiesen werden soll |
|
||||
| `teamId` | string | Nein | Team-ID, dem das Problem zugewiesen werden soll |
|
||||
| `requesterId` | string | Nein | Anforderer-Benutzer-ID \(Alternative zu requester_email\) |
|
||||
| `requesterEmail` | string | Nein | E-Mail-Adresse des Anforderers \(Alternative zu requester_id\) |
|
||||
| `priority` | string | Nein | Priorität des Problems |
|
||||
| `tags` | string | Nein | Durch Komma getrennte Tag-IDs |
|
||||
| `customFields` | string | Nein | Benutzerdefinierte Felder als JSON-Objekt |
|
||||
| `attachmentUrls` | string | Nein | Durch Komma getrennte Anhang-URLs |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Status des Operationserfolgs |
|
||||
| `output` | object | Daten des erstellten Issues |
|
||||
|
||||
### `pylon_get_issue`
|
||||
|
||||
Ruft ein bestimmtes Issue anhand der ID ab
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiToken` | string | Ja | Pylon API-Token |
|
||||
| `issueId` | string | Ja | Die ID des abzurufenden Issues |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Status des Operationserfolgs |
|
||||
| `output` | object | Issue-Daten |
|
||||
|
||||
### `pylon_update_issue`
|
||||
|
||||
Aktualisiert ein bestehendes Issue
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiToken` | string | Ja | Pylon API-Token |
|
||||
| `issueId` | string | Ja | Die ID des zu aktualisierenden Problems |
|
||||
| `state` | string | Nein | Status des Problems |
|
||||
| `assigneeId` | string | Nein | Benutzer-ID, der das Problem zugewiesen werden soll |
|
||||
| `teamId` | string | Nein | Team-ID, dem das Problem zugewiesen werden soll |
|
||||
| `tags` | string | Nein | Durch Komma getrennte Tag-IDs |
|
||||
| `customFields` | string | Nein | Benutzerdefinierte Felder als JSON-Objekt |
|
||||
| `customerPortalVisible` | boolean | Nein | Ob das Problem im Kundenportal sichtbar ist |
|
||||
| `requesterId` | string | Nein | Anforderer-Benutzer-ID |
|
||||
| `accountId` | string | Nein | Konto-ID, die mit dem Problem verknüpft werden soll |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Status des Operationserfolgs |
|
||||
| `output` | object | Daten des aktualisierten Issues |
|
||||
|
||||
### `pylon_delete_issue`
|
||||
|
||||
Problem nach ID entfernen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiToken` | string | Ja | Pylon API-Token |
|
||||
| `issueId` | string | Ja | Die ID des zu löschenden Problems |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Status des Operationserfolgs |
|
||||
| `output` | object | Löschergebnis |
|
||||
|
||||
### `pylon_search_issues`
|
||||
|
||||
Probleme mit Filtern abfragen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiToken` | string | Ja | Pylon API-Token |
|
||||
| `filter` | string | Ja | Filterkriterien als JSON-String |
|
||||
| `cursor` | string | Nein | Paginierungscursor für die nächste Ergebnisseite |
|
||||
| `limit` | number | Nein | Maximale Anzahl der zurückzugebenden Ergebnisse |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Status des Operationserfolgs |
|
||||
| `output` | object | Suchergebnisse |
|
||||
|
||||
### `pylon_snooze_issue`
|
||||
|
||||
Problemsichtbarkeit bis zu einem bestimmten Zeitpunkt verschieben
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiToken` | string | Ja | Pylon API-Token |
|
||||
| `issueId` | string | Ja | Die ID des zu schlummernden Problems |
|
||||
| `snoozeUntil` | string | Ja | RFC3339-Zeitstempel, wann das Problem wieder erscheinen soll \(z.B. 2024-01-01T00:00:00Z\) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Erfolgsstatus der Operation |
|
||||
| `output` | object | Daten des zurückgestellten Problems |
|
||||
|
||||
### `pylon_list_issue_followers`
|
||||
|
||||
Liste der Follower für ein bestimmtes Problem abrufen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiToken` | string | Ja | Pylon API-Token |
|
||||
| `issueId` | string | Ja | Die ID des Problems |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Erfolgsstatus der Operation |
|
||||
| `output` | object | Liste der Follower |
|
||||
|
||||
### `pylon_manage_issue_followers`
|
||||
|
||||
Follower zu einem Problem hinzufügen oder entfernen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiToken` | string | Ja | Pylon API-Token |
|
||||
| `issueId` | string | Ja | Die ID des Problems |
|
||||
| `userIds` | string | Nein | Durch Komma getrennte Benutzer-IDs zum Hinzufügen/Entfernen |
|
||||
| `contactIds` | string | Nein | Durch Komma getrennte Kontakt-IDs zum Hinzufügen/Entfernen |
|
||||
| `operation` | string | Nein | Auszuführende Operation: "add" oder "remove" \(Standard: "add"\) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Erfolgsstatus der Operation |
|
||||
| `output` | object | Aktualisierte Liste der Follower |
|
||||
|
||||
### `pylon_link_external_issue`
|
||||
|
||||
Issue mit einem externen System-Issue verknüpfen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiToken` | string | Ja | Pylon API-Token |
|
||||
| `issueId` | string | Ja | Die ID des Pylon-Issues |
|
||||
| `externalIssueId` | string | Ja | Die ID des externen Issues |
|
||||
| `source` | string | Ja | Das Quellsystem \(z.B. "jira", "linear", "github"\) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Status des Operationserfolgs |
|
||||
| `output` | object | Daten des verknüpften externen Issues |
|
||||
|
||||
### `pylon_list_accounts`
|
||||
|
||||
Eine paginierte Liste von Konten abrufen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiToken` | string | Ja | Pylon API-Token |
|
||||
| `limit` | string | Nein | Anzahl der zurückzugebenden Konten \(1-1000, Standard 100\) |
|
||||
| `cursor` | string | Nein | Paginierungscursor für die nächste Ergebnisseite |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Status des Operationserfolgs |
|
||||
| `output` | object | Liste der Konten |
|
||||
|
||||
### `pylon_create_account`
|
||||
|
||||
Ein neues Konto mit bestimmten Eigenschaften erstellen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiToken` | string | Ja | Pylon API-Token |
|
||||
| `name` | string | Ja | Kontoname |
|
||||
| `domains` | string | Nein | Kommagetrennte Liste von Domains |
|
||||
| `primaryDomain` | string | Nein | Primäre Domain für das Konto |
|
||||
| `customFields` | string | Nein | Benutzerdefinierte Felder als JSON-Objekt |
|
||||
| `tags` | string | Nein | Kommagetrennte Tag-IDs |
|
||||
| `channels` | string | Nein | Kommagetrennte Kanal-IDs |
|
||||
| `externalIds` | string | Nein | Kommagetrennte externe IDs |
|
||||
| `ownerId` | string | Nein | Besitzer-Benutzer-ID |
|
||||
| `logoUrl` | string | Nein | URL zum Konto-Logo |
|
||||
| `subaccountIds` | string | Nein | Kommagetrennte Unterkonto-IDs |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Erfolgsstatus der Operation |
|
||||
| `output` | object | Erstellte Kontodaten |
|
||||
|
||||
### `pylon_get_account`
|
||||
|
||||
Ein einzelnes Konto anhand der ID abrufen
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiToken` | string | Ja | Pylon API-Token |
|
||||
| `accountId` | string | Ja | Konto-ID zum Abrufen |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Erfolgsstatus der Operation |
|
||||
| `output` | object | Kontodaten |
|
||||
|
||||
### `pylon_update_account`
|
||||
|
||||
Ein bestehendes Konto mit neuen Eigenschaften aktualisieren
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiToken` | string | Ja | Pylon API-Token |
|
||||
| `accountId` | string | Ja | Konto-ID zum Aktualisieren |
|
||||
| `name` | string | Nein | Kontoname |
|
||||
| `domains` | string | Nein | Kommagetrennte Liste von Domains |
|
||||
| `primaryDomain` | string | Nein | Primäre Domain für das Konto |
|
||||
| `customFields` | string | Nein | Benutzerdefinierte Felder als JSON-Objekt |
|
||||
| `tags` | string | Nein | Kommagetrennte Tag-IDs |
|
||||
| `channels` | string | Nein | Kommagetrennte Kanal-IDs |
|
||||
| `externalIds` | string | Nein | Kommagetrennte externe IDs |
|
||||
| `ownerId` | string | Nein | Besitzer-Benutzer-ID |
|
||||
| `logoUrl` | string | Nein | URL zum Konto-Logo |
|
||||
| `subaccountIds` | string | Nein | Kommagetrennte Unterkonto-IDs |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Erfolgsstatus der Operation |
|
||||
| `output` | object | Aktualisierte Kontodaten |
|
||||
|
||||
### `pylon_delete_account`
|
||||
|
||||
Ein Konto anhand der ID entfernen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiToken` | string | Ja | Pylon API-Token |
|
||||
| `accountId` | string | Ja | Konto-ID, die gelöscht werden soll |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Erfolgsstatus der Operation |
|
||||
| `output` | object | Löschbestätigung |
|
||||
|
||||
### `pylon_bulk_update_accounts`
|
||||
|
||||
Mehrere Konten auf einmal aktualisieren
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiToken` | string | Ja | Pylon API-Token |
|
||||
| `accountIds` | string | Ja | Durch Komma getrennte Konto-IDs, die aktualisiert werden sollen |
|
||||
| `customFields` | string | Nein | Benutzerdefinierte Felder als JSON-Objekt |
|
||||
| `tags` | string | Nein | Durch Komma getrennte Tag-IDs |
|
||||
| `ownerId` | string | Nein | Besitzer-Benutzer-ID |
|
||||
| `tagsApplyMode` | string | Nein | Tag-Anwendungsmodus: append_only, remove_only oder replace |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Erfolgsstatus der Operation |
|
||||
| `output` | object | Massenhaft aktualisierte Kontodaten |
|
||||
|
||||
### `pylon_search_accounts`
|
||||
|
||||
Konten mit benutzerdefinierten Filtern durchsuchen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiToken` | string | Ja | Pylon API-Token |
|
||||
| `filter` | string | Ja | Filter als JSON-String mit Feld/Operator/Wert-Struktur |
|
||||
| `limit` | string | Nein | Anzahl der zurückzugebenden Konten \(1-1000, Standard 100\) |
|
||||
| `cursor` | string | Nein | Paginierungscursor für die nächste Ergebnisseite |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Status des Operationserfolgs |
|
||||
| `output` | object | Suchergebnisse |
|
||||
|
||||
### `pylon_list_contacts`
|
||||
|
||||
Eine Liste von Kontakten abrufen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiToken` | string | Ja | Pylon API-Token |
|
||||
| `cursor` | string | Nein | Paginierungscursor für die nächste Ergebnisseite |
|
||||
| `limit` | string | Nein | Maximale Anzahl der zurückzugebenden Kontakte |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Status des Operationserfolgs |
|
||||
| `output` | object | Liste der Kontakte |
|
||||
|
||||
### `pylon_create_contact`
|
||||
|
||||
Einen neuen Kontakt mit bestimmten Eigenschaften erstellen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiToken` | string | Ja | Pylon API-Token |
|
||||
| `name` | string | Ja | Kontaktname |
|
||||
| `email` | string | Nein | E-Mail-Adresse des Kontakts |
|
||||
| `accountId` | string | Nein | Konto-ID, die mit dem Kontakt verknüpft werden soll |
|
||||
| `accountExternalId` | string | Nein | Externe Konto-ID, die mit dem Kontakt verknüpft werden soll |
|
||||
| `avatarUrl` | string | Nein | URL für das Kontakt-Avatarbild |
|
||||
| `customFields` | string | Nein | Benutzerdefinierte Felder als JSON-Objekt |
|
||||
| `portalRole` | string | Nein | Portal-Rolle für den Kontakt |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Status des Operationserfolgs |
|
||||
| `output` | object | Erstellte Kontaktdaten |
|
||||
|
||||
### `pylon_get_contact`
|
||||
|
||||
Einen bestimmten Kontakt anhand der ID abrufen
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiToken` | string | Ja | Pylon API-Token |
|
||||
| `contactId` | string | Ja | Kontakt-ID zum Abrufen |
|
||||
| `cursor` | string | Nein | Paginierungscursor für die nächste Ergebnisseite |
|
||||
| `limit` | string | Nein | Maximale Anzahl der zurückzugebenden Elemente |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Status des Operationserfolgs |
|
||||
| `output` | object | Kontaktdaten |
|
||||
|
||||
### `pylon_update_contact`
|
||||
|
||||
Einen vorhandenen Kontakt mit angegebenen Eigenschaften aktualisieren
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiToken` | string | Ja | Pylon API-Token |
|
||||
| `contactId` | string | Ja | Kontakt-ID zum Aktualisieren |
|
||||
| `name` | string | Nein | Kontaktname |
|
||||
| `email` | string | Nein | E-Mail-Adresse des Kontakts |
|
||||
| `accountId` | string | Nein | Konto-ID, die mit dem Kontakt verknüpft werden soll |
|
||||
| `accountExternalId` | string | Nein | Externe Konto-ID, die mit dem Kontakt verknüpft werden soll |
|
||||
| `avatarUrl` | string | Nein | URL für das Kontakt-Avatarbild |
|
||||
| `customFields` | string | Nein | Benutzerdefinierte Felder als JSON-Objekt |
|
||||
| `portalRole` | string | Nein | Portalrolle für den Kontakt |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Status des Operationserfolgs |
|
||||
| `output` | object | Aktualisierte Kontaktdaten |
|
||||
|
||||
### `pylon_delete_contact`
|
||||
|
||||
Einen bestimmten Kontakt anhand der ID löschen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiToken` | string | Ja | Pylon API-Token |
|
||||
| `contactId` | string | Ja | Zu löschende Kontakt-ID |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Status des Operationserfolgs |
|
||||
| `output` | object | Ergebnis des Löschvorgangs |
|
||||
|
||||
### `pylon_search_contacts`
|
||||
|
||||
Nach Kontakten mit einem Filter suchen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiToken` | string | Ja | Pylon API-Token |
|
||||
| `filter` | string | Ja | Filter als JSON-Objekt |
|
||||
| `limit` | string | Nein | Maximale Anzahl der zurückzugebenden Kontakte |
|
||||
| `cursor` | string | Nein | Paginierungscursor für die nächste Ergebnisseite |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Status des Operationserfolgs |
|
||||
| `output` | object | Suchergebnisse |
|
||||
|
||||
### `pylon_list_users`
|
||||
|
||||
Eine Liste von Benutzern abrufen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiToken` | string | Ja | Pylon API-Token |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Erfolgsstatus der Operation |
|
||||
| `output` | object | Liste der Benutzer |
|
||||
|
||||
### `pylon_get_user`
|
||||
|
||||
Einen bestimmten Benutzer anhand der ID abrufen
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiToken` | string | Ja | Pylon API-Token |
|
||||
| `userId` | string | Ja | Benutzer-ID zum Abrufen |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Erfolgsstatus der Operation |
|
||||
| `output` | object | Benutzerdaten |
|
||||
|
||||
### `pylon_update_user`
|
||||
|
||||
Einen vorhandenen Benutzer mit angegebenen Eigenschaften aktualisieren
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiToken` | string | Ja | Pylon API-Token |
|
||||
| `userId` | string | Ja | Benutzer-ID zum Aktualisieren |
|
||||
| `roleId` | string | Nein | Rollen-ID, die dem Benutzer zugewiesen werden soll |
|
||||
| `status` | string | Nein | Benutzerstatus |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Erfolgsstatus der Operation |
|
||||
| `output` | object | Aktualisierte Benutzerdaten |
|
||||
|
||||
### `pylon_search_users`
|
||||
|
||||
Nach Benutzern mit einem Filter für das E-Mail-Feld suchen
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiToken` | string | Ja | Pylon API-Token |
|
||||
| `filter` | string | Ja | Filter als JSON-Objekt mit E-Mail-Feld |
|
||||
| `cursor` | string | Nein | Paginierungscursor für die nächste Ergebnisseite |
|
||||
| `limit` | string | Nein | Maximale Anzahl der zurückzugebenden Benutzer |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Erfolgsstatus der Operation |
|
||||
| `output` | object | Suchergebnisse |
|
||||
|
||||
### `pylon_list_teams`
|
||||
|
||||
Eine Liste von Teams abrufen
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiToken` | string | Ja | Pylon API-Token |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Erfolgsstatus der Operation |
|
||||
| `output` | object | Liste der Teams |
|
||||
|
||||
### `pylon_get_team`
|
||||
|
||||
Ein bestimmtes Team anhand der ID abrufen
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiToken` | string | Ja | Pylon API-Token |
|
||||
| `teamId` | string | Ja | Team-ID zum Abrufen |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Erfolgsstatus der Operation |
|
||||
| `output` | object | Team-Daten |
|
||||
|
||||
### `pylon_create_team`
|
||||
|
||||
Ein neues Team mit bestimmten Eigenschaften erstellen
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiToken` | string | Ja | Pylon API-Token |
|
||||
| `name` | string | Nein | Team-Name |
|
||||
| `userIds` | string | Nein | Durch Kommas getrennte Benutzer-IDs, die als Teammitglieder hinzugefügt werden sollen |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Status des Operationserfolgs |
|
||||
| `output` | object | Erstellte Team-Daten |
|
||||
|
||||
### `pylon_update_team`
|
||||
|
||||
Aktualisieren eines vorhandenen Teams mit angegebenen Eigenschaften (userIds ersetzt die gesamte Mitgliedschaft)
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiToken` | string | Ja | Pylon API-Token |
|
||||
| `teamId` | string | Ja | Team-ID zum Aktualisieren |
|
||||
| `name` | string | Nein | Team-Name |
|
||||
| `userIds` | string | Nein | Kommagetrennte Benutzer-IDs \(ersetzt die gesamte Team-Mitgliedschaft\) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Status des Operationserfolgs |
|
||||
| `output` | object | Aktualisierte Team-Daten |
|
||||
|
||||
### `pylon_list_tags`
|
||||
|
||||
Abrufen einer Liste von Tags
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiToken` | string | Ja | Pylon API-Token |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Status des Operationserfolgs |
|
||||
| `output` | object | Liste der Tags |
|
||||
|
||||
### `pylon_get_tag`
|
||||
|
||||
Abrufen eines bestimmten Tags anhand der ID
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiToken` | string | Ja | Pylon API-Token |
|
||||
| `tagId` | string | Ja | Tag-ID zum Abrufen |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Erfolgsstatus der Operation |
|
||||
| `output` | object | Tag-Daten |
|
||||
|
||||
### `pylon_create_tag`
|
||||
|
||||
Erstellt einen neuen Tag mit angegebenen Eigenschaften (objectType: account/issue/contact)
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiToken` | string | Ja | Pylon API-Token |
|
||||
| `objectType` | string | Ja | Objekttyp für Tag \(account, issue oder contact\) |
|
||||
| `value` | string | Ja | Tag-Wert/Name |
|
||||
| `hexColor` | string | Nein | Hex-Farbcode für Tag \(z.B. #FF5733\) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Erfolgsstatus der Operation |
|
||||
| `output` | object | Daten des erstellten Tags |
|
||||
|
||||
### `pylon_update_tag`
|
||||
|
||||
Aktualisiert einen vorhandenen Tag mit angegebenen Eigenschaften
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiToken` | string | Ja | Pylon API-Token |
|
||||
| `tagId` | string | Ja | Zu aktualisierende Tag-ID |
|
||||
| `hexColor` | string | Nein | Hex-Farbcode für Tag \(z.B. #FF5733\) |
|
||||
| `value` | string | Nein | Tag-Wert/Name |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Erfolgsstatus der Operation |
|
||||
| `output` | object | Daten des aktualisierten Tags |
|
||||
|
||||
### `pylon_delete_tag`
|
||||
|
||||
Löschen eines bestimmten Tags anhand der ID
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiToken` | string | Ja | Pylon API-Token |
|
||||
| `tagId` | string | Ja | Tag-ID zum Löschen |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Erfolgsstatus der Operation |
|
||||
| `output` | object | Ergebnis der Löschoperation |
|
||||
|
||||
### `pylon_redact_message`
|
||||
|
||||
Redigieren einer bestimmten Nachricht innerhalb eines Issues
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiToken` | string | Ja | Pylon API-Token |
|
||||
| `issueId` | string | Ja | Issue-ID, die die Nachricht enthält |
|
||||
| `messageId` | string | Ja | Nachrichten-ID zum Redigieren |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Erfolgsstatus der Operation |
|
||||
| `output` | object | Ergebnis der Redigieroperation |
|
||||
|
||||
## Hinweise
|
||||
|
||||
- Kategorie: `tools`
|
||||
- Typ: `pylon`
|
||||
124
apps/docs/content/docs/de/tools/servicenow.mdx
Normal file
124
apps/docs/content/docs/de/tools/servicenow.mdx
Normal file
@@ -0,0 +1,124 @@
|
||||
---
|
||||
title: ServiceNow
|
||||
description: ServiceNow-Datensätze erstellen, lesen, aktualisieren und löschen
|
||||
---
|
||||
|
||||
import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
<BlockInfoCard
|
||||
type="servicenow"
|
||||
color="#032D42"
|
||||
/>
|
||||
|
||||
{/* MANUAL-CONTENT-START:intro */}
|
||||
[ServiceNow](https://www.servicenow.com/) ist eine leistungsstarke Cloud-Plattform zur Optimierung und Automatisierung von IT-Service-Management (ITSM), Workflows und Geschäftsprozessen in Ihrem Unternehmen. ServiceNow ermöglicht Ihnen die Verwaltung von Vorfällen, Anfragen, Aufgaben, Benutzern und mehr über seine umfangreiche API.
|
||||
|
||||
Mit ServiceNow können Sie:
|
||||
|
||||
- **IT-Workflows automatisieren**: Datensätze in jeder ServiceNow-Tabelle erstellen, lesen, aktualisieren und löschen, z. B. Vorfälle, Aufgaben, Änderungsanfragen und Benutzer.
|
||||
- **Systeme integrieren**: ServiceNow mit Ihren anderen Tools und Prozessen für nahtlose Automatisierung verbinden.
|
||||
- **Eine einzige Informationsquelle pflegen**: Alle Ihre Service- und Betriebsdaten organisiert und zugänglich halten.
|
||||
- **Betriebliche Effizienz steigern**: Manuelle Arbeit reduzieren und Servicequalität mit anpassbaren Workflows und Automatisierung verbessern.
|
||||
|
||||
In Sim ermöglicht die ServiceNow-Integration Ihren Agenten, direkt mit Ihrer ServiceNow-Instanz als Teil ihrer Workflows zu interagieren. Agenten können Datensätze in jeder ServiceNow-Tabelle erstellen, lesen, aktualisieren oder löschen und Ticket- oder Benutzerdaten für ausgefeilte Automatisierung und Entscheidungsfindung nutzen. Diese Integration verbindet Ihre Workflow-Automatisierung und IT-Betrieb und befähigt Ihre Agenten, Serviceanfragen, Vorfälle, Benutzer und Assets ohne manuelle Eingriffe zu verwalten. Durch die Verbindung von Sim mit ServiceNow können Sie Service-Management-Aufgaben automatisieren, Reaktionszeiten verbessern und konsistenten, sicheren Zugriff auf die wichtigen Servicedaten Ihres Unternehmens gewährleisten.
|
||||
{/* MANUAL-CONTENT-END */}
|
||||
|
||||
## Nutzungsanweisungen
|
||||
|
||||
Integrieren Sie ServiceNow in Ihren Workflow. Erstellen, lesen, aktualisieren und löschen Sie Datensätze in jeder ServiceNow-Tabelle, einschließlich Vorfälle, Aufgaben, Änderungsanfragen, Benutzer und mehr.
|
||||
|
||||
## Tools
|
||||
|
||||
### `servicenow_create_record`
|
||||
|
||||
Einen neuen Datensatz in einer ServiceNow-Tabelle erstellen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `instanceUrl` | string | Ja | ServiceNow-Instanz-URL \(z. B. https://instance.service-now.com\) |
|
||||
| `username` | string | Ja | ServiceNow-Benutzername |
|
||||
| `password` | string | Ja | ServiceNow-Passwort |
|
||||
| `tableName` | string | Ja | Tabellenname \(z. B. incident, task, sys_user\) |
|
||||
| `fields` | json | Ja | Felder, die für den Datensatz festgelegt werden sollen \(JSON-Objekt\) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `record` | json | Erstellter ServiceNow-Datensatz mit sys_id und anderen Feldern |
|
||||
| `metadata` | json | Metadaten der Operation |
|
||||
|
||||
### `servicenow_read_record`
|
||||
|
||||
Datensätze aus einer ServiceNow-Tabelle lesen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `instanceUrl` | string | Ja | ServiceNow-Instanz-URL \(z. B. https://instance.service-now.com\) |
|
||||
| `username` | string | Ja | ServiceNow-Benutzername |
|
||||
| `password` | string | Ja | ServiceNow-Passwort |
|
||||
| `tableName` | string | Ja | Tabellenname |
|
||||
| `sysId` | string | Nein | Spezifische Datensatz-sys_id |
|
||||
| `number` | string | Nein | Datensatznummer \(z. B. INC0010001\) |
|
||||
| `query` | string | Nein | Kodierte Abfragezeichenfolge \(z. B. "active=true^priority=1"\) |
|
||||
| `limit` | number | Nein | Maximale Anzahl der zurückzugebenden Datensätze |
|
||||
| `fields` | string | Nein | Durch Kommas getrennte Liste der zurückzugebenden Felder |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `records` | array | Array von ServiceNow-Datensätzen |
|
||||
| `metadata` | json | Metadaten der Operation |
|
||||
|
||||
### `servicenow_update_record`
|
||||
|
||||
Einen bestehenden Datensatz in einer ServiceNow-Tabelle aktualisieren
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `instanceUrl` | string | Ja | ServiceNow-Instanz-URL \(z. B. https://instance.service-now.com\) |
|
||||
| `username` | string | Ja | ServiceNow-Benutzername |
|
||||
| `password` | string | Ja | ServiceNow-Passwort |
|
||||
| `tableName` | string | Ja | Tabellenname |
|
||||
| `sysId` | string | Ja | Datensatz-sys_id zum Aktualisieren |
|
||||
| `fields` | json | Ja | Zu aktualisierende Felder \(JSON-Objekt\) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `record` | json | Aktualisierter ServiceNow-Datensatz |
|
||||
| `metadata` | json | Metadaten der Operation |
|
||||
|
||||
### `servicenow_delete_record`
|
||||
|
||||
Einen Datensatz aus einer ServiceNow-Tabelle löschen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `instanceUrl` | string | Ja | ServiceNow-Instanz-URL \(z. B. https://instance.service-now.com\) |
|
||||
| `username` | string | Ja | ServiceNow-Benutzername |
|
||||
| `password` | string | Ja | ServiceNow-Passwort |
|
||||
| `tableName` | string | Ja | Tabellenname |
|
||||
| `sysId` | string | Ja | Datensatz-sys_id zum Löschen |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Ob das Löschen erfolgreich war |
|
||||
| `metadata` | json | Metadaten der Operation |
|
||||
|
||||
## Hinweise
|
||||
|
||||
- Kategorie: `tools`
|
||||
- Typ: `servicenow`
|
||||
@@ -54,7 +54,7 @@ Integriert Slack in den Workflow. Kann Nachrichten senden, aktualisieren und lö
|
||||
|
||||
### `slack_message`
|
||||
|
||||
Senden Sie Nachrichten an Slack-Kanäle oder Benutzer über die Slack-API. Unterstützt Slack mrkdwn-Formatierung.
|
||||
Sende Nachrichten an Slack-Kanäle oder Direktnachrichten. Unterstützt Slack mrkdwn-Formatierung.
|
||||
|
||||
#### Eingabe
|
||||
|
||||
@@ -62,8 +62,9 @@ Senden Sie Nachrichten an Slack-Kanäle oder Benutzer über die Slack-API. Unter
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `authMethod` | string | Nein | Authentifizierungsmethode: oauth oder bot_token |
|
||||
| `botToken` | string | Nein | Bot-Token für benutzerdefinierten Bot |
|
||||
| `channel` | string | Ja | Ziel-Slack-Kanal \(z.B. #general\) |
|
||||
| `text` | string | Ja | Nachrichtentext zum Senden \(unterstützt Slack mrkdwn-Formatierung\) |
|
||||
| `channel` | string | Nein | Ziel-Slack-Kanal \(z.B. #general\) |
|
||||
| `userId` | string | Nein | Ziel-Slack-Benutzer-ID für Direktnachrichten \(z.B. U1234567890\) |
|
||||
| `text` | string | Ja | Zu sendender Nachrichtentext \(unterstützt Slack mrkdwn-Formatierung\) |
|
||||
| `thread_ts` | string | Nein | Thread-Zeitstempel für Antworten \(erstellt Thread-Antwort\) |
|
||||
| `files` | file[] | Nein | Dateien, die an die Nachricht angehängt werden sollen |
|
||||
|
||||
@@ -108,11 +109,12 @@ Lesen Sie die neuesten Nachrichten aus Slack-Kanälen. Rufen Sie den Konversatio
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `authMethod` | string | Nein | Authentifizierungsmethode: oauth oder bot_token |
|
||||
| `botToken` | string | Nein | Bot-Token für benutzerdefinierten Bot |
|
||||
| `channel` | string | Ja | Slack-Kanal, aus dem Nachrichten gelesen werden sollen (z.B. #general) |
|
||||
| `limit` | number | Nein | Anzahl der abzurufenden Nachrichten (Standard: 10, max: 100) |
|
||||
| `oldest` | string | Nein | Beginn des Zeitraums (Zeitstempel) |
|
||||
| `latest` | string | Nein | Ende des Zeitraums (Zeitstempel) |
|
||||
| `botToken` | string | Nein | Bot-Token für Custom Bot |
|
||||
| `channel` | string | Nein | Slack-Kanal, aus dem Nachrichten gelesen werden sollen \(z.B. #general\) |
|
||||
| `userId` | string | Nein | Benutzer-ID für DM-Konversation \(z.B. U1234567890\) |
|
||||
| `limit` | number | Nein | Anzahl der abzurufenden Nachrichten \(Standard: 10, max: 15\) |
|
||||
| `oldest` | string | Nein | Beginn des Zeitbereichs \(Zeitstempel\) |
|
||||
| `latest` | string | Nein | Ende des Zeitbereichs \(Zeitstempel\) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
|
||||
1453
apps/docs/content/docs/de/tools/spotify.mdx
Normal file
1453
apps/docs/content/docs/de/tools/spotify.mdx
Normal file
File diff suppressed because it is too large
Load Diff
63
apps/docs/content/docs/de/tools/sqs.mdx
Normal file
63
apps/docs/content/docs/de/tools/sqs.mdx
Normal file
@@ -0,0 +1,63 @@
|
||||
---
|
||||
title: Amazon SQS
|
||||
description: Verbindung zu Amazon SQS
|
||||
---
|
||||
|
||||
import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
<BlockInfoCard
|
||||
type="sqs"
|
||||
color="linear-gradient(45deg, #2E27AD 0%, #527FFF 100%)"
|
||||
/>
|
||||
|
||||
{/* MANUAL-CONTENT-START:intro */}
|
||||
[Amazon Simple Queue Service (SQS)](https://aws.amazon.com/sqs/) ist ein vollständig verwalteter Message-Queuing-Dienst, der es ermöglicht, Microservices, verteilte Systeme und serverlose Anwendungen zu entkoppeln und zu skalieren. SQS beseitigt die Komplexität und den Aufwand, die mit der Verwaltung und dem Betrieb von nachrichtenorientierter Middleware verbunden sind, und ermöglicht Entwicklern, sich auf differenzierende Arbeit zu konzentrieren.
|
||||
|
||||
Mit Amazon SQS können Sie:
|
||||
|
||||
- **Nachrichten senden**: Veröffentlichen Sie Nachrichten in Warteschlangen für asynchrone Verarbeitung
|
||||
- **Anwendungen entkoppeln**: Ermöglichen Sie eine lose Kopplung zwischen Komponenten Ihres Systems
|
||||
- **Workloads skalieren**: Bewältigen Sie variable Arbeitslasten ohne Bereitstellung von Infrastruktur
|
||||
- **Zuverlässigkeit gewährleisten**: Eingebaute Redundanz und hohe Verfügbarkeit
|
||||
- **FIFO-Warteschlangen unterstützen**: Strikte Nachrichtenreihenfolge und genau einmalige Verarbeitung beibehalten
|
||||
|
||||
In Sim ermöglicht die SQS-Integration Ihren Agenten, Nachrichten sicher und programmatisch an Amazon SQS-Warteschlangen zu senden. Unterstützte Operationen umfassen:
|
||||
|
||||
- **Nachricht senden**: Senden Sie Nachrichten an SQS-Warteschlangen mit optionaler Nachrichtengruppen-ID und Deduplizierungs-ID für FIFO-Warteschlangen
|
||||
|
||||
Diese Integration ermöglicht es Ihren Agenten, Workflows zum Senden von Nachrichten ohne manuelle Eingriffe zu automatisieren. Durch die Verbindung von Sim mit Amazon SQS können Sie Agenten erstellen, die Nachrichten innerhalb Ihrer Workflows in Warteschlangen veröffentlichen – alles ohne Verwaltung der Warteschlangen-Infrastruktur oder Verbindungen.
|
||||
{/* MANUAL-CONTENT-END */}
|
||||
|
||||
## Nutzungsanweisungen
|
||||
|
||||
Integrieren Sie Amazon SQS in den Workflow. Kann Nachrichten an SQS-Warteschlangen senden.
|
||||
|
||||
## Tools
|
||||
|
||||
### `sqs_send`
|
||||
|
||||
Eine Nachricht an eine Amazon SQS-Warteschlange senden
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `region` | string | Ja | AWS-Region (z.B. us-east-1) |
|
||||
| `accessKeyId` | string | Ja | AWS-Zugriffsschlüssel-ID |
|
||||
| `secretAccessKey` | string | Ja | AWS-Geheimzugriffsschlüssel |
|
||||
| `queueUrl` | string | Ja | Queue-URL |
|
||||
| `data` | object | Ja | Zu sendender Nachrichtentext |
|
||||
| `messageGroupId` | string | Nein | Nachrichtengruppen-ID (optional) |
|
||||
| `messageDeduplicationId` | string | Nein | Nachrichtendeduplizierungs-ID (optional) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `message` | string | Statusmeldung der Operation |
|
||||
| `id` | string | Nachrichten-ID |
|
||||
|
||||
## Hinweise
|
||||
|
||||
- Kategorie: `tools`
|
||||
- Typ: `sqs`
|
||||
@@ -1,6 +1,6 @@
|
||||
---
|
||||
title: Stagehand Extract
|
||||
description: Extract data from websites
|
||||
title: Stagehand
|
||||
description: Web-Automatisierung und Datenextraktion
|
||||
---
|
||||
|
||||
import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
@@ -11,43 +11,73 @@ import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
/>
|
||||
|
||||
{/* MANUAL-CONTENT-START:intro */}
|
||||
[Stagehand](https://stagehand.com) is a tool that allows you to extract structured data from webpages using Browserbase and OpenAI.
|
||||
[Stagehand](https://stagehand.com) ist ein Tool, das sowohl die Extraktion strukturierter Daten aus Webseiten als auch autonome Web-Automatisierung mittels Browserbase und modernen LLMs (OpenAI oder Anthropic) ermöglicht.
|
||||
|
||||
With Stagehand, you can:
|
||||
Stagehand bietet zwei Hauptfunktionen in Sim:
|
||||
|
||||
- **Extract structured data**: Extract structured data from webpages using Browserbase and OpenAI
|
||||
- **Save data to a database**: Save the extracted data to a database
|
||||
- **Automate workflows**: Automate workflows to extract data from webpages
|
||||
- **stagehand_extract**: Extrahiert strukturierte Daten von einer einzelnen Webseite. Sie geben an, was Sie möchten (ein Schema), und die KI ruft die Daten in dieser Form von der Seite ab und analysiert sie. Dies eignet sich am besten zum Extrahieren von Listen, Feldern oder Objekten, wenn Sie genau wissen, welche Informationen Sie benötigen und woher Sie diese bekommen.
|
||||
|
||||
In Sim, the Stagehand integration enables your agents to extract structured data from webpages using Browserbase and OpenAI. This allows for powerful automation scenarios such as data extraction, data analysis, and data integration. Your agents can extract structured data from webpages, save the extracted data to a database, and automate workflows to extract data from webpages. This integration bridges the gap between your AI workflows and your data management system, enabling seamless data extraction and integration. By connecting Sim with Stagehand, you can automate data extraction processes, maintain up-to-date information repositories, generate reports, and organize information intelligently - all through your intelligent agents.
|
||||
- **stagehand_agent**: Führt einen autonomen Web-Agenten aus, der in der Lage ist, mehrstufige Aufgaben zu erledigen, mit Elementen zu interagieren, zwischen Seiten zu navigieren und strukturierte Ergebnisse zurückzugeben. Dies ist viel flexibler: der Agent kann Dinge wie Anmeldungen, Suchen, Ausfüllen von Formularen, Sammeln von Daten aus verschiedenen Quellen durchführen und ein Endergebnis gemäß einem angeforderten Schema ausgeben.
|
||||
|
||||
**Wesentliche Unterschiede:**
|
||||
|
||||
- *stagehand_extract* ist ein schneller “extrahiere diese Daten von dieser Seite” Vorgang. Es funktioniert am besten für direkte, einstufige Extraktionsaufgaben.
|
||||
- *stagehand_agent* führt komplexe, mehrstufige autonome Aufgaben im Web aus — wie Navigation, Suche oder sogar Transaktionen — und kann Daten dynamisch gemäß Ihren Anweisungen und einem optionalen Schema extrahieren.
|
||||
|
||||
In der Praxis verwenden Sie **stagehand_extract**, wenn Sie wissen, was Sie wollen und woher, und **stagehand_agent**, wenn Sie einen Bot benötigen, der interaktive Arbeitsabläufe durchdenkt und ausführt.
|
||||
|
||||
Durch die Integration von Stagehand können Sim-Agenten die Datenerfassung, -analyse und Workflow-Ausführung im Web automatisieren: Datenbanken aktualisieren, Informationen organisieren und benutzerdefinierte Berichte erstellen — nahtlos und autonom.
|
||||
{/* MANUAL-CONTENT-END */}
|
||||
|
||||
## Usage Instructions
|
||||
## Gebrauchsanweisung
|
||||
|
||||
Integrate Stagehand into the workflow. Can extract structured data from webpages.
|
||||
Integrieren Sie Stagehand in den Workflow. Kann strukturierte Daten aus Webseiten extrahieren oder einen autonomen Agenten ausführen, um Aufgaben zu erledigen.
|
||||
|
||||
## Tools
|
||||
|
||||
### `stagehand_extract`
|
||||
|
||||
Extract structured data from a webpage using Stagehand
|
||||
Extrahieren Sie strukturierte Daten von einer Webseite mit Stagehand
|
||||
|
||||
#### Input
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `url` | string | Yes | URL of the webpage to extract data from |
|
||||
| `instruction` | string | Yes | Instructions for extraction |
|
||||
| `apiKey` | string | Yes | OpenAI API key for extraction \(required by Stagehand\) |
|
||||
| `schema` | json | Yes | JSON schema defining the structure of the data to extract |
|
||||
| `url` | string | Ja | URL der Webseite, aus der Daten extrahiert werden sollen |
|
||||
| `instruction` | string | Ja | Anweisungen für die Extraktion |
|
||||
| `provider` | string | Nein | Zu verwendender KI-Anbieter: openai oder anthropic |
|
||||
| `apiKey` | string | Ja | API-Schlüssel für den ausgewählten Anbieter |
|
||||
| `schema` | json | Ja | JSON-Schema, das die Struktur der zu extrahierenden Daten definiert |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `data` | object | Extrahierte strukturierte Daten, die dem bereitgestellten Schema entsprechen |
|
||||
|
||||
### `stagehand_agent`
|
||||
|
||||
Führen Sie einen autonomen Web-Agenten aus, um Aufgaben zu erledigen und strukturierte Daten zu extrahieren
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `startUrl` | string | Ja | URL der Webseite, auf der der Agent starten soll |
|
||||
| `task` | string | Ja | Die zu erledigende Aufgabe oder das zu erreichende Ziel auf der Website |
|
||||
| `variables` | json | Nein | Optionale Variablen, die in der Aufgabe ersetzt werden sollen (Format: \{key: value\}). Referenzierung in der Aufgabe mit %key% |
|
||||
| `format` | string | Nein | Keine Beschreibung |
|
||||
| `provider` | string | Nein | Zu verwendender KI-Anbieter: openai oder anthropic |
|
||||
| `apiKey` | string | Ja | API-Schlüssel für den ausgewählten Anbieter |
|
||||
| `outputSchema` | json | Nein | Optionales JSON-Schema, das die Struktur der Daten definiert, die der Agent zurückgeben soll |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `data` | object | Extracted structured data matching the provided schema |
|
||||
| `agentResult` | object | Ergebnis der Stagehand-Agent-Ausführung |
|
||||
|
||||
## Notes
|
||||
## Hinweise
|
||||
|
||||
- Category: `tools`
|
||||
- Type: `stagehand`
|
||||
- Kategorie: `tools`
|
||||
- Typ: `stagehand`
|
||||
|
||||
@@ -1,59 +0,0 @@
|
||||
---
|
||||
title: Stagehand Agent
|
||||
description: Autonomous web browsing agent
|
||||
---
|
||||
|
||||
import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
<BlockInfoCard
|
||||
type="stagehand_agent"
|
||||
color="#FFC83C"
|
||||
/>
|
||||
|
||||
{/* MANUAL-CONTENT-START:intro */}
|
||||
[Stagehand](https://www.stagehand.dev/) is an autonomous web agent platform that enables AI systems to navigate and interact with websites just like a human would. It provides a powerful solution for automating complex web tasks without requiring custom code or browser automation scripts.
|
||||
|
||||
With Stagehand, you can:
|
||||
|
||||
- **Automate web navigation**: Enable AI to browse websites, click links, fill forms, and interact with web elements
|
||||
- **Extract structured data**: Collect specific information from websites in a structured, usable format
|
||||
- **Complete complex workflows**: Perform multi-step tasks across different websites and web applications
|
||||
- **Handle authentication**: Navigate login processes and maintain sessions across websites
|
||||
- **Process dynamic content**: Interact with JavaScript-heavy sites and single-page applications
|
||||
- **Maintain context awareness**: Keep track of the current state and history while navigating
|
||||
- **Generate detailed reports**: Receive comprehensive logs of actions taken and data collected
|
||||
|
||||
In Sim, the Stagehand integration enables your agents to seamlessly interact with web-based systems as part of their workflows. This allows for sophisticated automation scenarios that bridge the gap between your AI agents and the vast information and functionality available on the web. Your agents can search for information, interact with web applications, extract data from websites, and incorporate these capabilities into their decision-making processes. By connecting Sim with Stagehand, you can create agents that extend beyond API-based integrations to navigate the web just as a human would - filling forms, clicking buttons, reading content, and extracting valuable information to complete their tasks more effectively.
|
||||
{/* MANUAL-CONTENT-END */}
|
||||
|
||||
## Usage Instructions
|
||||
|
||||
Integrate Stagehand Agent into the workflow. Can navigate the web and perform tasks.
|
||||
|
||||
## Tools
|
||||
|
||||
### `stagehand_agent`
|
||||
|
||||
Run an autonomous web agent to complete tasks and extract structured data
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `startUrl` | string | Yes | URL of the webpage to start the agent on |
|
||||
| `task` | string | Yes | The task to complete or goal to achieve on the website |
|
||||
| `variables` | json | No | Optional variables to substitute in the task \(format: \{key: value\}\). Reference in task using %key% |
|
||||
| `format` | string | No | No description |
|
||||
| `apiKey` | string | Yes | OpenAI API key for agent execution \(required by Stagehand\) |
|
||||
| `outputSchema` | json | No | Optional JSON schema defining the structure of data the agent should return |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `agentResult` | object | Result from the Stagehand agent execution |
|
||||
|
||||
## Notes
|
||||
|
||||
- Category: `tools`
|
||||
- Type: `stagehand_agent`
|
||||
@@ -49,10 +49,12 @@ Daten aus einer Supabase-Tabelle abfragen
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `projectId` | string | Ja | Ihre Supabase-Projekt-ID \(z.B. jdrkgepadsdopsntdlom\) |
|
||||
| `table` | string | Ja | Der Name der abzufragenden Supabase-Tabelle |
|
||||
| `schema` | string | Nein | Datenbankschema für die Abfrage \(Standard: public\). Verwenden Sie dies, um auf Tabellen in anderen Schemas zuzugreifen. |
|
||||
| `select` | string | Nein | Zurückzugebende Spalten \(durch Komma getrennt\). Standard ist * \(alle Spalten\) |
|
||||
| `filter` | string | Nein | PostgREST-Filter \(z.B. "id=eq.123"\) |
|
||||
| `orderBy` | string | Nein | Spalte zum Sortieren \(fügen Sie DESC für absteigend hinzu\) |
|
||||
| `orderBy` | string | Nein | Spalte zum Sortieren \(fügen Sie DESC für absteigende Sortierung hinzu\) |
|
||||
| `limit` | number | Nein | Maximale Anzahl der zurückzugebenden Zeilen |
|
||||
| `apiKey` | string | Ja | Ihr Supabase Service-Rolle-Secret-Schlüssel |
|
||||
| `apiKey` | string | Ja | Ihr Supabase Service Role Secret Key |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
@@ -69,8 +71,9 @@ Daten in eine Supabase-Tabelle einfügen
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `projectId` | string | Ja | Ihre Supabase-Projekt-ID \(z.B. jdrkgepadsdopsntdlom\) |
|
||||
| `projectId` | string | Ja | Ihre Supabase-Projekt-ID \(z. B. jdrkgepadsdopsntdlom\) |
|
||||
| `table` | string | Ja | Der Name der Supabase-Tabelle, in die Daten eingefügt werden sollen |
|
||||
| `schema` | string | Nein | Datenbankschema für das Einfügen \(Standard: public\). Verwenden Sie dies, um auf Tabellen in anderen Schemas zuzugreifen. |
|
||||
| `data` | array | Ja | Die einzufügenden Daten \(Array von Objekten oder ein einzelnes Objekt\) |
|
||||
| `apiKey` | string | Ja | Ihr Supabase Service Role Secret Key |
|
||||
|
||||
@@ -89,10 +92,12 @@ Eine einzelne Zeile aus einer Supabase-Tabelle basierend auf Filterkriterien abr
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `projectId` | string | Ja | Ihre Supabase-Projekt-ID (z.B. jdrkgepadsdopsntdlom) |
|
||||
| `table` | string | Ja | Der Name der Supabase-Tabelle für die Abfrage |
|
||||
| `filter` | string | Ja | PostgREST-Filter zum Finden der spezifischen Zeile (z.B. "id=eq.123") |
|
||||
| `apiKey` | string | Ja | Ihr Supabase Service-Role-Secret-Key |
|
||||
| `projectId` | string | Ja | Ihre Supabase-Projekt-ID \(z.B. jdrkgepadsdopsntdlom\) |
|
||||
| `table` | string | Ja | Der Name der abzufragenden Supabase-Tabelle |
|
||||
| `schema` | string | Nein | Datenbankschema für die Abfrage \(Standard: public\). Verwenden Sie dies, um auf Tabellen in anderen Schemas zuzugreifen. |
|
||||
| `select` | string | Nein | Zurückzugebende Spalten \(durch Komma getrennt\). Standard ist * \(alle Spalten\) |
|
||||
| `filter` | string | Ja | PostgREST-Filter zum Finden der spezifischen Zeile \(z.B. "id=eq.123"\) |
|
||||
| `apiKey` | string | Ja | Ihr Supabase Service Role Secret Key |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
@@ -109,9 +114,10 @@ Zeilen in einer Supabase-Tabelle basierend auf Filterkriterien aktualisieren
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `projectId` | string | Ja | Ihre Supabase-Projekt-ID (z.B. jdrkgepadsdopsntdlom) |
|
||||
| `projectId` | string | Ja | Ihre Supabase-Projekt-ID \(z.B. jdrkgepadsdopsntdlom\) |
|
||||
| `table` | string | Ja | Der Name der zu aktualisierenden Supabase-Tabelle |
|
||||
| `filter` | string | Ja | PostgREST-Filter zur Identifizierung der zu aktualisierenden Zeilen (z.B. "id=eq.123") |
|
||||
| `schema` | string | Nein | Datenbankschema für die Aktualisierung \(Standard: public\). Verwenden Sie dies, um auf Tabellen in anderen Schemas zuzugreifen. |
|
||||
| `filter` | string | Ja | PostgREST-Filter zur Identifizierung der zu aktualisierenden Zeilen \(z.B. "id=eq.123"\) |
|
||||
| `data` | object | Ja | Daten, die in den übereinstimmenden Zeilen aktualisiert werden sollen |
|
||||
| `apiKey` | string | Ja | Ihr Supabase Service Role Secret Key |
|
||||
|
||||
@@ -130,9 +136,10 @@ Zeilen aus einer Supabase-Tabelle basierend auf Filterkriterien löschen
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `projectId` | string | Ja | Ihre Supabase-Projekt-ID (z.B. jdrkgepadsdopsntdlom) |
|
||||
| `projectId` | string | Ja | Ihre Supabase-Projekt-ID \(z.B. jdrkgepadsdopsntdlom\) |
|
||||
| `table` | string | Ja | Der Name der Supabase-Tabelle, aus der gelöscht werden soll |
|
||||
| `filter` | string | Ja | PostgREST-Filter zur Identifizierung der zu löschenden Zeilen (z.B. "id=eq.123") |
|
||||
| `schema` | string | Nein | Datenbankschema für die Löschung \(Standard: public\). Verwenden Sie dies, um auf Tabellen in anderen Schemas zuzugreifen. |
|
||||
| `filter` | string | Ja | PostgREST-Filter zur Identifizierung der zu löschenden Zeilen \(z.B. "id=eq.123"\) |
|
||||
| `apiKey` | string | Ja | Ihr Supabase Service Role Secret Key |
|
||||
|
||||
#### Ausgabe
|
||||
@@ -151,8 +158,9 @@ Daten in eine Supabase-Tabelle einfügen oder aktualisieren (Upsert-Operation)
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `projectId` | string | Ja | Ihre Supabase-Projekt-ID \(z.B. jdrkgepadsdopsntdlom\) |
|
||||
| `table` | string | Ja | Der Name der Supabase-Tabelle, in die Daten upsertet werden sollen |
|
||||
| `data` | array | Ja | Die zu upsertenden Daten \(einfügen oder aktualisieren\) - Array von Objekten oder ein einzelnes Objekt |
|
||||
| `table` | string | Ja | Der Name der Supabase-Tabelle, in die Daten eingefügt oder aktualisiert werden sollen |
|
||||
| `schema` | string | Nein | Datenbankschema für Upsert \(Standard: public\). Verwenden Sie dies, um auf Tabellen in anderen Schemas zuzugreifen. |
|
||||
| `data` | array | Ja | Die Daten für Upsert \(Einfügen oder Aktualisieren\) - Array von Objekten oder ein einzelnes Objekt |
|
||||
| `apiKey` | string | Ja | Ihr Supabase Service Role Secret Key |
|
||||
|
||||
#### Ausgabe
|
||||
@@ -171,7 +179,8 @@ Zeilen in einer Supabase-Tabelle zählen
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `projectId` | string | Ja | Ihre Supabase-Projekt-ID \(z.B. jdrkgepadsdopsntdlom\) |
|
||||
| `table` | string | Ja | Der Name der Supabase-Tabelle, deren Zeilen gezählt werden sollen |
|
||||
| `table` | string | Ja | Der Name der Supabase-Tabelle, aus der Zeilen gezählt werden sollen |
|
||||
| `schema` | string | Nein | Datenbankschema zum Zählen \(Standard: public\). Verwenden Sie dies, um auf Tabellen in anderen Schemas zuzugreifen. |
|
||||
| `filter` | string | Nein | PostgREST-Filter \(z.B. "status=eq.active"\) |
|
||||
| `countType` | string | Nein | Zähltyp: exact, planned oder estimated \(Standard: exact\) |
|
||||
| `apiKey` | string | Ja | Ihr Supabase Service Role Secret Key |
|
||||
@@ -192,7 +201,8 @@ Volltextsuche in einer Supabase-Tabelle durchführen
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `projectId` | string | Ja | Ihre Supabase-Projekt-ID \(z.B. jdrkgepadsdopsntdlom\) |
|
||||
| `table` | string | Ja | Der Name der Supabase-Tabelle für die Suche |
|
||||
| `table` | string | Ja | Der Name der zu durchsuchenden Supabase-Tabelle |
|
||||
| `schema` | string | Nein | Datenbankschema zum Durchsuchen \(Standard: public\). Verwenden Sie dies, um auf Tabellen in anderen Schemas zuzugreifen. |
|
||||
| `column` | string | Ja | Die Spalte, in der gesucht werden soll |
|
||||
| `query` | string | Ja | Die Suchanfrage |
|
||||
| `searchType` | string | Nein | Suchtyp: plain, phrase oder websearch \(Standard: websearch\) |
|
||||
@@ -258,10 +268,11 @@ Eine Datei in einen Supabase-Speicher-Bucket hochladen
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `projectId` | string | Ja | Ihre Supabase-Projekt-ID \(z.B. jdrkgepadsdopsntdlom\) |
|
||||
| `bucket` | string | Ja | Der Name des Speicher-Buckets |
|
||||
| `path` | string | Ja | Der Pfad, unter dem die Datei gespeichert wird \(z.B. "ordner/datei.jpg"\) |
|
||||
| `fileName` | string | Ja | Der Name der Datei \(z.B. "dokument.pdf", "bild.jpg"\) |
|
||||
| `path` | string | Nein | Optionaler Ordnerpfad \(z.B. "ordner/unterordner/"\) |
|
||||
| `fileContent` | string | Ja | Der Dateiinhalt \(base64-kodiert für Binärdateien oder Klartext\) |
|
||||
| `contentType` | string | Nein | MIME-Typ der Datei \(z.B. "image/jpeg", "text/plain"\) |
|
||||
| `upsert` | boolean | Nein | Wenn true, überschreibt vorhandene Datei \(Standard: false\) |
|
||||
| `upsert` | boolean | Nein | Wenn true, wird die vorhandene Datei überschrieben \(Standard: false\) |
|
||||
| `apiKey` | string | Ja | Ihr Supabase Service Role Secret Key |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
@@ -37,7 +37,7 @@ Verarbeitet einen bereitgestellten Gedanken/eine Anweisung und macht ihn für na
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `thought` | string | Ja | Der vom Benutzer im Thinking Step-Block bereitgestellte Denkprozess oder die Anweisung. |
|
||||
| `thought` | string | Ja | Ihre interne Argumentation, Analyse oder Denkprozess. Nutzen Sie dies, um das Problem Schritt für Schritt zu durchdenken, bevor Sie antworten. |
|
||||
|
||||
#### Output
|
||||
|
||||
|
||||
@@ -31,39 +31,35 @@ Integrieren Sie Übersetzen in den Workflow. Kann Text in jede Sprache übersetz
|
||||
|
||||
## Tools
|
||||
|
||||
### `openai_chat`
|
||||
### `llm_chat`
|
||||
|
||||
Senden Sie eine Chat-Completion-Anfrage an jeden unterstützten LLM-Anbieter
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `model` | string | Ja | Das zu verwendende Modell \(z. B. gpt-4o, claude-sonnet-4-5, gemini-2.0-flash\) |
|
||||
| `systemPrompt` | string | Nein | System-Prompt zur Festlegung des Verhaltens des Assistenten |
|
||||
| `context` | string | Ja | Die Benutzernachricht oder der Kontext, der an das Modell gesendet werden soll |
|
||||
| `apiKey` | string | Nein | API-Schlüssel für den Anbieter \(verwendet den Plattformschlüssel, falls nicht für gehostete Modelle angegeben\) |
|
||||
| `temperature` | number | Nein | Temperatur für die Antwortgenerierung \(0–2\) |
|
||||
| `maxTokens` | number | Nein | Maximale Anzahl von Tokens in der Antwort |
|
||||
| `azureEndpoint` | string | Nein | Azure OpenAI-Endpunkt-URL |
|
||||
| `azureApiVersion` | string | Nein | Azure OpenAI-API-Version |
|
||||
| `vertexProject` | string | Nein | Google Cloud-Projekt-ID für Vertex AI |
|
||||
| `vertexLocation` | string | Nein | Google Cloud-Standort für Vertex AI \(Standard: us-central1\) |
|
||||
| `vertexCredential` | string | Nein | Google Cloud OAuth-Anmeldeinformations-ID für Vertex AI |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `content` | string | Übersetzter Text |
|
||||
| `model` | string | Verwendetes Modell |
|
||||
| `tokens` | json | Token-Nutzung |
|
||||
| `content` | string | Der generierte Antwortinhalt |
|
||||
| `model` | string | Das für die Generierung verwendete Modell |
|
||||
| `tokens` | object | Informationen zur Token-Nutzung |
|
||||
|
||||
### `anthropic_chat`
|
||||
|
||||
### `google_chat`
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `content` | string | Übersetzter Text |
|
||||
| `model` | string | Verwendetes Modell |
|
||||
| `tokens` | json | Token-Nutzung |
|
||||
|
||||
## Notizen
|
||||
## Hinweise
|
||||
|
||||
- Kategorie: `tools`
|
||||
- Typ: `translate`
|
||||
|
||||
@@ -45,10 +45,8 @@ Alle Listen auf einem Trello-Board auflisten
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Ob der Vorgang erfolgreich war |
|
||||
| `lists` | array | Array von Listenobjekten mit id, name, closed, pos und idBoard |
|
||||
| `count` | number | Anzahl der zurückgegebenen Listen |
|
||||
| `error` | string | Fehlermeldung, wenn der Vorgang fehlgeschlagen ist |
|
||||
|
||||
### `trello_list_cards`
|
||||
|
||||
@@ -65,10 +63,8 @@ Alle Listen eines Trello-Boards auflisten
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Ob der Vorgang erfolgreich war |
|
||||
| `cards` | array | Array von Kartenobjekten mit id, name, desc, url, Board/Listen-IDs, Labels und Fälligkeitsdatum |
|
||||
| `count` | number | Anzahl der zurückgegebenen Karten |
|
||||
| `error` | string | Fehlermeldung, wenn der Vorgang fehlgeschlagen ist |
|
||||
|
||||
### `trello_create_card`
|
||||
|
||||
@@ -90,9 +86,7 @@ Eine neue Karte auf einem Trello-Board erstellen
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Ob die Karte erfolgreich erstellt wurde |
|
||||
| `card` | object | Das erstellte Kartenobjekt mit ID, Name, Beschreibung, URL und anderen Eigenschaften |
|
||||
| `error` | string | Fehlermeldung, falls der Vorgang fehlgeschlagen ist |
|
||||
| `card` | object | Das erstellte Kartenobjekt mit id, name, desc, url und anderen Eigenschaften |
|
||||
|
||||
### `trello_update_card`
|
||||
|
||||
@@ -114,9 +108,7 @@ Eine bestehende Karte in Trello aktualisieren
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Ob die Karte erfolgreich aktualisiert wurde |
|
||||
| `card` | object | Das aktualisierte Kartenobjekt mit ID, Name, Beschreibung, URL und anderen Eigenschaften |
|
||||
| `error` | string | Fehlermeldung, falls der Vorgang fehlgeschlagen ist |
|
||||
| `card` | object | Das aktualisierte Kartenobjekt mit id, name, desc, url und anderen Eigenschaften |
|
||||
|
||||
### `trello_get_actions`
|
||||
|
||||
@@ -135,10 +127,8 @@ Aktivitäten/Aktionen von einem Board oder einer Karte abrufen
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Ob der Vorgang erfolgreich war |
|
||||
| `actions` | array | Array von Aktionsobjekten mit Typ, Datum, Mitglied und Daten |
|
||||
| `actions` | array | Array von Aktionsobjekten mit type, date, member und data |
|
||||
| `count` | number | Anzahl der zurückgegebenen Aktionen |
|
||||
| `error` | string | Fehlermeldung, falls der Vorgang fehlgeschlagen ist |
|
||||
|
||||
### `trello_add_comment`
|
||||
|
||||
@@ -155,9 +145,7 @@ Einen Kommentar zu einer Trello-Karte hinzufügen
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Ob der Kommentar erfolgreich hinzugefügt wurde |
|
||||
| `comment` | object | Das erstellte Kommentarobjekt mit ID, Text, Datum und Mitglied-Ersteller |
|
||||
| `error` | string | Fehlermeldung, falls der Vorgang fehlgeschlagen ist |
|
||||
| `comment` | object | Das erstellte Kommentarobjekt mit id, text, date und member creator |
|
||||
|
||||
## Hinweise
|
||||
|
||||
|
||||
@@ -48,25 +48,9 @@ Formularantworten von Typeform abrufen
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `total_items` | number | Gesamtzahl der Antworten/Formulare |
|
||||
| `page_count` | number | Gesamtseitenanzahl |
|
||||
| `items` | json | Array der Antwort-/Formularelemente |
|
||||
| `id` | string | Eindeutige Formular-ID |
|
||||
| `title` | string | Formulartitel |
|
||||
| `type` | string | Formulartyp |
|
||||
| `created_at` | string | ISO-Zeitstempel der Formularerstellung |
|
||||
| `last_updated_at` | string | ISO-Zeitstempel der letzten Aktualisierung |
|
||||
| `settings` | json | Formulareinstellungsobjekt |
|
||||
| `theme` | json | Theme-Konfigurationsobjekt |
|
||||
| `workspace` | json | Workspace-Informationen |
|
||||
| `fields` | json | Array der Formularfelder/Fragen |
|
||||
| `thankyou_screens` | json | Array der Dankesbildschirme |
|
||||
| `_links` | json | Links zu verwandten Ressourcen |
|
||||
| `deleted` | boolean | Ob das Formular erfolgreich gelöscht wurde |
|
||||
| `message` | string | Löschbestätigungsnachricht |
|
||||
| `fileUrl` | string | URL der heruntergeladenen Datei |
|
||||
| `contentType` | string | Datei-Content-Type |
|
||||
| `filename` | string | Dateiname |
|
||||
| `total_items` | number | Gesamtanzahl der Antworten |
|
||||
| `page_count` | number | Gesamtanzahl der verfügbaren Seiten |
|
||||
| `items` | array | Array von Antwortobjekten mit response_id, submitted_at, answers und metadata |
|
||||
|
||||
### `typeform_files`
|
||||
|
||||
@@ -128,7 +112,7 @@ Eine Liste aller Formulare in Ihrem Typeform-Konto abrufen
|
||||
| --------- | ---- | ----------- |
|
||||
| `total_items` | number | Gesamtanzahl der Formulare im Konto |
|
||||
| `page_count` | number | Gesamtanzahl der verfügbaren Seiten |
|
||||
| `items` | array | Array von Formularobjekten |
|
||||
| `items` | array | Array von Formularobjekten mit id, title, created_at, last_updated_at, settings, theme und _links |
|
||||
|
||||
### `typeform_get_form`
|
||||
|
||||
@@ -145,14 +129,19 @@ Vollständige Details und Struktur eines bestimmten Formulars abrufen
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `id` | string | Eindeutige Formular-ID |
|
||||
| `id` | string | Eindeutige Formularkennung |
|
||||
| `title` | string | Formulartitel |
|
||||
| `type` | string | Formulartyp \(form, quiz, etc.\) |
|
||||
| `created_at` | string | ISO-Zeitstempel der Formularerstellung |
|
||||
| `last_updated_at` | string | ISO-Zeitstempel der letzten Aktualisierung |
|
||||
| `settings` | object | Formulareinstellungen einschließlich Sprache, Fortschrittsbalken, etc. |
|
||||
| `theme` | object | Theme-Konfiguration mit Farben, Schriftarten und Design-Einstellungen |
|
||||
| `workspace` | object | Workspace-Informationen |
|
||||
| `theme` | object | Theme-Referenz |
|
||||
| `workspace` | object | Workspace-Referenz |
|
||||
| `fields` | array | Array von Formularfeldern/Fragen |
|
||||
| `welcome_screens` | array | Array von Willkommensbildschirmen \(leer, wenn keine konfiguriert\) |
|
||||
| `thankyou_screens` | array | Array von Danke-Bildschirmen |
|
||||
| `created_at` | string | Zeitstempel der Formularerstellung \(ISO-8601-Format\) |
|
||||
| `last_updated_at` | string | Zeitstempel der letzten Formularaktualisierung \(ISO-8601-Format\) |
|
||||
| `published_at` | string | Zeitstempel der Formularveröffentlichung \(ISO-8601-Format\) |
|
||||
| `_links` | object | Links zu verwandten Ressourcen einschließlich öffentlicher Formular-URL |
|
||||
|
||||
### `typeform_create_form`
|
||||
|
||||
@@ -177,13 +166,13 @@ Ein neues Formular mit Feldern und Einstellungen erstellen
|
||||
| `id` | string | Eindeutige Kennung des erstellten Formulars |
|
||||
| `title` | string | Formulartitel |
|
||||
| `type` | string | Formulartyp |
|
||||
| `created_at` | string | ISO-Zeitstempel der Formularerstellung |
|
||||
| `last_updated_at` | string | ISO-Zeitstempel der letzten Aktualisierung |
|
||||
| `settings` | object | Formulareinstellungen |
|
||||
| `theme` | object | Angewandte Theme-Konfiguration |
|
||||
| `workspace` | object | Workspace-Informationen |
|
||||
| `fields` | array | Array der erstellten Formularfelder |
|
||||
| `_links` | object | Links zu verwandten Ressourcen |
|
||||
| `settings` | object | Formulareinstellungsobjekt |
|
||||
| `theme` | object | Theme-Referenz |
|
||||
| `workspace` | object | Workspace-Referenz |
|
||||
| `fields` | array | Array von erstellten Formularfeldern \(leer, wenn keine hinzugefügt\) |
|
||||
| `welcome_screens` | array | Array von Willkommensbildschirmen \(leer, wenn keine konfiguriert\) |
|
||||
| `thankyou_screens` | array | Array von Danke-Bildschirmen |
|
||||
| `_links` | object | Links zu verwandten Ressourcen einschließlich öffentlicher Formular-URL |
|
||||
|
||||
### `typeform_update_form`
|
||||
|
||||
@@ -201,17 +190,7 @@ Ein bestehendes Formular mit JSON Patch-Operationen aktualisieren
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `id` | string | Eindeutige Kennung des aktualisierten Formulars |
|
||||
| `title` | string | Formulartitel |
|
||||
| `type` | string | Formulartyp |
|
||||
| `created_at` | string | ISO-Zeitstempel der Formularerstellung |
|
||||
| `last_updated_at` | string | ISO-Zeitstempel der letzten Aktualisierung |
|
||||
| `settings` | object | Formulareinstellungen |
|
||||
| `theme` | object | Theme-Konfiguration |
|
||||
| `workspace` | object | Workspace-Informationen |
|
||||
| `fields` | array | Array der Formularfelder |
|
||||
| `thankyou_screens` | array | Array der Dankesbildschirme |
|
||||
| `_links` | object | Links zu verwandten Ressourcen |
|
||||
| `message` | string | Erfolgsbestätigungsnachricht |
|
||||
|
||||
### `typeform_delete_form`
|
||||
|
||||
|
||||
@@ -39,9 +39,10 @@ Alle Elemente aus einer Webflow CMS-Sammlung auflisten
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `siteId` | string | Ja | ID der Webflow-Website |
|
||||
| `collectionId` | string | Ja | ID der Sammlung |
|
||||
| `offset` | number | Nein | Offset für Paginierung \(optional\) |
|
||||
| `limit` | number | Nein | Maximale Anzahl der zurückzugebenden Elemente \(optional, Standard: 100\) |
|
||||
| `offset` | number | Nein | Offset für Paginierung (optional) |
|
||||
| `limit` | number | Nein | Maximale Anzahl der zurückzugebenden Elemente (optional, Standard: 100) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
@@ -58,6 +59,7 @@ Ein einzelnes Element aus einer Webflow CMS-Sammlung abrufen
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `siteId` | string | Ja | ID der Webflow-Website |
|
||||
| `collectionId` | string | Ja | ID der Sammlung |
|
||||
| `itemId` | string | Ja | ID des abzurufenden Elements |
|
||||
|
||||
@@ -76,8 +78,9 @@ Ein neues Element in einer Webflow CMS-Sammlung erstellen
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `siteId` | string | Ja | ID der Webflow-Website |
|
||||
| `collectionId` | string | Ja | ID der Sammlung |
|
||||
| `fieldData` | json | Ja | Felddaten für das neue Element als JSON-Objekt. Die Schlüssel sollten mit den Feldnamen der Sammlung übereinstimmen. |
|
||||
| `fieldData` | json | Ja | Felddaten für das neue Element als JSON-Objekt. Schlüssel sollten mit den Sammlungsfeldnamen übereinstimmen. |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
@@ -94,6 +97,7 @@ Ein vorhandenes Element in einer Webflow CMS-Sammlung aktualisieren
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `siteId` | string | Ja | ID der Webflow-Website |
|
||||
| `collectionId` | string | Ja | ID der Sammlung |
|
||||
| `itemId` | string | Ja | ID des zu aktualisierenden Elements |
|
||||
| `fieldData` | json | Ja | Zu aktualisierende Felddaten als JSON-Objekt. Nur Felder einschließen, die geändert werden sollen. |
|
||||
@@ -113,6 +117,7 @@ Ein Element aus einer Webflow CMS-Sammlung löschen
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `siteId` | string | Ja | ID der Webflow-Website |
|
||||
| `collectionId` | string | Ja | ID der Sammlung |
|
||||
| `itemId` | string | Ja | ID des zu löschenden Elements |
|
||||
|
||||
|
||||
@@ -250,9 +250,9 @@ Eine Mediendatei (Bild, Video, Dokument) zu WordPress.com hochladen
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `siteId` | string | Ja | WordPress.com-Website-ID oder Domain \(z.B. 12345678 oder meinwebsite.wordpress.com\) |
|
||||
| `file` | string | Ja | Base64-kodierte Dateidaten oder URL, von der die Datei abgerufen werden soll |
|
||||
| `filename` | string | Ja | Dateiname mit Erweiterung \(z.B. bild.jpg\) |
|
||||
| `siteId` | string | Ja | WordPress.com-Site-ID oder Domain \(z.B. 12345678 oder mysite.wordpress.com\) |
|
||||
| `file` | file | Nein | Hochzuladende Datei \(UserFile-Objekt\) |
|
||||
| `filename` | string | Nein | Optionale Überschreibung des Dateinamens \(z.B. bild.jpg\) |
|
||||
| `title` | string | Nein | Medientitel |
|
||||
| `caption` | string | Nein | Medienunterschrift |
|
||||
| `altText` | string | Nein | Alternativer Text für Barrierefreiheit |
|
||||
|
||||
@@ -170,28 +170,9 @@ Videos aus einer YouTube-Playlist abrufen.
|
||||
| --------- | ---- | ----------- |
|
||||
| `items` | array | Array von Videos in der Playlist |
|
||||
|
||||
### `youtube_related_videos`
|
||||
|
||||
Finde Videos, die mit einem bestimmten YouTube-Video verwandt sind.
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `videoId` | string | Ja | YouTube-Video-ID, für die verwandte Videos gefunden werden sollen |
|
||||
| `maxResults` | number | Nein | Maximale Anzahl der zurückzugebenden verwandten Videos \(1-50\) |
|
||||
| `pageToken` | string | Nein | Page-Token für Paginierung |
|
||||
| `apiKey` | string | Ja | YouTube API-Schlüssel |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `items` | array | Array von verwandten Videos |
|
||||
|
||||
### `youtube_comments`
|
||||
|
||||
Rufe Kommentare von einem YouTube-Video ab.
|
||||
Kommentare von einem YouTube-Video abrufen.
|
||||
|
||||
#### Eingabe
|
||||
|
||||
@@ -200,7 +181,7 @@ Rufe Kommentare von einem YouTube-Video ab.
|
||||
| `videoId` | string | Ja | YouTube-Video-ID |
|
||||
| `maxResults` | number | Nein | Maximale Anzahl der zurückzugebenden Kommentare |
|
||||
| `order` | string | Nein | Reihenfolge der Kommentare: time oder relevance |
|
||||
| `pageToken` | string | Nein | Page-Token für Paginierung |
|
||||
| `pageToken` | string | Nein | Seitentoken für Paginierung |
|
||||
| `apiKey` | string | Ja | YouTube API-Schlüssel |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
@@ -73,8 +73,9 @@ Eine Liste von Tickets aus Zendesk mit optionaler Filterung abrufen
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Erfolgsstatus der Operation |
|
||||
| `output` | object | Ticket-Daten und Metadaten |
|
||||
| `tickets` | array | Array von Ticket-Objekten |
|
||||
| `paging` | object | Paginierungsinformationen |
|
||||
| `metadata` | object | Operationsmetadaten |
|
||||
|
||||
### `zendesk_get_ticket`
|
||||
|
||||
@@ -93,8 +94,8 @@ Ein einzelnes Ticket anhand der ID von Zendesk abrufen
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Erfolgsstatus der Operation |
|
||||
| `output` | object | Ticket-Daten |
|
||||
| `ticket` | object | Ticket-Objekt |
|
||||
| `metadata` | object | Operationsmetadaten |
|
||||
|
||||
### `zendesk_create_ticket`
|
||||
|
||||
@@ -120,10 +121,10 @@ Ein neues Ticket in Zendesk erstellen mit Unterstützung für benutzerdefinierte
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Erfolgsstatus der Operation |
|
||||
| `output` | object | Erstellte Ticket-Daten |
|
||||
| `ticket` | object | Erstelltes Ticket-Objekt |
|
||||
| `metadata` | object | Operationsmetadaten |
|
||||
|
||||
### `zendesk_create_tickets_bulk`
|
||||
|
||||
@@ -140,10 +141,10 @@ Erstellen Sie mehrere Tickets in Zendesk auf einmal (maximal 100)
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Erfolgsstatus der Operation |
|
||||
| `output` | object | Status des Massenerstell-Jobs |
|
||||
| `jobStatus` | object | Job-Status-Objekt |
|
||||
| `metadata` | object | Operationsmetadaten |
|
||||
|
||||
### `zendesk_update_ticket`
|
||||
|
||||
@@ -171,8 +172,8 @@ Aktualisieren Sie ein bestehendes Ticket in Zendesk mit Unterstützung für benu
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Status des Operationserfolgs |
|
||||
| `output` | object | Aktualisierte Ticket-Daten |
|
||||
| `ticket` | object | Aktualisiertes Ticket-Objekt |
|
||||
| `metadata` | object | Operationsmetadaten |
|
||||
|
||||
### `zendesk_update_tickets_bulk`
|
||||
|
||||
@@ -196,8 +197,8 @@ Mehrere Tickets in Zendesk auf einmal aktualisieren (max. 100)
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Status des Operationserfolgs |
|
||||
| `output` | object | Status des Massenaktualisierungsauftrags |
|
||||
| `jobStatus` | object | Job-Status-Objekt |
|
||||
| `metadata` | object | Operationsmetadaten |
|
||||
|
||||
### `zendesk_delete_ticket`
|
||||
|
||||
@@ -216,8 +217,8 @@ Ein Ticket aus Zendesk löschen
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Status des Operationserfolgs |
|
||||
| `output` | object | Löschbestätigung |
|
||||
| `deleted` | boolean | Löschvorgang erfolgreich |
|
||||
| `metadata` | object | Operationsmetadaten |
|
||||
|
||||
### `zendesk_merge_tickets`
|
||||
|
||||
@@ -238,8 +239,8 @@ Mehrere Tickets in ein Zielticket zusammenführen
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Status des Operationserfolgs |
|
||||
| `output` | object | Status des Zusammenführungsauftrags |
|
||||
| `jobStatus` | object | Job-Status-Objekt |
|
||||
| `metadata` | object | Operationsmetadaten |
|
||||
|
||||
### `zendesk_get_users`
|
||||
|
||||
@@ -261,8 +262,9 @@ Eine Liste von Benutzern aus Zendesk mit optionaler Filterung abrufen
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Status des Operationserfolgs |
|
||||
| `output` | object | Benutzerdaten und Metadaten |
|
||||
| `users` | array | Array von Benutzerobjekten |
|
||||
| `paging` | object | Paginierungsinformationen |
|
||||
| `metadata` | object | Operationsmetadaten |
|
||||
|
||||
### `zendesk_get_user`
|
||||
|
||||
@@ -281,8 +283,8 @@ Einen einzelnen Benutzer anhand der ID von Zendesk abrufen
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Status des Operationserfolgs |
|
||||
| `output` | object | Benutzerdaten |
|
||||
| `user` | object | Benutzerobjekt |
|
||||
| `metadata` | object | Operationsmetadaten |
|
||||
|
||||
### `zendesk_get_current_user`
|
||||
|
||||
@@ -300,8 +302,8 @@ Den aktuell authentifizierten Benutzer von Zendesk abrufen
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Status des Operationserfolgs |
|
||||
| `output` | object | Daten des aktuellen Benutzers |
|
||||
| `user` | object | Aktuelles Benutzerobjekt |
|
||||
| `metadata` | object | Operationsmetadaten |
|
||||
|
||||
### `zendesk_search_users`
|
||||
|
||||
@@ -323,8 +325,9 @@ Nach Benutzern in Zendesk mit einer Abfragezeichenfolge suchen
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Status des Operationserfolgs |
|
||||
| `output` | object | Suchergebnisse für Benutzer |
|
||||
| `users` | array | Array von Benutzerobjekten |
|
||||
| `paging` | object | Paginierungsinformationen |
|
||||
| `metadata` | object | Operationsmetadaten |
|
||||
|
||||
### `zendesk_create_user`
|
||||
|
||||
@@ -348,10 +351,10 @@ Einen neuen Benutzer in Zendesk erstellen
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Beschreibung |
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Status des Operationserfolgs |
|
||||
| `output` | object | Erstellte Benutzerdaten |
|
||||
| `user` | object | Erstelltes Benutzerobjekt |
|
||||
| `metadata` | object | Operationsmetadaten |
|
||||
|
||||
### `zendesk_create_users_bulk`
|
||||
|
||||
@@ -368,10 +371,10 @@ Erstellen mehrerer Benutzer in Zendesk mittels Massenimport
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Beschreibung |
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Status des Operationserfolgs |
|
||||
| `output` | object | Status des Massenimport-Jobs |
|
||||
| `jobStatus` | object | Job-Statusobjekt |
|
||||
| `metadata` | object | Operationsmetadaten |
|
||||
|
||||
### `zendesk_update_user`
|
||||
|
||||
@@ -398,8 +401,8 @@ Aktualisieren eines vorhandenen Benutzers in Zendesk
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Erfolgsstatus der Operation |
|
||||
| `output` | object | Aktualisierte Benutzerdaten |
|
||||
| `user` | object | Aktualisiertes Benutzerobjekt |
|
||||
| `metadata` | object | Operationsmetadaten |
|
||||
|
||||
### `zendesk_update_users_bulk`
|
||||
|
||||
@@ -418,8 +421,8 @@ Mehrere Benutzer in Zendesk über Massenaktualisierung aktualisieren
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Erfolgsstatus der Operation |
|
||||
| `output` | object | Status des Massenaktualisierungsauftrags |
|
||||
| `jobStatus` | object | Job-Statusobjekt |
|
||||
| `metadata` | object | Operationsmetadaten |
|
||||
|
||||
### `zendesk_delete_user`
|
||||
|
||||
@@ -438,8 +441,8 @@ Einen Benutzer aus Zendesk löschen
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Erfolgsstatus der Operation |
|
||||
| `output` | object | Daten des gelöschten Benutzers |
|
||||
| `deleted` | boolean | Löscherfolg |
|
||||
| `metadata` | object | Operationsmetadaten |
|
||||
|
||||
### `zendesk_get_organizations`
|
||||
|
||||
@@ -459,8 +462,9 @@ Eine Liste von Organisationen von Zendesk abrufen
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Erfolgsstatus der Operation |
|
||||
| `output` | object | Organisationsdaten und Metadaten |
|
||||
| `organizations` | array | Array von Organisationsobjekten |
|
||||
| `paging` | object | Paginierungsinformationen |
|
||||
| `metadata` | object | Operationsmetadaten |
|
||||
|
||||
### `zendesk_get_organization`
|
||||
|
||||
@@ -479,8 +483,8 @@ Eine einzelne Organisation anhand der ID von Zendesk abrufen
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Erfolgsstatus der Operation |
|
||||
| `output` | object | Organisationsdaten |
|
||||
| `organization` | object | Organisationsobjekt |
|
||||
| `metadata` | object | Operationsmetadaten |
|
||||
|
||||
### `zendesk_autocomplete_organizations`
|
||||
|
||||
@@ -499,10 +503,11 @@ Autovervollständigung von Organisationen in Zendesk nach Namenspräfix (für Na
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Beschreibung |
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Erfolgsstatus der Operation |
|
||||
| `output` | object | Suchergebnisse für Organisationen |
|
||||
| `organizations` | array | Array von Organisationsobjekten |
|
||||
| `paging` | object | Paginierungsinformationen |
|
||||
| `metadata` | object | Operationsmetadaten |
|
||||
|
||||
### `zendesk_create_organization`
|
||||
|
||||
@@ -524,10 +529,10 @@ Eine neue Organisation in Zendesk erstellen
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Beschreibung |
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Erfolgsstatus der Operation |
|
||||
| `output` | object | Daten der erstellten Organisation |
|
||||
| `organization` | object | Erstelltes Organisationsobjekt |
|
||||
| `metadata` | object | Operationsmetadaten |
|
||||
|
||||
### `zendesk_create_organizations_bulk`
|
||||
|
||||
@@ -546,8 +551,8 @@ Mehrere Organisationen in Zendesk über Massenimport erstellen
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Status des Operationserfolgs |
|
||||
| `output` | object | Status des Massenerfassungsauftrags |
|
||||
| `jobStatus` | object | Job-Statusobjekt |
|
||||
| `metadata` | object | Operationsmetadaten |
|
||||
|
||||
### `zendesk_update_organization`
|
||||
|
||||
@@ -572,8 +577,8 @@ Eine bestehende Organisation in Zendesk aktualisieren
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Status des Operationserfolgs |
|
||||
| `output` | object | Aktualisierte Organisationsdaten |
|
||||
| `organization` | object | Aktualisiertes Organisationsobjekt |
|
||||
| `metadata` | object | Operationsmetadaten |
|
||||
|
||||
### `zendesk_delete_organization`
|
||||
|
||||
@@ -592,8 +597,8 @@ Eine Organisation aus Zendesk löschen
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Status des Operationserfolgs |
|
||||
| `output` | object | Gelöschte Organisationsdaten |
|
||||
| `deleted` | boolean | Löscherfolg |
|
||||
| `metadata` | object | Operationsmetadaten |
|
||||
|
||||
### `zendesk_search`
|
||||
|
||||
@@ -616,8 +621,9 @@ Einheitliche Suche über Tickets, Benutzer und Organisationen in Zendesk
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Status des Operationserfolgs |
|
||||
| `output` | object | Suchergebnisse |
|
||||
| `results` | array | Array von Ergebnisobjekten |
|
||||
| `paging` | object | Paginierungsinformationen |
|
||||
| `metadata` | object | Operationsmetadaten |
|
||||
|
||||
### `zendesk_search_count`
|
||||
|
||||
@@ -636,8 +642,8 @@ Zählen der Anzahl von Suchergebnissen, die einer Abfrage in Zendesk entsprechen
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Erfolgsstatus der Operation |
|
||||
| `output` | object | Suchergebnis-Anzahl |
|
||||
| `count` | number | Anzahl der übereinstimmenden Ergebnisse |
|
||||
| `metadata` | object | Operationsmetadaten |
|
||||
|
||||
## Hinweise
|
||||
|
||||
|
||||
@@ -94,10 +94,7 @@ Benutzerkontext aus einem Thread mit Zusammenfassungs- oder Basismodus abrufen
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `context` | string | Der Kontextstring \(Zusammenfassung oder Basis\) |
|
||||
| `facts` | array | Extrahierte Fakten |
|
||||
| `entities` | array | Extrahierte Entitäten |
|
||||
| `summary` | string | Konversationszusammenfassung |
|
||||
| `context` | string | Die Kontext-Zeichenfolge \(Zusammenfassung oder Basismodus\) |
|
||||
|
||||
### `zep_get_messages`
|
||||
|
||||
@@ -137,9 +134,9 @@ Nachrichten zu einem bestehenden Thread hinzufügen
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `context` | string | Aktualisierter Kontext nach dem Hinzufügen von Nachrichten |
|
||||
| `messageIds` | array | Array der hinzugefügten Nachrichten-UUIDs |
|
||||
| `threadId` | string | Die Thread-ID |
|
||||
| `added` | boolean | Ob Nachrichten erfolgreich hinzugefügt wurden |
|
||||
| `messageIds` | array | Array der hinzugefügten Nachrichten-UUIDs |
|
||||
|
||||
### `zep_add_user`
|
||||
|
||||
@@ -209,7 +206,7 @@ Alle Konversations-Threads für einen bestimmten Benutzer auflisten
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `threads` | array | Array von Thread-Objekten für diesen Benutzer |
|
||||
| `userId` | string | Die Benutzer-ID |
|
||||
| `totalCount` | number | Gesamtanzahl der zurückgegebenen Threads |
|
||||
|
||||
## Hinweise
|
||||
|
||||
|
||||
@@ -27,12 +27,14 @@ In Sim ermöglicht die Zoom-Integration Ihren Agenten die Automatisierung der Pl
|
||||
- Details oder Einladungen für jedes Meeting abzurufen
|
||||
- Bestehende Meetings direkt aus Ihren Automatisierungen zu aktualisieren oder zu löschen
|
||||
|
||||
Diese Funktionen ermöglichen es Ihnen, die Remote-Zusammenarbeit zu optimieren, wiederkehrende Videositzungen zu automatisieren und die Zoom-Umgebung Ihrer Organisation als Teil Ihrer Workflows zu verwalten.
|
||||
Um eine Verbindung zu Zoom herzustellen, fügen Sie den Zoom-Block ein und klicken Sie auf `Connect`, um sich mit Ihrem Zoom-Konto zu authentifizieren. Nach der Verbindung können Sie die Zoom-Tools verwenden, um Zoom-Meetings zu erstellen, aufzulisten, zu aktualisieren und zu löschen. Sie können Ihr Zoom-Konto jederzeit trennen, indem Sie unter Einstellungen > Integrationen auf `Disconnect` klicken, und der Zugriff auf Ihr Zoom-Konto wird sofort widerrufen.
|
||||
|
||||
Diese Funktionen ermöglichen es Ihnen, die Zusammenarbeit aus der Ferne zu optimieren, wiederkehrende Videositzungen zu automatisieren und die Zoom-Umgebung Ihrer Organisation als Teil Ihrer Workflows zu verwalten.
|
||||
{/* MANUAL-CONTENT-END */}
|
||||
|
||||
## Nutzungsanleitung
|
||||
## Gebrauchsanweisung
|
||||
|
||||
Integrieren Sie Zoom in Workflows. Erstellen, listen, aktualisieren und löschen Sie Zoom-Meetings. Rufen Sie Meeting-Details, Einladungen, Aufzeichnungen und Teilnehmer ab. Verwalten Sie Cloud-Aufzeichnungen programmgesteuert.
|
||||
Integrieren Sie Zoom in Workflows. Erstellen, listen, aktualisieren und löschen Sie Zoom-Meetings. Erhalten Sie Meeting-Details, Einladungen, Aufzeichnungen und Teilnehmerinformationen. Verwalten Sie Cloud-Aufzeichnungen programmatisch.
|
||||
|
||||
## Tools
|
||||
|
||||
@@ -49,7 +51,7 @@ Ein neues Zoom-Meeting erstellen
|
||||
| `type` | number | Nein | Meeting-Typ: 1=sofort, 2=geplant, 3=wiederkehrend ohne feste Zeit, 8=wiederkehrend mit fester Zeit |
|
||||
| `startTime` | string | Nein | Meeting-Startzeit im ISO 8601-Format \(z.B. 2025-06-03T10:00:00Z\) |
|
||||
| `duration` | number | Nein | Meeting-Dauer in Minuten |
|
||||
| `timezone` | string | Nein | Zeitzone für das Meeting \(z.B. Europe/Berlin\) |
|
||||
| `timezone` | string | Nein | Zeitzone für das Meeting \(z.B. America/Los_Angeles\) |
|
||||
| `password` | string | Nein | Meeting-Passwort |
|
||||
| `agenda` | string | Nein | Meeting-Agenda |
|
||||
| `hostVideo` | boolean | Nein | Mit eingeschaltetem Host-Video starten |
|
||||
@@ -59,7 +61,7 @@ Ein neues Zoom-Meeting erstellen
|
||||
| `waitingRoom` | boolean | Nein | Warteraum aktivieren |
|
||||
| `autoRecording` | string | Nein | Automatische Aufzeichnungseinstellung: local, cloud oder none |
|
||||
|
||||
#### Output
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
@@ -67,18 +69,18 @@ Ein neues Zoom-Meeting erstellen
|
||||
|
||||
### `zoom_list_meetings`
|
||||
|
||||
Alle Meetings eines Zoom-Benutzers auflisten
|
||||
Alle Meetings für einen Zoom-Benutzer auflisten
|
||||
|
||||
#### Input
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `userId` | string | Ja | Die Benutzer-ID oder E-Mail-Adresse. Verwenden Sie "me" für den authentifizierten Benutzer. |
|
||||
| `type` | string | Nein | Meeting-Typ-Filter: scheduled, live, upcoming, upcoming_meetings oder previous_meetings |
|
||||
| `pageSize` | number | Nein | Anzahl der Datensätze pro Seite (max. 300) |
|
||||
| `pageSize` | number | Nein | Anzahl der Datensätze pro Seite \(max. 300\) |
|
||||
| `nextPageToken` | string | Nein | Token für Paginierung, um die nächste Ergebnisseite zu erhalten |
|
||||
|
||||
#### Output
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
@@ -89,7 +91,7 @@ Alle Meetings eines Zoom-Benutzers auflisten
|
||||
|
||||
Details eines bestimmten Zoom-Meetings abrufen
|
||||
|
||||
#### Input
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
@@ -97,13 +99,13 @@ Details eines bestimmten Zoom-Meetings abrufen
|
||||
| `occurrenceId` | string | Nein | Vorkommnis-ID für wiederkehrende Meetings |
|
||||
| `showPreviousOccurrences` | boolean | Nein | Frühere Vorkommnisse für wiederkehrende Meetings anzeigen |
|
||||
|
||||
#### Output
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `meeting` | object | Die Meeting-Details |
|
||||
|
||||
### `zoom_update_meeting`
|
||||
Details eines bestimmten Zoom-Meetings abrufen
|
||||
|
||||
Ein bestehendes Zoom-Meeting aktualisieren
|
||||
|
||||
@@ -116,11 +118,11 @@ Ein bestehendes Zoom-Meeting aktualisieren
|
||||
| `type` | number | Nein | Meeting-Typ: 1=sofort, 2=geplant, 3=wiederkehrend ohne feste Zeit, 8=wiederkehrend mit fester Zeit |
|
||||
| `startTime` | string | Nein | Meeting-Startzeit im ISO 8601-Format \(z.B. 2025-06-03T10:00:00Z\) |
|
||||
| `duration` | number | Nein | Meeting-Dauer in Minuten |
|
||||
| `timezone` | string | Nein | Zeitzone für das Meeting \(z.B. America/Los_Angeles\) |
|
||||
| `timezone` | string | Nein | Zeitzone für das Meeting \(z.B. Europe/Berlin\) |
|
||||
| `password` | string | Nein | Meeting-Passwort |
|
||||
| `agenda` | string | Nein | Meeting-Agenda |
|
||||
| `hostVideo` | boolean | Nein | Mit eingeschalteter Host-Kamera starten |
|
||||
| `participantVideo` | boolean | Nein | Mit eingeschalteter Teilnehmer-Kamera starten |
|
||||
| `hostVideo` | boolean | Nein | Mit eingeschaltetem Host-Video starten |
|
||||
| `participantVideo` | boolean | Nein | Mit eingeschaltetem Teilnehmer-Video starten |
|
||||
| `joinBeforeHost` | boolean | Nein | Teilnehmern erlauben, vor dem Host beizutreten |
|
||||
| `muteUponEntry` | boolean | Nein | Teilnehmer beim Betreten stummschalten |
|
||||
| `waitingRoom` | boolean | Nein | Warteraum aktivieren |
|
||||
@@ -132,7 +134,7 @@ Ein bestehendes Zoom-Meeting aktualisieren
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Ob das Meeting erfolgreich aktualisiert wurde |
|
||||
|
||||
### `zoom_delete_meeting`
|
||||
Ein Zoom-Meeting löschen
|
||||
|
||||
Ein Zoom-Meeting löschen oder abbrechen
|
||||
|
||||
@@ -141,9 +143,9 @@ Ein Zoom-Meeting löschen oder abbrechen
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `meetingId` | string | Ja | Die zu löschende Meeting-ID |
|
||||
| `occurrenceId` | string | Nein | Vorkommnis-ID zum Löschen eines bestimmten Vorkommnisses eines wiederkehrenden Meetings |
|
||||
| `occurrenceId` | string | Nein | Occurrence-ID zum Löschen eines bestimmten Termins eines wiederkehrenden Meetings |
|
||||
| `scheduleForReminder` | boolean | Nein | Erinnerungs-E-Mail zur Stornierung an Teilnehmer senden |
|
||||
| `cancelMeetingReminder` | boolean | Nein | Stornierungsmail an Teilnehmer und alternative Hosts senden |
|
||||
| `cancelMeetingReminder` | boolean | Nein | Stornierungs-E-Mail an Teilnehmer und alternative Hosts senden |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
@@ -153,7 +155,7 @@ Ein Zoom-Meeting löschen oder abbrechen
|
||||
|
||||
### `zoom_get_meeting_invitation`
|
||||
|
||||
Abrufen des Einladungstextes für ein Zoom-Meeting
|
||||
Den Einladungstext für ein Zoom-Meeting abrufen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
@@ -165,20 +167,20 @@ Abrufen des Einladungstextes für ein Zoom-Meeting
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `invitation` | string | Der Einladungstext für das Meeting |
|
||||
| `invitation` | string | Der Meeting-Einladungstext |
|
||||
|
||||
### `zoom_list_recordings`
|
||||
|
||||
Alle Cloud-Aufzeichnungen für einen Zoom-Benutzer auflisten
|
||||
Alle Cloud-Aufzeichnungen eines Zoom-Benutzers auflisten
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `userId` | string | Ja | Die Benutzer-ID oder E-Mail-Adresse. Verwenden Sie "me" für den authentifizierten Benutzer. |
|
||||
| `from` | string | Nein | Startdatum im Format jjjj-mm-tt \(innerhalb der letzten 6 Monate\) |
|
||||
| `to` | string | Nein | Enddatum im Format jjjj-mm-tt |
|
||||
| `pageSize` | number | Nein | Anzahl der Datensätze pro Seite \(max. 300\) |
|
||||
| `from` | string | Nein | Startdatum im Format yyyy-mm-dd (innerhalb der letzten 6 Monate) |
|
||||
| `to` | string | Nein | Enddatum im Format yyyy-mm-dd |
|
||||
| `pageSize` | number | Nein | Anzahl der Datensätze pro Seite (max. 300) |
|
||||
| `nextPageToken` | string | Nein | Token für die Paginierung, um die nächste Ergebnisseite zu erhalten |
|
||||
| `trash` | boolean | Nein | Auf true setzen, um Aufzeichnungen aus dem Papierkorb aufzulisten |
|
||||
|
||||
@@ -189,7 +191,7 @@ Alle Cloud-Aufzeichnungen für einen Zoom-Benutzer auflisten
|
||||
| `recordings` | array | Liste der Aufzeichnungen |
|
||||
| `pageInfo` | object | Paginierungsinformationen |
|
||||
|
||||
### `zoom_get_meeting_recordings`
|
||||
Alle Aufzeichnungen für ein bestimmtes Zoom-Meeting abrufen
|
||||
|
||||
Alle Aufzeichnungen für ein bestimmtes Zoom-Meeting abrufen
|
||||
|
||||
@@ -198,8 +200,8 @@ Alle Aufzeichnungen für ein bestimmtes Zoom-Meeting abrufen
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `meetingId` | string | Ja | Die Meeting-ID oder Meeting-UUID |
|
||||
| `includeFolderItems` | boolean | Nein | Elemente innerhalb eines Ordners einschließen |
|
||||
| `ttl` | number | Nein | Gültigkeitsdauer für Download-URLs in Sekunden \(max 604800\) |
|
||||
| `includeFolderItems` | boolean | Nein | Elemente innerhalb eines Ordners einbeziehen |
|
||||
| `ttl` | number | Nein | Gültigkeitsdauer für Download-URLs in Sekunden \(max. 604800\) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
@@ -207,7 +209,7 @@ Alle Aufzeichnungen für ein bestimmtes Zoom-Meeting abrufen
|
||||
| --------- | ---- | ----------- |
|
||||
| `recording` | object | Die Meeting-Aufzeichnung mit allen Dateien |
|
||||
|
||||
### `zoom_delete_recording`
|
||||
Cloud-Aufzeichnungen für ein Zoom-Meeting löschen
|
||||
|
||||
Cloud-Aufzeichnungen für ein Zoom-Meeting löschen
|
||||
|
||||
@@ -225,7 +227,7 @@ Cloud-Aufzeichnungen für ein Zoom-Meeting löschen
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Ob die Aufzeichnung erfolgreich gelöscht wurde |
|
||||
|
||||
### `zoom_list_past_participants`
|
||||
Teilnehmer eines vergangenen Zoom-Meetings auflisten
|
||||
|
||||
Teilnehmer eines vergangenen Zoom-Meetings auflisten
|
||||
|
||||
@@ -234,14 +236,14 @@ Teilnehmer eines vergangenen Zoom-Meetings auflisten
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `meetingId` | string | Ja | Die vergangene Meeting-ID oder UUID |
|
||||
| `pageSize` | number | Nein | Anzahl der Datensätze pro Seite \(max 300\) |
|
||||
| `pageSize` | number | Nein | Anzahl der Datensätze pro Seite \(max. 300\) |
|
||||
| `nextPageToken` | string | Nein | Token für Paginierung, um die nächste Ergebnisseite zu erhalten |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `participants` | array | Liste der Besprechungsteilnehmer |
|
||||
| `participants` | array | Liste der Meeting-Teilnehmer |
|
||||
| `pageInfo` | object | Paginierungsinformationen |
|
||||
|
||||
## Hinweise
|
||||
|
||||
@@ -22,7 +22,7 @@ Verwende den Start-Block für alles, was aus dem Editor, deploy-to-API oder depl
|
||||
|
||||
<Cards>
|
||||
<Card title="Start" href="/triggers/start">
|
||||
Einheitlicher Einstiegspunkt, der Editor-Ausführungen, API-Bereitstellungen und Chat-Bereitstellungen unterstützt
|
||||
Einheitlicher Einstiegspunkt, der Editor-Ausführungen, API-Deployments und Chat-Deployments unterstützt
|
||||
</Card>
|
||||
<Card title="Webhook" href="/triggers/webhook">
|
||||
Externe Webhook-Payloads empfangen
|
||||
@@ -33,6 +33,9 @@ Verwende den Start-Block für alles, was aus dem Editor, deploy-to-API oder depl
|
||||
<Card title="RSS Feed" href="/triggers/rss">
|
||||
RSS- und Atom-Feeds auf neue Inhalte überwachen
|
||||
</Card>
|
||||
<Card title="Email Polling Groups" href="#email-polling-groups">
|
||||
Team-Gmail- und Outlook-Postfächer überwachen
|
||||
</Card>
|
||||
</Cards>
|
||||
|
||||
## Schneller Vergleich
|
||||
@@ -43,6 +46,7 @@ Verwende den Start-Block für alles, was aus dem Editor, deploy-to-API oder depl
|
||||
| **Schedule** | Timer, der im Schedule-Block verwaltet wird |
|
||||
| **Webhook** | Bei eingehender HTTP-Anfrage |
|
||||
| **RSS Feed** | Neues Element im Feed veröffentlicht |
|
||||
| **Email Polling Groups** | Neue E-Mail in Team-Gmail- oder Outlook-Postfächern empfangen |
|
||||
|
||||
> Der Start-Block stellt immer `input`, `conversationId` und `files` Felder bereit. Füge benutzerdefinierte Felder zum Eingabeformat für zusätzliche strukturierte Daten hinzu.
|
||||
|
||||
@@ -65,3 +69,25 @@ Wenn du im Editor auf **Run** klickst, wählt Sim automatisch aus, welcher Trigg
|
||||
Wenn dein Workflow mehrere Trigger hat, wird der Trigger mit der höchsten Priorität ausgeführt. Wenn du beispielsweise sowohl einen Start-Block als auch einen Webhook-Trigger hast, wird beim Klicken auf Run der Start-Block ausgeführt.
|
||||
|
||||
**Externe Auslöser mit Mock-Payloads**: Wenn externe Auslöser (Webhooks und Integrationen) manuell ausgeführt werden, generiert Sim automatisch Mock-Payloads basierend auf der erwarteten Datenstruktur des Auslösers. Dies stellt sicher, dass nachgelagerte Blöcke während des Testens Variablen korrekt auflösen können.
|
||||
|
||||
## E-Mail-Polling-Gruppen
|
||||
|
||||
Polling-Gruppen ermöglichen es Ihnen, die Gmail- oder Outlook-Postfächer mehrerer Teammitglieder mit einem einzigen Trigger zu überwachen. Erfordert einen Team- oder Enterprise-Plan.
|
||||
|
||||
**Erstellen einer Polling-Gruppe** (Admin/Owner)
|
||||
|
||||
1. Gehen Sie zu **Einstellungen → E-Mail-Polling**
|
||||
2. Klicken Sie auf **Erstellen** und wählen Sie Gmail oder Outlook
|
||||
3. Geben Sie einen Namen für die Gruppe ein
|
||||
|
||||
**Mitglieder einladen**
|
||||
|
||||
1. Klicken Sie auf **Mitglieder hinzufügen** bei Ihrer Polling-Gruppe
|
||||
2. Geben Sie E-Mail-Adressen ein (durch Komma oder Zeilenumbruch getrennt oder ziehen Sie eine CSV-Datei per Drag & Drop)
|
||||
3. Klicken Sie auf **Einladungen senden**
|
||||
|
||||
Eingeladene erhalten eine E-Mail mit einem Link, um ihr Konto zu verbinden. Sobald die Verbindung hergestellt ist, wird ihr Postfach automatisch in die Polling-Gruppe aufgenommen. Eingeladene müssen keine Mitglieder Ihrer Sim-Organisation sein.
|
||||
|
||||
**Verwendung in einem Workflow**
|
||||
|
||||
Wählen Sie beim Konfigurieren eines E-Mail-Triggers Ihre Polling-Gruppe aus dem Dropdown-Menü für Anmeldeinformationen anstelle eines einzelnen Kontos aus. Das System erstellt Webhooks für jedes Mitglied und leitet alle E-Mails durch Ihren Workflow.
|
||||
|
||||
@@ -5,7 +5,6 @@ title: Zeitplan
|
||||
import { Callout } from 'fumadocs-ui/components/callout'
|
||||
import { Tab, Tabs } from 'fumadocs-ui/components/tabs'
|
||||
import { Image } from '@/components/ui/image'
|
||||
import { Video } from '@/components/ui/video'
|
||||
|
||||
Der Zeitplan-Block löst Workflows automatisch nach einem wiederkehrenden Zeitplan zu bestimmten Intervallen oder Zeiten aus.
|
||||
|
||||
@@ -21,67 +20,58 @@ Der Zeitplan-Block löst Workflows automatisch nach einem wiederkehrenden Zeitpl
|
||||
|
||||
## Zeitplan-Optionen
|
||||
|
||||
Konfigurieren Sie, wann Ihr Workflow ausgeführt wird, mit den Dropdown-Optionen:
|
||||
Konfigurieren Sie, wann Ihr Workflow ausgeführt wird:
|
||||
|
||||
<Tabs items={['Einfache Intervalle', 'Cron-Ausdrücke']}>
|
||||
<Tab>
|
||||
<ul className="list-disc space-y-1 pl-6">
|
||||
<li><strong>Alle paar Minuten</strong>: 5, 15, 30 Minuten-Intervalle</li>
|
||||
<li><strong>Stündlich</strong>: Jede Stunde oder alle paar Stunden</li>
|
||||
<li><strong>Täglich</strong>: Einmal oder mehrmals pro Tag</li>
|
||||
<li><strong>Wöchentlich</strong>: Bestimmte Wochentage</li>
|
||||
<li><strong>Monatlich</strong>: Bestimmte Tage des Monats</li>
|
||||
<li><strong>Alle X Minuten</strong>: Ausführung in Minutenintervallen (1-1440)</li>
|
||||
<li><strong>Stündlich</strong>: Ausführung zu einer bestimmten Minute jeder Stunde</li>
|
||||
<li><strong>Täglich</strong>: Ausführung zu einer bestimmten Uhrzeit jeden Tag</li>
|
||||
<li><strong>Wöchentlich</strong>: Ausführung an einem bestimmten Tag und einer bestimmten Uhrzeit jede Woche</li>
|
||||
<li><strong>Monatlich</strong>: Ausführung an einem bestimmten Tag und einer bestimmten Uhrzeit jeden Monat</li>
|
||||
</ul>
|
||||
</Tab>
|
||||
<Tab>
|
||||
<p>Verwenden Sie Cron-Ausdrücke für erweiterte Zeitplanung:</p>
|
||||
<p>Verwenden Sie Cron-Ausdrücke für erweiterte Planung:</p>
|
||||
<div className="text-sm space-y-1">
|
||||
<div><code>0 9 * * 1-5</code> - Jeden Wochentag um 9 Uhr</div>
|
||||
<div><code>*/15 * * * *</code> - Alle 15 Minuten</div>
|
||||
<div><code>0 0 1 * *</code> - Am ersten Tag jedes Monats</div>
|
||||
<div><code>0 0 1 * *</code> - Erster Tag jedes Monats</div>
|
||||
</div>
|
||||
</Tab>
|
||||
</Tabs>
|
||||
|
||||
## Zeitpläne konfigurieren
|
||||
## Aktivierung
|
||||
|
||||
Wenn ein Workflow geplant ist:
|
||||
- Der Zeitplan wird **aktiv** und zeigt die nächste Ausführungszeit an
|
||||
- Klicken Sie auf die Schaltfläche **"Geplant"**, um den Zeitplan zu deaktivieren
|
||||
- Zeitpläne werden nach **3 aufeinanderfolgenden Fehlern** automatisch deaktiviert
|
||||
Zeitpläne sind an die Workflow-Bereitstellung gebunden:
|
||||
|
||||
<div className="flex justify-center">
|
||||
<Image
|
||||
src="/static/blocks/schedule-2.png"
|
||||
alt="Aktiver Zeitplan-Block"
|
||||
width={500}
|
||||
height={400}
|
||||
className="my-6"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div className="flex justify-center">
|
||||
<Image
|
||||
src="/static/blocks/schedule-3.png"
|
||||
alt="Deaktivierter Zeitplan"
|
||||
width={500}
|
||||
height={350}
|
||||
className="my-6"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div className="flex justify-center">
|
||||
<Image
|
||||
src="/static/blocks/schedule-3.png"
|
||||
alt="Deaktivierter Zeitplan"
|
||||
width={500}
|
||||
height={400}
|
||||
className="my-6"
|
||||
/>
|
||||
</div>
|
||||
|
||||
Deaktivierte Zeitpläne zeigen an, wann sie zuletzt aktiv waren. Klicken Sie auf das **"Deaktiviert"**-Badge, um den Zeitplan wieder zu aktivieren.
|
||||
- **Workflow bereitstellen** → Zeitplan wird aktiv und beginnt mit der Ausführung
|
||||
- **Workflow-Bereitstellung aufheben** → Zeitplan wird entfernt
|
||||
- **Workflow erneut bereitstellen** → Zeitplan wird mit aktueller Konfiguration neu erstellt
|
||||
|
||||
<Callout>
|
||||
Zeitplan-Blöcke können keine eingehenden Verbindungen empfangen und dienen ausschließlich als Workflow-Auslöser.
|
||||
Sie müssen Ihren Workflow bereitstellen, damit der Zeitplan mit der Ausführung beginnt. Konfigurieren Sie den Zeitplan-Block und stellen Sie ihn dann über die Symbolleiste bereit.
|
||||
</Callout>
|
||||
|
||||
## Automatische Deaktivierung
|
||||
|
||||
Zeitpläne werden nach **100 aufeinanderfolgenden Fehlern** automatisch deaktiviert, um unkontrollierte Fehler zu verhindern. Bei Deaktivierung:
|
||||
|
||||
- Erscheint ein Warnhinweis auf dem Zeitplan-Block
|
||||
- Die Ausführung des Zeitplans wird gestoppt
|
||||
- Klicken Sie auf den Hinweis, um den Zeitplan zu reaktivieren
|
||||
|
||||
<div className="flex justify-center">
|
||||
<Image
|
||||
src="/static/blocks/schedule-3.png"
|
||||
alt="Deaktivierter Zeitplan"
|
||||
width={500}
|
||||
height={400}
|
||||
className="my-6"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<Callout>
|
||||
Zeitplan-Blöcke können keine eingehenden Verbindungen empfangen und dienen ausschließlich als Workflow-Einstiegspunkte.
|
||||
</Callout>
|
||||
@@ -15,7 +15,7 @@ Der generische Webhook-Block erstellt einen flexiblen Endpunkt, der beliebige Pa
|
||||
|
||||
<div className="flex justify-center">
|
||||
<Image
|
||||
src="/static/blocks/webhook.png"
|
||||
src="/static/blocks/webhook-trigger.png"
|
||||
alt="Generische Webhook-Konfiguration"
|
||||
width={500}
|
||||
height={400}
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
"router",
|
||||
"variables",
|
||||
"wait",
|
||||
"webhook",
|
||||
"workflow"
|
||||
]
|
||||
}
|
||||
|
||||
87
apps/docs/content/docs/en/blocks/webhook.mdx
Normal file
87
apps/docs/content/docs/en/blocks/webhook.mdx
Normal file
@@ -0,0 +1,87 @@
|
||||
---
|
||||
title: Webhook
|
||||
---
|
||||
|
||||
import { Callout } from 'fumadocs-ui/components/callout'
|
||||
import { Image } from '@/components/ui/image'
|
||||
|
||||
The Webhook block sends HTTP POST requests to external webhook endpoints with automatic webhook headers and optional HMAC signing.
|
||||
|
||||
<div className="flex justify-center">
|
||||
<Image
|
||||
src="/static/blocks/webhook.png"
|
||||
alt="Webhook Block"
|
||||
width={500}
|
||||
height={400}
|
||||
className="my-6"
|
||||
/>
|
||||
</div>
|
||||
|
||||
## Configuration
|
||||
|
||||
### Webhook URL
|
||||
|
||||
The destination endpoint for your webhook request. Supports both static URLs and dynamic values from other blocks.
|
||||
|
||||
### Payload
|
||||
|
||||
JSON data to send in the request body. Use the AI wand to generate payloads or reference workflow variables:
|
||||
|
||||
```json
|
||||
{
|
||||
"event": "workflow.completed",
|
||||
"data": {
|
||||
"result": "<agent.content>",
|
||||
"timestamp": "<function.result>"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Signing Secret
|
||||
|
||||
Optional secret for HMAC-SHA256 payload signing. When provided, adds an `X-Webhook-Signature` header:
|
||||
|
||||
```
|
||||
X-Webhook-Signature: t=1704067200000,v1=5d41402abc4b2a76b9719d911017c592...
|
||||
```
|
||||
|
||||
To verify signatures, compute `HMAC-SHA256(secret, "${timestamp}.${body}")` and compare with the `v1` value.
|
||||
|
||||
### Additional Headers
|
||||
|
||||
Custom key-value headers to include with the request. These override any automatic headers with the same name.
|
||||
|
||||
## Automatic Headers
|
||||
|
||||
Every request includes these headers automatically:
|
||||
|
||||
| Header | Description |
|
||||
|--------|-------------|
|
||||
| `Content-Type` | `application/json` |
|
||||
| `X-Webhook-Timestamp` | Unix timestamp in milliseconds |
|
||||
| `X-Delivery-ID` | Unique UUID for this delivery |
|
||||
| `Idempotency-Key` | Same as `X-Delivery-ID` for deduplication |
|
||||
|
||||
## Outputs
|
||||
|
||||
| Output | Type | Description |
|
||||
|--------|------|-------------|
|
||||
| `data` | json | Response body from the endpoint |
|
||||
| `status` | number | HTTP status code |
|
||||
| `headers` | object | Response headers |
|
||||
|
||||
## Example Use Cases
|
||||
|
||||
**Notify external services** - Send workflow results to Slack, Discord, or custom endpoints
|
||||
```
|
||||
Agent → Function (format) → Webhook (notify)
|
||||
```
|
||||
|
||||
**Trigger external workflows** - Start processes in other systems when conditions are met
|
||||
```
|
||||
Condition (check) → Webhook (trigger) → Response
|
||||
```
|
||||
|
||||
<Callout>
|
||||
The Webhook block always uses POST. For other HTTP methods or more control, use the [API block](/blocks/api).
|
||||
</Callout>
|
||||
@@ -106,26 +106,24 @@ Different block types produce different output structures. Here's what you can e
|
||||
<Tab>
|
||||
```json
|
||||
{
|
||||
"content": "Original content passed through",
|
||||
"conditionResult": true,
|
||||
"selectedPath": {
|
||||
"blockId": "2acd9007-27e8-4510-a487-73d3b825e7c1",
|
||||
"blockType": "agent",
|
||||
"blockTitle": "Follow-up Agent"
|
||||
},
|
||||
"selectedConditionId": "condition-1"
|
||||
"selectedOption": "condition-1"
|
||||
}
|
||||
```
|
||||
|
||||
### Condition Block Output Fields
|
||||
|
||||
- **content**: The original content passed through
|
||||
- **conditionResult**: Boolean result of the condition evaluation
|
||||
- **selectedPath**: Information about the selected path
|
||||
- **blockId**: ID of the next block in the selected path
|
||||
- **blockType**: Type of the next block
|
||||
- **blockTitle**: Title of the next block
|
||||
- **selectedConditionId**: ID of the selected condition
|
||||
- **selectedOption**: ID of the selected condition
|
||||
|
||||
</Tab>
|
||||
<Tab>
|
||||
|
||||
75
apps/docs/content/docs/en/enterprise/index.mdx
Normal file
75
apps/docs/content/docs/en/enterprise/index.mdx
Normal file
@@ -0,0 +1,75 @@
|
||||
---
|
||||
title: Enterprise
|
||||
description: Enterprise features for organizations with advanced security and compliance requirements
|
||||
---
|
||||
|
||||
import { Callout } from 'fumadocs-ui/components/callout'
|
||||
|
||||
Sim Studio Enterprise provides advanced features for organizations with enhanced security, compliance, and management requirements.
|
||||
|
||||
---
|
||||
|
||||
## Bring Your Own Key (BYOK)
|
||||
|
||||
Use your own API keys for AI model providers instead of Sim Studio's hosted keys.
|
||||
|
||||
### Supported Providers
|
||||
|
||||
| Provider | Usage |
|
||||
|----------|-------|
|
||||
| OpenAI | Knowledge Base embeddings, Agent block |
|
||||
| Anthropic | Agent block |
|
||||
| Google | Agent block |
|
||||
| Mistral | Knowledge Base OCR |
|
||||
|
||||
### Setup
|
||||
|
||||
1. Navigate to **Settings** → **BYOK** in your workspace
|
||||
2. Click **Add Key** for your provider
|
||||
3. Enter your API key and save
|
||||
|
||||
<Callout type="warn">
|
||||
BYOK keys are encrypted at rest. Only organization admins and owners can manage keys.
|
||||
</Callout>
|
||||
|
||||
When configured, workflows use your key instead of Sim Studio's hosted keys. If removed, workflows automatically fall back to hosted keys.
|
||||
|
||||
---
|
||||
|
||||
## Single Sign-On (SSO)
|
||||
|
||||
Enterprise authentication with SAML 2.0 and OIDC support for centralized identity management.
|
||||
|
||||
### Supported Providers
|
||||
|
||||
- Okta
|
||||
- Azure AD / Entra ID
|
||||
- Google Workspace
|
||||
- OneLogin
|
||||
- Any SAML 2.0 or OIDC provider
|
||||
|
||||
### Setup
|
||||
|
||||
1. Navigate to **Settings** → **SSO** in your workspace
|
||||
2. Choose your identity provider
|
||||
3. Configure the connection using your IdP's metadata
|
||||
4. Enable SSO for your organization
|
||||
|
||||
<Callout type="info">
|
||||
Once SSO is enabled, team members authenticate through your identity provider instead of email/password.
|
||||
</Callout>
|
||||
|
||||
---
|
||||
|
||||
## Self-Hosted
|
||||
|
||||
For self-hosted deployments, enterprise features can be enabled via environment variables:
|
||||
|
||||
| Variable | Description |
|
||||
|----------|-------------|
|
||||
| `SSO_ENABLED`, `NEXT_PUBLIC_SSO_ENABLED` | Single Sign-On with SAML/OIDC |
|
||||
| `CREDENTIAL_SETS_ENABLED`, `NEXT_PUBLIC_CREDENTIAL_SETS_ENABLED` | Polling Groups for email triggers |
|
||||
|
||||
<Callout type="warn">
|
||||
BYOK is only available on hosted Sim Studio. Self-hosted deployments configure AI provider keys directly via environment variables.
|
||||
</Callout>
|
||||
@@ -48,40 +48,40 @@ The model breakdown shows:
|
||||
|
||||
<Tabs items={['Hosted Models', 'Bring Your Own API Key']}>
|
||||
<Tab>
|
||||
**Hosted Models** - Sim provides API keys with a 2.5x pricing multiplier:
|
||||
**Hosted Models** - Sim provides API keys with a 2x pricing multiplier:
|
||||
|
||||
**OpenAI**
|
||||
| Model | Base Price (Input/Output) | Hosted Price (Input/Output) |
|
||||
|-------|---------------------------|----------------------------|
|
||||
| GPT-5.1 | $1.25 / $10.00 | $3.13 / $25.00 |
|
||||
| GPT-5 | $1.25 / $10.00 | $3.13 / $25.00 |
|
||||
| GPT-5 Mini | $0.25 / $2.00 | $0.63 / $5.00 |
|
||||
| GPT-5 Nano | $0.05 / $0.40 | $0.13 / $1.00 |
|
||||
| GPT-4o | $2.50 / $10.00 | $6.25 / $25.00 |
|
||||
| GPT-4.1 | $2.00 / $8.00 | $5.00 / $20.00 |
|
||||
| GPT-4.1 Mini | $0.40 / $1.60 | $1.00 / $4.00 |
|
||||
| GPT-4.1 Nano | $0.10 / $0.40 | $0.25 / $1.00 |
|
||||
| o1 | $15.00 / $60.00 | $37.50 / $150.00 |
|
||||
| o3 | $2.00 / $8.00 | $5.00 / $20.00 |
|
||||
| o4 Mini | $1.10 / $4.40 | $2.75 / $11.00 |
|
||||
| GPT-5.1 | $1.25 / $10.00 | $2.50 / $20.00 |
|
||||
| GPT-5 | $1.25 / $10.00 | $2.50 / $20.00 |
|
||||
| GPT-5 Mini | $0.25 / $2.00 | $0.50 / $4.00 |
|
||||
| GPT-5 Nano | $0.05 / $0.40 | $0.10 / $0.80 |
|
||||
| GPT-4o | $2.50 / $10.00 | $5.00 / $20.00 |
|
||||
| GPT-4.1 | $2.00 / $8.00 | $4.00 / $16.00 |
|
||||
| GPT-4.1 Mini | $0.40 / $1.60 | $0.80 / $3.20 |
|
||||
| GPT-4.1 Nano | $0.10 / $0.40 | $0.20 / $0.80 |
|
||||
| o1 | $15.00 / $60.00 | $30.00 / $120.00 |
|
||||
| o3 | $2.00 / $8.00 | $4.00 / $16.00 |
|
||||
| o4 Mini | $1.10 / $4.40 | $2.20 / $8.80 |
|
||||
|
||||
**Anthropic**
|
||||
| Model | Base Price (Input/Output) | Hosted Price (Input/Output) |
|
||||
|-------|---------------------------|----------------------------|
|
||||
| Claude Opus 4.5 | $5.00 / $25.00 | $12.50 / $62.50 |
|
||||
| Claude Opus 4.1 | $15.00 / $75.00 | $37.50 / $187.50 |
|
||||
| Claude Sonnet 4.5 | $3.00 / $15.00 | $7.50 / $37.50 |
|
||||
| Claude Sonnet 4.0 | $3.00 / $15.00 | $7.50 / $37.50 |
|
||||
| Claude Haiku 4.5 | $1.00 / $5.00 | $2.50 / $12.50 |
|
||||
| Claude Opus 4.5 | $5.00 / $25.00 | $10.00 / $50.00 |
|
||||
| Claude Opus 4.1 | $15.00 / $75.00 | $30.00 / $150.00 |
|
||||
| Claude Sonnet 4.5 | $3.00 / $15.00 | $6.00 / $30.00 |
|
||||
| Claude Sonnet 4.0 | $3.00 / $15.00 | $6.00 / $30.00 |
|
||||
| Claude Haiku 4.5 | $1.00 / $5.00 | $2.00 / $10.00 |
|
||||
|
||||
**Google**
|
||||
| Model | Base Price (Input/Output) | Hosted Price (Input/Output) |
|
||||
|-------|---------------------------|----------------------------|
|
||||
| Gemini 3 Pro Preview | $2.00 / $12.00 | $5.00 / $30.00 |
|
||||
| Gemini 2.5 Pro | $0.15 / $0.60 | $0.38 / $1.50 |
|
||||
| Gemini 2.5 Flash | $0.15 / $0.60 | $0.38 / $1.50 |
|
||||
| Gemini 3 Pro Preview | $2.00 / $12.00 | $4.00 / $24.00 |
|
||||
| Gemini 2.5 Pro | $1.25 / $10.00 | $2.50 / $20.00 |
|
||||
| Gemini 2.5 Flash | $0.30 / $2.50 | $0.60 / $5.00 |
|
||||
|
||||
*The 2.5x multiplier covers infrastructure and API management costs.*
|
||||
*The 2x multiplier covers infrastructure and API management costs.*
|
||||
</Tab>
|
||||
|
||||
<Tab>
|
||||
@@ -104,6 +104,10 @@ The model breakdown shows:
|
||||
Pricing shown reflects rates as of September 10, 2025. Check provider documentation for current pricing.
|
||||
</Callout>
|
||||
|
||||
## Bring Your Own Key (BYOK)
|
||||
|
||||
You can use your own API keys for hosted models (OpenAI, Anthropic, Google, Mistral) in **Settings → BYOK** to pay base prices. Keys are encrypted and apply workspace-wide.
|
||||
|
||||
## 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.
|
||||
@@ -183,7 +187,7 @@ Different subscription plans have different usage limits:
|
||||
|
||||
| Plan | Monthly Usage Limit | Rate Limits (per minute) |
|
||||
|------|-------------------|-------------------------|
|
||||
| **Free** | $10 | 5 sync, 10 async |
|
||||
| **Free** | $20 | 5 sync, 10 async |
|
||||
| **Pro** | $100 | 10 sync, 50 async |
|
||||
| **Team** | $500 (pooled) | 50 sync, 100 async |
|
||||
| **Enterprise** | Custom | Custom |
|
||||
|
||||
64
apps/docs/content/docs/en/keyboard-shortcuts/index.mdx
Normal file
64
apps/docs/content/docs/en/keyboard-shortcuts/index.mdx
Normal file
@@ -0,0 +1,64 @@
|
||||
---
|
||||
title: Keyboard Shortcuts
|
||||
description: Master the workflow canvas with keyboard shortcuts and mouse controls
|
||||
---
|
||||
|
||||
import { Callout } from 'fumadocs-ui/components/callout'
|
||||
|
||||
Speed up your workflow building with these keyboard shortcuts and mouse controls. All shortcuts work when the canvas is focused (not when typing in an input field).
|
||||
|
||||
<Callout type="info">
|
||||
**Mod** refers to `Cmd` on macOS and `Ctrl` on Windows/Linux.
|
||||
</Callout>
|
||||
|
||||
## Canvas Controls
|
||||
|
||||
### Mouse Controls
|
||||
|
||||
| Action | Control |
|
||||
|--------|---------|
|
||||
| Pan/move canvas | Left-drag on empty space |
|
||||
| Pan/move canvas | Scroll or trackpad |
|
||||
| Select multiple blocks | Right-drag to draw selection box |
|
||||
| Drag block | Left-drag on block header |
|
||||
| Add to selection | `Mod` + click on blocks |
|
||||
|
||||
### Workflow Actions
|
||||
|
||||
| Shortcut | Action |
|
||||
|----------|--------|
|
||||
| `Mod` + `Enter` | Run workflow (or cancel if running) |
|
||||
| `Mod` + `Z` | Undo |
|
||||
| `Mod` + `Shift` + `Z` | Redo |
|
||||
| `Mod` + `C` | Copy selected blocks |
|
||||
| `Mod` + `V` | Paste blocks |
|
||||
| `Delete` or `Backspace` | Delete selected blocks or edges |
|
||||
| `Shift` + `L` | Auto-layout canvas |
|
||||
|
||||
## Panel Navigation
|
||||
|
||||
These shortcuts switch between panel tabs on the right side of the canvas.
|
||||
|
||||
| Shortcut | Action |
|
||||
|----------|--------|
|
||||
| `C` | Focus Copilot tab |
|
||||
| `T` | Focus Toolbar tab |
|
||||
| `E` | Focus Editor tab |
|
||||
| `Mod` + `F` | Focus Toolbar search |
|
||||
|
||||
## Global Navigation
|
||||
|
||||
| Shortcut | Action |
|
||||
|----------|--------|
|
||||
| `Mod` + `K` | Open search |
|
||||
| `Mod` + `Shift` + `A` | Add new agent workflow |
|
||||
| `Mod` + `Y` | Go to templates |
|
||||
| `Mod` + `L` | Go to logs |
|
||||
|
||||
## Utility
|
||||
|
||||
| Shortcut | Action |
|
||||
|----------|--------|
|
||||
| `Mod` + `D` | Clear terminal console |
|
||||
| `Mod` + `E` | Clear notifications |
|
||||
|
||||
@@ -34,9 +34,15 @@ Once your documents are processed, you can view and edit the individual chunks.
|
||||
<Image src="/static/knowledgebase/knowledgebase.png" alt="Document chunks view showing processed content" width={800} height={500} />
|
||||
|
||||
### Chunk Configuration
|
||||
- **Default chunk size**: 1,024 characters
|
||||
- **Configurable range**: 100-4,000 characters per chunk
|
||||
- **Smart overlap**: 200 characters by default for context preservation
|
||||
|
||||
When creating a knowledge base, you can configure how documents are split into chunks:
|
||||
|
||||
| Setting | Unit | Default | Range | Description |
|
||||
|---------|------|---------|-------|-------------|
|
||||
| **Max Chunk Size** | tokens | 1,024 | 100-4,000 | Maximum size of each chunk (1 token ≈ 4 characters) |
|
||||
| **Min Chunk Size** | characters | 1 | 1-2,000 | Minimum chunk size to avoid tiny fragments |
|
||||
| **Overlap** | characters | 200 | 0-500 | Context overlap between consecutive chunks |
|
||||
|
||||
- **Hierarchical splitting**: Respects document structure (sections, paragraphs, sentences)
|
||||
|
||||
### Editing Capabilities
|
||||
|
||||
108
apps/docs/content/docs/en/mcp/deploy-workflows.mdx
Normal file
108
apps/docs/content/docs/en/mcp/deploy-workflows.mdx
Normal file
@@ -0,0 +1,108 @@
|
||||
---
|
||||
title: Deploy Workflows as MCP
|
||||
description: Expose your workflows as MCP tools for external AI assistants and applications
|
||||
---
|
||||
|
||||
import { Video } from '@/components/ui/video'
|
||||
import { Callout } from 'fumadocs-ui/components/callout'
|
||||
|
||||
Deploy your workflows as MCP tools to make them accessible to external AI assistants like Claude Desktop, Cursor, and other MCP-compatible clients. This turns your workflows into callable tools that can be invoked from anywhere.
|
||||
|
||||
## Creating and Managing MCP Servers
|
||||
|
||||
MCP servers group your workflow tools together. Create and manage them in workspace settings:
|
||||
|
||||
<div className="mx-auto w-full overflow-hidden rounded-lg">
|
||||
<Video src="mcp/mcp-server.mp4" width={700} height={450} />
|
||||
</div>
|
||||
|
||||
1. Navigate to **Settings → Deployed MCPs**
|
||||
2. Click **Create Server**
|
||||
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
|
||||
|
||||
## Adding a Workflow as a Tool
|
||||
|
||||
Once your workflow is deployed, you can expose it as an MCP tool:
|
||||
|
||||
<div className="mx-auto w-full overflow-hidden rounded-lg">
|
||||
<Video src="mcp/mcp-deploy-tool.mp4" width={700} height={450} />
|
||||
</div>
|
||||
|
||||
1. Open your deployed workflow
|
||||
2. Click **Deploy** and go to the **MCP** tab
|
||||
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
|
||||
|
||||
<Callout type="info">
|
||||
The workflow must be deployed before it can be added as an MCP tool.
|
||||
</Callout>
|
||||
|
||||
## Tool Configuration
|
||||
|
||||
### Tool Name
|
||||
Use lowercase letters, numbers, and underscores. The name should be descriptive and follow MCP naming conventions (e.g., `search_documents`, `send_email`).
|
||||
|
||||
### Description
|
||||
Write a clear description of what the tool does. This helps AI assistants understand when to use the tool.
|
||||
|
||||
### Parameters
|
||||
Your workflow's input format fields become tool parameters. Add descriptions to each parameter to help AI assistants provide correct values.
|
||||
|
||||
## Connecting MCP Clients
|
||||
|
||||
Use the server URL from settings to connect external applications:
|
||||
|
||||
### Claude Desktop
|
||||
Add to your Claude Desktop config (`~/Library/Application Support/Claude/claude_desktop_config.json`):
|
||||
|
||||
```json
|
||||
{
|
||||
"mcpServers": {
|
||||
"my-sim-workflows": {
|
||||
"command": "npx",
|
||||
"args": ["-y", "mcp-remote", "YOUR_SERVER_URL"]
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Cursor
|
||||
Add the server URL in Cursor's MCP settings using the same mcp-remote pattern.
|
||||
|
||||
<Callout type="warn">
|
||||
Include your API key header (`X-API-Key`) for authenticated access when using mcp-remote or other HTTP-based MCP transports.
|
||||
</Callout>
|
||||
|
||||
## Server Management
|
||||
|
||||
From the server detail view in **Settings → Deployed MCPs**, you can:
|
||||
|
||||
- **View tools**: See all workflows added to a server
|
||||
- **Copy URL**: Get the server URL for MCP clients
|
||||
- **Add workflows**: Add more deployed workflows as tools
|
||||
- **Remove tools**: Remove workflows from the server
|
||||
- **Delete server**: Remove the entire server and all its tools
|
||||
|
||||
## How It Works
|
||||
|
||||
When an MCP client calls your tool:
|
||||
|
||||
1. The request is received at your MCP server URL
|
||||
2. Sim validates the request and maps parameters to workflow inputs
|
||||
3. The deployed workflow executes with the provided inputs
|
||||
4. Results are returned to the MCP client
|
||||
|
||||
Workflows execute using the same deployment version as API calls, ensuring consistent behavior.
|
||||
|
||||
## Permission Requirements
|
||||
|
||||
| Action | Required Permission |
|
||||
|--------|-------------------|
|
||||
| Create MCP servers | **Admin** |
|
||||
| Add workflows to servers | **Write** or **Admin** |
|
||||
| View MCP servers | **Read**, **Write**, or **Admin** |
|
||||
| Delete MCP servers | **Admin** |
|
||||
|
||||
@@ -1,8 +1,10 @@
|
||||
---
|
||||
title: MCP (Model Context Protocol)
|
||||
title: Using MCP Tools
|
||||
description: Connect external tools and services using the Model Context Protocol
|
||||
---
|
||||
|
||||
import { Image } from '@/components/ui/image'
|
||||
import { Video } from '@/components/ui/video'
|
||||
import { Callout } from 'fumadocs-ui/components/callout'
|
||||
|
||||
The Model Context Protocol ([MCP](https://modelcontextprotocol.com/)) allows you to connect external tools and services using a standardized protocol, enabling you to integrate APIs and services directly into your workflows. With MCP, you can extend Sim's capabilities by adding custom integrations that work seamlessly with your agents and workflows.
|
||||
@@ -20,18 +22,12 @@ MCP is an open standard that enables AI assistants to securely connect to extern
|
||||
|
||||
MCP servers provide collections of tools that your agents can use. Configure them in workspace settings:
|
||||
|
||||
<div className="flex justify-center">
|
||||
<Image
|
||||
src="/static/blocks/mcp-1.png"
|
||||
alt="Configuring MCP Server in Settings"
|
||||
width={700}
|
||||
height={450}
|
||||
className="my-6"
|
||||
/>
|
||||
<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
|
||||
2. Go to the **Deployed MCPs** section
|
||||
3. Click **Add MCP Server**
|
||||
4. Enter the server configuration details
|
||||
5. Save the configuration
|
||||
@@ -40,6 +36,10 @@ MCP servers provide collections of tools that your agents can use. Configure the
|
||||
You can also configure MCP servers directly from the toolbar in an Agent block for quick setup.
|
||||
</Callout>
|
||||
|
||||
### 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.
|
||||
|
||||
## Using MCP Tools in Agents
|
||||
|
||||
Once MCP servers are configured, their tools become available within your agent blocks:
|
||||
|
||||
5
apps/docs/content/docs/en/mcp/meta.json
Normal file
5
apps/docs/content/docs/en/mcp/meta.json
Normal file
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"title": "MCP",
|
||||
"pages": ["index", "deploy-workflows"],
|
||||
"defaultOpen": false
|
||||
}
|
||||
@@ -14,7 +14,9 @@
|
||||
"execution",
|
||||
"permissions",
|
||||
"sdks",
|
||||
"self-hosting"
|
||||
"self-hosting",
|
||||
"./enterprise/index",
|
||||
"./keyboard-shortcuts/index"
|
||||
],
|
||||
"defaultOpen": false
|
||||
}
|
||||
|
||||
@@ -57,7 +57,6 @@ Run an APIFY actor synchronously and get results (max 5 minutes)
|
||||
| `success` | boolean | Whether the actor run succeeded |
|
||||
| `runId` | string | APIFY run ID |
|
||||
| `status` | string | Run status \(SUCCEEDED, FAILED, etc.\) |
|
||||
| `datasetId` | string | Dataset ID containing results |
|
||||
| `items` | array | Dataset items \(if completed\) |
|
||||
|
||||
### `apify_run_actor_async`
|
||||
|
||||
@@ -36,7 +36,14 @@ Retrieve a single task by GID or get multiple tasks with filters
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Operation success status |
|
||||
| `output` | object | Single task details or array of tasks, depending on whether taskGid was provided |
|
||||
| `ts` | string | Timestamp of the response |
|
||||
| `gid` | string | Task globally unique identifier |
|
||||
| `resource_type` | string | Resource type \(task\) |
|
||||
| `resource_subtype` | string | Resource subtype |
|
||||
| `name` | string | Task name |
|
||||
| `notes` | string | Task notes or description |
|
||||
| `completed` | boolean | Whether the task is completed |
|
||||
| `assignee` | object | Assignee details |
|
||||
|
||||
### `asana_create_task`
|
||||
|
||||
@@ -57,7 +64,13 @@ Create a new task in Asana
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Operation success status |
|
||||
| `output` | object | Created task details with timestamp, gid, name, notes, and permalink |
|
||||
| `ts` | string | Timestamp of the response |
|
||||
| `gid` | string | Task globally unique identifier |
|
||||
| `name` | string | Task name |
|
||||
| `notes` | string | Task notes or description |
|
||||
| `completed` | boolean | Whether the task is completed |
|
||||
| `created_at` | string | Task creation timestamp |
|
||||
| `permalink_url` | string | URL to the task in Asana |
|
||||
|
||||
### `asana_update_task`
|
||||
|
||||
@@ -79,7 +92,12 @@ Update an existing task in Asana
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Operation success status |
|
||||
| `output` | object | Updated task details with timestamp, gid, name, notes, and modified timestamp |
|
||||
| `ts` | string | Timestamp of the response |
|
||||
| `gid` | string | Task globally unique identifier |
|
||||
| `name` | string | Task name |
|
||||
| `notes` | string | Task notes or description |
|
||||
| `completed` | boolean | Whether the task is completed |
|
||||
| `modified_at` | string | Task last modified timestamp |
|
||||
|
||||
### `asana_get_projects`
|
||||
|
||||
@@ -96,7 +114,8 @@ Retrieve all projects from an Asana workspace
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Operation success status |
|
||||
| `output` | object | List of projects with their gid, name, and resource type |
|
||||
| `ts` | string | Timestamp of the response |
|
||||
| `projects` | array | Array of projects |
|
||||
|
||||
### `asana_search_tasks`
|
||||
|
||||
@@ -117,7 +136,8 @@ Search for tasks in an Asana workspace
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Operation success status |
|
||||
| `output` | object | List of tasks matching the search criteria |
|
||||
| `ts` | string | Timestamp of the response |
|
||||
| `tasks` | array | Array of matching tasks |
|
||||
|
||||
### `asana_add_comment`
|
||||
|
||||
@@ -135,7 +155,11 @@ Add a comment (story) to an Asana task
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Operation success status |
|
||||
| `output` | object | Comment details including gid, text, created timestamp, and author |
|
||||
| `ts` | string | Timestamp of the response |
|
||||
| `gid` | string | Comment globally unique identifier |
|
||||
| `text` | string | Comment text content |
|
||||
| `created_at` | string | Comment creation timestamp |
|
||||
| `created_by` | object | Comment author details |
|
||||
|
||||
|
||||
|
||||
|
||||
64
apps/docs/content/docs/en/tools/circleback.mdx
Normal file
64
apps/docs/content/docs/en/tools/circleback.mdx
Normal file
@@ -0,0 +1,64 @@
|
||||
---
|
||||
title: Circleback
|
||||
description: AI-powered meeting notes and action items
|
||||
---
|
||||
|
||||
import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
<BlockInfoCard
|
||||
type="circleback"
|
||||
color="linear-gradient(180deg, #E0F7FA 0%, #FFFFFF 100%)"
|
||||
/>
|
||||
|
||||
{/* MANUAL-CONTENT-START:intro */}
|
||||
[Circleback](https://circleback.ai/) is an AI-powered platform that automates meeting notes, action items, transcripts, and recordings for your team. When a meeting is completed, Circleback processes the conversation and provides detailed notes and action items, along with a transcript and a recording (when available). This helps teams efficiently capture insights, distribute action items, and ensure nothing is missed—all seamlessly integrated into your workflows.
|
||||
|
||||
With the Sim Circleback integration, you can:
|
||||
|
||||
- **Receive detailed meeting notes and action items**: Automatically collect well-formatted meeting summaries and track actionable tasks discussed during your calls.
|
||||
- **Access complete meeting recordings and transcripts**: Get the full conversation and the associated recording, making it easy to review key moments or share with colleagues.
|
||||
- **Capture attendee information and meeting context**: Attendee lists, meeting metadata, and tags help keep your data organized and actionable.
|
||||
- **Deliver insights directly into your workflows**: Trigger automations or send Circleback data to other systems the moment a meeting is done, using Sim’s powerful webhook triggers.
|
||||
|
||||
**How it works in Sim:**
|
||||
Circleback uses webhook triggers: whenever a meeting is processed, data is pushed automatically to your agent or automation. You can build further automations based on:
|
||||
|
||||
- Meeting completed (all processed data available)
|
||||
- New notes (notes ready even before full meeting is processed)
|
||||
- Raw webhook integration for advanced use cases
|
||||
|
||||
**The following information is available in the Circleback meeting webhook payload:**
|
||||
|
||||
| Field | Type | Description |
|
||||
|----------------|---------|----------------------------------------------------|
|
||||
| `id` | number | Circleback meeting ID |
|
||||
| `name` | string | Meeting title |
|
||||
| `url` | string | Virtual meeting URL (Zoom, Meet, Teams, etc.) |
|
||||
| `createdAt` | string | Meeting creation timestamp |
|
||||
| `duration` | number | Duration in seconds |
|
||||
| `recordingUrl` | string | Recording URL (valid 24 hours) |
|
||||
| `tags` | json | Array of tags |
|
||||
| `icalUid` | string | Calendar event ID |
|
||||
| `attendees` | json | Array of attendee objects |
|
||||
| `notes` | string | Meeting notes in Markdown |
|
||||
| `actionItems` | json | Array of action items |
|
||||
| `transcript` | json | Array of transcript segments |
|
||||
| `insights` | json | User-created insights |
|
||||
| `meeting` | json | Full meeting payload |
|
||||
|
||||
Whether you want to distribute instant summaries, log action items, or build custom workflows triggered by new meeting data, Circleback and Sim make it seamless to handle everything related to your meetings—automatically.
|
||||
{/* MANUAL-CONTENT-END */}
|
||||
|
||||
|
||||
## Usage Instructions
|
||||
|
||||
Receive meeting notes, action items, transcripts, and recordings when meetings are processed. Circleback uses webhooks to push data to your workflows.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## Notes
|
||||
|
||||
- Category: `triggers`
|
||||
- Type: `circleback`
|
||||
@@ -224,6 +224,33 @@ Delete a comment from a Confluence page.
|
||||
| `commentId` | string | Deleted comment ID |
|
||||
| `deleted` | boolean | Deletion status |
|
||||
|
||||
### `confluence_upload_attachment`
|
||||
|
||||
Upload a file as an attachment to a Confluence page.
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `domain` | string | Yes | Your Confluence domain \(e.g., yourcompany.atlassian.net\) |
|
||||
| `pageId` | string | Yes | Confluence page ID to attach the file to |
|
||||
| `file` | file | Yes | The file to upload as an attachment |
|
||||
| `fileName` | string | No | Optional custom file name for the attachment |
|
||||
| `comment` | string | No | Optional comment to add to the attachment |
|
||||
| `cloudId` | string | No | Confluence Cloud ID for the instance. If not provided, it will be fetched using the domain. |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `ts` | string | Timestamp of upload |
|
||||
| `attachmentId` | string | Uploaded attachment ID |
|
||||
| `title` | string | Attachment file name |
|
||||
| `fileSize` | number | File size in bytes |
|
||||
| `mediaType` | string | MIME type of the attachment |
|
||||
| `downloadUrl` | string | Download URL for the attachment |
|
||||
| `pageId` | string | Page ID the attachment was added to |
|
||||
|
||||
### `confluence_list_attachments`
|
||||
|
||||
List all attachments on a Confluence page.
|
||||
|
||||
@@ -49,11 +49,11 @@ Search the web using Exa AI. Returns relevant search results with titles, URLs,
|
||||
| `type` | string | No | Search type: neural, keyword, auto or fast \(default: auto\) |
|
||||
| `includeDomains` | string | No | Comma-separated list of domains to include in results |
|
||||
| `excludeDomains` | string | No | Comma-separated list of domains to exclude from results |
|
||||
| `category` | string | No | Filter by category: company, research_paper, news_article, pdf, github, tweet, movie, song, personal_site |
|
||||
| `category` | string | No | Filter by category: company, research paper, news, pdf, github, tweet, personal site, linkedin profile, financial report |
|
||||
| `text` | boolean | No | Include full text content in results \(default: false\) |
|
||||
| `highlights` | boolean | No | Include highlighted snippets in results \(default: false\) |
|
||||
| `summary` | boolean | No | Include AI-generated summaries in results \(default: false\) |
|
||||
| `livecrawl` | string | No | Live crawling mode: always, fallback, or never \(default: never\) |
|
||||
| `livecrawl` | string | No | Live crawling mode: never \(default\), fallback, always, or preferred \(always try livecrawl, fall back to cache if fails\) |
|
||||
| `apiKey` | string | Yes | Exa AI API Key |
|
||||
|
||||
#### Output
|
||||
@@ -76,7 +76,7 @@ Retrieve the contents of webpages using Exa AI. Returns the title, text content,
|
||||
| `subpages` | number | No | Number of subpages to crawl from the provided URLs |
|
||||
| `subpageTarget` | string | No | Comma-separated keywords to target specific subpages \(e.g., "docs,tutorial,about"\) |
|
||||
| `highlights` | boolean | No | Include highlighted snippets in results \(default: false\) |
|
||||
| `livecrawl` | string | No | Live crawling mode: always, fallback, or never \(default: never\) |
|
||||
| `livecrawl` | string | No | Live crawling mode: never \(default\), fallback, always, or preferred \(always try livecrawl, fall back to cache if fails\) |
|
||||
| `apiKey` | string | Yes | Exa AI API Key |
|
||||
|
||||
#### Output
|
||||
@@ -99,10 +99,9 @@ Find webpages similar to a given URL using Exa AI. Returns a list of similar lin
|
||||
| `includeDomains` | string | No | Comma-separated list of domains to include in results |
|
||||
| `excludeDomains` | string | No | Comma-separated list of domains to exclude from results |
|
||||
| `excludeSourceDomain` | boolean | No | Exclude the source domain from results \(default: false\) |
|
||||
| `category` | string | No | Filter by category: company, research_paper, news_article, pdf, github, tweet, movie, song, personal_site |
|
||||
| `highlights` | boolean | No | Include highlighted snippets in results \(default: false\) |
|
||||
| `summary` | boolean | No | Include AI-generated summaries in results \(default: false\) |
|
||||
| `livecrawl` | string | No | Live crawling mode: always, fallback, or never \(default: never\) |
|
||||
| `livecrawl` | string | No | Live crawling mode: never \(default\), fallback, always, or preferred \(always try livecrawl, fall back to cache if fails\) |
|
||||
| `apiKey` | string | Yes | Exa AI API Key |
|
||||
|
||||
#### Output
|
||||
|
||||
@@ -148,7 +148,32 @@ Extract structured data from entire webpages using natural language prompts and
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Whether the extraction operation was successful |
|
||||
| `data` | object | Extracted structured data according to the schema or prompt |
|
||||
| `sources` | array | Data sources \(only if showSources is enabled\) |
|
||||
|
||||
### `firecrawl_agent`
|
||||
|
||||
Autonomous web data extraction agent. Searches and gathers information based on natural language prompts without requiring specific URLs.
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `prompt` | string | Yes | Natural language description of the data to extract \(max 10,000 characters\) |
|
||||
| `urls` | json | No | Optional array of URLs to focus the agent on |
|
||||
| `schema` | json | No | JSON Schema defining the structure of data to extract |
|
||||
| `maxCredits` | number | No | Maximum credits to spend on this agent task |
|
||||
| `strictConstrainToURLs` | boolean | No | If true, agent will only visit URLs provided in the urls array |
|
||||
| `apiKey` | string | Yes | Firecrawl API key |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Whether the agent operation was successful |
|
||||
| `status` | string | Current status of the agent job \(processing, completed, failed\) |
|
||||
| `data` | object | Extracted data from the agent |
|
||||
| `creditsUsed` | number | Number of credits consumed by this agent task |
|
||||
| `expiresAt` | string | Timestamp when the results expire \(24 hours\) |
|
||||
| `sources` | object | Array of source URLs used by the agent |
|
||||
|
||||
|
||||
|
||||
|
||||
238
apps/docs/content/docs/en/tools/fireflies.mdx
Normal file
238
apps/docs/content/docs/en/tools/fireflies.mdx
Normal file
@@ -0,0 +1,238 @@
|
||||
---
|
||||
title: Fireflies
|
||||
description: Interact with Fireflies.ai meeting transcripts and recordings
|
||||
---
|
||||
|
||||
import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
<BlockInfoCard
|
||||
type="fireflies"
|
||||
color="#100730"
|
||||
/>
|
||||
|
||||
{/* MANUAL-CONTENT-START:intro */}
|
||||
[Fireflies.ai](https://fireflies.ai/) is a meeting transcription and intelligence platform that integrates with Sim, allowing your agents to work directly with meeting recordings, transcripts, and insights through no-code automations.
|
||||
|
||||
The Fireflies integration in Sim provides tools to:
|
||||
|
||||
- **List meeting transcripts:** Fetch multiple meetings and their summary information for your team or account.
|
||||
- **Retrieve full transcript details:** Access detailed transcripts, including summaries, action items, topics, and participant analytics for any meeting.
|
||||
- **Upload audio or video:** Upload audio/video files or provide URLs for transcription—optionally set language, title, attendees, and receive automated meeting notes.
|
||||
- **Search transcripts:** Find meetings by keyword, participant, host, or timeframe to quickly locate relevant discussions.
|
||||
- **Delete transcripts:** Remove specific meeting transcripts from your Fireflies workspace.
|
||||
- **Create soundbites (Bites):** Extract and highlight key moments from transcripts as audio or video clips.
|
||||
- **Trigger workflows on transcription completion:** Activate Sim workflows automatically when a Fireflies meeting transcription finishes using the provided webhook trigger—enabling real-time automations and notifications based on new meeting data.
|
||||
|
||||
By combining these capabilities, you can streamline post-meeting actions, extract structured insights, automate notifications, manage recordings, and orchestrate custom workflows around your organization’s calls—all securely using your API key and Fireflies credentials.
|
||||
{/* MANUAL-CONTENT-END */}
|
||||
|
||||
|
||||
## Usage Instructions
|
||||
|
||||
Integrate Fireflies.ai into the workflow. Manage meeting transcripts, add bot to live meetings, create soundbites, and more. Can also trigger workflows when transcriptions complete.
|
||||
|
||||
|
||||
|
||||
## Tools
|
||||
|
||||
### `fireflies_list_transcripts`
|
||||
|
||||
List meeting transcripts from Fireflies.ai with optional filtering
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Yes | Fireflies API key |
|
||||
| `keyword` | string | No | Search keyword in meeting title or transcript |
|
||||
| `fromDate` | string | No | Filter transcripts from this date \(ISO 8601 format\) |
|
||||
| `toDate` | string | No | Filter transcripts until this date \(ISO 8601 format\) |
|
||||
| `hostEmail` | string | No | Filter by meeting host email |
|
||||
| `participants` | string | No | Filter by participant emails \(comma-separated\) |
|
||||
| `limit` | number | No | Maximum number of transcripts to return \(max 50\) |
|
||||
| `skip` | number | No | Number of transcripts to skip for pagination |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `transcripts` | array | List of transcripts |
|
||||
| `count` | number | Number of transcripts returned |
|
||||
|
||||
### `fireflies_get_transcript`
|
||||
|
||||
Get a single transcript with full details including summary, action items, and analytics
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Yes | Fireflies API key |
|
||||
| `transcriptId` | string | Yes | The transcript ID to retrieve |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `transcript` | object | The transcript with full details |
|
||||
|
||||
### `fireflies_get_user`
|
||||
|
||||
Get user information from Fireflies.ai. Returns current user if no ID specified.
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Yes | Fireflies API key |
|
||||
| `userId` | string | No | User ID to retrieve \(optional, defaults to API key owner\) |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `user` | object | User information |
|
||||
|
||||
### `fireflies_list_users`
|
||||
|
||||
List all users within your Fireflies.ai team
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Yes | Fireflies API key |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `users` | array | List of team users |
|
||||
|
||||
### `fireflies_upload_audio`
|
||||
|
||||
Upload an audio file URL to Fireflies.ai for transcription
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Yes | Fireflies API key |
|
||||
| `audioFile` | file | No | Audio/video file to upload for transcription |
|
||||
| `audioUrl` | string | No | Public HTTPS URL of the audio/video file \(MP3, MP4, WAV, M4A, OGG\) |
|
||||
| `title` | string | No | Title for the meeting/transcript |
|
||||
| `webhook` | string | No | Webhook URL to notify when transcription is complete |
|
||||
| `language` | string | No | Language code for transcription \(e.g., "es" for Spanish, "de" for German\) |
|
||||
| `attendees` | string | No | Attendees in JSON format: \[\{"displayName": "Name", "email": "email@example.com"\}\] |
|
||||
| `clientReferenceId` | string | No | Custom reference ID for tracking |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Whether the upload was successful |
|
||||
| `title` | string | Title of the uploaded meeting |
|
||||
| `message` | string | Status message from Fireflies |
|
||||
|
||||
### `fireflies_delete_transcript`
|
||||
|
||||
Delete a transcript from Fireflies.ai
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Yes | Fireflies API key |
|
||||
| `transcriptId` | string | Yes | The transcript ID to delete |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Whether the transcript was successfully deleted |
|
||||
|
||||
### `fireflies_add_to_live_meeting`
|
||||
|
||||
Add the Fireflies.ai bot to an ongoing meeting to record and transcribe
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Yes | Fireflies API key |
|
||||
| `meetingLink` | string | Yes | Valid meeting URL \(Zoom, Google Meet, Microsoft Teams, etc.\) |
|
||||
| `title` | string | No | Title for the meeting \(max 256 characters\) |
|
||||
| `meetingPassword` | string | No | Password for the meeting if required \(max 32 characters\) |
|
||||
| `duration` | number | No | Meeting duration in minutes \(15-120, default: 60\) |
|
||||
| `language` | string | No | Language code for transcription \(e.g., "en", "es", "de"\) |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Whether the bot was successfully added to the meeting |
|
||||
|
||||
### `fireflies_create_bite`
|
||||
|
||||
Create a soundbite/highlight from a specific time range in a transcript
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Yes | Fireflies API key |
|
||||
| `transcriptId` | string | Yes | ID of the transcript to create the bite from |
|
||||
| `startTime` | number | Yes | Start time of the bite in seconds |
|
||||
| `endTime` | number | Yes | End time of the bite in seconds |
|
||||
| `name` | string | No | Name for the bite \(max 256 characters\) |
|
||||
| `mediaType` | string | No | Media type: "video" or "audio" |
|
||||
| `summary` | string | No | Summary for the bite \(max 500 characters\) |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `bite` | object | Created bite details |
|
||||
|
||||
### `fireflies_list_bites`
|
||||
|
||||
List soundbites/highlights from Fireflies.ai
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Yes | Fireflies API key |
|
||||
| `transcriptId` | string | No | Filter bites for a specific transcript |
|
||||
| `mine` | boolean | No | Only return bites owned by the API key owner \(default: true\) |
|
||||
| `limit` | number | No | Maximum number of bites to return \(max 50\) |
|
||||
| `skip` | number | No | Number of bites to skip for pagination |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `bites` | array | List of bites/soundbites |
|
||||
|
||||
### `fireflies_list_contacts`
|
||||
|
||||
List all contacts from your Fireflies.ai meetings
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Yes | Fireflies API key |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `contacts` | array | List of contacts from meetings |
|
||||
|
||||
|
||||
|
||||
## Notes
|
||||
|
||||
- Category: `tools`
|
||||
- Type: `fireflies`
|
||||
@@ -36,7 +36,8 @@ List all groups in a Google Workspace domain
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `output` | json | Google Groups API response data |
|
||||
| `groups` | json | Array of group objects |
|
||||
| `nextPageToken` | string | Token for fetching next page of results |
|
||||
|
||||
### `google_groups_get_group`
|
||||
|
||||
@@ -52,7 +53,7 @@ Get details of a specific Google Group by email or group ID
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `output` | json | Google Groups API response data |
|
||||
| `group` | json | Group object |
|
||||
|
||||
### `google_groups_create_group`
|
||||
|
||||
@@ -70,7 +71,7 @@ Create a new Google Group in the domain
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `output` | json | Google Groups API response data |
|
||||
| `group` | json | Created group object |
|
||||
|
||||
### `google_groups_update_group`
|
||||
|
||||
@@ -89,7 +90,7 @@ Update an existing Google Group
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `output` | json | Google Groups API response data |
|
||||
| `group` | json | Updated group object |
|
||||
|
||||
### `google_groups_delete_group`
|
||||
|
||||
@@ -105,7 +106,7 @@ Delete a Google Group
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `output` | json | Google Groups API response data |
|
||||
| `message` | string | Success message |
|
||||
|
||||
### `google_groups_list_members`
|
||||
|
||||
@@ -124,7 +125,8 @@ List all members of a Google Group
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `output` | json | Google Groups API response data |
|
||||
| `members` | json | Array of member objects |
|
||||
| `nextPageToken` | string | Token for fetching next page of results |
|
||||
|
||||
### `google_groups_get_member`
|
||||
|
||||
@@ -141,7 +143,7 @@ Get details of a specific member in a Google Group
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `output` | json | Google Groups API response data |
|
||||
| `member` | json | Member object |
|
||||
|
||||
### `google_groups_add_member`
|
||||
|
||||
@@ -159,7 +161,7 @@ Add a new member to a Google Group
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `output` | json | Google Groups API response data |
|
||||
| `member` | json | Added member object |
|
||||
|
||||
### `google_groups_remove_member`
|
||||
|
||||
@@ -176,7 +178,7 @@ Remove a member from a Google Group
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `output` | json | Google Groups API response data |
|
||||
| `message` | string | Success message |
|
||||
|
||||
### `google_groups_update_member`
|
||||
|
||||
@@ -194,7 +196,7 @@ Update a member
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `output` | json | Google Groups API response data |
|
||||
| `member` | json | Updated member object |
|
||||
|
||||
### `google_groups_has_member`
|
||||
|
||||
@@ -211,7 +213,7 @@ Check if a user is a member of a Google Group
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `output` | json | Google Groups API response data |
|
||||
| `isMember` | boolean | Whether the user is a member of the group |
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -36,8 +36,7 @@ Create an export in a matter
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `output` | json | Vault API response data |
|
||||
| `file` | json | Downloaded export file \(UserFile\) from execution files |
|
||||
| `export` | json | Created export object |
|
||||
|
||||
### `google_vault_list_matters_export`
|
||||
|
||||
@@ -56,8 +55,9 @@ List exports for a matter
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `output` | json | Vault API response data |
|
||||
| `file` | json | Downloaded export file \(UserFile\) from execution files |
|
||||
| `exports` | json | Array of export objects |
|
||||
| `export` | json | Single export object \(when exportId is provided\) |
|
||||
| `nextPageToken` | string | Token for fetching next page of results |
|
||||
|
||||
### `google_vault_download_export_file`
|
||||
|
||||
@@ -96,8 +96,7 @@ Create a hold in a matter
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `output` | json | Vault API response data |
|
||||
| `file` | json | Downloaded export file \(UserFile\) from execution files |
|
||||
| `hold` | json | Created hold object |
|
||||
|
||||
### `google_vault_list_matters_holds`
|
||||
|
||||
@@ -116,8 +115,9 @@ List holds for a matter
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `output` | json | Vault API response data |
|
||||
| `file` | json | Downloaded export file \(UserFile\) from execution files |
|
||||
| `holds` | json | Array of hold objects |
|
||||
| `hold` | json | Single hold object \(when holdId is provided\) |
|
||||
| `nextPageToken` | string | Token for fetching next page of results |
|
||||
|
||||
### `google_vault_create_matters`
|
||||
|
||||
@@ -134,8 +134,7 @@ Create a new matter in Google Vault
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `output` | json | Vault API response data |
|
||||
| `file` | json | Downloaded export file \(UserFile\) from execution files |
|
||||
| `matter` | json | Created matter object |
|
||||
|
||||
### `google_vault_list_matters`
|
||||
|
||||
@@ -153,8 +152,9 @@ List matters, or get a specific matter if matterId is provided
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `output` | json | Vault API response data |
|
||||
| `file` | json | Downloaded export file \(UserFile\) from execution files |
|
||||
| `matters` | json | Array of matter objects |
|
||||
| `matter` | json | Single matter object \(when matterId is provided\) |
|
||||
| `nextPageToken` | string | Token for fetching next page of results |
|
||||
|
||||
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user