mirror of
https://github.com/simstudioai/sim.git
synced 2026-01-09 23:17:59 -05:00
Compare commits
113 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b5da61377c | ||
|
|
1d62ece915 | ||
|
|
bbab2ff732 | ||
|
|
18b7032494 | ||
|
|
76bc2fae83 | ||
|
|
1cfe229056 | ||
|
|
6791d968b8 | ||
|
|
163db5cf50 | ||
|
|
bbbb13af7e | ||
|
|
b7bbef8620 | ||
|
|
6fd4087a79 | ||
|
|
cb6e763714 | ||
|
|
d06b360b1d | ||
|
|
0713580862 | ||
|
|
f421f27d3f | ||
|
|
0083c89fa5 | ||
|
|
3cec449402 | ||
|
|
c5b3fcb181 | ||
|
|
dd7db6e144 | ||
|
|
306043eedb | ||
|
|
569598b39e | ||
|
|
cc66aa5a3e | ||
|
|
aea32d423f | ||
|
|
22abf98835 | ||
|
|
52edbea659 | ||
|
|
aa1d896b38 | ||
|
|
2fcd07e82d | ||
|
|
0db5ba1b27 | ||
|
|
e390ba0491 | ||
|
|
2f0509adaf | ||
|
|
9f0584a818 | ||
|
|
6b4d76298f | ||
|
|
b7a1e8f5cf | ||
|
|
3ce2788562 | ||
|
|
17a084cd61 | ||
|
|
dafd2f5ce8 | ||
|
|
5af67d08ba | ||
|
|
209b0f1906 | ||
|
|
e067b584ee | ||
|
|
87084edbe6 | ||
|
|
99e0b81233 | ||
|
|
d480057fd3 | ||
|
|
c197b04bcc | ||
|
|
c27c233da0 | ||
|
|
4fb039f3e8 | ||
|
|
feb591867e | ||
|
|
598c3bc684 | ||
|
|
01b2f809d1 | ||
|
|
d200f664e8 | ||
|
|
e2b077f582 | ||
|
|
d09fd6cf92 | ||
|
|
434d12956e | ||
|
|
b49b8eeb9d | ||
|
|
5b9f3d3d02 | ||
|
|
05022e3468 | ||
|
|
9f884c151c | ||
|
|
92c03b825b | ||
|
|
e9d53042f6 | ||
|
|
22c9384f19 | ||
|
|
6e02a73259 | ||
|
|
683b4476fa | ||
|
|
ae7937280e | ||
|
|
ebef5f3a27 | ||
|
|
7bfc6ebe48 | ||
|
|
23ef39de72 | ||
|
|
507fc112be | ||
|
|
26670e289d | ||
|
|
e52bd575e7 | ||
|
|
0b28128f25 | ||
|
|
a50edf8131 | ||
|
|
12c4c2d44f | ||
|
|
656dfafb8f | ||
|
|
9f604f379e | ||
|
|
75da06adf8 | ||
|
|
929a352edb | ||
|
|
c7b473f55f | ||
|
|
6cd078b0fe | ||
|
|
fb4c9827f8 | ||
|
|
4fd5f0051f | ||
|
|
002713ec4b | ||
|
|
5d6c1f7b88 | ||
|
|
7752beac01 | ||
|
|
7101dc58d4 | ||
|
|
58251e28e6 | ||
|
|
8ef9a45125 | ||
|
|
ca818a6503 | ||
|
|
1b903f2db5 | ||
|
|
414a54c358 | ||
|
|
3b9f0f9ce2 | ||
|
|
dcbdcb43aa | ||
|
|
1642ed754b | ||
|
|
d22b5783be | ||
|
|
8e7d8c93e3 | ||
|
|
ca3eb5b5a5 | ||
|
|
dc5a2b1ad1 | ||
|
|
3f84ed9b72 | ||
|
|
31874939ee | ||
|
|
b54ca604b6 | ||
|
|
e581608472 | ||
|
|
a4d4dfaa32 | ||
|
|
099e86e3c1 | ||
|
|
042de6a944 | ||
|
|
f44e7e34ec | ||
|
|
6bfb643ef8 | ||
|
|
cd5d1c0958 | ||
|
|
9df87d9b88 | ||
|
|
c864d17991 | ||
|
|
36c91f4ca9 | ||
|
|
6d4ba6d5cf | ||
|
|
5d791cd55f | ||
|
|
5630e133fd | ||
|
|
08a11935af | ||
|
|
3158b62da8 |
45
.cursor/rules/emcn-components.mdc
Normal file
45
.cursor/rules/emcn-components.mdc
Normal file
@@ -0,0 +1,45 @@
|
||||
---
|
||||
description: EMCN component library patterns with CVA
|
||||
globs: ["apps/sim/components/emcn/**"]
|
||||
---
|
||||
|
||||
# EMCN Component Guidelines
|
||||
|
||||
## When to Use CVA vs Direct Styles
|
||||
|
||||
**Use CVA (class-variance-authority) when:**
|
||||
- 2+ visual variants (primary, secondary, outline)
|
||||
- Multiple sizes or state variations
|
||||
- Example: Button with variants
|
||||
|
||||
**Use direct className when:**
|
||||
- Single consistent style
|
||||
- No variations needed
|
||||
- Example: Label with one style
|
||||
|
||||
## Patterns
|
||||
|
||||
**With CVA:**
|
||||
```tsx
|
||||
const buttonVariants = cva('base-classes', {
|
||||
variants: {
|
||||
variant: { default: '...', primary: '...' },
|
||||
size: { sm: '...', md: '...' }
|
||||
}
|
||||
})
|
||||
export { Button, buttonVariants }
|
||||
```
|
||||
|
||||
**Without CVA:**
|
||||
```tsx
|
||||
function Label({ className, ...props }) {
|
||||
return <Primitive className={cn('single-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
|
||||
20
.cursor/rules/global.mdc
Normal file
20
.cursor/rules/global.mdc
Normal file
@@ -0,0 +1,20 @@
|
||||
---
|
||||
description: Global coding standards that apply to all files
|
||||
alwaysApply: true
|
||||
---
|
||||
|
||||
# Global Standards
|
||||
|
||||
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`.
|
||||
|
||||
## 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`.
|
||||
67
.cursor/rules/sim-architecture.mdc
Normal file
67
.cursor/rules/sim-architecture.mdc
Normal file
@@ -0,0 +1,67 @@
|
||||
---
|
||||
description: Core architecture principles for the Sim app
|
||||
globs: ["apps/sim/**"]
|
||||
---
|
||||
|
||||
# Sim App Architecture
|
||||
|
||||
## 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
|
||||
5. **Performance by Default**: useMemo, useCallback, refs appropriately
|
||||
|
||||
## File Organization
|
||||
|
||||
```
|
||||
feature/
|
||||
├── components/ # Feature components
|
||||
│ └── sub-feature/ # Sub-feature with own components
|
||||
├── hooks/ # Custom hooks
|
||||
└── feature.tsx # Main component
|
||||
```
|
||||
|
||||
## 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`)
|
||||
- **Constants**: SCREAMING_SNAKE_CASE
|
||||
- **Interfaces**: PascalCase with suffix (`WorkflowListProps`)
|
||||
|
||||
## State Management
|
||||
|
||||
**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)
|
||||
64
.cursor/rules/sim-components.mdc
Normal file
64
.cursor/rules/sim-components.mdc
Normal file
@@ -0,0 +1,64 @@
|
||||
---
|
||||
description: Component patterns and structure for React components
|
||||
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
|
||||
const CONFIG = { SPACING: 8 } as const
|
||||
|
||||
// 3. Props interface with TSDoc
|
||||
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
|
||||
// h. useEffect
|
||||
// i. Return JSX
|
||||
}
|
||||
```
|
||||
|
||||
## Rules
|
||||
1. Add `'use client'` 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)`
|
||||
|
||||
## Factory Pattern with Caching
|
||||
|
||||
When generating components for a specific signature (e.g., icons):
|
||||
|
||||
```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
|
||||
}
|
||||
```
|
||||
68
.cursor/rules/sim-hooks.mdc
Normal file
68
.cursor/rules/sim-hooks.mdc
Normal file
@@ -0,0 +1,68 @@
|
||||
---
|
||||
description: Custom hook patterns and best practices
|
||||
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)
|
||||
const onSuccessRef = useRef(onSuccess)
|
||||
|
||||
// 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(() => {
|
||||
idRef.current = id
|
||||
onSuccessRef.current = onSuccess
|
||||
}, [id, onSuccess])
|
||||
|
||||
// 4. Operations with useCallback
|
||||
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 }
|
||||
}
|
||||
```
|
||||
|
||||
## 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
|
||||
37
.cursor/rules/sim-imports.mdc
Normal file
37
.cursor/rules/sim-imports.mdc
Normal file
@@ -0,0 +1,37 @@
|
||||
---
|
||||
description: Import patterns for the Sim application
|
||||
globs: ["apps/sim/**/*.ts", "apps/sim/**/*.tsx"]
|
||||
---
|
||||
|
||||
# Import Patterns
|
||||
|
||||
## EMCN Components
|
||||
Import from `@/components/emcn`, never from subpaths like `@/components/emcn/components/modal/modal`.
|
||||
|
||||
**Exception**: CSS imports use actual file paths: `import '@/components/emcn/components/code/code.css'`
|
||||
|
||||
## Feature Components
|
||||
Import from central folder indexes, not specific subfolders:
|
||||
```typescript
|
||||
// ✅ Correct
|
||||
import { Dashboard, Sidebar } from '@/app/workspace/[workspaceId]/logs/components'
|
||||
|
||||
// ❌ Wrong
|
||||
import { Dashboard } from '@/app/workspace/[workspaceId]/logs/components/dashboard'
|
||||
```
|
||||
|
||||
## Internal vs External
|
||||
- **Cross-feature**: Absolute paths through central index
|
||||
- **Within feature**: Relative paths (`./components/...`, `../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
|
||||
7. CSS imports
|
||||
|
||||
## Types
|
||||
Use `type` keyword: `import type { WorkflowLog } from '...'`
|
||||
57
.cursor/rules/sim-stores.mdc
Normal file
57
.cursor/rules/sim-stores.mdc
Normal file
@@ -0,0 +1,57 @@
|
||||
---
|
||||
description: Zustand store patterns
|
||||
globs: ["apps/sim/**/store.ts", "apps/sim/**/stores/**/*.ts"]
|
||||
---
|
||||
|
||||
# Zustand Store Patterns
|
||||
|
||||
## Structure
|
||||
```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()),
|
||||
}),
|
||||
{
|
||||
name: 'feature-state',
|
||||
partialize: (state) => ({ items: state.items }),
|
||||
}
|
||||
)
|
||||
)
|
||||
```
|
||||
|
||||
## 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
|
||||
47
.cursor/rules/sim-styling.mdc
Normal file
47
.cursor/rules/sim-styling.mdc
Normal file
@@ -0,0 +1,47 @@
|
||||
---
|
||||
description: Tailwind CSS and styling conventions
|
||||
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
|
||||
|
||||
## Conditional Classes
|
||||
```typescript
|
||||
import { cn } from '@/lib/utils'
|
||||
|
||||
<div className={cn(
|
||||
'base-classes',
|
||||
isActive && 'active-classes',
|
||||
disabled ? 'opacity-60' : 'hover:bg-accent'
|
||||
)} />
|
||||
```
|
||||
|
||||
## CSS Variables for Dynamic Styles
|
||||
```typescript
|
||||
// In store setter
|
||||
setSidebarWidth: (width) => {
|
||||
set({ sidebarWidth: 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)]'>
|
||||
```
|
||||
24
.cursor/rules/sim-typescript.mdc
Normal file
24
.cursor/rules/sim-typescript.mdc
Normal file
@@ -0,0 +1,24 @@
|
||||
---
|
||||
description: TypeScript conventions and type safety
|
||||
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)`
|
||||
|
||||
## Anti-Patterns
|
||||
```typescript
|
||||
// ❌ Bad
|
||||
const handleClick = (e: any) => {}
|
||||
useEffect(() => { doSomething(prop) }, []) // Missing dep
|
||||
|
||||
// ✅ Good
|
||||
const handleClick = (e: React.MouseEvent<HTMLButtonElement>) => {}
|
||||
useEffect(() => { doSomething(prop) }, [prop])
|
||||
```
|
||||
19
.cursorrules
19
.cursorrules
@@ -1,19 +0,0 @@
|
||||
# Role
|
||||
|
||||
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.
|
||||
|
||||
## Logs
|
||||
|
||||
ENSURE that you use the logger.info and logger.warn and logger.error instead of the console.log whenever you want to display logs.
|
||||
|
||||
## Comments
|
||||
|
||||
You must use TSDOC for comments. Do not use ==== for comments to separate sections.
|
||||
|
||||
## Globals styles
|
||||
|
||||
You should not update the global styles unless it is absolutely necessary. Keep all styling local to components and files.
|
||||
|
||||
## Bun
|
||||
|
||||
Use bun and bunx not npm and npx
|
||||
@@ -1,4 +1,4 @@
|
||||
FROM oven/bun:1.2.22-alpine
|
||||
FROM oven/bun:1.3.3-alpine
|
||||
|
||||
# Install necessary packages for development
|
||||
RUN apk add --no-cache \
|
||||
|
||||
2
.github/workflows/docs-embeddings.yml
vendored
2
.github/workflows/docs-embeddings.yml
vendored
@@ -17,7 +17,7 @@ jobs:
|
||||
- name: Setup Bun
|
||||
uses: oven-sh/setup-bun@v2
|
||||
with:
|
||||
bun-version: 1.2.22
|
||||
bun-version: 1.3.3
|
||||
|
||||
- name: Setup Node
|
||||
uses: actions/setup-node@v4
|
||||
|
||||
4
.github/workflows/i18n.yml
vendored
4
.github/workflows/i18n.yml
vendored
@@ -26,7 +26,7 @@ jobs:
|
||||
- name: Setup Bun
|
||||
uses: oven-sh/setup-bun@v2
|
||||
with:
|
||||
bun-version: 1.2.22
|
||||
bun-version: 1.3.3
|
||||
|
||||
- name: Cache Bun dependencies
|
||||
uses: actions/cache@v4
|
||||
@@ -126,7 +126,7 @@ jobs:
|
||||
- name: Setup Bun
|
||||
uses: oven-sh/setup-bun@v2
|
||||
with:
|
||||
bun-version: 1.2.22
|
||||
bun-version: 1.3.3
|
||||
|
||||
- name: Cache Bun dependencies
|
||||
uses: actions/cache@v4
|
||||
|
||||
2
.github/workflows/migrations.yml
vendored
2
.github/workflows/migrations.yml
vendored
@@ -16,7 +16,7 @@ jobs:
|
||||
- name: Setup Bun
|
||||
uses: oven-sh/setup-bun@v2
|
||||
with:
|
||||
bun-version: 1.2.22
|
||||
bun-version: 1.3.3
|
||||
|
||||
- name: Cache Bun dependencies
|
||||
uses: actions/cache@v4
|
||||
|
||||
2
.github/workflows/publish-cli.yml
vendored
2
.github/workflows/publish-cli.yml
vendored
@@ -16,7 +16,7 @@ jobs:
|
||||
- name: Setup Bun
|
||||
uses: oven-sh/setup-bun@v2
|
||||
with:
|
||||
bun-version: 1.2.22
|
||||
bun-version: 1.3.3
|
||||
|
||||
- name: Setup Node.js for npm publishing
|
||||
uses: actions/setup-node@v4
|
||||
|
||||
2
.github/workflows/publish-ts-sdk.yml
vendored
2
.github/workflows/publish-ts-sdk.yml
vendored
@@ -16,7 +16,7 @@ jobs:
|
||||
- name: Setup Bun
|
||||
uses: oven-sh/setup-bun@v2
|
||||
with:
|
||||
bun-version: 1.2.22
|
||||
bun-version: 1.3.3
|
||||
|
||||
- name: Setup Node.js for npm publishing
|
||||
uses: actions/setup-node@v4
|
||||
|
||||
2
.github/workflows/test-build.yml
vendored
2
.github/workflows/test-build.yml
vendored
@@ -16,7 +16,7 @@ jobs:
|
||||
- name: Setup Bun
|
||||
uses: oven-sh/setup-bun@v2
|
||||
with:
|
||||
bun-version: 1.2.22
|
||||
bun-version: 1.3.3
|
||||
|
||||
- name: Setup Node
|
||||
uses: actions/setup-node@v4
|
||||
|
||||
3
.gitignore
vendored
3
.gitignore
vendored
@@ -67,6 +67,9 @@ start-collector.sh
|
||||
# VSCode
|
||||
.vscode
|
||||
|
||||
# IntelliJ
|
||||
.idea
|
||||
|
||||
## Helm Chart Tests
|
||||
helm/sim/test
|
||||
i18n.cache
|
||||
|
||||
47
CLAUDE.md
Normal file
47
CLAUDE.md
Normal file
@@ -0,0 +1,47 @@
|
||||
# Expert Programming Standards
|
||||
|
||||
**You are tasked with implementing solutions that follow best practices. You MUST be accurate, elegant, and efficient as an expert programmer.**
|
||||
|
||||
---
|
||||
|
||||
# Role
|
||||
|
||||
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.
|
||||
|
||||
## Logs
|
||||
|
||||
ENSURE that you use the logger.info and logger.warn and logger.error instead of the console.log whenever you want to display logs.
|
||||
|
||||
## Comments
|
||||
|
||||
You must use TSDOC for comments. Do not use ==== for comments to separate sections. Do not leave any comments that are not TSDOC.
|
||||
|
||||
## Global Styles
|
||||
|
||||
You should not update the global styles unless it is absolutely necessary. Keep all styling local to components and files.
|
||||
|
||||
## Bun
|
||||
|
||||
Use bun and bunx not npm and npx.
|
||||
|
||||
## Code Quality
|
||||
|
||||
- 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
|
||||
|
||||
## Testing
|
||||
|
||||
- Write tests for new functionality when appropriate
|
||||
- Ensure existing tests pass before completing work
|
||||
- Follow the project's testing conventions
|
||||
|
||||
## Performance
|
||||
|
||||
- Consider performance implications of your code
|
||||
- Avoid unnecessary re-renders in React components
|
||||
- Use appropriate data structures and algorithms
|
||||
- Profile and optimize when necessary
|
||||
70
README.md
70
README.md
@@ -89,6 +89,36 @@ Wait for the model to download, then visit [http://localhost:3000](http://localh
|
||||
docker compose -f docker-compose.ollama.yml exec ollama ollama pull llama3.1:8b
|
||||
```
|
||||
|
||||
#### Using an External Ollama Instance
|
||||
|
||||
If you already have Ollama running on your host machine (outside Docker), you need to configure the `OLLAMA_URL` to use `host.docker.internal` instead of `localhost`:
|
||||
|
||||
```bash
|
||||
# Docker Desktop (macOS/Windows)
|
||||
OLLAMA_URL=http://host.docker.internal:11434 docker compose -f docker-compose.prod.yml up -d
|
||||
|
||||
# Linux (add extra_hosts or use host IP)
|
||||
docker compose -f docker-compose.prod.yml up -d # Then set OLLAMA_URL to your host's IP
|
||||
```
|
||||
|
||||
**Why?** When running inside Docker, `localhost` refers to the container itself, not your host machine. `host.docker.internal` is a special DNS name that resolves to the host.
|
||||
|
||||
For Linux users, you can either:
|
||||
- Use your host machine's actual IP address (e.g., `http://192.168.1.100:11434`)
|
||||
- Add `extra_hosts: ["host.docker.internal:host-gateway"]` to the simstudio service in your compose file
|
||||
|
||||
#### Using vLLM
|
||||
|
||||
Sim also supports [vLLM](https://docs.vllm.ai/) for self-hosted models with OpenAI-compatible API:
|
||||
|
||||
```bash
|
||||
# Set these environment variables
|
||||
VLLM_BASE_URL=http://your-vllm-server:8000
|
||||
VLLM_API_KEY=your_optional_api_key # Only if your vLLM instance requires auth
|
||||
```
|
||||
|
||||
When running with Docker, use `host.docker.internal` if vLLM is on your host machine (same as Ollama above).
|
||||
|
||||
### Self-hosted: Dev Containers
|
||||
|
||||
1. Open VS Code with the [Remote - Containers extension](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers)
|
||||
@@ -190,6 +220,46 @@ Copilot is a Sim-managed service. To use Copilot on a self-hosted instance:
|
||||
- Go to https://sim.ai → Settings → Copilot and generate a Copilot API key
|
||||
- Set `COPILOT_API_KEY` environment variable in your self-hosted apps/sim/.env file to that value
|
||||
|
||||
## Environment Variables
|
||||
|
||||
Key environment variables for self-hosted deployments (see `apps/sim/.env.example` for full list):
|
||||
|
||||
| Variable | Required | Description |
|
||||
|----------|----------|-------------|
|
||||
| `DATABASE_URL` | Yes | PostgreSQL connection string with pgvector |
|
||||
| `BETTER_AUTH_SECRET` | Yes | Auth secret (`openssl rand -hex 32`) |
|
||||
| `BETTER_AUTH_URL` | Yes | Your app URL (e.g., `http://localhost:3000`) |
|
||||
| `NEXT_PUBLIC_APP_URL` | Yes | Public app URL (same as above) |
|
||||
| `ENCRYPTION_KEY` | Yes | Encryption key (`openssl rand -hex 32`) |
|
||||
| `OLLAMA_URL` | No | Ollama server URL (default: `http://localhost:11434`) |
|
||||
| `VLLM_BASE_URL` | No | vLLM server URL for self-hosted models |
|
||||
| `COPILOT_API_KEY` | No | API key from sim.ai for Copilot features |
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Ollama models not showing in dropdown (Docker)
|
||||
|
||||
If you're running Ollama on your host machine and Sim in Docker, change `OLLAMA_URL` from `localhost` to `host.docker.internal`:
|
||||
|
||||
```bash
|
||||
OLLAMA_URL=http://host.docker.internal:11434 docker compose -f docker-compose.prod.yml up -d
|
||||
```
|
||||
|
||||
See [Using an External Ollama Instance](#using-an-external-ollama-instance) for details.
|
||||
|
||||
### Database connection issues
|
||||
|
||||
Ensure PostgreSQL has the pgvector extension installed. When using Docker, wait for the database to be healthy before running migrations.
|
||||
|
||||
### Port conflicts
|
||||
|
||||
If ports 3000, 3002, or 5432 are in use, configure alternatives:
|
||||
|
||||
```bash
|
||||
# Custom ports
|
||||
NEXT_PUBLIC_APP_URL=http://localhost:3100 POSTGRES_PORT=5433 docker compose up -d
|
||||
```
|
||||
|
||||
## Tech Stack
|
||||
|
||||
- **Framework**: [Next.js](https://nextjs.org/) (App Router)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { findNeighbour } from 'fumadocs-core/server'
|
||||
import { findNeighbour } from 'fumadocs-core/page-tree'
|
||||
import defaultMdxComponents from 'fumadocs-ui/mdx'
|
||||
import { DocsBody, DocsDescription, DocsPage, DocsTitle } from 'fumadocs-ui/page'
|
||||
import { ChevronLeft, ChevronRight } from 'lucide-react'
|
||||
@@ -6,9 +6,10 @@ import Link from 'next/link'
|
||||
import { notFound } from 'next/navigation'
|
||||
import { PageNavigationArrows } from '@/components/docs-layout/page-navigation-arrows'
|
||||
import { TOCFooter } from '@/components/docs-layout/toc-footer'
|
||||
import { LLMCopyButton } from '@/components/page-actions'
|
||||
import { StructuredData } from '@/components/structured-data'
|
||||
import { CodeBlock } from '@/components/ui/code-block'
|
||||
import { CopyPageButton } from '@/components/ui/copy-page-button'
|
||||
import { Heading } from '@/components/ui/heading'
|
||||
import { source } from '@/lib/source'
|
||||
|
||||
export default async function Page(props: { params: Promise<{ slug?: string[]; lang: string }> }) {
|
||||
@@ -182,13 +183,14 @@ export default async function Page(props: { params: Promise<{ slug?: string[]; l
|
||||
tableOfContent={{
|
||||
style: 'clerk',
|
||||
enabled: true,
|
||||
header: <div className='mb-2 font-medium text-sm'>On this page</div>,
|
||||
header: (
|
||||
<div key='toc-header' className='mb-2 font-medium text-sm'>
|
||||
On this page
|
||||
</div>
|
||||
),
|
||||
footer: <TOCFooter />,
|
||||
single: false,
|
||||
}}
|
||||
article={{
|
||||
className: 'scroll-smooth max-sm:pb-16',
|
||||
}}
|
||||
tableOfContentPopover={{
|
||||
style: 'clerk',
|
||||
enabled: true,
|
||||
@@ -201,7 +203,7 @@ export default async function Page(props: { params: Promise<{ slug?: string[]; l
|
||||
<div className='relative mt-6 sm:mt-0'>
|
||||
<div className='absolute top-1 right-0 flex items-center gap-2'>
|
||||
<div className='hidden sm:flex'>
|
||||
<CopyPageButton markdownUrl={`${page.url}.mdx`} />
|
||||
<LLMCopyButton markdownUrl={`${page.url}.mdx`} />
|
||||
</div>
|
||||
<PageNavigationArrows previous={neighbours?.previous} next={neighbours?.next} />
|
||||
</div>
|
||||
@@ -213,6 +215,12 @@ export default async function Page(props: { params: Promise<{ slug?: string[]; l
|
||||
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} />,
|
||||
}}
|
||||
/>
|
||||
</DocsBody>
|
||||
|
||||
@@ -101,9 +101,6 @@ export default async function Layout({ children, params }: LayoutProps) {
|
||||
<Navbar />
|
||||
<DocsLayout
|
||||
tree={source.pageTree[lang]}
|
||||
themeSwitch={{
|
||||
enabled: false,
|
||||
}}
|
||||
nav={{
|
||||
title: (
|
||||
<Image
|
||||
@@ -128,7 +125,7 @@ export default async function Layout({ children, params }: LayoutProps) {
|
||||
},
|
||||
}}
|
||||
containerProps={{
|
||||
className: '!pt-10',
|
||||
className: '!pt-0',
|
||||
}}
|
||||
>
|
||||
{children}
|
||||
|
||||
@@ -2,6 +2,12 @@
|
||||
@import "fumadocs-ui/css/neutral.css";
|
||||
@import "fumadocs-ui/css/preset.css";
|
||||
|
||||
/* Prevent overscroll bounce effect on the page */
|
||||
html,
|
||||
body {
|
||||
overscroll-behavior: none;
|
||||
}
|
||||
|
||||
@theme {
|
||||
--color-fd-primary: #802fff; /* Purple from control-bar component */
|
||||
--font-geist-sans: var(--font-geist-sans);
|
||||
@@ -96,45 +102,48 @@ aside#nd-sidebar {
|
||||
border-right: none !important;
|
||||
}
|
||||
|
||||
/* Responsive sidebar positioning */
|
||||
/* Mobile: Fumadocs handles drawer */
|
||||
@media (min-width: 768px) and (max-width: 1024px) {
|
||||
aside[data-sidebar],
|
||||
aside#nd-sidebar {
|
||||
left: var(--sidebar-offset) !important;
|
||||
/* Fumadocs v16: Add sidebar placeholder styling for grid area */
|
||||
[data-sidebar-placeholder] {
|
||||
background: transparent !important;
|
||||
}
|
||||
|
||||
/* Fumadocs v16: Hide sidebar panel (floating collapse button) */
|
||||
[data-sidebar-panel] {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
/* Mobile only: Reduce gap between navbar and content */
|
||||
@media (max-width: 1023px) {
|
||||
#nd-docs-layout {
|
||||
margin-top: -25px;
|
||||
}
|
||||
}
|
||||
|
||||
/* Desktop layout alignment */
|
||||
@media (min-width: 1025px) {
|
||||
[data-sidebar-container] {
|
||||
margin-left: var(--sidebar-offset) !important;
|
||||
}
|
||||
aside[data-sidebar],
|
||||
aside#nd-sidebar {
|
||||
left: var(--sidebar-offset) !important;
|
||||
}
|
||||
/* TOC positioning - target all possible selectors */
|
||||
[data-toc],
|
||||
aside[data-toc],
|
||||
div[data-toc],
|
||||
.fd-toc,
|
||||
#nd-toc,
|
||||
nav[data-toc],
|
||||
aside:has([role="complementary"]) {
|
||||
right: var(--toc-offset) !important;
|
||||
/* Desktop only: Apply custom navbar offset, sidebar width and margin offsets */
|
||||
/* On mobile, let fumadocs handle the layout natively */
|
||||
@media (min-width: 1024px) {
|
||||
:root {
|
||||
--fd-banner-height: 64px !important;
|
||||
}
|
||||
|
||||
/* Alternative TOC container targeting */
|
||||
[data-docs-page] > aside:last-child,
|
||||
main ~ aside {
|
||||
right: var(--toc-offset) !important;
|
||||
#nd-docs-layout {
|
||||
--fd-docs-height: calc(100dvh - 64px) !important;
|
||||
--fd-sidebar-width: 300px !important;
|
||||
margin-left: var(--sidebar-offset) !important;
|
||||
margin-right: var(--toc-offset) !important;
|
||||
}
|
||||
|
||||
/* Hide fumadocs nav on desktop - we use custom navbar there */
|
||||
#nd-docs-layout > header {
|
||||
display: none !important;
|
||||
}
|
||||
}
|
||||
|
||||
/* Sidebar spacing - compact like turborepo */
|
||||
[data-sidebar-viewport] {
|
||||
padding: 0.5rem 20px 12px;
|
||||
/* Fumadocs v16: [data-sidebar-viewport] doesn't exist, target #nd-sidebar > div instead */
|
||||
[data-sidebar-viewport],
|
||||
#nd-sidebar > div {
|
||||
padding: 0.5rem 12px 12px;
|
||||
background: transparent !important;
|
||||
background-color: transparent !important;
|
||||
}
|
||||
@@ -142,8 +151,9 @@ aside#nd-sidebar {
|
||||
/* Override sidebar item styling to match Raindrop */
|
||||
/* Target Link and button elements in sidebar - override Fumadocs itemVariants */
|
||||
/* Exclude the small chevron-only toggle buttons */
|
||||
#nd-sidebar a,
|
||||
#nd-sidebar button:not([aria-label*="ollapse"]):not([aria-label*="xpand"]) {
|
||||
/* Using html prefix for higher specificity over Tailwind v4 utilities */
|
||||
html #nd-sidebar a,
|
||||
html #nd-sidebar button:not([aria-label*="ollapse"]):not([aria-label*="xpand"]) {
|
||||
font-size: 0.9375rem !important; /* 15px to match Raindrop */
|
||||
line-height: 1.4 !important;
|
||||
padding: 0.5rem 0.75rem !important; /* More compact like Raindrop */
|
||||
@@ -154,14 +164,14 @@ aside#nd-sidebar {
|
||||
}
|
||||
|
||||
/* Dark mode sidebar text */
|
||||
.dark #nd-sidebar a,
|
||||
.dark #nd-sidebar button:not([aria-label*="ollapse"]):not([aria-label*="xpand"]) {
|
||||
html.dark #nd-sidebar a,
|
||||
html.dark #nd-sidebar button:not([aria-label*="ollapse"]):not([aria-label*="xpand"]) {
|
||||
color: rgba(255, 255, 255, 0.6) !important;
|
||||
}
|
||||
|
||||
/* Light mode sidebar text */
|
||||
:root:not(.dark) #nd-sidebar a,
|
||||
:root:not(.dark) #nd-sidebar button:not([aria-label*="ollapse"]):not([aria-label*="xpand"]) {
|
||||
html:not(.dark) #nd-sidebar a,
|
||||
html:not(.dark) #nd-sidebar button:not([aria-label*="ollapse"]):not([aria-label*="xpand"]) {
|
||||
color: rgba(0, 0, 0, 0.6) !important;
|
||||
}
|
||||
|
||||
@@ -194,7 +204,10 @@ aside#nd-sidebar {
|
||||
}
|
||||
|
||||
/* Section headers should be slightly larger */
|
||||
[data-sidebar-viewport] [data-separator] {
|
||||
/* Fumadocs v16: Also target #nd-sidebar for compatibility */
|
||||
[data-sidebar-viewport] [data-separator],
|
||||
#nd-sidebar [data-separator],
|
||||
#nd-sidebar p {
|
||||
font-size: 0.75rem !important;
|
||||
font-weight: 600 !important;
|
||||
text-transform: uppercase !important;
|
||||
@@ -218,61 +231,61 @@ aside#nd-sidebar {
|
||||
}
|
||||
|
||||
/* Dark mode active state */
|
||||
.dark #nd-sidebar a[data-active="true"],
|
||||
.dark #nd-sidebar button[data-active="true"],
|
||||
.dark #nd-sidebar a.bg-fd-primary\/10,
|
||||
.dark #nd-sidebar a.text-fd-primary,
|
||||
.dark #nd-sidebar a[class*="bg-fd-primary"],
|
||||
.dark #nd-sidebar a[class*="text-fd-primary"],
|
||||
.dark #nd-sidebar a.bg-purple-50\/80,
|
||||
.dark #nd-sidebar a.text-purple-600,
|
||||
.dark #nd-sidebar a[class*="bg-purple"],
|
||||
.dark #nd-sidebar a[class*="text-purple"] {
|
||||
html.dark #nd-sidebar a[data-active="true"],
|
||||
html.dark #nd-sidebar button[data-active="true"],
|
||||
html.dark #nd-sidebar a.bg-fd-primary\/10,
|
||||
html.dark #nd-sidebar a.text-fd-primary,
|
||||
html.dark #nd-sidebar a[class*="bg-fd-primary"],
|
||||
html.dark #nd-sidebar a[class*="text-fd-primary"],
|
||||
html.dark #nd-sidebar a.bg-purple-50\/80,
|
||||
html.dark #nd-sidebar a.text-purple-600,
|
||||
html.dark #nd-sidebar a[class*="bg-purple"],
|
||||
html.dark #nd-sidebar a[class*="text-purple"] {
|
||||
background-color: rgba(255, 255, 255, 0.15) !important;
|
||||
color: rgba(255, 255, 255, 1) !important;
|
||||
}
|
||||
|
||||
/* Light mode active state */
|
||||
:root:not(.dark) #nd-sidebar a[data-active="true"],
|
||||
:root:not(.dark) #nd-sidebar button[data-active="true"],
|
||||
:root:not(.dark) #nd-sidebar a.bg-fd-primary\/10,
|
||||
:root:not(.dark) #nd-sidebar a.text-fd-primary,
|
||||
:root:not(.dark) #nd-sidebar a[class*="bg-fd-primary"],
|
||||
:root:not(.dark) #nd-sidebar a[class*="text-fd-primary"],
|
||||
:root:not(.dark) #nd-sidebar a.bg-purple-50\/80,
|
||||
:root:not(.dark) #nd-sidebar a.text-purple-600,
|
||||
:root:not(.dark) #nd-sidebar a[class*="bg-purple"],
|
||||
:root:not(.dark) #nd-sidebar a[class*="text-purple"] {
|
||||
html:not(.dark) #nd-sidebar a[data-active="true"],
|
||||
html:not(.dark) #nd-sidebar button[data-active="true"],
|
||||
html:not(.dark) #nd-sidebar a.bg-fd-primary\/10,
|
||||
html:not(.dark) #nd-sidebar a.text-fd-primary,
|
||||
html:not(.dark) #nd-sidebar a[class*="bg-fd-primary"],
|
||||
html:not(.dark) #nd-sidebar a[class*="text-fd-primary"],
|
||||
html:not(.dark) #nd-sidebar a.bg-purple-50\/80,
|
||||
html:not(.dark) #nd-sidebar a.text-purple-600,
|
||||
html:not(.dark) #nd-sidebar a[class*="bg-purple"],
|
||||
html:not(.dark) #nd-sidebar a[class*="text-purple"] {
|
||||
background-color: rgba(0, 0, 0, 0.07) !important;
|
||||
color: rgba(0, 0, 0, 0.9) !important;
|
||||
}
|
||||
|
||||
/* Dark mode hover state */
|
||||
.dark #nd-sidebar a:hover:not([data-active="true"]),
|
||||
.dark #nd-sidebar button:hover:not([data-active="true"]) {
|
||||
html.dark #nd-sidebar a:hover:not([data-active="true"]),
|
||||
html.dark #nd-sidebar button:hover:not([data-active="true"]) {
|
||||
background-color: rgba(255, 255, 255, 0.08) !important;
|
||||
}
|
||||
|
||||
/* Light mode hover state */
|
||||
:root:not(.dark) #nd-sidebar a:hover:not([data-active="true"]),
|
||||
:root:not(.dark) #nd-sidebar button:hover:not([data-active="true"]) {
|
||||
html:not(.dark) #nd-sidebar a:hover:not([data-active="true"]),
|
||||
html:not(.dark) #nd-sidebar button:hover:not([data-active="true"]) {
|
||||
background-color: rgba(0, 0, 0, 0.03) !important;
|
||||
}
|
||||
|
||||
/* Dark mode - ensure active/selected items don't change on hover */
|
||||
.dark #nd-sidebar a.bg-purple-50\/80:hover,
|
||||
.dark #nd-sidebar a[class*="bg-purple"]:hover,
|
||||
.dark #nd-sidebar a[data-active="true"]:hover,
|
||||
.dark #nd-sidebar button[data-active="true"]:hover {
|
||||
html.dark #nd-sidebar a.bg-purple-50\/80:hover,
|
||||
html.dark #nd-sidebar a[class*="bg-purple"]:hover,
|
||||
html.dark #nd-sidebar a[data-active="true"]:hover,
|
||||
html.dark #nd-sidebar button[data-active="true"]:hover {
|
||||
background-color: rgba(255, 255, 255, 0.15) !important;
|
||||
color: rgba(255, 255, 255, 1) !important;
|
||||
}
|
||||
|
||||
/* Light mode - ensure active/selected items don't change on hover */
|
||||
:root:not(.dark) #nd-sidebar a.bg-purple-50\/80:hover,
|
||||
:root:not(.dark) #nd-sidebar a[class*="bg-purple"]:hover,
|
||||
:root:not(.dark) #nd-sidebar a[data-active="true"]:hover,
|
||||
:root:not(.dark) #nd-sidebar button[data-active="true"]:hover {
|
||||
html:not(.dark) #nd-sidebar a.bg-purple-50\/80:hover,
|
||||
html:not(.dark) #nd-sidebar a[class*="bg-purple"]:hover,
|
||||
html:not(.dark) #nd-sidebar a[data-active="true"]:hover,
|
||||
html:not(.dark) #nd-sidebar button[data-active="true"]:hover {
|
||||
background-color: rgba(0, 0, 0, 0.07) !important;
|
||||
color: rgba(0, 0, 0, 0.9) !important;
|
||||
}
|
||||
@@ -351,7 +364,16 @@ aside[data-sidebar] > *:not([data-sidebar-viewport]) {
|
||||
[data-sidebar] [data-title],
|
||||
#nd-sidebar > a:first-child,
|
||||
#nd-sidebar > div:first-child > a:first-child,
|
||||
#nd-sidebar img[alt="Sim"] {
|
||||
#nd-sidebar img[alt="Sim"],
|
||||
/* Hide theme toggle at bottom of sidebar on desktop */
|
||||
#nd-sidebar
|
||||
> footer,
|
||||
#nd-sidebar footer,
|
||||
aside#nd-sidebar > *:last-child:not(div),
|
||||
#nd-sidebar > button:last-child,
|
||||
#nd-sidebar button[aria-label*="theme" i],
|
||||
#nd-sidebar button[aria-label*="Theme"],
|
||||
#nd-sidebar > div:last-child > button {
|
||||
display: none !important;
|
||||
visibility: hidden !important;
|
||||
height: 0 !important;
|
||||
@@ -498,13 +520,14 @@ main article,
|
||||
============================================ */
|
||||
|
||||
/* Main content area - center and constrain like turborepo/raindrop */
|
||||
/* Note: --sidebar-offset and --toc-offset are now applied at #nd-docs-layout level */
|
||||
main[data-main] {
|
||||
max-width: var(--spacing-fd-container, 1400px);
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
padding-top: 1rem;
|
||||
padding-left: calc(var(--sidebar-offset) + var(--content-gap));
|
||||
padding-right: calc(var(--toc-offset) + var(--content-gap));
|
||||
padding-left: var(--content-gap);
|
||||
padding-right: var(--content-gap);
|
||||
order: 1 !important;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import { notFound } from 'next/navigation'
|
||||
import { type NextRequest, NextResponse } from 'next/server'
|
||||
import { i18n } from '@/lib/i18n'
|
||||
import { getLLMText } from '@/lib/llms'
|
||||
import { source } from '@/lib/source'
|
||||
|
||||
@@ -7,7 +8,16 @@ export const revalidate = false
|
||||
|
||||
export async function GET(_req: NextRequest, { params }: { params: Promise<{ slug?: string[] }> }) {
|
||||
const { slug } = await params
|
||||
const page = source.getPage(slug)
|
||||
|
||||
let lang: (typeof i18n.languages)[number] = i18n.defaultLanguage
|
||||
let pageSlug = slug
|
||||
|
||||
if (slug && slug.length > 0 && i18n.languages.includes(slug[0] as typeof lang)) {
|
||||
lang = slug[0] as typeof lang
|
||||
pageSlug = slug.slice(1)
|
||||
}
|
||||
|
||||
const page = source.getPage(pageSlug, lang)
|
||||
if (!page) notFound()
|
||||
|
||||
return new NextResponse(await getLLMText(page), {
|
||||
|
||||
@@ -1,126 +1,194 @@
|
||||
'use client'
|
||||
|
||||
import { type ReactNode, useEffect, useState } from 'react'
|
||||
import type { PageTree } from 'fumadocs-core/server'
|
||||
import type { Folder, Item, Separator } from 'fumadocs-core/page-tree'
|
||||
import { ChevronRight } from 'lucide-react'
|
||||
import Link from 'next/link'
|
||||
import { usePathname } from 'next/navigation'
|
||||
import { cn } from '@/lib/utils'
|
||||
|
||||
function isActive(url: string, pathname: string, nested = true): boolean {
|
||||
return url === pathname || (nested && pathname.startsWith(`${url}/`))
|
||||
const LANG_PREFIXES = ['/en', '/es', '/fr', '/de', '/ja', '/zh']
|
||||
|
||||
function stripLangPrefix(path: string): string {
|
||||
for (const prefix of LANG_PREFIXES) {
|
||||
if (path === prefix) return '/'
|
||||
if (path.startsWith(`${prefix}/`)) return path.slice(prefix.length)
|
||||
}
|
||||
return path
|
||||
}
|
||||
|
||||
export function SidebarItem({ item }: { item: PageTree.Item }) {
|
||||
function isActive(url: string, pathname: string, nested = true): boolean {
|
||||
const normalizedPathname = stripLangPrefix(pathname)
|
||||
const normalizedUrl = stripLangPrefix(url)
|
||||
return (
|
||||
normalizedUrl === normalizedPathname ||
|
||||
(nested && normalizedPathname.startsWith(`${normalizedUrl}/`))
|
||||
)
|
||||
}
|
||||
|
||||
export function SidebarItem({ item }: { item: Item }) {
|
||||
const pathname = usePathname()
|
||||
const active = isActive(item.url, pathname, false)
|
||||
|
||||
return (
|
||||
<li className='mb-[0.0625rem] list-none'>
|
||||
<Link
|
||||
href={item.url}
|
||||
className={cn(
|
||||
'block rounded-md px-2.5 py-1.5 font-normal text-[13px] leading-tight transition-colors',
|
||||
'text-gray-600 dark:text-gray-400',
|
||||
!active && 'hover:bg-gray-100/60 dark:hover:bg-gray-800/40',
|
||||
active &&
|
||||
'bg-purple-50/80 font-medium text-purple-600 dark:bg-purple-900/15 dark:text-purple-400'
|
||||
)}
|
||||
>
|
||||
{item.name}
|
||||
</Link>
|
||||
</li>
|
||||
<Link
|
||||
href={item.url}
|
||||
data-active={active}
|
||||
className={cn(
|
||||
// Mobile styles (default)
|
||||
'flex w-full items-center gap-2 rounded-md px-2 py-1.5 text-sm transition-colors',
|
||||
'text-fd-muted-foreground hover:bg-fd-accent/50 hover:text-fd-accent-foreground',
|
||||
active && 'bg-fd-primary/10 font-medium text-fd-primary',
|
||||
// Desktop styles (lg+)
|
||||
'lg:mb-[0.0625rem] lg:block lg:rounded-md lg:px-2.5 lg:py-1.5 lg:font-normal lg:text-[13px] lg:leading-tight',
|
||||
'lg:text-gray-600 lg:dark:text-gray-400',
|
||||
!active && 'lg:hover:bg-gray-100/60 lg:dark:hover:bg-gray-800/40',
|
||||
active &&
|
||||
'lg:bg-purple-50/80 lg:font-normal lg:text-purple-600 lg:dark:bg-purple-900/15 lg:dark:text-purple-400'
|
||||
)}
|
||||
>
|
||||
{item.name}
|
||||
</Link>
|
||||
)
|
||||
}
|
||||
|
||||
export function SidebarFolder({
|
||||
item,
|
||||
level,
|
||||
children,
|
||||
}: {
|
||||
item: PageTree.Folder
|
||||
level: number
|
||||
children: ReactNode
|
||||
}) {
|
||||
export function SidebarFolder({ item, children }: { item: Folder; children: ReactNode }) {
|
||||
const pathname = usePathname()
|
||||
const hasActiveChild = checkHasActiveChild(item, pathname)
|
||||
const hasChildren = item.children.length > 0
|
||||
const [open, setOpen] = useState(hasActiveChild)
|
||||
|
||||
useEffect(() => {
|
||||
setOpen(hasActiveChild)
|
||||
}, [hasActiveChild])
|
||||
|
||||
const active = item.index ? isActive(item.index.url, pathname, false) : false
|
||||
|
||||
if (item.index && !hasChildren) {
|
||||
return (
|
||||
<Link
|
||||
href={item.index.url}
|
||||
data-active={active}
|
||||
className={cn(
|
||||
// Mobile styles (default)
|
||||
'flex w-full items-center gap-2 rounded-md px-2 py-1.5 text-sm transition-colors',
|
||||
'text-fd-muted-foreground hover:bg-fd-accent/50 hover:text-fd-accent-foreground',
|
||||
active && 'bg-fd-primary/10 font-medium text-fd-primary',
|
||||
// Desktop styles (lg+)
|
||||
'lg:mb-[0.0625rem] lg:block lg:rounded-md lg:px-2.5 lg:py-1.5 lg:font-normal lg:text-[13px] lg:leading-tight',
|
||||
'lg:text-gray-600 lg:dark:text-gray-400',
|
||||
!active && 'lg:hover:bg-gray-100/60 lg:dark:hover:bg-gray-800/40',
|
||||
active &&
|
||||
'lg:bg-purple-50/80 lg:font-normal lg:text-purple-600 lg:dark:bg-purple-900/15 lg:dark:text-purple-400'
|
||||
)}
|
||||
>
|
||||
{item.name}
|
||||
</Link>
|
||||
)
|
||||
}
|
||||
|
||||
return (
|
||||
<li className='mb-[0.0625rem] list-none'>
|
||||
{item.index ? (
|
||||
<div className='flex items-center gap-0.5'>
|
||||
<div className='flex flex-col lg:mb-[0.0625rem]'>
|
||||
<div className='flex w-full items-center lg:gap-0.5'>
|
||||
{item.index ? (
|
||||
<Link
|
||||
href={item.index.url}
|
||||
data-active={active}
|
||||
className={cn(
|
||||
'block flex-1 rounded-md px-2.5 py-1.5 font-medium text-[13px] leading-tight transition-colors',
|
||||
'text-gray-800 dark:text-gray-200',
|
||||
!isActive(item.index.url, pathname, false) &&
|
||||
'hover:bg-gray-100/60 dark:hover:bg-gray-800/40',
|
||||
isActive(item.index.url, pathname, false) &&
|
||||
'bg-purple-50/80 text-purple-600 dark:bg-purple-900/15 dark:text-purple-400'
|
||||
// Mobile styles (default)
|
||||
'flex flex-1 items-center gap-2 rounded-md px-2 py-1.5 text-sm transition-colors',
|
||||
'text-fd-muted-foreground hover:bg-fd-accent/50 hover:text-fd-accent-foreground',
|
||||
active && 'bg-fd-primary/10 font-medium text-fd-primary',
|
||||
// Desktop styles (lg+)
|
||||
'lg:block lg:flex-1 lg:rounded-md lg:px-2.5 lg:py-1.5 lg:font-medium lg:text-[13px] lg:leading-tight',
|
||||
'lg:text-gray-800 lg:dark:text-gray-200',
|
||||
!active && 'lg:hover:bg-gray-100/60 lg:dark:hover:bg-gray-800/40',
|
||||
active &&
|
||||
'lg:bg-purple-50/80 lg:text-purple-600 lg:dark:bg-purple-900/15 lg:dark:text-purple-400'
|
||||
)}
|
||||
>
|
||||
{item.name}
|
||||
</Link>
|
||||
) : (
|
||||
<button
|
||||
onClick={() => setOpen(!open)}
|
||||
className='cursor-pointer rounded p-1 transition-colors hover:bg-gray-100/60 dark:hover:bg-gray-800/40'
|
||||
aria-label={open ? 'Collapse' : 'Expand'}
|
||||
className={cn(
|
||||
// Mobile styles (default)
|
||||
'flex flex-1 items-center gap-2 rounded-md px-2 py-1.5 text-sm transition-colors',
|
||||
'text-fd-muted-foreground hover:bg-fd-accent/50',
|
||||
// Desktop styles (lg+)
|
||||
'lg:flex lg:w-full lg:cursor-pointer lg:items-center lg:justify-between lg:rounded-md lg:px-2.5 lg:py-1.5 lg:text-left lg:font-medium lg:text-[13px] lg:leading-tight',
|
||||
'lg:text-gray-800 lg:hover:bg-gray-100/60 lg:dark:text-gray-200 lg:dark:hover:bg-gray-800/40'
|
||||
)}
|
||||
>
|
||||
<span>{item.name}</span>
|
||||
{/* Desktop-only chevron for non-index folders */}
|
||||
<ChevronRight
|
||||
className={cn(
|
||||
'h-3 w-3 text-gray-400 transition-transform duration-200 ease-in-out dark:text-gray-500',
|
||||
'ml-auto hidden h-3 w-3 flex-shrink-0 text-gray-400 transition-transform duration-200 ease-in-out lg:block dark:text-gray-500',
|
||||
open && 'rotate-90'
|
||||
)}
|
||||
/>
|
||||
</button>
|
||||
</div>
|
||||
) : (
|
||||
<button
|
||||
onClick={() => setOpen(!open)}
|
||||
)}
|
||||
{hasChildren && (
|
||||
<button
|
||||
onClick={() => setOpen(!open)}
|
||||
className={cn(
|
||||
// Mobile styles
|
||||
'rounded p-1 hover:bg-fd-accent/50',
|
||||
// Desktop styles
|
||||
'lg:cursor-pointer lg:rounded lg:p-1 lg:transition-colors lg:hover:bg-gray-100/60 lg:dark:hover:bg-gray-800/40'
|
||||
)}
|
||||
aria-label={open ? 'Collapse' : 'Expand'}
|
||||
>
|
||||
<ChevronRight
|
||||
className={cn(
|
||||
// Mobile styles
|
||||
'h-4 w-4 transition-transform',
|
||||
// Desktop styles
|
||||
'lg:h-3 lg:w-3 lg:text-gray-400 lg:duration-200 lg:ease-in-out lg:dark:text-gray-500',
|
||||
open && 'rotate-90'
|
||||
)}
|
||||
/>
|
||||
</button>
|
||||
)}
|
||||
</div>
|
||||
{hasChildren && (
|
||||
<div
|
||||
className={cn(
|
||||
'flex w-full cursor-pointer items-center justify-between rounded-md px-2.5 py-1.5 text-left font-medium text-[13px] leading-tight transition-colors',
|
||||
'hover:bg-gray-100/60 dark:hover:bg-gray-800/40',
|
||||
'text-gray-800 dark:text-gray-200'
|
||||
'overflow-hidden transition-all duration-200 ease-in-out',
|
||||
open ? 'max-h-[10000px] opacity-100' : 'max-h-0 opacity-0'
|
||||
)}
|
||||
>
|
||||
<span>{item.name}</span>
|
||||
<ChevronRight
|
||||
className={cn(
|
||||
'ml-auto h-3 w-3 flex-shrink-0 text-gray-400 transition-transform duration-200 ease-in-out dark:text-gray-500',
|
||||
open && 'rotate-90'
|
||||
)}
|
||||
/>
|
||||
</button>
|
||||
{/* Mobile: simple indent */}
|
||||
<div className='ml-4 flex flex-col gap-0.5 lg:hidden'>{children}</div>
|
||||
{/* Desktop: styled with border */}
|
||||
<ul className='mt-0.5 ml-2 hidden space-y-[0.0625rem] border-gray-200/60 border-l pl-2.5 lg:block dark:border-gray-700/60'>
|
||||
{children}
|
||||
</ul>
|
||||
</div>
|
||||
)}
|
||||
<div
|
||||
className={cn(
|
||||
'overflow-hidden transition-all duration-200 ease-in-out',
|
||||
open ? 'max-h-[10000px] opacity-100' : 'max-h-0 opacity-0'
|
||||
)}
|
||||
>
|
||||
<ul className='mt-0.5 ml-2 space-y-[0.0625rem] border-gray-200/60 border-l pl-2.5 dark:border-gray-700/60'>
|
||||
{children}
|
||||
</ul>
|
||||
</div>
|
||||
</li>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
export function SidebarSeparator({ item }: { item: PageTree.Separator }) {
|
||||
export function SidebarSeparator({ item }: { item: Separator }) {
|
||||
return (
|
||||
<p className='mt-4 mb-1.5 px-2.5 font-semibold text-[10px] text-gray-500/80 uppercase tracking-wide dark:text-gray-500'>
|
||||
<p
|
||||
className={cn(
|
||||
// Mobile styles
|
||||
'mt-4 mb-2 px-2 font-medium text-fd-muted-foreground text-xs',
|
||||
// Desktop styles
|
||||
'lg:mt-4 lg:mb-1.5 lg:px-2.5 lg:font-semibold lg:text-[10px] lg:text-gray-500/80 lg:uppercase lg:tracking-wide lg:dark:text-gray-500'
|
||||
)}
|
||||
>
|
||||
{item.name}
|
||||
</p>
|
||||
)
|
||||
}
|
||||
|
||||
function checkHasActiveChild(node: PageTree.Folder, pathname: string): boolean {
|
||||
function checkHasActiveChild(node: Folder, pathname: string): boolean {
|
||||
if (node.index && isActive(node.index.url, pathname)) {
|
||||
return true
|
||||
}
|
||||
|
||||
@@ -473,6 +473,30 @@ export function GithubIcon(props: SVGProps<SVGSVGElement>) {
|
||||
)
|
||||
}
|
||||
|
||||
export function GitLabIcon(props: SVGProps<SVGSVGElement>) {
|
||||
return (
|
||||
<svg {...props} width='24' height='24' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'>
|
||||
<path
|
||||
d='M22.65 14.39L12 22.13 1.35 14.39a.84.84 0 0 1-.3-.94l1.22-3.78 2.44-7.51A.42.42 0 0 1 4.82 2a.43.43 0 0 1 .58 0 .42.42 0 0 1 .11.18l2.44 7.49h8.1l2.44-7.51A.42.42 0 0 1 18.6 2a.43.43 0 0 1 .58 0 .42.42 0 0 1 .11.18l2.44 7.51L23 13.45a.84.84 0 0 1-.35.94z'
|
||||
fill='#FC6D26'
|
||||
/>
|
||||
<path d='M12 22.13L16.05 9.67H7.95L12 22.13z' fill='#E24329' />
|
||||
<path d='M12 22.13L7.95 9.67H1.69L12 22.13z' fill='#FC6D26' />
|
||||
<path d='M1.69 9.67L.47 13.45a.84.84 0 0 0 .3.94L12 22.13 1.69 9.67z' fill='#FCA326' />
|
||||
<path
|
||||
d='M1.69 9.67H7.95L5.51 2.16A.42.42 0 0 0 4.93 2a.42.42 0 0 0-.11.18L1.69 9.67z'
|
||||
fill='#E24329'
|
||||
/>
|
||||
<path d='M12 22.13L16.05 9.67H22.31L12 22.13z' fill='#FC6D26' />
|
||||
<path d='M22.31 9.67L23.53 13.45a.84.84 0 0 1-.3.94L12 22.13 22.31 9.67z' fill='#FCA326' />
|
||||
<path
|
||||
d='M22.31 9.67H16.05l2.44-7.51A.42.42 0 0 1 19.07 2a.42.42 0 0 1 .11.18l3.13 7.49z'
|
||||
fill='#E24329'
|
||||
/>
|
||||
</svg>
|
||||
)
|
||||
}
|
||||
|
||||
export function SerperIcon(props: SVGProps<SVGSVGElement>) {
|
||||
return (
|
||||
<svg viewBox='0 0 654 600' xmlns='http://www.w3.org/2000/svg' {...props}>
|
||||
@@ -649,6 +673,37 @@ export function GmailIcon(props: SVGProps<SVGSVGElement>) {
|
||||
)
|
||||
}
|
||||
|
||||
export function GrafanaIcon(props: SVGProps<SVGSVGElement>) {
|
||||
return (
|
||||
<svg
|
||||
{...props}
|
||||
width='800px'
|
||||
height='800px'
|
||||
viewBox='0 0 16 16'
|
||||
xmlns='http://www.w3.org/2000/svg'
|
||||
fill='none'
|
||||
>
|
||||
<path
|
||||
fill='url(#grafana-color-16__paint0_linear_2372_364)'
|
||||
d='M13.985 7.175a4.408 4.408 0 00-.138-.802 5.035 5.035 0 00-1.054-1.998 2.96 2.96 0 00-.366-.393c.198-.787-.245-1.468-.245-1.468-.764-.046-1.237.227-1.42.363-.031-.015-.062-.03-.092-.03-.122-.046-.26-.106-.397-.137-.138-.045-.275-.075-.413-.12-.137-.031-.29-.061-.443-.092-.03 0-.046 0-.076-.015C9.005 1.44 8.058 1 8.058 1 7.004 1.666 6.79 2.604 6.79 2.604s0 .015-.016.06l-.183.046c-.076.03-.168.06-.244.076-.077.03-.168.06-.245.09-.153.076-.32.152-.473.228-.153.09-.306.181-.443.272-.016-.015-.03-.015-.03-.015-1.467-.545-2.766.136-2.766.136-.122 1.544.58 2.528.733 2.71-.03.09-.06.196-.091.287a8.104 8.104 0 00-.245 1.09c0 .06-.015.106-.015.166C1.397 8.386 1 9.748 1 9.748c1.13 1.287 2.46 1.377 2.46 1.377.167.303.366.575.58.848.092.106.183.212.29.318a3.014 3.014 0 00.061 2.149c1.268.045 2.093-.545 2.261-.681.122.045.26.076.382.106.382.106.78.151 1.176.181h.49c.595.848 1.634.954 1.634.954.748-.772.779-1.544.779-1.71v-.015-.03-.03c.153-.107.305-.228.443-.35a5.37 5.37 0 00.779-.892c.015-.03.046-.06.061-.09.84.045 1.436-.515 1.436-.515-.138-.863-.642-1.287-.749-1.378l-.015-.015h-.015s-.015 0-.015-.015c0-.045.015-.106.015-.151 0-.091.015-.182.015-.288V9.4v-.166-.076-.152l-.015-.075c-.015-.091-.03-.197-.061-.288a3.506 3.506 0 00-.428-1.044 3.856 3.856 0 00-.718-.848 3.784 3.784 0 00-.901-.575 3.347 3.347 0 00-.993-.272c-.168-.015-.336-.03-.504-.03H9.37 9.204c-.092.015-.169.015-.26.03-.336.06-.642.181-.932.348-.275.166-.52.363-.718.605a2.579 2.579 0 00-.459.757 2.63 2.63 0 00-.183.817v.393c.015.137.046.273.077.394.076.258.183.485.336.666.137.197.32.348.504.485.183.12.382.212.58.272.199.06.382.076.565.076h.244c.031 0 .047 0 .062-.015.015 0 .046-.015.061-.015.046-.016.076-.016.122-.03l.23-.092a.869.869 0 00.198-.12c.015-.016.03-.03.046-.03a.129.129 0 00.015-.198c-.046-.06-.122-.075-.183-.03-.015.015-.03.015-.046.03-.046.03-.107.046-.168.06l-.183.046c-.03 0-.061.015-.092.015H8.73a1.519 1.519 0 01-.825-.378 1.452 1.452 0 01-.306-.378 1.655 1.655 0 01-.168-.485c-.015-.09-.015-.166-.015-.257v-.106-.03c0-.046.015-.091.015-.136.061-.364.26-.727.55-1 .077-.075.153-.136.23-.181.076-.06.167-.106.259-.151.092-.046.183-.076.29-.106a.993.993 0 01.306-.046h.321c.107.015.229.03.336.046.214.045.427.12.626.242.397.212.733.56.947.969.107.211.183.423.214.65.015.06.015.121.015.167v.363c0 .06-.015.121-.015.182 0 .06-.015.12-.03.181l-.046.182c-.03.121-.077.242-.123.363a3.183 3.183 0 01-.366.666 3.002 3.002 0 01-1.91 1.18c-.122.016-.26.03-.382.046h-.198c-.061 0-.138 0-.199-.015a3.637 3.637 0 01-.81-.151 4.068 4.068 0 01-.748-.303 4.098 4.098 0 01-1.696-1.695 4.398 4.398 0 01-.29-.742c-.076-.257-.107-.514-.137-.772v-.302-.091c0-.136.015-.258.03-.394s.046-.272.061-.393c.03-.137.061-.258.092-.394a5.33 5.33 0 01.275-.741c.214-.47.504-.893.855-1.226.092-.091.184-.167.275-.243.092-.075.184-.136.29-.211a5.39 5.39 0 01.306-.182c.046-.03.107-.045.153-.076a.26.26 0 01.076-.03.26.26 0 01.077-.03c.107-.046.229-.091.336-.121.03-.015.06-.015.091-.03.03-.016.061-.016.092-.03.061-.016.122-.031.168-.046.03-.015.061-.015.092-.015.03 0 .06-.016.091-.016.03 0 .061-.015.092-.015l.046-.015h.046c.03 0 .06-.015.091-.015.03 0 .061-.015.107-.015.03 0 .077-.015.107-.015h.764c.23.015.443.03.657.075.428.076.84.212 1.207.394.366.182.702.393.977.636l.046.045.046.045c.03.03.061.061.107.091l.092.091.091.09c.123.122.23.258.336.394.199.258.367.515.49.772.014.015.014.03.03.046.015.015.015.03.015.045l.046.09.046.092.045.09c.046.122.092.228.123.333.06.167.107.318.137.455.015.045.061.09.122.075a.104.104 0 00.107-.106c.092-.227.092-.393.077-.575z'
|
||||
/>
|
||||
<defs>
|
||||
<linearGradient
|
||||
id='grafana-color-16__paint0_linear_2372_364'
|
||||
x1='7.502'
|
||||
x2='7.502'
|
||||
y1='18.142'
|
||||
y2='5.356'
|
||||
gradientUnits='userSpaceOnUse'
|
||||
>
|
||||
<stop stopColor='#FFF200' />
|
||||
<stop offset='1' stopColor='#F15A29' />
|
||||
</linearGradient>
|
||||
</defs>
|
||||
</svg>
|
||||
)
|
||||
}
|
||||
|
||||
export function GoogleDriveIcon(props: SVGProps<SVGSVGElement>) {
|
||||
return (
|
||||
<svg
|
||||
@@ -1029,6 +1084,27 @@ export function GoogleDocsIcon(props: SVGProps<SVGSVGElement>) {
|
||||
)
|
||||
}
|
||||
|
||||
export function GoogleSlidesIcon(props: SVGProps<SVGSVGElement>) {
|
||||
return (
|
||||
<svg
|
||||
{...props}
|
||||
xmlns='http://www.w3.org/2000/svg'
|
||||
viewBox='0 0 48 48'
|
||||
width='96px'
|
||||
height='96px'
|
||||
>
|
||||
<path
|
||||
fill='#FFC107'
|
||||
d='M37,45H11c-1.657,0-3-1.343-3-3V6c0-1.657,1.343-3,3-3h19l10,10v29C40,43.657,38.657,45,37,45z'
|
||||
/>
|
||||
<path fill='#FFECB3' d='M40 13L30 13 30 3z' />
|
||||
<path fill='#FFA000' d='M30 13L40 23 40 13z' />
|
||||
<path fill='#FFF8E1' d='M14 21H34V35H14z' />
|
||||
<path fill='#FFA000' d='M16 23H32V26H16zM16 28H28V30H16z' />
|
||||
</svg>
|
||||
)
|
||||
}
|
||||
|
||||
export function GoogleCalendarIcon(props: SVGProps<SVGSVGElement>) {
|
||||
return (
|
||||
<svg
|
||||
@@ -1259,7 +1335,7 @@ export function ConfluenceIcon(props: SVGProps<SVGSVGElement>) {
|
||||
|
||||
export function TwilioIcon(props: SVGProps<SVGSVGElement>) {
|
||||
return (
|
||||
<svg {...props} xmlns='http://www.w3.org/2000/svg' viewBox='0 0 256 256'>
|
||||
<svg {...props} xmlns='http://www.w3.org/2000/svg' viewBox='-8 -8 272 272'>
|
||||
<path
|
||||
fill='currentColor'
|
||||
d='M128 0c70.656 0 128 57.344 128 128s-57.344 128-128 128S0 198.656 0 128 57.344 0 128 0zm0 33.792c-52.224 0-94.208 41.984-94.208 94.208S75.776 222.208 128 222.208s94.208-41.984 94.208-94.208S180.224 33.792 128 33.792zm31.744 99.328c14.704 0 26.624 11.92 26.624 26.624 0 14.704-11.92 26.624-26.624 26.624-14.704 0-26.624-11.92-26.624-26.624 0-14.704 11.92-26.624 26.624-26.624zm-63.488 0c14.704 0 26.624 11.92 26.624 26.624 0 14.704-11.92 26.624-26.624 26.624-14.704 0-26.624-11.92-26.624-26.624 0-14.704 11.92-26.624 26.624-26.624zm63.488-63.488c14.704 0 26.624 11.92 26.624 26.624 0 14.704-11.92 26.624-26.624 26.624-14.704 0-26.624-11.92-26.624-26.624 0-14.704 11.92-26.624 26.624-26.624zm-63.488 0c14.704 0 26.624 11.92 26.624 26.624 0 14.704-11.92 26.624-26.624 26.624-14.704 0-26.624-11.92-26.624-26.624 0-14.704 11.92-26.624 26.624-26.624z'
|
||||
@@ -1666,21 +1742,13 @@ export function ElevenLabsIcon(props: SVGProps<SVGSVGElement>) {
|
||||
|
||||
export function LinkupIcon(props: SVGProps<SVGSVGElement>) {
|
||||
return (
|
||||
<svg
|
||||
{...props}
|
||||
xmlns='http://www.w3.org/2000/svg'
|
||||
viewBox='0 0 24 24'
|
||||
width='24'
|
||||
height='24'
|
||||
fill='none'
|
||||
>
|
||||
<path
|
||||
d='M20.2 14.1c-.4-.3-1.6-.4-2.9-.2.5-1.4 1.3-3.9.1-5-.6-.5-1.5-.7-2.6-.5-.3 0-.6.1-1 .2-1.1-1.6-2.4-2.5-3.8-2.5-1.6 0-3.1 1-4.1 2.9-1.2 2.1-1.9 5.1-1.9 8.8v.03l.4.3c3-.9 7.5-2.3 10.7-2.9 0 .9.1 1.9.1 2.8v.03l.4.3c.1 0 5.4-1.7 5.3-3.3 0-.2-.1-.5-.3-.7zM19.9 14.7c.03.4-1.7 1.4-4 2.3.5-.7 1-1.6 1.3-2.5 1.4-.1 2.4-.1 2.7.2zM16.4 14.6c-.3.7-.7 1.4-1.2 2-.02-.6-.1-1.2-.2-1.8.4-.1.9-.1 1.4-.2zM16.5 9.4c.8.7.9 2.4.1 5.1-.5.1-1 .1-1.5.2-.3-2-.9-3.8-1.7-5.3.3-.1.6-.2.8-.2.9-.1 1.7.05 2.3.2zM9.5 6.8c1.2 0 2.3.7 3.2 2.1-2.8 1.1-5.9 3.4-8.4 7.8.2-5.1 1.9-9.9 5.2-9.9zM4.7 17c3.4-4.9 6.4-6.8 8.4-7.8.7 1.3 1.2 2.9 1.5 4.8-3.2.6-7.3 1.8-9.9 3z'
|
||||
fill='currentColor'
|
||||
stroke='currentColor'
|
||||
strokeWidth='0.5'
|
||||
strokeLinejoin='round'
|
||||
/>
|
||||
<svg {...props} xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'>
|
||||
<g transform='translate(12, 12) scale(1.3) translate(-12, -12)'>
|
||||
<path
|
||||
d='M20.2 14.1c-.4-.3-1.6-.4-2.9-.2.5-1.4 1.3-3.9.1-5-.6-.5-1.5-.7-2.6-.5-.3 0-.6.1-1 .2-1.1-1.6-2.4-2.5-3.8-2.5-1.6 0-3.1 1-4.1 2.9-1.2 2.1-1.9 5.1-1.9 8.8v.03l.4.3c3-.9 7.5-2.3 10.7-2.9 0 .9.1 1.9.1 2.8v.03l.4.3c.1 0 5.4-1.7 5.3-3.3 0-.2-.1-.5-.3-.7zM19.9 14.7c.03.4-1.7 1.4-4 2.3.5-.7 1-1.6 1.3-2.5 1.4-.1 2.4-.1 2.7.2zM16.4 14.6c-.3.7-.7 1.4-1.2 2-.02-.6-.1-1.2-.2-1.8.4-.1.9-.1 1.4-.2zM16.5 9.4c.8.7.9 2.4.1 5.1-.5.1-1 .1-1.5.2-.3-2-.9-3.8-1.7-5.3.3-.1.6-.2.8-.2.9-.1 1.7.05 2.3.2zM9.5 6.8c1.2 0 2.3.7 3.2 2.1-2.8 1.1-5.9 3.4-8.4 7.8.2-5.1 1.9-9.9 5.2-9.9zM4.7 17c3.4-4.9 6.4-6.8 8.4-7.8.7 1.3 1.2 2.9 1.5 4.8-3.2.6-7.3 1.8-9.9 3z'
|
||||
fill='#000000'
|
||||
/>
|
||||
</g>
|
||||
</svg>
|
||||
)
|
||||
}
|
||||
@@ -2710,111 +2778,19 @@ export function MicrosoftSharepointIcon(props: SVGProps<SVGSVGElement>) {
|
||||
|
||||
export function MicrosoftPlannerIcon(props: SVGProps<SVGSVGElement>) {
|
||||
return (
|
||||
<svg
|
||||
{...props}
|
||||
xmlnsXlink='http://www.w3.org/1999/xlink'
|
||||
viewBox='0 0 24 24'
|
||||
fill='none'
|
||||
xmlns='http://www.w3.org/2000/svg'
|
||||
>
|
||||
<g clipPath='url(#msplanner_clip0)'>
|
||||
<path
|
||||
d='M8.25809 15.7412C7.22488 16.7744 5.54971 16.7744 4.5165 15.7412L0.774909 11.9996C-0.258303 10.9664 -0.258303 9.29129 0.774908 8.25809L4.5165 4.51655C5.54971 3.48335 7.22488 3.48335 8.25809 4.51655L11.9997 8.2581C13.0329 9.29129 13.0329 10.9664 11.9997 11.9996L8.25809 15.7412Z'
|
||||
fill='url(#msplanner_paint0_linear)'
|
||||
/>
|
||||
<path
|
||||
d='M8.25809 15.7412C7.22488 16.7744 5.54971 16.7744 4.5165 15.7412L0.774909 11.9996C-0.258303 10.9664 -0.258303 9.29129 0.774908 8.25809L4.5165 4.51655C5.54971 3.48335 7.22488 3.48335 8.25809 4.51655L11.9997 8.2581C13.0329 9.29129 13.0329 10.9664 11.9997 11.9996L8.25809 15.7412Z'
|
||||
fill='url(#msplanner_paint1_linear)'
|
||||
/>
|
||||
<path
|
||||
d='M0.774857 11.9999C1.80809 13.0331 3.48331 13.0331 4.51655 11.9999L15.7417 0.774926C16.7749 -0.258304 18.4501 -0.258309 19.4834 0.774914L23.225 4.51655C24.2583 5.54977 24.2583 7.22496 23.225 8.25819L11.9999 19.4832C10.9667 20.5164 9.29146 20.5164 8.25822 19.4832L0.774857 11.9999Z'
|
||||
fill='url(#msplanner_paint2_linear)'
|
||||
/>
|
||||
<path
|
||||
d='M0.774857 11.9999C1.80809 13.0331 3.48331 13.0331 4.51655 11.9999L15.7417 0.774926C16.7749 -0.258304 18.4501 -0.258309 19.4834 0.774914L23.225 4.51655C24.2583 5.54977 24.2583 7.22496 23.225 8.25819L11.9999 19.4832C10.9667 20.5164 9.29146 20.5164 8.25822 19.4832L0.774857 11.9999Z'
|
||||
fill='url(#msplanner_paint3_linear)'
|
||||
/>
|
||||
<path
|
||||
d='M4.51642 15.7413C5.54966 16.7746 7.22487 16.7746 8.25812 15.7413L15.7415 8.25803C16.7748 7.2248 18.45 7.2248 19.4832 8.25803L23.2249 11.9997C24.2582 13.0329 24.2582 14.7081 23.2249 15.7413L15.7415 23.2246C14.7083 24.2579 13.033 24.2579 11.9998 23.2246L4.51642 15.7413Z'
|
||||
fill='url(#msplanner_paint4_linear)'
|
||||
/>
|
||||
<path
|
||||
d='M4.51642 15.7413C5.54966 16.7746 7.22487 16.7746 8.25812 15.7413L15.7415 8.25803C16.7748 7.2248 18.45 7.2248 19.4832 8.25803L23.2249 11.9997C24.2582 13.0329 24.2582 14.7081 23.2249 15.7413L15.7415 23.2246C14.7083 24.2579 13.033 24.2579 11.9998 23.2246L4.51642 15.7413Z'
|
||||
fill='url(#msplanner_paint5_linear)'
|
||||
/>
|
||||
</g>
|
||||
<defs>
|
||||
<linearGradient
|
||||
id='msplanner_paint0_linear'
|
||||
x1='6.38724'
|
||||
y1='3.74167'
|
||||
x2='2.15779'
|
||||
y2='12.777'
|
||||
gradientUnits='userSpaceOnUse'
|
||||
>
|
||||
<stop stopColor='#8752E0' />
|
||||
<stop offset='1' stopColor='#541278' />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id='msplanner_paint1_linear'
|
||||
x1='8.38032'
|
||||
y1='11.0696'
|
||||
x2='4.94062'
|
||||
y2='7.69244'
|
||||
gradientUnits='userSpaceOnUse'
|
||||
>
|
||||
<stop offset='0.12172' stopColor='#3D0D59' />
|
||||
<stop offset='1' stopColor='#7034B0' stopOpacity='0' />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id='msplanner_paint2_linear'
|
||||
x1='18.3701'
|
||||
y1='-3.33385e-05'
|
||||
x2='9.85717'
|
||||
y2='20.4192'
|
||||
gradientUnits='userSpaceOnUse'
|
||||
>
|
||||
<stop stopColor='#DB45E0' />
|
||||
<stop offset='1' stopColor='#6C0F71' />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id='msplanner_paint3_linear'
|
||||
x1='18.3701'
|
||||
y1='-3.33385e-05'
|
||||
x2='9.85717'
|
||||
y2='20.4192'
|
||||
gradientUnits='userSpaceOnUse'
|
||||
>
|
||||
<stop stopColor='#DB45E0' />
|
||||
<stop offset='0.677403' stopColor='#A829AE' />
|
||||
<stop offset='1' stopColor='#8F28B3' />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id='msplanner_paint4_linear'
|
||||
x1='18.0002'
|
||||
y1='7.49958'
|
||||
x2='14.0004'
|
||||
y2='23.9988'
|
||||
gradientUnits='userSpaceOnUse'
|
||||
>
|
||||
<stop stopColor='#3DCBFF' />
|
||||
<stop offset='1' stopColor='#00479E' />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id='msplanner_paint5_linear'
|
||||
x1='18.2164'
|
||||
y1='7.92626'
|
||||
x2='10.5237'
|
||||
y2='22.9363'
|
||||
gradientUnits='userSpaceOnUse'
|
||||
>
|
||||
<stop stopColor='#3DCBFF' />
|
||||
<stop offset='1' stopColor='#4A40D4' />
|
||||
</linearGradient>
|
||||
<clipPath id='msplanner_clip0'>
|
||||
<rect width='24' height='24' fill='white' />
|
||||
</clipPath>
|
||||
</defs>
|
||||
<svg {...props} viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'>
|
||||
<path
|
||||
d='M8.25809 15.7412C7.22488 16.7744 5.54971 16.7744 4.5165 15.7412L0.774909 11.9996C-0.258303 10.9664 -0.258303 9.29129 0.774908 8.25809L4.5165 4.51655C5.54971 3.48335 7.22488 3.48335 8.25809 4.51655L11.9997 8.2581C13.0329 9.29129 13.0329 10.9664 11.9997 11.9996L8.25809 15.7412Z'
|
||||
fill='#185ABD'
|
||||
/>
|
||||
<path
|
||||
d='M0.774857 11.9999C1.80809 13.0331 3.48331 13.0331 4.51655 11.9999L15.7417 0.774926C16.7749 -0.258304 18.4501 -0.258309 19.4834 0.774914L23.225 4.51655C24.2583 5.54977 24.2583 7.22496 23.225 8.25819L11.9999 19.4832C10.9667 20.5164 9.29146 20.5164 8.25822 19.4832L0.774857 11.9999Z'
|
||||
fill='#41A5EE'
|
||||
/>
|
||||
<path
|
||||
d='M4.51642 15.7413C5.54966 16.7746 7.22487 16.7746 8.25812 15.7413L15.7415 8.25803C16.7748 7.2248 18.45 7.2248 19.4832 8.25803L23.2249 11.9997C24.2582 13.0329 24.2582 14.7081 23.2249 15.7413L15.7415 23.2246C14.7083 24.2579 13.033 24.2579 11.9998 23.2246L4.51642 15.7413Z'
|
||||
fill='#2B7CD3'
|
||||
/>
|
||||
</svg>
|
||||
)
|
||||
}
|
||||
@@ -3297,29 +3273,10 @@ export function TrelloIcon(props: SVGProps<SVGSVGElement>) {
|
||||
|
||||
export function AsanaIcon(props: SVGProps<SVGSVGElement>) {
|
||||
return (
|
||||
<svg
|
||||
{...props}
|
||||
xmlns='http://www.w3.org/2000/svg'
|
||||
width='24'
|
||||
height='24'
|
||||
viewBox='781.361 0 944.893 873.377'
|
||||
>
|
||||
<radialGradient
|
||||
id='asana_radial_gradient'
|
||||
cx='943.992'
|
||||
cy='1221.416'
|
||||
r='.663'
|
||||
gradientTransform='matrix(944.8934 0 0 -873.3772 -890717.875 1067234.75)'
|
||||
gradientUnits='userSpaceOnUse'
|
||||
>
|
||||
<stop offset='0' stopColor='#ffb900' />
|
||||
<stop offset='.6' stopColor='#f95d8f' />
|
||||
<stop offset='.999' stopColor='#f95353' />
|
||||
</radialGradient>
|
||||
<path
|
||||
fill='url(#asana_radial_gradient)'
|
||||
d='M1520.766 462.371c-113.508 0-205.508 92-205.508 205.488 0 113.499 92 205.518 205.508 205.518 113.489 0 205.488-92.019 205.488-205.518 0-113.488-91.999-205.488-205.488-205.488zm-533.907.01c-113.489.01-205.498 91.99-205.498 205.488 0 113.489 92.009 205.498 205.498 205.498 113.498 0 205.508-92.009 205.508-205.498 0-113.499-92.01-205.488-205.518-205.488h.01zm472.447-256.883c0 113.489-91.999 205.518-205.488 205.518-113.508 0-205.508-92.029-205.508-205.518S1140.31 0 1253.817 0c113.489 0 205.479 92.009 205.479 205.498h.01z'
|
||||
/>
|
||||
<svg {...props} xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none'>
|
||||
<circle cx='18' cy='16' r='4' fill='#F06A6A' />
|
||||
<circle cx='6' cy='16' r='4' fill='#F06A6A' />
|
||||
<circle cx='12' cy='6.5' r='4' fill='#F06A6A' />
|
||||
</svg>
|
||||
)
|
||||
}
|
||||
@@ -3694,6 +3651,22 @@ export function ZendeskIcon(props: SVGProps<SVGSVGElement>) {
|
||||
)
|
||||
}
|
||||
|
||||
export function ZoomIcon(props: SVGProps<SVGSVGElement>) {
|
||||
return (
|
||||
<svg
|
||||
{...props}
|
||||
fill='currentColor'
|
||||
width='800px'
|
||||
height='800px'
|
||||
viewBox='0 0 32 32'
|
||||
version='1.1'
|
||||
xmlns='http://www.w3.org/2000/svg'
|
||||
>
|
||||
<path d='M19.283 17.4c-0.367 0.374-0.879 0.606-1.444 0.606-1.117 0-2.023-0.906-2.023-2.023s0.906-2.023 2.023-2.023c0.929 0 1.712 0.626 1.949 1.479l0.003 0.014c0.045 0.159 0.071 0.341 0.071 0.53 0 0.552-0.221 1.052-0.579 1.417l0-0zM15.471 13.586c-0.648 0.615-1.052 1.483-1.052 2.446 0 1.861 1.509 3.37 3.37 3.37s3.37-1.509 3.37-3.37c0-1.54-1.033-2.838-2.444-3.241l-0.024-0.006c-0.27-0.078-0.581-0.123-0.902-0.123-0.899 0-1.716 0.352-2.32 0.925l0.002-0.001zM28.296 12.601c-0.802 0.001-1.522 0.352-2.016 0.909l-0.002 0.003c-0.496-0.562-1.219-0.915-2.023-0.915-0.563 0-1.086 0.173-1.519 0.468l0.009-0.006c-0.316-0.278-0.73-0.451-1.184-0.462l-0.002-0v6.742l0.337-0.016c0.544-0.014 0.981-0.451 0.995-0.993l0-0.001 0.016-0.337v-2.361l0.017-0.337c0-0.001 0-0.002 0-0.003 0-0.245 0.061-0.477 0.169-0.679l-0.004 0.008c0.238-0.405 0.671-0.672 1.166-0.672s0.928 0.267 1.162 0.664l0.003 0.006c0.103 0.196 0.164 0.428 0.165 0.675v0l0.017 0.339v2.361l0.016 0.336c0.022 0.54 0.454 0.972 0.991 0.995l0.002 0 0.337 0.016v-3.708l0.015-0.337c0-0.001 0-0.002 0-0.003 0-0.247 0.062-0.48 0.171-0.683l-0.004 0.008c0.238-0.403 0.67-0.669 1.165-0.669 0.496 0 0.929 0.268 1.164 0.666l0.003 0.006c0.102 0.195 0.162 0.427 0.162 0.673 0 0.001 0 0.001 0 0.002v-0l0.019 0.337v2.361l0.016 0.336c0.020 0.541 0.454 0.975 0.993 0.995l0.002 0 0.337 0.016v-4.045c-0.001-1.488-1.208-2.694-2.697-2.694-0.001 0-0.002 0-0.003 0h0zM12.206 17.4c-0.37 0.393-0.894 0.638-1.475 0.638-1.117 0-2.023-0.906-2.023-2.023s0.906-2.023 2.023-2.023c0.924 0 1.703 0.619 1.945 1.465l0.004 0.014c0.047 0.163 0.075 0.351 0.075 0.544 0 0.536-0.209 1.024-0.549 1.386l0.001-0.001zM10.78 12.6h-0.005c-1.86 0.001-3.367 1.509-3.367 3.368s1.508 3.368 3.368 3.368 3.368-1.508 3.368-3.368c0-1.86-1.507-3.367-3.366-3.368h-0zM6.734 18.008l-0.337-0.015h-3.035l4.044-4.045-0.016-0.337c-0.013-0.544-0.451-0.982-0.994-0.995l-0.001-0-0.337-0.016h-5.052l0.018 0.337c0.026 0.538 0.455 0.967 0.99 0.995l0.002 0 0.337 0.016h3.037l-4.049 4.045 0.017 0.336c0.019 0.541 0.453 0.975 0.992 0.995l0.002 0 0.337 0.016h5.056l-0.018-0.337c-0.024-0.539-0.455-0.969-0.991-0.993l-0.002-0z' />
|
||||
</svg>
|
||||
)
|
||||
}
|
||||
|
||||
export function PylonIcon(props: SVGProps<SVGSVGElement>) {
|
||||
return (
|
||||
<svg
|
||||
@@ -3801,6 +3774,47 @@ export function SmtpIcon(props: SVGProps<SVGSVGElement>) {
|
||||
)
|
||||
}
|
||||
|
||||
export function SshIcon(props: SVGProps<SVGSVGElement>) {
|
||||
return (
|
||||
<svg
|
||||
{...props}
|
||||
xmlns='http://www.w3.org/2000/svg'
|
||||
width='24'
|
||||
height='24'
|
||||
viewBox='0 0 24 24'
|
||||
fill='none'
|
||||
stroke='currentColor'
|
||||
strokeWidth='2'
|
||||
strokeLinecap='round'
|
||||
strokeLinejoin='round'
|
||||
>
|
||||
<rect x='2' y='4' width='20' height='16' rx='2' />
|
||||
<path d='M6 8h.01' />
|
||||
<path d='M10 8h.01' />
|
||||
<path d='M14 8h8' />
|
||||
<path d='M6 12l3 3-3 3' />
|
||||
<path d='M12 18h6' />
|
||||
</svg>
|
||||
)
|
||||
}
|
||||
|
||||
export function SftpIcon(props: SVGProps<SVGSVGElement>) {
|
||||
return (
|
||||
<svg
|
||||
{...props}
|
||||
xmlns='http://www.w3.org/2000/svg'
|
||||
viewBox='0 0 32 32'
|
||||
width='32px'
|
||||
height='32px'
|
||||
>
|
||||
<path
|
||||
d='M 6 3 L 6 29 L 26 29 L 26 9.59375 L 25.71875 9.28125 L 19.71875 3.28125 L 19.40625 3 Z M 8 5 L 18 5 L 18 11 L 24 11 L 24 27 L 8 27 Z M 20 6.4375 L 22.5625 9 L 20 9 Z'
|
||||
fill='currentColor'
|
||||
/>
|
||||
</svg>
|
||||
)
|
||||
}
|
||||
|
||||
export function ApifyIcon(props: SVGProps<SVGSVGElement>) {
|
||||
return (
|
||||
<svg
|
||||
@@ -3887,3 +3901,301 @@ export function DynamoDBIcon(props: SVGProps<SVGSVGElement>) {
|
||||
</svg>
|
||||
)
|
||||
}
|
||||
|
||||
export function McpIcon(props: SVGProps<SVGSVGElement>) {
|
||||
return (
|
||||
<svg
|
||||
{...props}
|
||||
width='16'
|
||||
height='16'
|
||||
viewBox='0 0 16 16'
|
||||
fill='none'
|
||||
xmlns='http://www.w3.org/2000/svg'
|
||||
>
|
||||
<g clipPath='url(#mcp-clip)'>
|
||||
<path
|
||||
fillRule='evenodd'
|
||||
clipRule='evenodd'
|
||||
d='M14.5572 7.87503L14.5022 7.92903L8.69824 13.62C8.68102 13.6368 8.66728 13.6569 8.65781 13.679C8.64834 13.7011 8.64332 13.7248 8.64304 13.7489C8.64276 13.773 8.64723 13.7968 8.65619 13.8192C8.66514 13.8415 8.67842 13.8618 8.69524 13.879L8.69824 13.882L9.89024 15.052C9.99431 15.1536 10.0539 15.2923 10.056 15.4378C10.058 15.5832 10.0024 15.7235 9.90124 15.828L9.89124 15.838C9.78385 15.9428 9.63977 16.0014 9.48974 16.0014C9.33972 16.0014 9.19564 15.9428 9.08824 15.838L7.89624 14.67C7.77347 14.5507 7.67588 14.408 7.60923 14.2503C7.54259 14.0927 7.50825 13.9232 7.50825 13.752C7.50825 13.5808 7.54259 13.4114 7.60923 13.2537C7.67588 13.096 7.77347 12.9533 7.89624 12.834L13.7012 7.14203C14.0139 6.83733 14.1928 6.42097 14.1986 5.98444C14.2044 5.54792 14.0367 5.12694 13.7322 4.81403L13.7012 4.78203L13.6672 4.75003C13.3455 4.43669 12.9143 4.26118 12.4651 4.2608C12.016 4.26043 11.5845 4.43522 11.2622 4.74803L6.48124 9.43803H6.47924L6.41424 9.50303C6.30685 9.60778 6.16277 9.66642 6.01274 9.66642C5.86272 9.66642 5.71864 9.60778 5.61124 9.50303C5.50731 9.40128 5.44791 9.26252 5.44604 9.11709C5.44417 8.97166 5.49997 8.83141 5.60124 8.72703L5.61124 8.71703L10.4602 3.96003C11.1102 3.32403 11.1232 2.28203 10.4872 1.63103L10.4582 1.60103C10.1362 1.28736 9.70433 1.11183 9.25474 1.11183C8.80516 1.11183 8.37333 1.28736 8.05124 1.60103L1.63524 7.89603C1.5279 8.00048 1.38403 8.05893 1.23424 8.05893C1.08446 8.05893 0.940591 8.00048 0.833243 7.89603C0.729179 7.79442 0.669597 7.65573 0.667536 7.5103C0.665474 7.36487 0.7211 7.22454 0.822243 7.12003L0.833243 7.11003L7.25024 0.814026C7.78698 0.291743 8.50633 -0.000488281 9.25524 -0.000488281C10.0042 -0.000488281 10.7235 0.291743 11.2602 0.814026C11.8902 1.42703 12.1892 2.30403 12.0632 3.17403C12.9432 3.04903 13.8332 3.34003 14.4692 3.96103L14.5032 3.99403C14.7616 4.24525 14.9679 4.54492 15.1104 4.87591C15.2529 5.2069 15.3287 5.56272 15.3337 5.92304C15.3386 6.28337 15.2725 6.64113 15.1391 6.97589C15.0057 7.31064 14.8076 7.61584 14.5562 7.87403M12.8652 6.32103C12.9692 6.21928 13.0286 6.08052 13.0304 5.93509C13.0323 5.78966 12.9765 5.64941 12.8752 5.54503L12.8652 5.53503C12.7578 5.43027 12.6138 5.37164 12.4637 5.37164C12.3137 5.37164 12.1696 5.43027 12.0622 5.53503L7.31724 10.19C6.99515 10.5037 6.56333 10.6792 6.11374 10.6792C5.66416 10.6792 5.23233 10.5037 4.91024 10.19C4.7552 10.0391 4.63143 9.85901 4.54601 9.66018C4.46058 9.46135 4.41518 9.24763 4.4124 9.03124C4.40961 8.81486 4.4495 8.60004 4.52977 8.39908C4.61005 8.19812 4.72914 8.01494 4.88024 7.86003L4.91124 7.82903L9.65824 3.17403C9.76231 3.07242 9.82189 2.93373 9.82395 2.7883C9.82601 2.64287 9.77039 2.50254 9.66924 2.39803L9.65824 2.38803C9.55085 2.28327 9.40677 2.22464 9.25674 2.22464C9.10672 2.22464 8.96264 2.28327 8.85524 2.38803L4.10824 7.04203C3.84537 7.29765 3.63642 7.60338 3.49374 7.94115C3.35107 8.27892 3.27755 8.64186 3.27755 9.00853C3.27755 9.37519 3.35107 9.73814 3.49374 10.0759C3.63642 10.4137 3.84537 10.7194 4.10824 10.975C4.64515 11.4974 5.36467 11.7896 6.11374 11.7896C6.86282 11.7896 7.58234 11.4974 8.11924 10.975L12.8652 6.32103Z'
|
||||
fill='currentColor'
|
||||
/>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id='mcp-clip'>
|
||||
<rect width='16' height='16' fill='white' />
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
)
|
||||
}
|
||||
|
||||
export function WordpressIcon(props: SVGProps<SVGSVGElement>) {
|
||||
return (
|
||||
<svg {...props} xmlns='http://www.w3.org/2000/svg' viewBox='0 0 25.925 25.925'>
|
||||
<g fill='currentColor'>
|
||||
<path d='M1.843,12.962c0,4.401,2.557,8.205,6.267,10.008L2.805,8.437C2.189,9.819,1.843,11.35,1.843,12.962z M20.469,12.4c0-1.374-0.493-2.326-0.917-3.066c-0.563-0.917-1.092-1.691-1.092-2.608c0-1.021,0.775-1.973,1.867-1.973c0.049,0,0.096,0.006,0.145,0.008c-1.979-1.813-4.615-2.919-7.509-2.919c-3.885,0-7.303,1.993-9.291,5.013c0.261,0.008,0.507,0.013,0.716,0.013c1.163,0,2.963-0.142,2.963-0.142c0.599-0.035,0.67,0.846,0.071,0.917c0,0-0.603,0.07-1.272,0.105l4.049,12.045l2.434-7.298l-1.732-4.747c-0.599-0.035-1.167-0.105-1.167-0.105c-0.6-0.036-0.529-0.953,0.07-0.917c0,0,1.836,0.142,2.928,0.142c1.163,0,2.964-0.142,2.964-0.142c0.6-0.035,0.67,0.846,0.071,0.917c0,0-0.604,0.07-1.272,0.105l4.018,11.953l1.11-3.706C20.187,14.55,20.469,13.353,20.469,12.4z M13.158,13.935l-3.337,9.694c0.997,0.293,2.05,0.453,3.142,0.453c1.294,0,2.537-0.224,3.693-0.63c-0.029-0.048-0.057-0.099-0.08-0.153L13.158,13.935z M22.72,7.627c0.049,0.354,0.075,0.734,0.075,1.144c0,1.128-0.212,2.396-0.846,3.982l-3.396,9.82c3.306-1.928,5.529-5.509,5.529-9.611C24.082,11.028,23.588,9.21,22.72,7.627z' />
|
||||
<path d='M0,12.962c0,7.147,5.815,12.963,12.962,12.963c7.149,0,12.963-5.816,12.963-12.963S20.111,0,12.963,0S0,5.814,0,12.962z M0.594,12.962c0-6.819,5.548-12.368,12.368-12.368s12.369,5.549,12.369,12.368S19.782,25.33,12.963,25.33S0.594,19.781,0.594,12.962z' />
|
||||
</g>
|
||||
</svg>
|
||||
)
|
||||
}
|
||||
|
||||
export function AhrefsIcon(props: SVGProps<SVGSVGElement>) {
|
||||
return (
|
||||
<svg {...props} xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1065 1300'>
|
||||
<path
|
||||
fillRule='evenodd'
|
||||
fill='#ff8800'
|
||||
d='m111.3 0.7h953.4v1264.4h-256.9v-137.8h-21.2c-127 129.9-230.4 172.4-410.4 172.4-227.8 0-376.1-127.3-376.1-339.5v-58.3c0-288.9 121.8-392.4 511-421.5l241-18.6v-180.2h-640.8zm640.8 707.7l-193.4 18.6c-203.9 18.6-248.8 47.8-251.5 169.7-2.7 87.5 42.4 127.2 148.3 127.2 98 0 217.1-53 296.6-132.5z'
|
||||
/>
|
||||
</svg>
|
||||
)
|
||||
}
|
||||
|
||||
export function ShopifyIcon(props: SVGProps<SVGSVGElement>) {
|
||||
return (
|
||||
<svg
|
||||
{...props}
|
||||
xmlns='http://www.w3.org/2000/svg'
|
||||
viewBox='0 0 48 48'
|
||||
width='48px'
|
||||
height='48px'
|
||||
>
|
||||
<path
|
||||
fill='#7cb342'
|
||||
d='M37.216,11.78c-0.023-0.211-0.211-0.305-0.351-0.305s-3.21-0.234-3.21-0.234s-2.132-2.132-2.39-2.343 c-0.234-0.234-0.68-0.164-0.867-0.117c-0.023,0-0.469,0.141-1.195,0.375c-0.726-2.086-1.968-3.984-4.194-3.984h-0.211 C24.187,4.375,23.391,4,22.735,4c-5.155,0-7.639,6.444-8.412,9.725c-2.015,0.633-3.445,1.054-3.609,1.125 c-1.125,0.351-1.148,0.375-1.289,1.429c-0.117,0.797-3.046,23.456-3.046,23.456L29.179,44l12.373-2.671 C41.575,41.282,37.24,11.991,37.216,11.78z M27.937,9.483c-0.562,0.164-1.242,0.375-1.921,0.609V9.671 c0-1.265-0.164-2.296-0.469-3.117C26.718,6.695,27.445,7.984,27.937,9.483L27.937,9.483z M24.117,6.812 c0.305,0.797,0.516,1.922,0.516,3.468v0.234c-1.265,0.398-2.601,0.797-3.984,1.242C21.422,8.804,22.899,7.351,24.117,6.812 L24.117,6.812z M22.617,5.359c0.234,0,0.469,0.094,0.656,0.234c-1.664,0.773-3.421,2.718-4.148,6.655 c-1.101,0.351-2.156,0.656-3.163,0.984C16.806,10.233,18.915,5.359,22.617,5.359z'
|
||||
/>
|
||||
<path
|
||||
fill='#558b2f'
|
||||
d='M36.865,11.428c-0.141,0-3.21-0.234-3.21-0.234s-2.132-2.132-2.39-2.343 C31.17,8.757,31.053,8.71,30.96,8.71L29.249,44l12.373-2.671c0,0-4.335-29.338-4.359-29.549 C37.169,11.569,37.005,11.475,36.865,11.428z'
|
||||
/>
|
||||
<path
|
||||
fill='#fff'
|
||||
d='M24.792,18.593l-1.475,4.449c0,0-1.337-0.715-2.927-0.715c-2.374,0-2.489,1.498-2.489,1.867 c0,2.028,5.301,2.812,5.301,7.583c0,3.757-2.374,6.177-5.578,6.177c-3.872,0-5.808-2.397-5.808-2.397l1.037-3.411 c0,0,2.028,1.752,3.734,1.752c1.129,0,1.59-0.876,1.59-1.521c0-2.651-4.333-2.766-4.333-7.145c0-3.665,2.628-7.214,7.952-7.214 C23.777,17.994,24.792,18.593,24.792,18.593z'
|
||||
/>
|
||||
</svg>
|
||||
)
|
||||
}
|
||||
|
||||
export function BoxCompanyIcon(props: SVGProps<SVGSVGElement>) {
|
||||
return (
|
||||
<svg {...props} xmlns='http://www.w3.org/2000/svg' viewBox='0 0 41 22'>
|
||||
<path
|
||||
d='M39.7 19.2c.5.7.4 1.6-.2 2.1-.7.5-1.7.4-2.2-.2l-3.5-4.5-3.4 4.4c-.5.7-1.5.7-2.2.2-.7-.5-.8-1.4-.3-2.1l4-5.2-4-5.2c-.5-.7-.3-1.7.3-2.2.7-.5 1.7-.3 2.2.3l3.4 4.5L37.3 7c.5-.7 1.4-.8 2.2-.3.7.5.7 1.5.2 2.2L35.8 14l3.9 5.2zm-18.2-.6c-2.6 0-4.7-2-4.7-4.6 0-2.5 2.1-4.6 4.7-4.6s4.7 2.1 4.7 4.6c-.1 2.6-2.2 4.6-4.7 4.6zm-13.8 0c-2.6 0-4.7-2-4.7-4.6 0-2.5 2.1-4.6 4.7-4.6s4.7 2.1 4.7 4.6c0 2.6-2.1 4.6-4.7 4.6zM21.5 6.4c-2.9 0-5.5 1.6-6.8 4-1.3-2.4-3.9-4-6.9-4-1.8 0-3.4.6-4.7 1.5V1.5C3.1.7 2.4 0 1.6 0 .7 0 0 .7 0 1.5v12.6c.1 4.2 3.5 7.5 7.7 7.5 3 0 5.6-1.7 6.9-4.1 1.3 2.4 3.9 4.1 6.8 4.1 4.3 0 7.8-3.4 7.8-7.7.1-4.1-3.4-7.5-7.7-7.5z'
|
||||
fill='currentColor'
|
||||
/>
|
||||
</svg>
|
||||
)
|
||||
}
|
||||
|
||||
export function DropboxIcon(props: SVGProps<SVGSVGElement>) {
|
||||
return (
|
||||
<svg {...props} xmlns='http://www.w3.org/2000/svg' viewBox='0 0 43 40'>
|
||||
<path
|
||||
d='m12.5 0l-12.5 8.1 8.7 7 12.5-7.8-8.7-7.3zm-12.5 21.9l12.5 8.2 8.7-7.3-12.5-7.7-8.7 6.8zm21.2 0.9l8.8 7.3 12.4-8.1-8.6-6.9-12.6 7.7zm21.2-14.7l-12.4-8.1-8.8 7.3 12.6 7.8 8.6-7zm-21.1 16.3l-8.8 7.3-3.7-2.5v2.8l12.5 7.5 12.5-7.5v-2.8l-3.8 2.5-8.7-7.3z'
|
||||
fill='currentColor'
|
||||
/>
|
||||
</svg>
|
||||
)
|
||||
}
|
||||
|
||||
export function ElasticsearchIcon(props: SVGProps<SVGSVGElement>) {
|
||||
return (
|
||||
<svg {...props} xmlns='http://www.w3.org/2000/svg' viewBox='0 0 128 128'>
|
||||
<path
|
||||
fill='#343741'
|
||||
d='M4 64c0 5.535.777 10.879 2.098 16H84c8.836 0 16-7.164 16-16s-7.164-16-16-16H6.098A63.738 63.738 0 0 0 4 64'
|
||||
/>
|
||||
<path
|
||||
fill='#fec514'
|
||||
d='M111.695 30.648A61.485 61.485 0 0 0 117.922 24C106.188 9.379 88.199 0 68 0 42.715 0 20.957 14.71 10.574 36H98.04a20.123 20.123 0 0 0 13.652-5.352'
|
||||
/>
|
||||
<path
|
||||
fill='#00bfb3'
|
||||
d='M98.04 92H10.577C20.961 113.29 42.715 128 68 128c20.2 0 38.188-9.383 49.922-24a61.1 61.1 0 0 0-6.227-6.648A20.133 20.133 0 0 0 98.04 92'
|
||||
/>
|
||||
</svg>
|
||||
)
|
||||
}
|
||||
|
||||
export function GitlabIcon(props: SVGProps<SVGSVGElement>) {
|
||||
return (
|
||||
<svg {...props} xmlns='http://www.w3.org/2000/svg' viewBox='0 0 380 380'>
|
||||
<path
|
||||
fill='#e24329'
|
||||
d='M265.26416,174.37243l-.2134-.55822-21.19899-55.30908c-.4236-1.08359-1.18542-1.99642-2.17699-2.62689-.98837-.63373-2.14749-.93253-3.32305-.87014-1.1689.06239-2.29195.48925-3.20809,1.21821-.90957.73554-1.56629,1.73047-1.87493,2.85346l-14.31327,43.80662h-57.90965l-14.31327-43.80662c-.30864-1.12299-.96536-2.11791-1.87493-2.85346-.91614-.72895-2.03911-1.15582-3.20809-1.21821-1.17548-.06239-2.33468.23641-3.32297.87014-.99166.63047-1.75348,1.5433-2.17707,2.62689l-21.19891,55.31237-.21348.55493c-6.28158,16.38521-.92929,34.90803,13.05891,45.48782.02621.01641.04922.03611.07552.05582l.18719.14119,32.29094,24.17392,15.97151,12.09024,9.71951,7.34871c2.34117,1.77316,5.57877,1.77316,7.92002,0l9.71943-7.34871,15.96822-12.09024,32.48142-24.31511c.02958-.02299.05588-.04269.08538-.06568,13.97834-10.57977,19.32735-29.09604,13.04905-45.47796Z'
|
||||
/>
|
||||
<path
|
||||
fill='#fc6d26'
|
||||
d='M265.26416,174.37243l-.2134-.55822c-10.5174,2.16062-20.20405,6.6099-28.49844,12.81593-.1346.0985-25.20497,19.05805-46.55171,35.19699,15.84998,11.98517,29.6477,22.40405,29.6477,22.40405l32.48142-24.31511c.02958-.02299.05588-.04269.08538-.06568,13.97834-10.57977,19.32735-29.09604,13.04905-45.47796Z'
|
||||
/>
|
||||
<path
|
||||
fill='#fca326'
|
||||
d='M160.34962,244.23117l15.97151,12.09024,9.71951,7.34871c2.34117,1.77316,5.57877,1.77316,7.92002,0l9.71943-7.34871,15.96822-12.09024s-13.79772-10.41888-29.6477-22.40405c-15.85327,11.98517-29.65099,22.40405-29.65099,22.40405Z'
|
||||
/>
|
||||
<path
|
||||
fill='#fc6d26'
|
||||
d='M143.44561,186.63014c-8.29111-6.20274-17.97446-10.65531-28.49507-12.81264l-.21348.55493c-6.28158,16.38521-.92929,34.90803,13.05891,45.48782.02621.01641.04922.03611.07552.05582l.18719.14119,32.29094,24.17392s13.79772-10.41888,29.65099-22.40405c-21.34673-16.13894-46.42031-35.09848-46.55499-35.19699Z'
|
||||
/>
|
||||
</svg>
|
||||
)
|
||||
}
|
||||
|
||||
export function SSHIcon(props: SVGProps<SVGSVGElement>) {
|
||||
return (
|
||||
<svg
|
||||
{...props}
|
||||
xmlns='http://www.w3.org/2000/svg'
|
||||
viewBox='0 0 48 48'
|
||||
width='48px'
|
||||
height='48px'
|
||||
>
|
||||
<path
|
||||
fill='#7cb342'
|
||||
d='M37.216,11.78c-0.023-0.211-0.211-0.305-0.351-0.305s-3.21-0.234-3.21-0.234s-2.132-2.132-2.39-2.343 c-0.234-0.234-0.68-0.164-0.867-0.117c-0.023,0-0.469,0.141-1.195,0.375c-0.726-2.086-1.968-3.984-4.194-3.984h-0.211 C24.187,4.375,23.391,4,22.735,4c-5.155,0-7.639,6.444-8.412,9.725c-2.015,0.633-3.445,1.054-3.609,1.125 c-1.125,0.351-1.148,0.375-1.289,1.429c-0.117,0.797-3.046,23.456-3.046,23.456L29.179,44l12.373-2.671 C41.575,41.282,37.24,11.991,37.216,11.78z M27.937,9.483c-0.562,0.164-1.242,0.375-1.921,0.609V9.671 c0-1.265-0.164-2.296-0.469-3.117C26.718,6.695,27.445,7.984,27.937,9.483L27.937,9.483z M24.117,6.812 c0.305,0.797,0.516,1.922,0.516,3.468v0.234c-1.265,0.398-2.601,0.797-3.984,1.242C21.422,8.804,22.899,7.351,24.117,6.812 L24.117,6.812z M22.617,5.359c0.234,0,0.469,0.094,0.656,0.234c-1.664,0.773-3.421,2.718-4.148,6.655 c-1.101,0.351-2.156,0.656-3.163,0.984C16.806,10.233,18.915,5.359,22.617,5.359z'
|
||||
/>
|
||||
<path
|
||||
fill='#558b2f'
|
||||
d='M36.865,11.428c-0.141,0-3.21-0.234-3.21-0.234s-2.132-2.132-2.39-2.343 C31.17,8.757,31.053,8.71,30.96,8.71L29.249,44l12.373-2.671c0,0-4.335-29.338-4.359-29.549 C37.169,11.569,37.005,11.475,36.865,11.428z'
|
||||
/>
|
||||
<path
|
||||
fill='#fff'
|
||||
d='M24.792,18.593l-1.475,4.449c0,0-1.337-0.715-2.927-0.715c-2.374,0-2.489,1.498-2.489,1.867 c0,2.028,5.301,2.812,5.301,7.583c0,3.757-2.374,6.177-5.578,6.177c-3.872,0-5.808-2.397-5.808-2.397l1.037-3.411 c0,0,2.028,1.752,3.734,1.752c1.129,0,1.59-0.876,1.59-1.521c0-2.651-4.333-2.766-4.333-7.145c0-3.665,2.628-7.214,7.952-7.214 C23.777,17.994,24.792,18.593,24.792,18.593z'
|
||||
/>
|
||||
</svg>
|
||||
)
|
||||
}
|
||||
|
||||
export function DatadogIcon(props: SVGProps<SVGSVGElement>) {
|
||||
return (
|
||||
<svg {...props} xmlns='http://www.w3.org/2000/svg' viewBox='0 0 64 64'>
|
||||
<g fill='currentColor'>
|
||||
<path d='M57.705 33.717l1.575 20.1L31.4 58.82 29 38.72l3.983-.556c.648.278 1.112.37 1.853.556 1.204.278 2.594.648 4.63-.463.463-.278 1.482-1.112 1.853-1.667zm-43.073 23.9c-.463-.74-1.297-1.575-2.594-2.594-1.853-1.482-1.204-4.076-.093-5.65 1.4-2.686 8.707-6.206 8.337-10.56-.185-1.575-.37-3.613-1.853-5.095-.093.556 0 1.112 0 1.112s-.648-.74-.926-1.853c-.278-.37-.556-.556-.834-1.112-.185.648-.185 1.297-.185 1.297s-.463-1.204-.556-2.13c-.278.463-.37 1.297-.37 1.297s-.648-1.853-.463-2.87c-.278-.834-1.204-2.594-.926-6.484 1.575 1.112 5.095.834 6.484-1.204.463-.648.74-2.5-.185-6.114-.648-2.316-2.223-5.743-2.87-7.04l-.093.093c.37 1.02 1.02 3.242 1.297 4.354.74 3.242 1.02 4.354.648 5.836-.278 1.297-1.02 2.13-2.964 3.057-1.853.926-4.446-1.4-4.54-1.482-1.853-1.482-3.242-3.9-3.427-5.002-.185-1.297.74-2.038 1.204-3.057-.648.185-1.4.556-1.4.556s.834-.926 1.945-1.667a9.43 9.43 0 0 0 1.204-.834H10.28s1.112-.648 2.316-1.02H10.93l4.446-1.945c1.4-.556 2.686-.37 3.427.648 1.02 1.4 2.038 2.13 4.168 2.686 1.297-.556 1.76-.926 3.427-1.4 1.482-1.667 2.686-1.853 2.686-1.853s-.834.74-.926 1.575c.834-.648 1.76-1.204 1.76-1.204s-.37.463-.648 1.112l.093.093c1.02-.556 2.13-1.02 2.13-1.02s-.37.37-.74.926c.74 0 2.223 0 2.78.093 3.427.093 4.168-3.613 5.465-4.168 1.667-.556 2.408-.926 5.187 1.853 2.408 2.408 4.26 6.577 3.335 7.503-.74.74-2.316-.278-4.076-2.408-.926-1.112-1.575-2.5-1.945-4.168-.185-1.4-1.204-2.223-1.204-2.223s.648 1.4.648 2.594c0 .648.093 3.057 1.112 4.446-.093.185-.185 1.02-.278 1.112-1.204-1.482-3.9-2.5-4.26-2.87 1.482 1.204 4.817 3.9 6.114 6.484 1.204 2.5.463 4.724 1.112 5.28.185.185 2.594 3.15 3.057 4.724.834 2.686.093 5.465-1.02 7.132l-2.964.463a3.92 3.92 0 0 1-1.112-.371c.185-.37.648-1.297.648-1.482l-.185-.278c-.926 1.297-2.5 2.594-3.798 3.335-1.667.926-3.613.834-4.9.37-3.613-1.112-7.04-3.52-7.78-4.168 0 0 0 .463.093.648a28.07 28.07 0 0 0 5.002 4.168l-4.26.463 2.038 15.747c-.926.093-1.02.185-2.038.37-.834-3.057-2.5-5.002-4.354-6.206-1.575-1.02-3.798-1.297-5.928-.834l-.093.185c1.482-.185 3.242.093 5.002 1.204s3.15 3.983 3.705 5.65c.648 2.223 1.112 4.54-.648 7.04-1.297 1.76-5.002 2.78-7.966.648.834 1.297 1.853 2.316 3.335 2.5 2.13.278 4.168-.093 5.65-1.482 1.204-1.204 1.853-3.798 1.667-6.577l1.945-.278.648 4.9L62.06 56.7l-2.78-25.195-1.575.278L54.556 0 1.942 6.114l6.484 52.428z' />
|
||||
<path d='M39.665 30.06c1.4 1.02 2.594 1.667 3.798 1.575.74-.093 1.482-1.297 1.945-2.408.37-.74.37-1.575-.185-1.853-.278-.093-1.4-.093-2.223 0-1.575.185-3.15.74-3.52 1.02-.556.37-.278 1.297.185 1.667m.37-10.84v.093l.093.185c.37.74.74 1.482 1.482 1.853.185 0 .37-.093.556-.093.648 0 1.02.093 1.297.185v-.556c-.093-.926.185-2.594-1.667-3.52-.74-.37-1.667-.185-2.038.185h.185c.463.185.185.37.093.556-.093.37-.185.463 0 1.112' />
|
||||
<path d='M31.698 19.407c.463-.37-2.13-.926-4.168.37-1.482 1.02-1.482 3.15-.093 4.354a1.27 1.27 0 0 1 .37.278c.37-.185.926-.37 1.4-.556.926-.278 1.667-.463 2.316-.556.278-.37.648-.926.556-1.945-.093-1.4-1.204-1.112-.37-1.945m15.098 22.5l-4.446 7.4-5.187-1.575-4.54 6.947.185 2.223 24.825-4.54-1.482-15.47-4.076 8.522z' />
|
||||
</g>
|
||||
</svg>
|
||||
)
|
||||
}
|
||||
|
||||
export function KalshiIcon(props: SVGProps<SVGSVGElement>) {
|
||||
return (
|
||||
<svg {...props} viewBox='0 0 78 20' fill='currentColor' xmlns='http://www.w3.org/2000/svg'>
|
||||
<path d='M40.1043 0H36.0332V19.9986H40.1043V0Z' />
|
||||
<path d='M0.416887 0.0221237H4.73849V8.99348L12.818 0.0221237H18.0582L10.6468 8.24586L18.5384 20H13.3608L7.59868 11.5686L4.73849 14.7459V20H0.416887V0.0221237Z' />
|
||||
<path
|
||||
fillRule='evenodd'
|
||||
clipRule='evenodd'
|
||||
d='M34.4675 19.8117H32.4007C30.5426 19.8117 29.624 19.0017 29.6658 17.4027C29.1229 18.2334 28.4549 18.8771 27.6824 19.3132C26.8891 19.7494 25.9496 19.9778 24.8222 19.9778C23.1729 19.9778 21.8368 19.604 20.8138 18.8564C19.8117 18.088 19.3106 17.0289 19.3106 15.6582C19.3106 14.1007 19.8952 12.8962 21.0434 12.0656C22.2126 11.2141 23.9036 10.778 26.1166 10.778H29.0603V10.0719C29.0603 9.40737 28.8098 8.8882 28.3087 8.49362C27.8077 8.09905 27.1396 7.89138 26.2836 7.89138C25.532 7.89138 24.9266 8.05752 24.4464 8.36902C23.9662 8.70129 23.674 9.1374 23.5905 9.67734H19.6446C19.7699 8.18212 20.4589 7.01916 21.6697 6.18848C22.8806 5.3578 24.4882 4.92169 26.4924 4.92169C28.5801 4.92169 30.2086 5.37857 31.3359 6.29232C32.4842 7.20607 33.0688 8.53516 33.0688 10.2588V15.4298C33.0688 15.7828 33.1523 16.0321 33.2984 16.1774C33.4445 16.302 33.6951 16.3851 34.0291 16.3851H34.4675V19.8117ZM26.0749 13.4569C25.2398 13.4569 24.5717 13.6231 24.0915 13.9761C23.6322 14.3084 23.4026 14.7653 23.4026 15.3675C23.4026 15.8867 23.5905 16.2813 23.9871 16.5928C24.3838 16.9043 24.9266 17.0496 25.5947 17.0496C26.6594 17.0496 27.4945 16.7589 28.1 16.1567C28.7054 15.5544 29.0394 14.7445 29.0603 13.7269V13.4569H26.0749Z'
|
||||
/>
|
||||
<path d='M45.5115 14.9314C45.5741 15.5752 45.8873 16.0944 46.4718 16.5097C47.0564 16.9043 47.7871 17.112 48.6848 17.112C49.5408 17.112 50.2297 16.9874 50.7308 16.7174C51.2318 16.4266 51.4824 16.0321 51.4824 15.5129C51.4824 15.1391 51.3571 14.8483 51.1275 14.6614C50.8978 14.4745 50.5638 14.3292 50.1462 14.2669C49.7287 14.163 49.0397 14.0592 48.0794 13.9554C46.7641 13.7892 45.6785 13.5608 44.8225 13.2908C43.9665 13.0208 43.2567 12.6055 42.7557 12.024C42.2337 11.4426 41.9832 10.6949 41.9832 9.73966C41.9832 8.78438 42.2337 7.9537 42.7557 7.22685C43.2985 6.47924 44.0501 5.91853 45.0104 5.50319C45.9708 5.10861 47.0773 4.90094 48.3299 4.90094C50.355 4.92171 51.9625 5.35782 53.1943 6.1885C54.4469 7.01918 55.115 8.18213 55.2194 9.67736H51.3571C51.2945 9.11665 51.0022 8.68054 50.4594 8.3275C49.9374 7.97446 49.2694 7.78756 48.4343 7.78756C47.6618 7.78756 47.0355 7.93293 46.5553 8.22367C46.096 8.5144 45.8664 8.88821 45.8664 9.36585C45.8664 9.71889 45.9916 9.9681 46.2422 10.1342C46.4927 10.3004 46.8267 10.425 47.2234 10.508C47.6201 10.5911 48.309 10.6742 49.2485 10.7572C51.2527 10.9857 52.7768 11.4218 53.8206 12.0448C54.9062 12.647 55.4282 13.7062 55.4282 15.2222C55.4282 16.1774 55.1359 17.0081 54.5722 17.735C54.0085 18.4618 53.2361 19.0225 52.2131 19.4171C51.211 19.7909 50.0418 19.9986 48.7266 19.9986C46.6806 19.9986 44.9895 19.5417 43.716 18.6487C42.4216 17.735 41.7535 16.4889 41.67 14.9314H45.5115Z' />
|
||||
<path d='M69.7503 6.72852C68.623 5.6694 67.2033 5.12946 65.4496 5.12946C63.6333 5.12946 62.1719 5.794 61.0654 7.12309V0H56.9943V19.9986H61.0654V12.4602C61.0654 11.1934 61.3368 10.2174 61.9213 9.5113C62.5059 8.80522 63.3201 8.45218 64.364 8.45218C65.3661 8.45218 66.1177 8.78445 66.6187 9.42823C67.1198 10.0512 67.3703 10.965 67.3703 12.1902V19.9986H71.4414V12.0241C71.4414 9.55283 70.8777 7.78763 69.7503 6.72852Z' />
|
||||
<path d='M73.0068 5.29551H77.0779V19.9778H73.0068V5.29551Z' />
|
||||
<path d='M76.473 0.581477C76.0972 0.20767 75.617 0 75.0324 0C74.4688 0 73.9677 0.20767 73.571 0.581477C73.1952 0.955283 72.9865 1.41216 72.9865 1.97287C72.9865 2.53358 73.1952 3.01122 73.571 3.38503C73.9677 3.75883 74.4688 3.9665 75.0324 3.9665C75.5961 3.9665 76.0972 3.7796 76.473 3.38503C76.8488 2.99045 77.0575 2.53358 77.0575 1.97287C77.0575 1.41216 76.8488 0.934516 76.473 0.581477Z' />
|
||||
</svg>
|
||||
)
|
||||
}
|
||||
|
||||
export function PolymarketIcon(props: SVGProps<SVGSVGElement>) {
|
||||
return (
|
||||
<svg {...props} xmlns='http://www.w3.org/2000/svg' viewBox='51 209 123 155'>
|
||||
<path
|
||||
fill='currentColor'
|
||||
d='M173.2,363.2L51.1,328.3v-83.7l122.1-34.9V363.2z M161.4,296.2l-89.8,25.6l89.8,25.6L161.4,296.2z M62.9,260.8v51.3l89.8-25.6L62.9,260.8z M161.4,225.3L71.6,251l89.8,25.6L161.4,225.3z'
|
||||
/>
|
||||
</svg>
|
||||
)
|
||||
}
|
||||
|
||||
export function GoogleGroupsIcon(props: SVGProps<SVGSVGElement>) {
|
||||
return (
|
||||
<svg {...props} xmlns='http://www.w3.org/2000/svg' viewBox='0 0 950 950'>
|
||||
<path
|
||||
d='M0 0 C0.94278809 0.16097168 1.88557617 0.32194336 2.85693359 0.48779297 C41.39640021 7.38000818 77.6089919 23.60492603 108.359375 47.75439453 C110.82847014 49.62899623 113.39874033 51.31473268 116 53 C116.46293457 52.57372314 116.92586914 52.14744629 117.40283203 51.70825195 C122.59800275 47.03131713 128.0429109 43.0311917 133.875 39.1875 C134.79337646 38.58075439 135.71175293 37.97400879 136.65795898 37.34887695 C193.06543269 0.50131391 260.71306352 -11.46626137 326.5625 2.1875 C345.0682729 6.30166442 362.9846016 12.66357256 380 21 C380.84159668 21.41121094 381.68319336 21.82242187 382.55029297 22.24609375 C394.71831585 28.25763667 406.12081333 34.88025718 417 43 C417.91386475 43.680625 417.91386475 43.680625 418.84619141 44.375 C427.3442083 50.7615534 435.33491318 57.63400459 443 65 C443.89187012 65.85102295 443.89187012 65.85102295 444.80175781 66.71923828 C453.69930679 75.25198316 461.69744094 84.07076231 469 94 C469.42619629 94.57073242 469.85239258 95.14146484 470.29150391 95.72949219 C480.43354301 109.33663206 488.67420729 123.71010258 496 139 C496.44988281 139.91910156 496.89976562 140.83820313 497.36328125 141.78515625 C507.8727502 163.93377648 513.86707037 187.75512603 517 212 C517.17128418 213.27705811 517.34256836 214.55411621 517.51904297 215.86987305 C518.22536878 222.32344617 518.20134476 228.78767265 518.23828125 235.2734375 C518.24439454 236.28303968 518.24439454 236.28303968 518.25063133 237.31303787 C518.27135228 240.8724256 518.28571641 244.43177631 518.29516602 247.99121094 C518.30623374 251.63452388 518.34067753 255.27722681 518.38033772 258.92032433 C518.40666551 261.75333675 518.41487174 264.58620664 518.41844749 267.4193306 C518.42558411 269.40605687 518.45193759 271.39268495 518.47883606 273.37924194 C518.44942207 285.76015309 515.12264488 295.57193005 507 305 C499.87428202 312.02979486 489.28626689 317.89258596 479.05601447 318.02519969 C476.62337781 317.96406397 474.19532718 317.86193279 471.76460171 317.74760151 C470.82658438 317.70850022 469.88856705 317.66939893 468.92212495 317.62911275 C466.85886798 317.54255897 464.79572187 317.45333201 462.73267936 317.36180875 C458.15557952 317.15958497 453.5778828 316.97272504 449.00018999 316.78448407 C445.21423965 316.62851756 441.42837797 316.470502 437.64251518 316.31242561 C398.91465695 314.70443054 360.18475613 313.32679155 321.43299866 312.45133972 C320.24242123 312.42435066 320.24242123 312.42435066 319.02779173 312.39681636 C302.59808087 312.02523843 286.16791507 311.67886855 269.73699983 311.36500082 C260.42194939 311.18705349 251.10704348 311.00250961 241.79223633 310.81225586 C240.94943279 310.79516155 240.10662926 310.77806724 239.23828622 310.76045491 C214.73870723 310.26060136 190.27214589 309.42986365 165.79391344 308.29660819 C125.90250763 306.44979005 86.03732773 305.17982958 46.09943641 305.14658036 C44.50897189 305.14521365 42.91850784 305.14311607 41.32804524 305.14028964 C-37.5133746 305.00531502 -103.97082682 308.91076335 -163.52726094 367.12336398 C-188.38087655 391.97851495 -210.60272126 420.04013588 -229.42095524 449.719724 C-234.44627637 457.53470195 -238.00370356 461.2158497 -247.01953125 463.8984375 C-257.45600695 465.67920678 -265.74521563 464.625344 -274.70703125 458.76953125 C-282.12356812 453.04603687 -286.55153627 446.30121318 -288 437 C-288.0944182 434.21858347 -288.13925894 431.46261367 -288.13371277 428.68151855 C-288.13597833 427.84676797 -288.13824388 427.01201739 -288.14057809 426.15197134 C-288.14690588 423.35585743 -288.14608946 420.55979215 -288.14526367 417.76367188 C-288.14825623 415.75762367 -288.15165898 413.75157604 -288.15544128 411.74552917 C-288.16428321 406.29210673 -288.16661969 400.83869999 -288.16725707 395.38527107 C-288.16796834 391.97072817 -288.17010429 388.55618925 -288.17275429 385.14164734 C-288.18201368 373.20657092 -288.1860891 361.27150567 -288.18530273 349.33642578 C-288.18470423 338.25260833 -288.19520972 327.16883991 -288.2110464 316.08503485 C-288.22418718 306.54413041 -288.22948379 297.00324184 -288.22884732 287.46232843 C-288.22859392 281.77588842 -288.23135606 276.08949183 -288.24202538 270.40306091 C-288.25181491 265.03831145 -288.25171239 259.67364588 -288.24450874 254.3088932 C-288.2434757 252.35683887 -288.24574798 250.40477901 -288.2518692 248.45273399 C-288.30129251 231.57587659 -287.43735147 214.67304784 -284.25 198.0625 C-284.07936035 197.16249268 -283.9087207 196.26248535 -283.73291016 195.33520508 C-277.33281977 162.80659035 -264.83654002 129.80613517 -245 103 C-244.30777344 102.03835938 -243.61554688 101.07671875 -242.90234375 100.0859375 C-231.62223929 84.68769966 -218.86054597 69.06796015 -204 57 C-202.82757852 56.01627594 -201.65576659 55.0318252 -200.484375 54.046875 C-165.05335732 24.48458427 -123.47627349 6.4544733 -78 -1 C-77.21238281 -1.13132324 -76.42476562 -1.26264648 -75.61328125 -1.39794922 C-51.08216194 -5.26757047 -24.38186362 -4.16780456 0 0 Z '
|
||||
fill='#4185F3'
|
||||
transform='translate(394,440)'
|
||||
/>
|
||||
<path
|
||||
d='M0 0 C0.84159668 0.41121094 1.68319336 0.82242187 2.55029297 1.24609375 C14.71831585 7.25763667 26.12081333 13.88025718 37 22 C37.91386475 22.680625 37.91386475 22.680625 38.84619141 23.375 C47.3442083 29.7615534 55.33491318 36.63400459 63 44 C63.59458008 44.56734863 64.18916016 45.13469727 64.80175781 45.71923828 C73.69930679 54.25198316 81.69744094 63.07076231 89 73 C89.63929443 73.85609863 89.63929443 73.85609863 90.29150391 74.72949219 C100.43354301 88.33663206 108.67420729 102.71010258 116 118 C116.67482422 119.37865234 116.67482422 119.37865234 117.36328125 120.78515625 C127.8727502 142.93377648 133.86707037 166.75512603 137 191 C137.17128418 192.27705811 137.34256836 193.55411621 137.51904297 194.86987305 C138.22536878 201.32344617 138.20134476 207.78767265 138.23828125 214.2734375 C138.24439454 215.28303968 138.24439454 215.28303968 138.25063133 216.31303787 C138.27135228 219.8724256 138.28571641 223.43177631 138.29516602 226.99121094 C138.30623374 230.63452388 138.34067753 234.27722681 138.38033772 237.92032433 C138.40666551 240.75333675 138.41487174 243.58620664 138.41844749 246.4193306 C138.42558411 248.40605687 138.45193759 250.39268495 138.47883606 252.37924194 C138.44942207 264.76015309 135.12264488 274.57193005 127 284 C118.57776719 292.3088566 107.25707403 297.12771911 95.43405437 297.12304783 C94.31986273 297.12503888 93.20567109 297.12702993 92.05771607 297.12908131 C90.83884967 297.12616847 89.61998327 297.12325563 88.36418152 297.12025452 C86.41604418 297.12153615 86.41604418 297.12153615 84.42855054 297.12284368 C80.82553724 297.1250799 77.22255366 297.12107927 73.61954415 297.11606562 C69.7334335 297.1117488 65.84732453 297.11320842 61.96121216 297.1139679 C55.22888479 297.11449235 48.49656711 297.11135375 41.76424217 297.10573006 C32.03042012 297.09760442 22.29660275 297.09499874 12.56277768 297.09374207 C-3.22955387 297.09155322 -19.02188025 297.08489767 -34.81420898 297.07543945 C-50.15535455 297.06626101 -65.49649872 297.05918229 -80.83764648 297.05493164 C-81.78321047 297.05466892 -82.72877445 297.05440619 -83.70299188 297.05413551 C-88.44658929 297.05283048 -93.1901867 297.05156677 -97.93378413 297.05032361 C-137.28919303 297.03995621 -176.64459618 297.02234244 -216 297 C-216 296.67 -216 296.34 -216 296 C-215.10539063 295.78085937 -214.21078125 295.56171875 -213.2890625 295.3359375 C-199.60744526 291.74779481 -190.30226454 286.44506049 -182.33886719 274.51049805 C-175.8694217 262.19130537 -177.24804735 248.40718553 -177.47143555 234.86889648 C-177.50929034 232.14367461 -177.51761785 229.41872657 -177.52514935 226.69327831 C-177.58592774 206.53538226 -178.58970103 187.22051454 -183.1875 167.5625 C-183.34061646 166.90023407 -183.49373291 166.23796814 -183.65148926 165.55563354 C-193.05991068 125.06154086 -212.75392634 88.11244854 -240.77734375 57.4453125 C-242.91048395 55.09848338 -244.98632073 52.70965414 -247.0625 50.3125 C-250.74767655 46.15843419 -254.73024771 42.54055591 -259 39 C-259.90878906 38.23623047 -259.90878906 38.23623047 -260.8359375 37.45703125 C-262.2186283 36.29829741 -263.60842508 35.14804931 -265 34 C-261.24101804 29.06359373 -257.22764272 25.6831341 -252.125 22.1875 C-251.37541016 21.66760498 -250.62582031 21.14770996 -249.85351562 20.61206055 C-242.75668826 15.74085214 -235.4948349 11.22981506 -228 7 C-227.34596191 6.6277832 -226.69192383 6.25556641 -226.01806641 5.87207031 C-214.74568717 -0.48948891 -203.12149343 -5.48811078 -191 -10 C-189.783125 -10.46148437 -188.56625 -10.92296875 -187.3125 -11.3984375 C-127.13030363 -32.87253938 -57.14586678 -27.9977207 0 0 Z '
|
||||
fill='#4185F3'
|
||||
transform='translate(774,461)'
|
||||
/>
|
||||
<path
|
||||
d='M0 0 C2.5086616 2.21585252 4.93546061 4.49626878 7.3515625 6.8125 C8.23457031 7.62074219 9.11757813 8.42898437 10.02734375 9.26171875 C26.83279315 25.16390495 37.10842709 45.7665863 43.3515625 67.8125 C43.69316406 68.99070312 44.03476562 70.16890625 44.38671875 71.3828125 C50.59092755 97.64248697 47.11935597 127.30989764 36.3515625 151.8125 C35.92665527 152.79379883 35.92665527 152.79379883 35.49316406 153.79492188 C25.5268296 176.37059662 8.35413683 195.88783887 -12.6484375 208.8125 C-13.55078125 209.410625 -14.453125 210.00875 -15.3828125 210.625 C-42.35348642 227.69118915 -77.57347657 232.41053788 -108.6484375 226.1875 C-132.14362975 220.89155145 -153.29033371 209.45309871 -170.6484375 192.8125 C-171.53144531 192.00425781 -172.41445313 191.19601562 -173.32421875 190.36328125 C-190.12966815 174.46109505 -200.40530209 153.8584137 -206.6484375 131.8125 C-206.99003906 130.63429688 -207.33164062 129.45609375 -207.68359375 128.2421875 C-213.88780255 101.98251303 -210.41623097 72.31510236 -199.6484375 47.8125 C-199.36516602 47.15830078 -199.08189453 46.50410156 -198.79003906 45.83007812 C-188.8237046 23.25440338 -171.65101183 3.73716113 -150.6484375 -9.1875 C-149.29492188 -10.0846875 -149.29492188 -10.0846875 -147.9140625 -11 C-102.93060045 -39.46411158 -40.49856726 -33.45014405 0 0 Z '
|
||||
fill='#4285F4'
|
||||
transform='translate(753.6484375,172.1875)'
|
||||
/>
|
||||
<path
|
||||
d='M0 0 C2.5086616 2.21585252 4.93546061 4.49626878 7.3515625 6.8125 C8.23457031 7.62074219 9.11757813 8.42898437 10.02734375 9.26171875 C26.83279315 25.16390495 37.10842709 45.7665863 43.3515625 67.8125 C43.69316406 68.99070312 44.03476562 70.16890625 44.38671875 71.3828125 C50.59092755 97.64248697 47.11935597 127.30989764 36.3515625 151.8125 C35.92665527 152.79379883 35.92665527 152.79379883 35.49316406 153.79492188 C25.5268296 176.37059662 8.35413683 195.88783887 -12.6484375 208.8125 C-13.55078125 209.410625 -14.453125 210.00875 -15.3828125 210.625 C-42.35348642 227.69118915 -77.57347657 232.41053788 -108.6484375 226.1875 C-132.14362975 220.89155145 -153.29033371 209.45309871 -170.6484375 192.8125 C-171.53144531 192.00425781 -172.41445313 191.19601562 -173.32421875 190.36328125 C-190.12966815 174.46109505 -200.40530209 153.8584137 -206.6484375 131.8125 C-206.99003906 130.63429688 -207.33164063 129.45609375 -207.68359375 128.2421875 C-213.88780255 101.98251303 -210.41623097 72.31510236 -199.6484375 47.8125 C-199.36516602 47.15830078 -199.08189453 46.50410156 -198.79003906 45.83007812 C-188.8237046 23.25440338 -171.65101183 3.73716113 -150.6484375 -9.1875 C-149.29492188 -10.0846875 -149.29492188 -10.0846875 -147.9140625 -11 C-102.93060045 -39.46411158 -40.49856726 -33.45014405 0 0 Z '
|
||||
fill='#4285F4'
|
||||
transform='translate(433.6484375,172.1875)'
|
||||
/>
|
||||
<path
|
||||
d='M0 0 C3.81562395 1.29823475 6.07090879 2.74966858 8.8125 5.6875 C11.4212352 8.40859646 14.04942755 10.95293127 16.9375 13.375 C51.99603414 43.73637132 74.26678331 91.46037764 84.375 135.8125 C84.61371826 136.84769775 84.85243652 137.88289551 85.09838867 138.94946289 C89.0693436 157.37670439 89.42863544 175.94083356 89.48046875 194.72631836 C89.48930372 197.45992471 89.51740015 200.19229146 89.5625 202.92553711 C90.0727242 234.5058769 90.0727242 234.5058769 78.75 248.5 C67.10259629 260.32182406 52.90572797 263.38672329 36.8588047 263.52641392 C33.85098681 263.53023974 30.8436979 263.51414279 27.8359375 263.49609375 C25.70992992 263.49624909 23.58392206 263.49774385 21.45791626 263.50050354 C17.02520058 263.50188017 12.59281136 263.48945128 8.16015625 263.46655273 C2.50723581 263.43813586 -3.14514462 263.44092501 -8.79810524 263.45364285 C-13.18043552 263.46062972 -17.56264313 263.45277705 -21.94495773 263.44038582 C-24.02834985 263.43590298 -26.11175527 263.43550647 -28.19514847 263.43945122 C-45.28053358 263.45666805 -61.10730832 262.67785762 -74.25 250.4375 C-84.29292795 239.84189519 -87.30277119 227.81294372 -87.3359375 213.64453125 C-87.34418045 212.55703079 -87.3524234 211.46953033 -87.36091614 210.34907532 C-87.38009551 206.83674954 -87.38011101 203.32487017 -87.375 199.8125 C-87.37545319 198.61937195 -87.37590637 197.4262439 -87.37637329 196.19696045 C-87.35610617 178.09521781 -86.46012832 160.79921916 -83 143 C-82.75469856 141.54891669 -82.51332288 140.0971597 -82.27734375 138.64453125 C-78.04339545 114.58454961 -68.4884574 91.45015164 -57 70 C-56.38769531 68.84628906 -55.77539062 67.69257812 -55.14453125 66.50390625 C-47.06102443 51.82025778 -37.08959704 38.53023956 -26 26 C-25.22914063 25.11828125 -24.45828125 24.2365625 -23.6640625 23.328125 C-16.29692403 15.00455101 -8.575012 7.08370557 0 0 Z '
|
||||
fill='#1967D2'
|
||||
transform='translate(508,495)'
|
||||
/>
|
||||
</svg>
|
||||
)
|
||||
}
|
||||
|
||||
export function CursorIcon(props: SVGProps<SVGSVGElement>) {
|
||||
return (
|
||||
<svg {...props} xmlns='http://www.w3.org/2000/svg' viewBox='0 0 546 546' fill='currentColor'>
|
||||
<path d='m466.383 137.073-206.469-119.2034c-6.63-3.8287-14.811-3.8287-21.441 0l-206.4586 119.2034c-5.5734 3.218-9.0144 9.169-9.0144 15.615v240.375c0 6.436 3.441 12.397 9.0144 15.615l206.4686 119.203c6.63 3.829 14.811 3.829 21.441 0l206.468-119.203c5.574-3.218 9.015-9.17 9.015-15.615v-240.375c0-6.436-3.441-12.397-9.015-15.615zm-12.969 25.25-199.316 345.223c-1.347 2.326-4.904 1.376-4.904-1.319v-226.048c0-4.517-2.414-8.695-6.33-10.963l-195.7577-113.019c-2.3263-1.347-1.3764-4.905 1.3182-4.905h398.6305c5.661 0 9.199 6.136 6.368 11.041h-.009z' />
|
||||
</svg>
|
||||
)
|
||||
}
|
||||
|
||||
export function DuckDuckGoIcon(props: SVGProps<SVGSVGElement>) {
|
||||
return (
|
||||
<svg {...props} xmlns='http://www.w3.org/2000/svg' viewBox='-108 -108 216 216'>
|
||||
<circle r='108' fill='#d53' />
|
||||
<circle r='96' fill='none' stroke='#ffffff' stroke-width='7' />
|
||||
<path
|
||||
d='M-32-55C-62-48-51-6-51-6l19 93 7 3M-39-73h-8l11 4s-11 0-11 7c24-1 35 5 35 5'
|
||||
fill='#ddd'
|
||||
/>
|
||||
<path d='M25 95S1 57 1 32c0-47 31-7 31-44S1-58 1-58c-15-19-44-15-44-15l7 4s-7 2-9 4 19-3 28 5c-37 3-31 33-31 33l21 120' />
|
||||
<path d='M25-1l38-10c34 5-29 24-33 23C0 7 9 32 45 24s9 20-24 9C-26 20-1-3 25-1' fill='#fc0' />
|
||||
<path
|
||||
d='M15 78l2-3c22 8 23 11 22-9s0-20-23-3c0-5-13-3-15 0-21-9-23-12-22 2 2 29 1 24 21 14'
|
||||
fill='#6b5'
|
||||
/>
|
||||
<path d='M-1 67v12c1 2 17 2 17-2s-8 3-13 1-2-13-2-13' fill='#4a4' />
|
||||
<path
|
||||
d='M-23-32c-5-6-18-1-15 7 1-4 8-10 15-7m32 0c1-6 11-7 14-1-4-2-10-2-14 1m-33 16a2 2 0 1 1 0 1m-8 3a7 7 0 1 0 0-1m52-6a2 2 0 1 1 0 1m-6 3a6 6 0 1 0 0-1'
|
||||
fill='#148'
|
||||
/>
|
||||
</svg>
|
||||
)
|
||||
}
|
||||
|
||||
export function RssIcon(props: SVGProps<SVGSVGElement>) {
|
||||
return (
|
||||
<svg
|
||||
{...props}
|
||||
width='24'
|
||||
height='24'
|
||||
viewBox='0 0 24 24'
|
||||
fill='none'
|
||||
xmlns='http://www.w3.org/2000/svg'
|
||||
>
|
||||
<path
|
||||
d='M4 11C6.38695 11 8.67613 11.9482 10.364 13.636C12.0518 15.3239 13 17.6131 13 20'
|
||||
stroke='currentColor'
|
||||
strokeWidth='2'
|
||||
strokeLinecap='round'
|
||||
strokeLinejoin='round'
|
||||
/>
|
||||
<path
|
||||
d='M4 4C8.24346 4 12.3131 5.68571 15.3137 8.68629C18.3143 11.6869 20 15.7565 20 20'
|
||||
stroke='currentColor'
|
||||
strokeWidth='2'
|
||||
strokeLinecap='round'
|
||||
strokeLinejoin='round'
|
||||
/>
|
||||
<circle cx='5' cy='19' r='1' fill='currentColor' />
|
||||
</svg>
|
||||
)
|
||||
}
|
||||
|
||||
@@ -20,7 +20,7 @@ export function Navbar() {
|
||||
<div
|
||||
className='relative flex w-full items-center justify-between'
|
||||
style={{
|
||||
paddingLeft: 'calc(var(--sidebar-offset) + 20px)',
|
||||
paddingLeft: 'calc(var(--sidebar-offset) + 32px)',
|
||||
paddingRight: 'calc(var(--toc-offset) + 60px)',
|
||||
}}
|
||||
>
|
||||
|
||||
@@ -1,55 +1,50 @@
|
||||
'use client'
|
||||
|
||||
import { useState } from 'react'
|
||||
import { useCopyButton } from 'fumadocs-ui/utils/use-copy-button'
|
||||
import { Check, Copy } from 'lucide-react'
|
||||
|
||||
const cache = new Map<string, string>()
|
||||
|
||||
interface CopyPageButtonProps {
|
||||
export function LLMCopyButton({
|
||||
markdownUrl,
|
||||
}: {
|
||||
/**
|
||||
* A URL to fetch the raw Markdown/MDX content of page
|
||||
*/
|
||||
markdownUrl: string
|
||||
}
|
||||
|
||||
export function CopyPageButton({ markdownUrl }: CopyPageButtonProps) {
|
||||
const [copied, setCopied] = useState(false)
|
||||
}) {
|
||||
const [isLoading, setLoading] = useState(false)
|
||||
|
||||
const handleCopy = async () => {
|
||||
const [checked, onClick] = useCopyButton(async () => {
|
||||
const cached = cache.get(markdownUrl)
|
||||
if (cached) {
|
||||
await navigator.clipboard.writeText(cached)
|
||||
setCopied(true)
|
||||
setTimeout(() => setCopied(false), 2000)
|
||||
return
|
||||
}
|
||||
if (cached) return navigator.clipboard.writeText(cached)
|
||||
|
||||
setLoading(true)
|
||||
|
||||
try {
|
||||
await navigator.clipboard.write([
|
||||
new ClipboardItem({
|
||||
'text/plain': fetch(markdownUrl).then(async (res) => {
|
||||
const content = await res.text()
|
||||
cache.set(markdownUrl, content)
|
||||
|
||||
return content
|
||||
}),
|
||||
}),
|
||||
])
|
||||
setCopied(true)
|
||||
setTimeout(() => setCopied(false), 2000)
|
||||
} catch (err) {
|
||||
console.error('Failed to copy:', err)
|
||||
} finally {
|
||||
setLoading(false)
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
return (
|
||||
<button
|
||||
disabled={isLoading}
|
||||
onClick={handleCopy}
|
||||
onClick={onClick}
|
||||
className='flex cursor-pointer items-center gap-1.5 rounded-lg border border-border/40 bg-background px-2.5 py-2 text-muted-foreground/60 text-sm leading-none transition-all hover:border-border hover:bg-accent/50 hover:text-muted-foreground'
|
||||
aria-label={copied ? 'Copied to clipboard' : 'Copy page content'}
|
||||
aria-label={checked ? 'Copied to clipboard' : 'Copy page content'}
|
||||
>
|
||||
{copied ? (
|
||||
{checked ? (
|
||||
<>
|
||||
<Check className='h-3.5 w-3.5' />
|
||||
<span>Copied</span>
|
||||
58
apps/docs/components/ui/heading.tsx
Normal file
58
apps/docs/components/ui/heading.tsx
Normal file
@@ -0,0 +1,58 @@
|
||||
'use client'
|
||||
|
||||
import { type ComponentPropsWithoutRef, useState } from 'react'
|
||||
import { Check, Link } from 'lucide-react'
|
||||
import { cn } from '@/lib/utils'
|
||||
|
||||
type HeadingTag = 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6'
|
||||
|
||||
interface HeadingProps extends ComponentPropsWithoutRef<'h1'> {
|
||||
as?: HeadingTag
|
||||
}
|
||||
|
||||
export function Heading({ as, className, ...props }: HeadingProps) {
|
||||
const [copied, setCopied] = useState(false)
|
||||
const As = as ?? 'h1'
|
||||
|
||||
if (!props.id) {
|
||||
return <As className={className} {...props} />
|
||||
}
|
||||
|
||||
const handleClick = async (e: React.MouseEvent) => {
|
||||
e.preventDefault()
|
||||
|
||||
const url = `${window.location.origin}${window.location.pathname}#${props.id}`
|
||||
|
||||
try {
|
||||
await navigator.clipboard.writeText(url)
|
||||
setCopied(true)
|
||||
|
||||
// Update URL hash without scrolling
|
||||
window.history.pushState(null, '', `#${props.id}`)
|
||||
|
||||
setTimeout(() => setCopied(false), 2000)
|
||||
} catch {
|
||||
// Fallback: just navigate to the anchor
|
||||
window.location.hash = props.id as string
|
||||
}
|
||||
}
|
||||
|
||||
return (
|
||||
<As className={cn('group flex scroll-m-28 flex-row items-center gap-2', className)} {...props}>
|
||||
<a data-card='' href={`#${props.id}`} className='peer' onClick={handleClick}>
|
||||
{props.children}
|
||||
</a>
|
||||
{copied ? (
|
||||
<Check
|
||||
aria-hidden
|
||||
className='size-3.5 shrink-0 text-green-500 opacity-100 transition-opacity'
|
||||
/>
|
||||
) : (
|
||||
<Link
|
||||
aria-hidden
|
||||
className='size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity group-hover:opacity-100 peer-hover:opacity-100'
|
||||
/>
|
||||
)}
|
||||
</As>
|
||||
)
|
||||
}
|
||||
@@ -4,6 +4,7 @@
|
||||
|
||||
import type { ComponentType, SVGProps } from 'react'
|
||||
import {
|
||||
AhrefsIcon,
|
||||
AirtableIcon,
|
||||
ApifyIcon,
|
||||
ApolloIcon,
|
||||
@@ -14,22 +15,31 @@ import {
|
||||
CalendlyIcon,
|
||||
ClayIcon,
|
||||
ConfluenceIcon,
|
||||
CursorIcon,
|
||||
DatadogIcon,
|
||||
DiscordIcon,
|
||||
DocumentIcon,
|
||||
DropboxIcon,
|
||||
DuckDuckGoIcon,
|
||||
DynamoDBIcon,
|
||||
ElasticsearchIcon,
|
||||
ElevenLabsIcon,
|
||||
ExaAIIcon,
|
||||
EyeIcon,
|
||||
FirecrawlIcon,
|
||||
GithubIcon,
|
||||
GitLabIcon,
|
||||
GmailIcon,
|
||||
GoogleCalendarIcon,
|
||||
GoogleDocsIcon,
|
||||
GoogleDriveIcon,
|
||||
GoogleFormsIcon,
|
||||
GoogleGroupsIcon,
|
||||
GoogleIcon,
|
||||
GoogleSheetsIcon,
|
||||
GoogleSlidesIcon,
|
||||
GoogleVaultIcon,
|
||||
GrafanaIcon,
|
||||
HubspotIcon,
|
||||
HuggingFaceIcon,
|
||||
HunterIOIcon,
|
||||
@@ -38,6 +48,7 @@ import {
|
||||
IntercomIcon,
|
||||
JinaAIIcon,
|
||||
JiraIcon,
|
||||
KalshiIcon,
|
||||
LinearIcon,
|
||||
LinkedInIcon,
|
||||
LinkupIcon,
|
||||
@@ -61,6 +72,7 @@ import {
|
||||
PerplexityIcon,
|
||||
PineconeIcon,
|
||||
PipedriveIcon,
|
||||
PolymarketIcon,
|
||||
PostgresIcon,
|
||||
PosthogIcon,
|
||||
PylonIcon,
|
||||
@@ -74,8 +86,11 @@ import {
|
||||
SendgridIcon,
|
||||
SentryIcon,
|
||||
SerperIcon,
|
||||
SftpIcon,
|
||||
ShopifyIcon,
|
||||
SlackIcon,
|
||||
SmtpIcon,
|
||||
SshIcon,
|
||||
STTIcon,
|
||||
StagehandIcon,
|
||||
StripeIcon,
|
||||
@@ -92,19 +107,23 @@ import {
|
||||
WebflowIcon,
|
||||
WhatsAppIcon,
|
||||
WikipediaIcon,
|
||||
WordpressIcon,
|
||||
xIcon,
|
||||
YouTubeIcon,
|
||||
ZendeskIcon,
|
||||
ZepIcon,
|
||||
ZoomIcon,
|
||||
} from '@/components/icons'
|
||||
|
||||
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,
|
||||
@@ -125,9 +144,12 @@ export const blockTypeToIconMap: Record<string, IconComponent> = {
|
||||
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,
|
||||
@@ -141,6 +163,7 @@ export const blockTypeToIconMap: Record<string, IconComponent> = {
|
||||
pylon: PylonIcon,
|
||||
posthog: PosthogIcon,
|
||||
postgresql: PostgresIcon,
|
||||
polymarket: PolymarketIcon,
|
||||
pipedrive: PipedriveIcon,
|
||||
pinecone: PineconeIcon,
|
||||
perplexity: PerplexityIcon,
|
||||
@@ -164,6 +187,7 @@ export const blockTypeToIconMap: Record<string, IconComponent> = {
|
||||
linkedin: LinkedInIcon,
|
||||
linear: LinearIcon,
|
||||
knowledge: PackageSearchIcon,
|
||||
kalshi: KalshiIcon,
|
||||
jira: JiraIcon,
|
||||
jina: JinaAIIcon,
|
||||
intercom: IntercomIcon,
|
||||
@@ -172,21 +196,30 @@ export const blockTypeToIconMap: Record<string, IconComponent> = {
|
||||
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,
|
||||
@@ -196,4 +229,5 @@ export const blockTypeToIconMap: Record<string, IconComponent> = {
|
||||
apollo: ApolloIcon,
|
||||
apify: ApifyIcon,
|
||||
airtable: AirtableIcon,
|
||||
ahrefs: AhrefsIcon,
|
||||
}
|
||||
|
||||
@@ -143,7 +143,7 @@ Function (Process) → Condition (account_type === 'enterprise') → Advanced or
|
||||
## Bewährte Praktiken
|
||||
|
||||
- **Bedingungen korrekt anordnen**: Platzieren Sie spezifischere Bedingungen vor allgemeinen, um sicherzustellen, dass spezifische Logik Vorrang vor Fallbacks hat
|
||||
- **Eine Standardbedingung einfügen**: Fügen Sie eine Auffangbedingung (`true`) als letzte Bedingung hinzu, um nicht übereinstimmende Fälle zu behandeln und zu verhindern, dass die Workflow-Ausführung stecken bleibt
|
||||
- **Ausdrücke einfach halten**: Verwenden Sie klare, unkomplizierte boolesche Ausdrücke für bessere Lesbarkeit und einfachere Fehlersuche
|
||||
- **Verwenden Sie den Else-Zweig bei Bedarf**: Wenn keine Bedingungen übereinstimmen und der Else-Zweig nicht verbunden ist, endet der Workflow-Zweig ordnungsgemäß. Verbinden Sie den Else-Zweig, wenn Sie einen Fallback-Pfad für nicht übereinstimmende Fälle benötigen
|
||||
- **Halten Sie Ausdrücke einfach**: Verwenden Sie klare, unkomplizierte boolesche Ausdrücke für bessere Lesbarkeit und einfachere Fehlersuche
|
||||
- **Dokumentieren Sie Ihre Bedingungen**: Fügen Sie Beschreibungen hinzu, um den Zweck jeder Bedingung für bessere Teamzusammenarbeit und Wartung zu erklären
|
||||
- **Grenzfälle testen**: Überprüfen Sie, ob Bedingungen Grenzwerte korrekt behandeln, indem Sie mit Werten an den Grenzen Ihrer Bedingungsbereiche testen
|
||||
- **Testen Sie Grenzfälle**: Überprüfen Sie, ob Bedingungen Grenzwerte korrekt behandeln, indem Sie mit Werten an den Grenzen Ihrer Bedingungsbereiche testen
|
||||
|
||||
@@ -27,14 +27,16 @@ Alle API-Antworten enthalten Informationen über Ihre Workflow-Ausführungslimit
|
||||
"limits": {
|
||||
"workflowExecutionRateLimit": {
|
||||
"sync": {
|
||||
"limit": 60, // Max sync workflow executions per minute
|
||||
"remaining": 58, // Remaining sync workflow executions
|
||||
"resetAt": "..." // When the window resets
|
||||
"requestsPerMinute": 60, // Sustained rate limit per minute
|
||||
"maxBurst": 120, // Maximum burst capacity
|
||||
"remaining": 118, // Current tokens available (up to maxBurst)
|
||||
"resetAt": "..." // When tokens next refill
|
||||
},
|
||||
"async": {
|
||||
"limit": 60, // Max async workflow executions per minute
|
||||
"remaining": 59, // Remaining async workflow executions
|
||||
"resetAt": "..." // When the window resets
|
||||
"requestsPerMinute": 200, // Sustained rate limit per minute
|
||||
"maxBurst": 400, // Maximum burst capacity
|
||||
"remaining": 398, // Current tokens available
|
||||
"resetAt": "..." // When tokens next refill
|
||||
}
|
||||
},
|
||||
"usage": {
|
||||
@@ -46,7 +48,7 @@ Alle API-Antworten enthalten Informationen über Ihre Workflow-Ausführungslimit
|
||||
}
|
||||
```
|
||||
|
||||
**Hinweis:** Die Ratenbegrenzungen in der Antwort beziehen sich auf Workflow-Ausführungen. Die Ratenbegrenzungen für den Aufruf dieses API-Endpunkts befinden sich in den Antwort-Headern (`X-RateLimit-*`).
|
||||
**Hinweis:** Ratenbegrenzungen verwenden einen Token-Bucket-Algorithmus. `remaining` kann `requestsPerMinute` bis zu `maxBurst` überschreiten, wenn du dein volles Kontingent in letzter Zeit nicht genutzt hast, was Burst-Traffic ermöglicht. Die Ratenbegrenzungen im Antworttext gelten für Workflow-Ausführungen. Die Ratenbegrenzungen für den Aufruf dieses API-Endpunkts befinden sich in den Antwort-Headern (`X-RateLimit-*`).
|
||||
|
||||
### Logs abfragen
|
||||
|
||||
@@ -110,13 +112,15 @@ Fragen Sie Workflow-Ausführungsprotokolle mit umfangreichen Filteroptionen ab.
|
||||
"limits": {
|
||||
"workflowExecutionRateLimit": {
|
||||
"sync": {
|
||||
"limit": 60,
|
||||
"remaining": 58,
|
||||
"requestsPerMinute": 60,
|
||||
"maxBurst": 120,
|
||||
"remaining": 118,
|
||||
"resetAt": "2025-01-01T12:35:56.789Z"
|
||||
},
|
||||
"async": {
|
||||
"limit": 60,
|
||||
"remaining": 59,
|
||||
"requestsPerMinute": 200,
|
||||
"maxBurst": 400,
|
||||
"remaining": 398,
|
||||
"resetAt": "2025-01-01T12:35:56.789Z"
|
||||
}
|
||||
},
|
||||
@@ -190,13 +194,15 @@ Rufen Sie detaillierte Informationen zu einem bestimmten Logeintrag ab.
|
||||
"limits": {
|
||||
"workflowExecutionRateLimit": {
|
||||
"sync": {
|
||||
"limit": 60,
|
||||
"remaining": 58,
|
||||
"requestsPerMinute": 60,
|
||||
"maxBurst": 120,
|
||||
"remaining": 118,
|
||||
"resetAt": "2025-01-01T12:35:56.789Z"
|
||||
},
|
||||
"async": {
|
||||
"limit": 60,
|
||||
"remaining": 59,
|
||||
"requestsPerMinute": 200,
|
||||
"maxBurst": 400,
|
||||
"remaining": 398,
|
||||
"resetAt": "2025-01-01T12:35:56.789Z"
|
||||
}
|
||||
},
|
||||
@@ -251,32 +257,78 @@ Rufen Sie Ausführungsdetails einschließlich des Workflow-Zustandsschnappschuss
|
||||
</Tab>
|
||||
</Tabs>
|
||||
|
||||
## Webhook-Abonnements
|
||||
## Benachrichtigungen
|
||||
|
||||
Erhalten Sie Echtzeitbenachrichtigungen, wenn Workflow-Ausführungen abgeschlossen werden. Webhooks werden über die Sim-Benutzeroberfläche im Workflow-Editor konfiguriert.
|
||||
Erhalten Sie Echtzeit-Benachrichtigungen, wenn Workflow-Ausführungen abgeschlossen sind, per Webhook, E-Mail oder Slack. Benachrichtigungen werden auf Workspace-Ebene von der Protokollseite aus konfiguriert.
|
||||
|
||||
### Konfiguration
|
||||
|
||||
Webhooks können für jeden Workflow über die Benutzeroberfläche des Workflow-Editors konfiguriert werden. Klicken Sie auf das Webhook-Symbol in der Kontrollleiste, um Ihre Webhook-Abonnements einzurichten.
|
||||
Konfigurieren Sie Benachrichtigungen von der Protokollseite aus, indem Sie auf die Menütaste klicken und "Benachrichtigungen konfigurieren" auswählen.
|
||||
|
||||
<div className="mx-auto w-full overflow-hidden rounded-lg">
|
||||
<Video src="configure-webhook.mp4" width={700} height={450} />
|
||||
</div>
|
||||
**Benachrichtigungskanäle:**
|
||||
- **Webhook**: Senden Sie HTTP POST-Anfragen an Ihren Endpunkt
|
||||
- **E-Mail**: Erhalten Sie E-Mail-Benachrichtigungen mit Ausführungsdetails
|
||||
- **Slack**: Posten Sie Nachrichten in einen Slack-Kanal
|
||||
|
||||
**Verfügbare Konfigurationsoptionen:**
|
||||
**Workflow-Auswahl:**
|
||||
- Wählen Sie bestimmte Workflows zur Überwachung aus
|
||||
- Oder wählen Sie "Alle Workflows", um aktuelle und zukünftige Workflows einzubeziehen
|
||||
|
||||
**Filteroptionen:**
|
||||
- `levelFilter`: Zu empfangende Protokollebenen (`info`, `error`)
|
||||
- `triggerFilter`: Zu empfangende Auslösertypen (`api`, `webhook`, `schedule`, `manual`, `chat`)
|
||||
|
||||
**Optionale Daten:**
|
||||
- `includeFinalOutput`: Schließt die endgültige Ausgabe des Workflows ein
|
||||
- `includeTraceSpans`: Schließt detaillierte Ausführungs-Trace-Spans ein
|
||||
- `includeRateLimits`: Schließt Informationen zum Ratenlimit ein (Sync/Async-Limits und verbleibende)
|
||||
- `includeUsageData`: Schließt Abrechnungszeitraum-Nutzung und -Limits ein
|
||||
|
||||
### Alarmregeln
|
||||
|
||||
Anstatt Benachrichtigungen für jede Ausführung zu erhalten, konfigurieren Sie Alarmregeln, um nur bei erkannten Problemen benachrichtigt zu werden:
|
||||
|
||||
**Aufeinanderfolgende Fehler**
|
||||
- Alarm nach X aufeinanderfolgenden fehlgeschlagenen Ausführungen (z.B. 3 Fehler in Folge)
|
||||
- Wird zurückgesetzt, wenn eine Ausführung erfolgreich ist
|
||||
|
||||
**Fehlerrate**
|
||||
- Alarm, wenn die Fehlerrate X% in den letzten Y Stunden überschreitet
|
||||
- Erfordert mindestens 5 Ausführungen im Zeitfenster
|
||||
- Wird erst nach Ablauf des vollständigen Zeitfensters ausgelöst
|
||||
|
||||
**Latenz-Schwellenwert**
|
||||
- Alarm, wenn eine Ausführung länger als X Sekunden dauert
|
||||
- Nützlich zum Erkennen langsamer oder hängender Workflows
|
||||
|
||||
**Latenz-Spitze**
|
||||
- Alarm, wenn die Ausführung X% langsamer als der Durchschnitt ist
|
||||
- Vergleicht mit der durchschnittlichen Dauer über das konfigurierte Zeitfenster
|
||||
- Erfordert mindestens 5 Ausführungen, um eine Baseline zu etablieren
|
||||
|
||||
**Kostenschwelle**
|
||||
- Alarmierung, wenn eine einzelne Ausführung mehr als $X kostet
|
||||
- Nützlich, um teure LLM-Aufrufe zu erkennen
|
||||
|
||||
**Keine Aktivität**
|
||||
- Alarmierung, wenn innerhalb von X Stunden keine Ausführungen stattfinden
|
||||
- Nützlich zur Überwachung geplanter Workflows, die regelmäßig ausgeführt werden sollten
|
||||
|
||||
**Fehlerzählung**
|
||||
- Alarmierung, wenn die Fehleranzahl X innerhalb eines Zeitfensters überschreitet
|
||||
- Erfasst die Gesamtfehler, nicht aufeinanderfolgende
|
||||
|
||||
Alle Alarmtypen beinhalten eine Abklingzeit von 1 Stunde, um Benachrichtigungsspam zu vermeiden.
|
||||
|
||||
### Webhook-Konfiguration
|
||||
|
||||
Für Webhooks stehen zusätzliche Optionen zur Verfügung:
|
||||
- `url`: Ihre Webhook-Endpunkt-URL
|
||||
- `secret`: Optionales Geheimnis für die HMAC-Signaturverifizierung
|
||||
- `includeFinalOutput`: Die endgültige Ausgabe des Workflows in die Nutzlast einschließen
|
||||
- `includeTraceSpans`: Detaillierte Ausführungs-Trace-Spans einschließen
|
||||
- `includeRateLimits`: Informationen zum Ratelimit des Workflow-Besitzers einschließen
|
||||
- `includeUsageData`: Nutzungs- und Abrechnungsdaten des Workflow-Besitzers einschließen
|
||||
- `levelFilter`: Array von Log-Ebenen, die empfangen werden sollen (`info`, `error`)
|
||||
- `triggerFilter`: Array von Auslösertypen, die empfangen werden sollen (`api`, `webhook`, `schedule`, `manual`, `chat`)
|
||||
- `active`: Webhook-Abonnement aktivieren/deaktivieren
|
||||
- `secret`: Optionales Geheimnis für HMAC-Signaturverifizierung
|
||||
|
||||
### Webhook-Nutzlast
|
||||
### Payload-Struktur
|
||||
|
||||
Wenn eine Workflow-Ausführung abgeschlossen ist, sendet Sim eine POST-Anfrage an Ihre Webhook-URL:
|
||||
Wenn eine Workflow-Ausführung abgeschlossen ist, sendet Sim die folgende Payload (über Webhook POST, E-Mail oder Slack):
|
||||
|
||||
```json
|
||||
{
|
||||
@@ -327,17 +379,17 @@ Wenn eine Workflow-Ausführung abgeschlossen ist, sendet Sim eine POST-Anfrage a
|
||||
|
||||
### Webhook-Header
|
||||
|
||||
Jede Webhook-Anfrage enthält diese Header:
|
||||
Jede Webhook-Anfrage enthält diese Header (nur Webhook-Kanal):
|
||||
|
||||
- `sim-event`: Ereignistyp (immer `workflow.execution.completed`)
|
||||
- `sim-timestamp`: Unix-Zeitstempel in Millisekunden
|
||||
- `sim-delivery-id`: Eindeutige Lieferungs-ID für Idempotenz
|
||||
- `sim-signature`: HMAC-SHA256-Signatur zur Verifizierung (falls Secret konfiguriert)
|
||||
- `Idempotency-Key`: Identisch mit der Lieferungs-ID zur Erkennung von Duplikaten
|
||||
- `sim-delivery-id`: Eindeutige Zustell-ID für Idempotenz
|
||||
- `sim-signature`: HMAC-SHA256-Signatur zur Verifizierung (falls Geheimnis konfiguriert)
|
||||
- `Idempotency-Key`: Gleich wie Zustell-ID zur Erkennung von Duplikaten
|
||||
|
||||
### Signaturverifizierung
|
||||
|
||||
Wenn Sie ein Webhook-Secret konfigurieren, überprüfen Sie die Signatur, um sicherzustellen, dass der Webhook von Sim stammt:
|
||||
Wenn Sie ein Webhook-Geheimnis konfigurieren, überprüfen Sie die Signatur, um sicherzustellen, dass der Webhook von Sim stammt:
|
||||
|
||||
<Tabs items={['Node.js', 'Python']}>
|
||||
<Tab value="Node.js">
|
||||
@@ -414,7 +466,7 @@ Fehlgeschlagene Webhook-Zustellungen werden mit exponentiellem Backoff und Jitte
|
||||
|
||||
- Maximale Versuche: 5
|
||||
- Wiederholungsverzögerungen: 5 Sekunden, 15 Sekunden, 1 Minute, 3 Minuten, 10 Minuten
|
||||
- Jitter: Bis zu 10% zusätzliche Verzögerung, um Überlastungen zu vermeiden
|
||||
- Jitter: Bis zu 10% zusätzliche Verzögerung, um Überlastung zu vermeiden
|
||||
- Nur HTTP 5xx und 429 Antworten lösen Wiederholungen aus
|
||||
- Zustellungen haben ein Timeout nach 30 Sekunden
|
||||
|
||||
@@ -424,31 +476,39 @@ Fehlgeschlagene Webhook-Zustellungen werden mit exponentiellem Backoff und Jitte
|
||||
|
||||
## Best Practices
|
||||
|
||||
1. **Polling-Strategie**: Verwenden Sie beim Abfragen von Logs die cursorbasierte Paginierung mit `order=asc` und `startDate`, um neue Logs effizient abzurufen.
|
||||
1. **Polling-Strategie**: Verwende bei der Abfrage von Logs eine cursor-basierte Paginierung mit `order=asc` und `startDate`, um neue Logs effizient abzurufen.
|
||||
|
||||
2. **Webhook-Sicherheit**: Konfigurieren Sie immer ein Webhook-Secret und überprüfen Sie Signaturen, um sicherzustellen, dass Anfragen von Sim stammen.
|
||||
2. **Webhook-Sicherheit**: Konfiguriere immer ein Webhook-Secret und überprüfe Signaturen, um sicherzustellen, dass Anfragen von Sim stammen.
|
||||
|
||||
3. **Idempotenz**: Verwenden Sie den `Idempotency-Key`Header, um doppelte Webhook-Zustellungen zu erkennen und zu behandeln.
|
||||
3. **Idempotenz**: Verwende den `Idempotency-Key`Header, um doppelte Webhook-Zustellungen zu erkennen und zu behandeln.
|
||||
|
||||
4. **Datenschutz**: Standardmäßig werden `finalOutput` und `traceSpans` von den Antworten ausgeschlossen. Aktivieren Sie diese nur, wenn Sie die Daten benötigen und die Datenschutzauswirkungen verstehen.
|
||||
4. **Datenschutz**: Standardmäßig werden `finalOutput` und `traceSpans` aus den Antworten ausgeschlossen. Aktiviere diese nur, wenn du die Daten benötigst und die Datenschutzauswirkungen verstehst.
|
||||
|
||||
5. **Rate-Limiting**: Implementieren Sie exponentielles Backoff, wenn Sie 429-Antworten erhalten. Überprüfen Sie den `Retry-After`Header für die empfohlene Wartezeit.
|
||||
5. **Rate-Limiting**: Implementiere exponentielles Backoff, wenn du 429-Antworten erhältst. Überprüfe den `Retry-After`Header für die empfohlene Wartezeit.
|
||||
|
||||
## Rate-Limiting
|
||||
|
||||
Die API implementiert Rate-Limiting, um eine faire Nutzung zu gewährleisten:
|
||||
Die API verwendet einen **Token-Bucket-Algorithmus** für die Ratenbegrenzung, der eine faire Nutzung ermöglicht und gleichzeitig Burst-Traffic zulässt:
|
||||
|
||||
- **Kostenloser Plan**: 10 Anfragen pro Minute
|
||||
- **Pro-Plan**: 30 Anfragen pro Minute
|
||||
- **Team-Plan**: 60 Anfragen pro Minute
|
||||
- **Enterprise-Plan**: Individuelle Limits
|
||||
| Plan | Anfragen/Minute | Burst-Kapazität |
|
||||
|------|-----------------|----------------|
|
||||
| Free | 10 | 20 |
|
||||
| Pro | 30 | 60 |
|
||||
| Team | 60 | 120 |
|
||||
| Enterprise | 120 | 240 |
|
||||
|
||||
Informationen zum Rate-Limit sind in den Antwort-Headern enthalten:
|
||||
- `X-RateLimit-Limit`: Maximale Anfragen pro Zeitfenster
|
||||
- `X-RateLimit-Remaining`: Verbleibende Anfragen im aktuellen Zeitfenster
|
||||
- `X-RateLimit-Reset`: ISO-Zeitstempel, wann das Zeitfenster zurückgesetzt wird
|
||||
**Wie es funktioniert:**
|
||||
- Tokens werden mit der Rate `requestsPerMinute` aufgefüllt
|
||||
- Du kannst im Leerlauf bis zu `maxBurst` Tokens ansammeln
|
||||
- Jede Anfrage verbraucht 1 Token
|
||||
- Die Burst-Kapazität ermöglicht die Bewältigung von Verkehrsspitzen
|
||||
|
||||
## Beispiel: Abfragen neuer Logs
|
||||
Informationen zur Ratenbegrenzung sind in den Antwort-Headern enthalten:
|
||||
- `X-RateLimit-Limit`: Anfragen pro Minute (Auffüllrate)
|
||||
- `X-RateLimit-Remaining`: Aktuell verfügbare Tokens
|
||||
- `X-RateLimit-Reset`: ISO-Zeitstempel, wann Tokens als nächstes aufgefüllt werden
|
||||
|
||||
## Beispiel: Abfragen nach neuen Logs
|
||||
|
||||
```javascript
|
||||
let cursor = null;
|
||||
|
||||
@@ -147,8 +147,20 @@ curl -X GET -H "X-API-Key: YOUR_API_KEY" -H "Content-Type: application/json" htt
|
||||
{
|
||||
"success": true,
|
||||
"rateLimit": {
|
||||
"sync": { "isLimited": false, "limit": 10, "remaining": 10, "resetAt": "2025-09-08T22:51:55.999Z" },
|
||||
"async": { "isLimited": false, "limit": 50, "remaining": 50, "resetAt": "2025-09-08T22:51:56.155Z" },
|
||||
"sync": {
|
||||
"isLimited": false,
|
||||
"requestsPerMinute": 25,
|
||||
"maxBurst": 50,
|
||||
"remaining": 50,
|
||||
"resetAt": "2025-09-08T22:51:55.999Z"
|
||||
},
|
||||
"async": {
|
||||
"isLimited": false,
|
||||
"requestsPerMinute": 200,
|
||||
"maxBurst": 400,
|
||||
"remaining": 400,
|
||||
"resetAt": "2025-09-08T22:51:56.155Z"
|
||||
},
|
||||
"authType": "api"
|
||||
},
|
||||
"usage": {
|
||||
@@ -159,49 +171,54 @@ 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)
|
||||
|
||||
**Antwortfelder:**
|
||||
- `currentPeriodCost` zeigt die Nutzung im aktuellen Abrechnungszeitraum
|
||||
- `limit` wird aus individuellen Limits (Free/Pro) oder gebündelten Organisationslimits (Team/Enterprise) abgeleitet
|
||||
- `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
|
||||
|
||||
## Plan-Limits
|
||||
|
||||
Verschiedene Abonnementpläne haben unterschiedliche Nutzungslimits:
|
||||
|
||||
| Plan | Monatliches Nutzungslimit | Ratengrenze (pro Minute) |
|
||||
| Plan | Monatliches Nutzungslimit | Rate-Limits (pro Minute) |
|
||||
|------|-------------------|-------------------------|
|
||||
| **Free** | $10 | 5 sync, 10 async |
|
||||
| **Pro** | $100 | 10 sync, 50 async |
|
||||
| **Team** | $500 (gebündelt) | 50 sync, 100 async |
|
||||
| **Team** | $500 (gepoolt) | 50 sync, 100 async |
|
||||
| **Enterprise** | Individuell | Individuell |
|
||||
|
||||
## Abrechnungsmodell
|
||||
|
||||
Sim verwendet ein **Basisabonnement + Überschreitung** Abrechnungsmodell:
|
||||
Sim verwendet ein **Basisabonnement + Mehrverbrauch**-Abrechnungsmodell:
|
||||
|
||||
### Wie es funktioniert
|
||||
|
||||
**Pro Plan ($20/Monat):**
|
||||
**Pro-Plan ($20/Monat):**
|
||||
- Monatliches Abonnement beinhaltet $20 Nutzung
|
||||
- Nutzung unter $20 → Keine zusätzlichen Kosten
|
||||
- Nutzung über $20 → Zahlung der Überschreitung am Monatsende
|
||||
- Beispiel: $35 Nutzung = $20 (Abonnement) + $15 (Überschreitung)
|
||||
- Nutzung über $20 → Zahlen Sie den Mehrverbrauch am Monatsende
|
||||
- Beispiel: $35 Nutzung = $20 (Abonnement) + $15 (Mehrverbrauch)
|
||||
|
||||
**Team Plan ($40/Benutzer/Monat):**
|
||||
- Gebündelte Nutzung für alle Teammitglieder
|
||||
- Überschreitung wird aus der Gesamtnutzung des Teams berechnet
|
||||
**Team-Plan ($40/Benutzer/Monat):**
|
||||
- Gepoolte Nutzung für alle Teammitglieder
|
||||
- Mehrverbrauch wird aus der Gesamtnutzung des Teams berechnet
|
||||
- Organisationsinhaber erhält eine Rechnung
|
||||
|
||||
**Enterprise Pläne:**
|
||||
- Fester monatlicher Preis, keine Überschreitungen
|
||||
**Enterprise-Pläne:**
|
||||
- Fester monatlicher Preis, kein Mehrverbrauch
|
||||
- Individuelle Nutzungslimits gemäß Vereinbarung
|
||||
|
||||
### Schwellenwertabrechnung
|
||||
### Schwellenwert-Abrechnung
|
||||
|
||||
Wenn die nicht abgerechnete Überschreitung $50 erreicht, berechnet Sim automatisch den gesamten nicht abgerechneten Betrag.
|
||||
Wenn der nicht abgerechnete Mehrverbrauch $50 erreicht, berechnet Sim automatisch den gesamten nicht abgerechneten Betrag.
|
||||
|
||||
**Beispiel:**
|
||||
- Tag 10: $70 Überschreitung → Sofortige Abrechnung von $70
|
||||
- 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
|
||||
|
||||
|
||||
@@ -147,4 +147,4 @@ Der Snapshot bietet:
|
||||
|
||||
- Erfahren Sie mehr über die [Kostenberechnung](/execution/costs), um die Preisgestaltung von Workflows zu verstehen
|
||||
- Erkunden Sie die [externe API](/execution/api) für programmatischen Zugriff auf Protokolle
|
||||
- Richten Sie [Webhook-Benachrichtigungen](/execution/api#webhook-subscriptions) für Echtzeit-Warnungen ein
|
||||
- Richten Sie [Benachrichtigungen](/execution/api#notifications) für Echtzeit-Warnungen per Webhook, E-Mail oder Slack ein
|
||||
@@ -72,7 +72,7 @@ Für benutzerdefinierte Integrationen nutzen Sie unsere [MCP (Model Context Prot
|
||||
<Video src="introduction/integrations-sidebar.mp4" width={700} height={450} />
|
||||
</div>
|
||||
|
||||
## KI-gesteuerter Copilot
|
||||
## Copilot
|
||||
|
||||
**Fragen stellen & Anleitung erhalten**
|
||||
Der Copilot beantwortet Fragen zu Sim, erklärt Ihre Workflows und gibt Verbesserungsvorschläge. Verwenden Sie das `@` Symbol, um auf Workflows, Blöcke, Dokumentation, Wissen und Protokolle für kontextbezogene Unterstützung zu verweisen.
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
---
|
||||
title: Wissensdatenbank
|
||||
title: Übersicht
|
||||
description: Laden Sie Ihre Dokumente hoch, verarbeiten und durchsuchen Sie sie
|
||||
mit intelligenter Vektorsuche und Chunking
|
||||
---
|
||||
|
||||
import { Video } from '@/components/ui/video'
|
||||
|
||||
155
apps/docs/content/docs/de/self-hosting/docker.mdx
Normal file
155
apps/docs/content/docs/de/self-hosting/docker.mdx
Normal file
@@ -0,0 +1,155 @@
|
||||
---
|
||||
title: Docker
|
||||
description: Sim Studio mit Docker Compose bereitstellen
|
||||
---
|
||||
|
||||
import { Tab, Tabs } from 'fumadocs-ui/components/tabs'
|
||||
import { Callout } from 'fumadocs-ui/components/callout'
|
||||
|
||||
## Schnellstart
|
||||
|
||||
```bash
|
||||
# Clone and start
|
||||
git clone https://github.com/simstudioai/sim.git && cd sim
|
||||
docker compose -f docker-compose.prod.yml up -d
|
||||
```
|
||||
|
||||
Öffnen Sie [http://localhost:3000](http://localhost:3000)
|
||||
|
||||
## Produktionseinrichtung
|
||||
|
||||
### 1. Umgebung konfigurieren
|
||||
|
||||
```bash
|
||||
# Generate secrets
|
||||
cat > .env << EOF
|
||||
DATABASE_URL=postgresql://postgres:postgres@db:5432/simstudio
|
||||
BETTER_AUTH_SECRET=$(openssl rand -hex 32)
|
||||
ENCRYPTION_KEY=$(openssl rand -hex 32)
|
||||
INTERNAL_API_SECRET=$(openssl rand -hex 32)
|
||||
NEXT_PUBLIC_APP_URL=https://sim.yourdomain.com
|
||||
BETTER_AUTH_URL=https://sim.yourdomain.com
|
||||
NEXT_PUBLIC_SOCKET_URL=https://sim.yourdomain.com
|
||||
EOF
|
||||
```
|
||||
|
||||
### 2. Dienste starten
|
||||
|
||||
```bash
|
||||
docker compose -f docker-compose.prod.yml up -d
|
||||
```
|
||||
|
||||
### 3. SSL einrichten
|
||||
|
||||
<Tabs items={['Caddy (Empfohlen)', 'Nginx + Certbot']}>
|
||||
<Tab value="Caddy (Empfohlen)">
|
||||
Caddy verwaltet SSL-Zertifikate automatisch.
|
||||
|
||||
```bash
|
||||
# Install Caddy
|
||||
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https curl
|
||||
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
|
||||
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
|
||||
sudo apt update && sudo apt install caddy
|
||||
```
|
||||
|
||||
Erstellen Sie `/etc/caddy/Caddyfile`:
|
||||
|
||||
```
|
||||
sim.yourdomain.com {
|
||||
reverse_proxy localhost:3000
|
||||
|
||||
handle /socket.io/* {
|
||||
reverse_proxy localhost:3002
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
```bash
|
||||
sudo systemctl restart caddy
|
||||
```
|
||||
|
||||
</Tab>
|
||||
<Tab value="Nginx + Certbot">
|
||||
|
||||
```bash
|
||||
# Install
|
||||
sudo apt install nginx certbot python3-certbot-nginx -y
|
||||
|
||||
# Create /etc/nginx/sites-available/sim
|
||||
server {
|
||||
listen 80;
|
||||
server_name sim.yourdomain.com;
|
||||
|
||||
location / {
|
||||
proxy_pass http://127.0.0.1:3000;
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Upgrade $http_upgrade;
|
||||
proxy_set_header Connection 'upgrade';
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
}
|
||||
|
||||
location /socket.io/ {
|
||||
proxy_pass http://127.0.0.1:3002;
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Upgrade $http_upgrade;
|
||||
proxy_set_header Connection "upgrade";
|
||||
}
|
||||
}
|
||||
|
||||
# Enable and get certificate
|
||||
sudo ln -s /etc/nginx/sites-available/sim /etc/nginx/sites-enabled/
|
||||
sudo certbot --nginx -d sim.yourdomain.com
|
||||
```
|
||||
|
||||
</Tab>
|
||||
</Tabs>
|
||||
|
||||
## Ollama
|
||||
|
||||
```bash
|
||||
# With GPU
|
||||
docker compose -f docker-compose.ollama.yml --profile gpu --profile setup up -d
|
||||
|
||||
# CPU only
|
||||
docker compose -f docker-compose.ollama.yml --profile cpu --profile setup up -d
|
||||
```
|
||||
|
||||
Zusätzliche Modelle herunterladen:
|
||||
|
||||
```bash
|
||||
docker compose -f docker-compose.ollama.yml exec ollama ollama pull llama3.2
|
||||
```
|
||||
|
||||
### Externes Ollama
|
||||
|
||||
Wenn Ollama auf Ihrem Host-Rechner läuft (nicht in Docker):
|
||||
|
||||
```bash
|
||||
# macOS/Windows
|
||||
OLLAMA_URL=http://host.docker.internal:11434 docker compose -f docker-compose.prod.yml up -d
|
||||
|
||||
# Linux - use your host IP
|
||||
OLLAMA_URL=http://192.168.1.100:11434 docker compose -f docker-compose.prod.yml up -d
|
||||
```
|
||||
|
||||
<Callout type="warning">
|
||||
Innerhalb von Docker bezieht sich `localhost` auf den Container, nicht auf Ihren Host. Verwenden Sie `host.docker.internal` oder die IP-Adresse Ihres Hosts.
|
||||
</Callout>
|
||||
|
||||
## Befehle
|
||||
|
||||
```bash
|
||||
# View logs
|
||||
docker compose -f docker-compose.prod.yml logs -f simstudio
|
||||
|
||||
# Stop
|
||||
docker compose -f docker-compose.prod.yml down
|
||||
|
||||
# Update
|
||||
docker compose -f docker-compose.prod.yml pull && docker compose -f docker-compose.prod.yml up -d
|
||||
|
||||
# Backup database
|
||||
docker compose -f docker-compose.prod.yml exec db pg_dump -U postgres simstudio > backup.sql
|
||||
```
|
||||
@@ -0,0 +1,87 @@
|
||||
---
|
||||
title: Umgebungsvariablen
|
||||
description: Konfigurationsreferenz für Sim Studio
|
||||
---
|
||||
|
||||
import { Callout } from 'fumadocs-ui/components/callout'
|
||||
|
||||
## Erforderlich
|
||||
|
||||
| Variable | Beschreibung |
|
||||
|----------|-------------|
|
||||
| `DATABASE_URL` | PostgreSQL-Verbindungszeichenfolge |
|
||||
| `BETTER_AUTH_SECRET` | Auth-Secret (32 Hex-Zeichen): `openssl rand -hex 32` |
|
||||
| `BETTER_AUTH_URL` | Ihre App-URL |
|
||||
| `ENCRYPTION_KEY` | Verschlüsselungsschlüssel (32 Hex-Zeichen): `openssl rand -hex 32` |
|
||||
| `INTERNAL_API_SECRET` | Internes API-Secret (32 Hex-Zeichen): `openssl rand -hex 32` |
|
||||
| `NEXT_PUBLIC_APP_URL` | Öffentliche App-URL |
|
||||
| `NEXT_PUBLIC_SOCKET_URL` | WebSocket-URL (Standard: `http://localhost:3002`) |
|
||||
|
||||
## KI-Anbieter
|
||||
|
||||
| Variable | Anbieter |
|
||||
|----------|----------|
|
||||
| `OPENAI_API_KEY` | OpenAI |
|
||||
| `ANTHROPIC_API_KEY_1` | Anthropic Claude |
|
||||
| `GEMINI_API_KEY_1` | Google Gemini |
|
||||
| `MISTRAL_API_KEY` | Mistral |
|
||||
| `OLLAMA_URL` | Ollama (Standard: `http://localhost:11434`) |
|
||||
|
||||
<Callout type="info">
|
||||
Für Lastausgleich fügen Sie mehrere Schlüssel mit den Suffixen `_1`, `_2`, `_3` hinzu (z.B. `OPENAI_API_KEY_1`, `OPENAI_API_KEY_2`). Funktioniert mit OpenAI, Anthropic und Gemini.
|
||||
</Callout>
|
||||
|
||||
<Callout type="info">
|
||||
In Docker verwenden Sie `OLLAMA_URL=http://host.docker.internal:11434` für Ollama auf dem Host-System.
|
||||
</Callout>
|
||||
|
||||
### Azure OpenAI
|
||||
|
||||
| Variable | Beschreibung |
|
||||
|----------|-------------|
|
||||
| `AZURE_OPENAI_API_KEY` | Azure OpenAI API-Schlüssel |
|
||||
| `AZURE_OPENAI_ENDPOINT` | Azure OpenAI Endpoint-URL |
|
||||
| `AZURE_OPENAI_API_VERSION` | API-Version (z.B. `2024-02-15-preview`) |
|
||||
|
||||
### vLLM (Selbst-gehostet)
|
||||
|
||||
| Variable | Beschreibung |
|
||||
|----------|-------------|
|
||||
| `VLLM_BASE_URL` | vLLM-Server-URL (z.B. `http://localhost:8000/v1`) |
|
||||
| `VLLM_API_KEY` | Optionaler Bearer-Token für vLLM |
|
||||
|
||||
## OAuth-Anbieter
|
||||
|
||||
| Variable | Beschreibung |
|
||||
|----------|-------------|
|
||||
| `GOOGLE_CLIENT_ID` | Google OAuth Client-ID |
|
||||
| `GOOGLE_CLIENT_SECRET` | Google OAuth Client-Secret |
|
||||
| `GITHUB_CLIENT_ID` | GitHub OAuth Client-ID |
|
||||
| `GITHUB_CLIENT_SECRET` | GitHub OAuth Client-Secret |
|
||||
|
||||
## Optional
|
||||
|
||||
| Variable | Beschreibung |
|
||||
|----------|-------------|
|
||||
| `API_ENCRYPTION_KEY` | Verschlüsselt gespeicherte API-Schlüssel (32 Hex-Zeichen): `openssl rand -hex 32` |
|
||||
| `COPILOT_API_KEY` | API-Schlüssel für Copilot-Funktionen |
|
||||
| `ADMIN_API_KEY` | Admin-API-Schlüssel für GitOps-Operationen |
|
||||
| `RESEND_API_KEY` | E-Mail-Dienst für Benachrichtigungen |
|
||||
| `ALLOWED_LOGIN_DOMAINS` | Registrierungen auf Domains beschränken (durch Kommas getrennt) |
|
||||
| `ALLOWED_LOGIN_EMAILS` | Registrierungen auf bestimmte E-Mails beschränken (durch Kommas getrennt) |
|
||||
| `DISABLE_REGISTRATION` | Auf `true` setzen, um neue Benutzerregistrierungen zu deaktivieren |
|
||||
|
||||
## Beispiel .env
|
||||
|
||||
```bash
|
||||
DATABASE_URL=postgresql://postgres:postgres@db:5432/simstudio
|
||||
BETTER_AUTH_SECRET=<openssl rand -hex 32>
|
||||
BETTER_AUTH_URL=https://sim.yourdomain.com
|
||||
ENCRYPTION_KEY=<openssl rand -hex 32>
|
||||
INTERNAL_API_SECRET=<openssl rand -hex 32>
|
||||
NEXT_PUBLIC_APP_URL=https://sim.yourdomain.com
|
||||
NEXT_PUBLIC_SOCKET_URL=https://sim.yourdomain.com
|
||||
OPENAI_API_KEY=sk-...
|
||||
```
|
||||
|
||||
Siehe `apps/sim/.env.example` für alle Optionen.
|
||||
50
apps/docs/content/docs/de/self-hosting/index.mdx
Normal file
50
apps/docs/content/docs/de/self-hosting/index.mdx
Normal file
@@ -0,0 +1,50 @@
|
||||
---
|
||||
title: Self-Hosting
|
||||
description: Stellen Sie Sim Studio auf Ihrer eigenen Infrastruktur bereit
|
||||
---
|
||||
|
||||
import { Card, Cards } from 'fumadocs-ui/components/card'
|
||||
import { Callout } from 'fumadocs-ui/components/callout'
|
||||
|
||||
Stellen Sie Sim Studio auf Ihrer eigenen Infrastruktur mit Docker oder Kubernetes bereit.
|
||||
|
||||
## Anforderungen
|
||||
|
||||
| Ressource | Minimum | Empfohlen |
|
||||
|----------|---------|-------------|
|
||||
| CPU | 2 Kerne | 4+ Kerne |
|
||||
| RAM | 12 GB | 16+ GB |
|
||||
| Speicher | 20 GB SSD | 50+ GB SSD |
|
||||
| Docker | 20.10+ | Neueste Version |
|
||||
|
||||
## Schnellstart
|
||||
|
||||
```bash
|
||||
git clone https://github.com/simstudioai/sim.git && cd sim
|
||||
docker compose -f docker-compose.prod.yml up -d
|
||||
```
|
||||
|
||||
Öffnen Sie [http://localhost:3000](http://localhost:3000)
|
||||
|
||||
## Bereitstellungsoptionen
|
||||
|
||||
<Cards>
|
||||
<Card title="Docker" href="/self-hosting/docker">
|
||||
Bereitstellung mit Docker Compose auf jedem Server
|
||||
</Card>
|
||||
<Card title="Kubernetes" href="/self-hosting/kubernetes">
|
||||
Bereitstellung mit Helm auf Kubernetes-Clustern
|
||||
</Card>
|
||||
<Card title="Cloud-Plattformen" href="/self-hosting/platforms">
|
||||
Anleitungen für Railway, DigitalOcean, AWS, Azure, GCP
|
||||
</Card>
|
||||
</Cards>
|
||||
|
||||
## Architektur
|
||||
|
||||
| Komponente | Port | Beschreibung |
|
||||
|-----------|------|-------------|
|
||||
| simstudio | 3000 | Hauptanwendung |
|
||||
| realtime | 3002 | WebSocket-Server |
|
||||
| db | 5432 | PostgreSQL mit pgvector |
|
||||
| migrations | - | Datenbank-Migrationen (werden einmal ausgeführt) |
|
||||
133
apps/docs/content/docs/de/self-hosting/kubernetes.mdx
Normal file
133
apps/docs/content/docs/de/self-hosting/kubernetes.mdx
Normal file
@@ -0,0 +1,133 @@
|
||||
---
|
||||
title: Kubernetes
|
||||
description: Sim Studio mit Helm bereitstellen
|
||||
---
|
||||
|
||||
import { Tab, Tabs } from 'fumadocs-ui/components/tabs'
|
||||
import { Callout } from 'fumadocs-ui/components/callout'
|
||||
|
||||
## Voraussetzungen
|
||||
|
||||
- Kubernetes 1.19+
|
||||
- Helm 3.0+
|
||||
- PV-Provisioner-Unterstützung
|
||||
|
||||
## Installation
|
||||
|
||||
```bash
|
||||
# Clone repo
|
||||
git clone https://github.com/simstudioai/sim.git && cd sim
|
||||
|
||||
# Generate secrets
|
||||
BETTER_AUTH_SECRET=$(openssl rand -hex 32)
|
||||
ENCRYPTION_KEY=$(openssl rand -hex 32)
|
||||
INTERNAL_API_SECRET=$(openssl rand -hex 32)
|
||||
|
||||
# Install
|
||||
helm install sim ./helm/sim \
|
||||
--set app.env.BETTER_AUTH_SECRET="$BETTER_AUTH_SECRET" \
|
||||
--set app.env.ENCRYPTION_KEY="$ENCRYPTION_KEY" \
|
||||
--set app.env.INTERNAL_API_SECRET="$INTERNAL_API_SECRET" \
|
||||
--namespace simstudio --create-namespace
|
||||
```
|
||||
|
||||
## Cloud-spezifische Werte
|
||||
|
||||
<Tabs items={['AWS EKS', 'Azure AKS', 'GCP GKE']}>
|
||||
<Tab value="AWS EKS">
|
||||
|
||||
```bash
|
||||
helm install sim ./helm/sim \
|
||||
--values ./helm/sim/examples/values-aws.yaml \
|
||||
--set app.env.BETTER_AUTH_SECRET="$BETTER_AUTH_SECRET" \
|
||||
--set app.env.ENCRYPTION_KEY="$ENCRYPTION_KEY" \
|
||||
--set app.env.INTERNAL_API_SECRET="$INTERNAL_API_SECRET" \
|
||||
--set app.env.NEXT_PUBLIC_APP_URL="https://sim.yourdomain.com" \
|
||||
--namespace simstudio --create-namespace
|
||||
```
|
||||
|
||||
</Tab>
|
||||
<Tab value="Azure AKS">
|
||||
|
||||
```bash
|
||||
helm install sim ./helm/sim \
|
||||
--values ./helm/sim/examples/values-azure.yaml \
|
||||
--set app.env.BETTER_AUTH_SECRET="$BETTER_AUTH_SECRET" \
|
||||
--set app.env.ENCRYPTION_KEY="$ENCRYPTION_KEY" \
|
||||
--set app.env.INTERNAL_API_SECRET="$INTERNAL_API_SECRET" \
|
||||
--set app.env.NEXT_PUBLIC_APP_URL="https://sim.yourdomain.com" \
|
||||
--namespace simstudio --create-namespace
|
||||
```
|
||||
|
||||
</Tab>
|
||||
<Tab value="GCP GKE">
|
||||
|
||||
```bash
|
||||
helm install sim ./helm/sim \
|
||||
--values ./helm/sim/examples/values-gcp.yaml \
|
||||
--set app.env.BETTER_AUTH_SECRET="$BETTER_AUTH_SECRET" \
|
||||
--set app.env.ENCRYPTION_KEY="$ENCRYPTION_KEY" \
|
||||
--set app.env.INTERNAL_API_SECRET="$INTERNAL_API_SECRET" \
|
||||
--set app.env.NEXT_PUBLIC_APP_URL="https://sim.yourdomain.com" \
|
||||
--namespace simstudio --create-namespace
|
||||
```
|
||||
|
||||
</Tab>
|
||||
</Tabs>
|
||||
|
||||
## Schlüsselkonfiguration
|
||||
|
||||
```yaml
|
||||
# Custom values.yaml
|
||||
app:
|
||||
replicaCount: 2
|
||||
env:
|
||||
NEXT_PUBLIC_APP_URL: "https://sim.yourdomain.com"
|
||||
OPENAI_API_KEY: "sk-..."
|
||||
|
||||
postgresql:
|
||||
persistence:
|
||||
size: 50Gi
|
||||
|
||||
ingress:
|
||||
enabled: true
|
||||
className: nginx
|
||||
tls:
|
||||
enabled: true
|
||||
app:
|
||||
host: sim.yourdomain.com
|
||||
```
|
||||
|
||||
Siehe `helm/sim/values.yaml` für alle Optionen.
|
||||
|
||||
## Externe Datenbank
|
||||
|
||||
```yaml
|
||||
postgresql:
|
||||
enabled: false
|
||||
|
||||
externalDatabase:
|
||||
enabled: true
|
||||
host: "your-db-host"
|
||||
port: 5432
|
||||
username: "postgres"
|
||||
password: "your-password"
|
||||
database: "simstudio"
|
||||
sslMode: "require"
|
||||
```
|
||||
|
||||
## Befehle
|
||||
|
||||
```bash
|
||||
# Port forward for local access
|
||||
kubectl port-forward deployment/sim-sim-app 3000:3000 -n simstudio
|
||||
|
||||
# View logs
|
||||
kubectl logs -l app.kubernetes.io/component=app -n simstudio --tail=100
|
||||
|
||||
# Upgrade
|
||||
helm upgrade sim ./helm/sim --namespace simstudio
|
||||
|
||||
# Uninstall
|
||||
helm uninstall sim --namespace simstudio
|
||||
```
|
||||
124
apps/docs/content/docs/de/self-hosting/platforms.mdx
Normal file
124
apps/docs/content/docs/de/self-hosting/platforms.mdx
Normal file
@@ -0,0 +1,124 @@
|
||||
---
|
||||
title: Cloud-Plattformen
|
||||
description: Sim Studio auf Cloud-Plattformen bereitstellen
|
||||
---
|
||||
|
||||
import { Tab, Tabs } from 'fumadocs-ui/components/tabs'
|
||||
import { Callout } from 'fumadocs-ui/components/callout'
|
||||
|
||||
## Railway
|
||||
|
||||
Bereitstellung mit einem Klick und automatischer PostgreSQL-Bereitstellung.
|
||||
|
||||
[
|
||||
|
||||

|
||||
|
||||
](https://railway.com/new/template/sim-studio)
|
||||
|
||||
Nach der Bereitstellung fügen Sie Umgebungsvariablen im Railway-Dashboard hinzu:
|
||||
- `BETTER_AUTH_SECRET`, `ENCRYPTION_KEY`, `INTERNAL_API_SECRET` (automatisch generiert)
|
||||
- `OPENAI_API_KEY` oder andere KI-Anbieter-Schlüssel
|
||||
- Benutzerdefinierte Domain in Einstellungen → Netzwerk
|
||||
|
||||
## VPS-Bereitstellung
|
||||
|
||||
Für DigitalOcean, AWS EC2, Azure VMs oder jeden Linux-Server:
|
||||
|
||||
<Tabs items={['DigitalOcean', 'AWS EC2', 'Azure VM']}>
|
||||
<Tab value="DigitalOcean">
|
||||
**Empfohlen:** 16 GB RAM Droplet, Ubuntu 24.04
|
||||
|
||||
```bash
|
||||
# Create Droplet via console, then SSH in
|
||||
ssh root@your-droplet-ip
|
||||
```
|
||||
|
||||
</Tab>
|
||||
<Tab value="AWS EC2">
|
||||
**Empfohlen:** t3.xlarge (16 GB RAM), Ubuntu 24.04
|
||||
|
||||
```bash
|
||||
ssh -i your-key.pem ubuntu@your-ec2-ip
|
||||
```
|
||||
|
||||
</Tab>
|
||||
<Tab value="Azure VM">
|
||||
**Empfohlen:** Standard_D4s_v3 (16 GB RAM), Ubuntu 24.04
|
||||
|
||||
```bash
|
||||
ssh azureuser@your-vm-ip
|
||||
```
|
||||
|
||||
</Tab>
|
||||
</Tabs>
|
||||
|
||||
### Docker installieren
|
||||
|
||||
```bash
|
||||
# Install Docker (official method)
|
||||
curl -fsSL https://get.docker.com | sudo sh
|
||||
sudo usermod -aG docker $USER
|
||||
|
||||
# Logout and reconnect, then verify
|
||||
docker --version
|
||||
```
|
||||
|
||||
### Sim Studio bereitstellen
|
||||
|
||||
```bash
|
||||
git clone https://github.com/simstudioai/sim.git && cd sim
|
||||
|
||||
# Create .env with secrets
|
||||
cat > .env << EOF
|
||||
DATABASE_URL=postgresql://postgres:postgres@db:5432/simstudio
|
||||
BETTER_AUTH_SECRET=$(openssl rand -hex 32)
|
||||
ENCRYPTION_KEY=$(openssl rand -hex 32)
|
||||
INTERNAL_API_SECRET=$(openssl rand -hex 32)
|
||||
NEXT_PUBLIC_APP_URL=https://sim.yourdomain.com
|
||||
BETTER_AUTH_URL=https://sim.yourdomain.com
|
||||
NEXT_PUBLIC_SOCKET_URL=https://sim.yourdomain.com
|
||||
EOF
|
||||
|
||||
# Start
|
||||
docker compose -f docker-compose.prod.yml up -d
|
||||
```
|
||||
|
||||
### SSL mit Caddy
|
||||
|
||||
```bash
|
||||
# Install Caddy
|
||||
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https curl
|
||||
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
|
||||
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
|
||||
sudo apt update && sudo apt install caddy
|
||||
|
||||
# Configure (replace domain)
|
||||
echo 'sim.yourdomain.com {
|
||||
reverse_proxy localhost:3000
|
||||
handle /socket.io/* {
|
||||
reverse_proxy localhost:3002
|
||||
}
|
||||
}' | sudo tee /etc/caddy/Caddyfile
|
||||
|
||||
sudo systemctl restart caddy
|
||||
```
|
||||
|
||||
Richten Sie den DNS A-Eintrag Ihrer Domain auf die IP-Adresse Ihres Servers.
|
||||
|
||||
## Kubernetes (EKS, AKS, GKE)
|
||||
|
||||
Siehe den [Kubernetes-Leitfaden](/self-hosting/kubernetes) für Helm-Deployment auf verwaltetem Kubernetes.
|
||||
|
||||
## Verwaltete Datenbank (Optional)
|
||||
|
||||
Für den Produktivbetrieb sollten Sie einen verwalteten PostgreSQL-Dienst verwenden:
|
||||
|
||||
- **AWS RDS** / **Azure Database** / **Cloud SQL** - Aktivieren Sie die pgvector-Erweiterung
|
||||
- **Supabase** / **Neon** - pgvector enthalten
|
||||
|
||||
Setzen Sie `DATABASE_URL` in Ihrer Umgebung:
|
||||
|
||||
```bash
|
||||
DATABASE_URL="postgresql://user:pass@host:5432/db?sslmode=require"
|
||||
```
|
||||
113
apps/docs/content/docs/de/self-hosting/troubleshooting.mdx
Normal file
113
apps/docs/content/docs/de/self-hosting/troubleshooting.mdx
Normal file
@@ -0,0 +1,113 @@
|
||||
---
|
||||
title: Fehlerbehebung
|
||||
description: Häufige Probleme und Lösungen
|
||||
---
|
||||
|
||||
## Datenbankverbindung fehlgeschlagen
|
||||
|
||||
```bash
|
||||
# Check database is running
|
||||
docker compose ps db
|
||||
|
||||
# Test connection
|
||||
docker compose exec db psql -U postgres -c "SELECT 1"
|
||||
```
|
||||
|
||||
Überprüfen Sie das `DATABASE_URL` Format: `postgresql://user:pass@host:5432/database`
|
||||
|
||||
## Ollama-Modelle werden nicht angezeigt
|
||||
|
||||
In Docker ist `localhost` = der Container, nicht Ihr Host-Rechner.
|
||||
|
||||
```bash
|
||||
# For host-machine Ollama, use:
|
||||
OLLAMA_URL=http://host.docker.internal:11434 # macOS/Windows
|
||||
OLLAMA_URL=http://192.168.1.x:11434 # Linux (use actual IP)
|
||||
```
|
||||
|
||||
## WebSocket/Echtzeit funktioniert nicht
|
||||
|
||||
1. Prüfen Sie, ob `NEXT_PUBLIC_SOCKET_URL` mit Ihrer Domain übereinstimmt
|
||||
2. Überprüfen Sie, ob der Echtzeit-Dienst läuft: `docker compose ps realtime`
|
||||
3. Stellen Sie sicher, dass der Reverse-Proxy WebSocket-Upgrades weiterleitet (siehe [Docker-Anleitung](/self-hosting/docker))
|
||||
|
||||
## 502 Bad Gateway
|
||||
|
||||
```bash
|
||||
# Check app is running
|
||||
docker compose ps simstudio
|
||||
docker compose logs simstudio
|
||||
|
||||
# Common causes: out of memory, database not ready
|
||||
```
|
||||
|
||||
## Migrationsfehler
|
||||
|
||||
```bash
|
||||
# View migration logs
|
||||
docker compose logs migrations
|
||||
|
||||
# Run manually
|
||||
docker compose exec simstudio bun run db:migrate
|
||||
```
|
||||
|
||||
## pgvector nicht gefunden
|
||||
|
||||
Verwenden Sie das richtige PostgreSQL-Image:
|
||||
|
||||
```yaml
|
||||
image: pgvector/pgvector:pg17 # NOT postgres:17
|
||||
```
|
||||
|
||||
## Zertifikatsfehler (CERT_HAS_EXPIRED)
|
||||
|
||||
Wenn Sie SSL-Zertifikatsfehler beim Aufrufen externer APIs sehen:
|
||||
|
||||
```bash
|
||||
# Update CA certificates in container
|
||||
docker compose exec simstudio apt-get update && apt-get install -y ca-certificates
|
||||
|
||||
# Or set in environment (not recommended for production)
|
||||
NODE_TLS_REJECT_UNAUTHORIZED=0
|
||||
```
|
||||
|
||||
## Leere Seite nach dem Login
|
||||
|
||||
1. Überprüfen Sie die Browser-Konsole auf Fehler
|
||||
2. Stellen Sie sicher, dass `NEXT_PUBLIC_APP_URL` mit Ihrer tatsächlichen Domain übereinstimmt
|
||||
3. Löschen Sie Browser-Cookies und lokalen Speicher
|
||||
4. Prüfen Sie, ob alle Dienste laufen: `docker compose ps`
|
||||
|
||||
## Windows-spezifische Probleme
|
||||
|
||||
**Turbopack-Fehler unter Windows:**
|
||||
|
||||
```bash
|
||||
# Use WSL2 for better compatibility
|
||||
wsl --install
|
||||
|
||||
# Or disable Turbopack in package.json
|
||||
# Change "next dev --turbopack" to "next dev"
|
||||
```
|
||||
|
||||
**Zeilenende-Probleme:**
|
||||
|
||||
```bash
|
||||
# Configure git to use LF
|
||||
git config --global core.autocrlf input
|
||||
```
|
||||
|
||||
## Logs anzeigen
|
||||
|
||||
```bash
|
||||
# All services
|
||||
docker compose logs -f
|
||||
|
||||
# Specific service
|
||||
docker compose logs -f simstudio
|
||||
```
|
||||
|
||||
## Hilfe erhalten
|
||||
|
||||
- [GitHub Issues](https://github.com/simstudioai/sim/issues)
|
||||
- [Discord](https://discord.gg/Hr4UWYEcTT)
|
||||
200
apps/docs/content/docs/de/tools/ahrefs.mdx
Normal file
200
apps/docs/content/docs/de/tools/ahrefs.mdx
Normal file
@@ -0,0 +1,200 @@
|
||||
---
|
||||
title: Ahrefs
|
||||
description: SEO-Analyse mit Ahrefs
|
||||
---
|
||||
|
||||
import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
<BlockInfoCard
|
||||
type="ahrefs"
|
||||
color="#E0E0E0"
|
||||
/>
|
||||
|
||||
{/* MANUAL-CONTENT-START:intro */}
|
||||
[Ahrefs](https://ahrefs.com/) ist ein führendes SEO-Toolset zur Analyse von Websites, Verfolgung von Rankings, Überwachung von Backlinks und Keyword-Recherche. Es bietet detaillierte Einblicke in Ihre eigene Website sowie in die Ihrer Wettbewerber und hilft Ihnen, datengestützte Entscheidungen zur Verbesserung Ihrer Sichtbarkeit in Suchmaschinen zu treffen.
|
||||
|
||||
Mit der Ahrefs-Integration in Sim können Sie:
|
||||
|
||||
- **Domain Rating & Autorität analysieren**: Überprüfen Sie sofort die Domain Rating (DR) und den Ahrefs Rank jeder Website, um deren Autorität einzuschätzen.
|
||||
- **Backlinks abrufen**: Rufen Sie eine Liste von Backlinks ab, die auf eine Website oder eine bestimmte URL verweisen, mit Details wie Ankertext, DR der verweisenden Seite und mehr.
|
||||
- **Backlink-Statistiken erhalten**: Greifen Sie auf Metriken zu Backlink-Typen (dofollow, nofollow, Text, Bild, Weiterleitung usw.) für eine Domain oder URL zu.
|
||||
- **Organische Keywords erkunden** *(geplant)*: Sehen Sie, für welche Keywords eine Domain rankt und welche Positionen sie in den Google-Suchergebnissen einnimmt.
|
||||
- **Top-Seiten entdecken** *(geplant)*: Identifizieren Sie die leistungsstärksten Seiten nach organischem Traffic und Links.
|
||||
|
||||
Diese Tools ermöglichen es Ihren Agenten, SEO-Recherchen zu automatisieren, Wettbewerber zu überwachen und Berichte zu erstellen – alles als Teil Ihrer Workflow-Automatisierungen. Um die Ahrefs-Integration zu nutzen, benötigen Sie ein Ahrefs Enterprise-Abonnement mit API-Zugang.
|
||||
{/* MANUAL-CONTENT-END */}
|
||||
|
||||
## Nutzungsanleitung
|
||||
|
||||
Integrieren Sie Ahrefs SEO-Tools in Ihren Workflow. Analysieren Sie Domain-Ratings, Backlinks, organische Keywords, Top-Seiten und mehr. Erfordert einen Ahrefs Enterprise-Plan mit API-Zugang.
|
||||
|
||||
## Tools
|
||||
|
||||
### `ahrefs_domain_rating`
|
||||
|
||||
Erhalten Sie die Domain Rating (DR) und den Ahrefs Rank für eine Zieldomain. Die Domain Rating zeigt die Stärke einer Website
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `target` | string | Ja | Die zu analysierende Zieldomäne (z.B. example.com) |
|
||||
| `date` | string | Nein | Datum für historische Daten im Format YYYY-MM-DD (standardmäßig heute) |
|
||||
| `apiKey` | string | Ja | Ahrefs API-Schlüssel |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `domainRating` | number | Domain Rating Score (0-100) |
|
||||
| `ahrefsRank` | number | Ahrefs Rank - globales Ranking basierend auf der Stärke des Backlink-Profils |
|
||||
|
||||
### `ahrefs_backlinks`
|
||||
|
||||
Erhalte eine Liste von Backlinks, die auf eine Zieldomäne oder URL verweisen. Liefert Details zu jedem Backlink, einschließlich Quell-URL, Ankertext und Domain Rating.
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `target` | string | Ja | Die zu analysierende Zieldomäne oder URL |
|
||||
| `mode` | string | Nein | Analysemodus: domain (gesamte Domäne), prefix (URL-Präfix), subdomains (alle Subdomänen einschließen), exact (exakte URL-Übereinstimmung) |
|
||||
| `date` | string | Nein | Datum für historische Daten im Format YYYY-MM-DD (standardmäßig heute) |
|
||||
| `limit` | number | Nein | Maximale Anzahl der zurückzugebenden Ergebnisse (Standard: 100) |
|
||||
| `offset` | number | Nein | Anzahl der zu überspringenden Ergebnisse für Paginierung |
|
||||
| `apiKey` | string | Ja | Ahrefs API-Schlüssel |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `backlinks` | array | Liste der Backlinks, die auf das Ziel verweisen |
|
||||
|
||||
### `ahrefs_backlinks_stats`
|
||||
|
||||
Ruft Backlink-Statistiken für eine Zieldomäne oder URL ab. Gibt Gesamtwerte für verschiedene Backlink-Typen zurück, einschließlich Dofollow-, Nofollow-, Text-, Bild- und Weiterleitungslinks.
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `target` | string | Ja | Die zu analysierende Zieldomäne oder URL |
|
||||
| `mode` | string | Nein | Analysemodus: domain \(gesamte Domäne\), prefix \(URL-Präfix\), subdomains \(alle Subdomänen einschließen\), exact \(exakte URL-Übereinstimmung\) |
|
||||
| `date` | string | Nein | Datum für historische Daten im Format JJJJ-MM-TT \(standardmäßig heute\) |
|
||||
| `apiKey` | string | Ja | Ahrefs API-Schlüssel |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `stats` | object | Zusammenfassung der Backlink-Statistiken |
|
||||
|
||||
### `ahrefs_referring_domains`
|
||||
|
||||
Ruft eine Liste von Domänen ab, die auf eine Zieldomäne oder URL verlinken. Gibt eindeutige verweisende Domänen mit ihrem Domain-Rating, Backlink-Anzahl und Entdeckungsdaten zurück.
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `target` | string | Ja | Die zu analysierende Zieldomäne oder URL |
|
||||
| `mode` | string | Nein | Analysemodus: domain \(gesamte Domäne\), prefix \(URL-Präfix\), subdomains \(alle Subdomänen einschließen\), exact \(exakte URL-Übereinstimmung\) |
|
||||
| `date` | string | Nein | Datum für historische Daten im Format JJJJ-MM-TT \(standardmäßig heute\) |
|
||||
| `limit` | number | Nein | Maximale Anzahl der zurückzugebenden Ergebnisse \(Standard: 100\) |
|
||||
| `offset` | number | Nein | Anzahl der zu überspringenden Ergebnisse für die Paginierung |
|
||||
| `apiKey` | string | Ja | Ahrefs API-Schlüssel |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `referringDomains` | array | Liste der Domains, die auf das Ziel verlinken |
|
||||
|
||||
### `ahrefs_organic_keywords`
|
||||
|
||||
Erhalte organische Keywords, für die eine Zieldomain oder URL in den Google-Suchergebnissen rankt. Liefert Keyword-Details einschließlich Suchvolumen, Ranking-Position und geschätztem Traffic.
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `target` | string | Ja | Die zu analysierende Zieldomain oder URL |
|
||||
| `country` | string | Nein | Ländercode für Suchergebnisse \(z.B. us, gb, de\). Standard: us |
|
||||
| `mode` | string | Nein | Analysemodus: domain \(gesamte Domain\), prefix \(URL-Präfix\), subdomains \(alle Subdomains einschließen\), exact \(exakte URL-Übereinstimmung\) |
|
||||
| `date` | string | Nein | Datum für historische Daten im Format JJJJ-MM-TT \(standardmäßig heute\) |
|
||||
| `limit` | number | Nein | Maximale Anzahl der zurückzugebenden Ergebnisse \(Standard: 100\) |
|
||||
| `offset` | number | Nein | Anzahl der zu überspringenden Ergebnisse für Paginierung |
|
||||
| `apiKey` | string | Ja | Ahrefs API-Schlüssel |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `keywords` | array | Liste der organischen Keywords, für die das Ziel rankt |
|
||||
|
||||
### `ahrefs_top_pages`
|
||||
|
||||
Erhalte die Top-Seiten einer Zieldomain, sortiert nach organischem Traffic. Liefert Seiten-URLs mit ihrem Traffic, Keyword-Anzahl und geschätztem Traffic-Wert.
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `target` | string | Ja | Die zu analysierende Zieldomäne |
|
||||
| `country` | string | Nein | Ländercode für Verkehrsdaten \(z.B. us, gb, de\). Standard: us |
|
||||
| `mode` | string | Nein | Analysemodus: domain \(gesamte Domäne\), prefix \(URL-Präfix\), subdomains \(alle Subdomänen einschließen\) |
|
||||
| `date` | string | Nein | Datum für historische Daten im Format JJJJ-MM-TT \(standardmäßig heute\) |
|
||||
| `limit` | number | Nein | Maximale Anzahl der zurückzugebenden Ergebnisse \(Standard: 100\) |
|
||||
| `offset` | number | Nein | Anzahl der zu überspringenden Ergebnisse für Paginierung |
|
||||
| `select` | string | Nein | Kommagetrennte Liste der zurückzugebenden Felder \(z.B. url,traffic,keywords,top_keyword,value\). Standard: url,traffic,keywords,top_keyword,value |
|
||||
| `apiKey` | string | Ja | Ahrefs API-Schlüssel |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `pages` | array | Liste der Top-Seiten nach organischem Traffic |
|
||||
|
||||
### `ahrefs_keyword_overview`
|
||||
|
||||
Erhalten Sie detaillierte Metriken für ein Keyword, einschließlich Suchvolumen, Keyword-Schwierigkeit, CPC, Klicks und Traffic-Potenzial.
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `keyword` | string | Ja | Das zu analysierende Keyword |
|
||||
| `country` | string | Nein | Ländercode für Keyword-Daten \(z.B. us, gb, de\). Standard: us |
|
||||
| `apiKey` | string | Ja | Ahrefs API-Schlüssel |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `overview` | object | Keyword-Metriken Übersicht |
|
||||
|
||||
### `ahrefs_broken_backlinks`
|
||||
|
||||
Erhalte eine Liste defekter Backlinks, die auf eine Zieldomäne oder URL verweisen. Nützlich zur Identifizierung von Möglichkeiten zur Link-Wiederherstellung.
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `target` | string | Ja | Die zu analysierende Zieldomäne oder URL |
|
||||
| `mode` | string | Nein | Analysemodus: domain \(gesamte Domäne\), prefix \(URL-Präfix\), subdomains \(alle Subdomänen einschließen\), exact \(exakte URL-Übereinstimmung\) |
|
||||
| `date` | string | Nein | Datum für historische Daten im Format JJJJ-MM-TT \(standardmäßig heute\) |
|
||||
| `limit` | number | Nein | Maximale Anzahl der zurückzugebenden Ergebnisse \(Standard: 100\) |
|
||||
| `offset` | number | Nein | Anzahl der zu überspringenden Ergebnisse für Paginierung |
|
||||
| `apiKey` | string | Ja | Ahrefs API-Schlüssel |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `brokenBacklinks` | array | Liste defekter Backlinks |
|
||||
|
||||
## Hinweise
|
||||
|
||||
- Kategorie: `tools`
|
||||
- Typ: `ahrefs`
|
||||
182
apps/docs/content/docs/de/tools/cursor.mdx
Normal file
182
apps/docs/content/docs/de/tools/cursor.mdx
Normal file
@@ -0,0 +1,182 @@
|
||||
---
|
||||
title: Cursor
|
||||
description: Starten und verwalten Sie Cursor Cloud-Agenten zur Arbeit an
|
||||
GitHub-Repositories
|
||||
---
|
||||
|
||||
import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
<BlockInfoCard
|
||||
type="cursor"
|
||||
color="#1E1E1E"
|
||||
/>
|
||||
|
||||
{/* MANUAL-CONTENT-START:intro */}
|
||||
[Cursor](https://www.cursor.so/) ist eine KI-IDE und cloudbasierte Plattform, mit der Sie leistungsstarke KI-Agenten starten und verwalten können, die direkt mit Ihren GitHub-Repositories arbeiten können. Cursor-Agenten können Entwicklungsaufgaben automatisieren, die Produktivität Ihres Teams steigern und mit Ihnen zusammenarbeiten, indem sie Codeänderungen vornehmen, auf natürlichsprachliche Anweisungen reagieren und einen Gesprächsverlauf über ihre Aktivitäten führen.
|
||||
|
||||
Mit Cursor können Sie:
|
||||
|
||||
- **Cloud-Agenten für Codebasen starten**: Erstellen Sie sofort neue KI-Agenten, die in der Cloud an Ihren Repositories arbeiten
|
||||
- **Codierungsaufgaben mit natürlicher Sprache delegieren**: Leiten Sie Agenten mit schriftlichen Anweisungen, Änderungen und Klarstellungen an
|
||||
- **Fortschritt und Ergebnisse überwachen**: Rufen Sie den Agentenstatus ab, sehen Sie detaillierte Ergebnisse und prüfen Sie aktuelle oder abgeschlossene Aufgaben
|
||||
- **Zugriff auf den vollständigen Gesprächsverlauf**: Überprüfen Sie alle Eingabeaufforderungen und KI-Antworten für Transparenz und Nachvollziehbarkeit
|
||||
- **Steuerung und Verwaltung des Agenten-Lebenszyklus**: Listen Sie aktive Agenten auf, beenden Sie Agenten und verwalten Sie API-basierte Agentenstarts und Nachverfolgungen
|
||||
|
||||
In Sim ermöglicht die Cursor-Integration Ihren Agenten und Workflows, programmatisch mit Cursor-Cloud-Agenten zu interagieren. Das bedeutet, Sie können Sim verwenden, um:
|
||||
|
||||
- Alle Cloud-Agenten auflisten und ihren aktuellen Status durchsuchen (`cursor_list_agents`)
|
||||
- Aktuellen Status und Ausgaben für jeden Agenten abrufen (`cursor_get_agent`)
|
||||
- Den vollständigen Gesprächsverlauf für jeden Codierungsagenten anzeigen (`cursor_get_conversation`)
|
||||
- Nachfolgende Anweisungen oder neue Eingabeaufforderungen zu einem laufenden Agenten hinzufügen
|
||||
- Agenten nach Bedarf verwalten und beenden
|
||||
|
||||
Diese Integration hilft Ihnen, die flexible Intelligenz von Sim-Agenten mit den leistungsstarken Automatisierungsfunktionen von Cursor zu kombinieren, wodurch es möglich wird, KI-gesteuerte Entwicklung über Ihre Projekte hinweg zu skalieren.
|
||||
{/* MANUAL-CONTENT-END */}
|
||||
|
||||
## Gebrauchsanweisung
|
||||
|
||||
Interagieren Sie mit der Cursor Cloud Agents API, um KI-Agenten zu starten, die an Ihren GitHub-Repositories arbeiten können. Unterstützt das Starten von Agenten, das Hinzufügen von Folgeanweisungen, die Statusprüfung, die Anzeige von Konversationen und die Verwaltung des Agenten-Lebenszyklus.
|
||||
|
||||
## Tools
|
||||
|
||||
### `cursor_list_agents`
|
||||
|
||||
Listet alle Cloud-Agenten für den authentifizierten Benutzer mit optionaler Paginierung auf.
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Ja | Cursor API-Schlüssel |
|
||||
| `limit` | number | Nein | Anzahl der zurückzugebenden Agenten \(Standard: 20, max: 100\) |
|
||||
| `cursor` | string | Nein | Paginierungscursor aus der vorherigen Antwort |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `content` | string | Menschenlesbare Liste der Agenten |
|
||||
| `metadata` | object | Metadaten der Agentenliste |
|
||||
|
||||
### `cursor_get_agent`
|
||||
|
||||
Ruft den aktuellen Status und die Ergebnisse eines Cloud-Agenten ab.
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Ja | Cursor API-Schlüssel |
|
||||
| `agentId` | string | Ja | Eindeutige Kennung für den Cloud-Agenten \(z.B. bc_abc123\) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `content` | string | Menschenlesbare Agentendetails |
|
||||
| `metadata` | object | Agenten-Metadaten |
|
||||
|
||||
### `cursor_get_conversation`
|
||||
|
||||
Ruft den Konversationsverlauf eines Cloud-Agenten ab, einschließlich aller Benutzeraufforderungen und Assistentenantworten.
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Ja | Cursor API-Schlüssel |
|
||||
| `agentId` | string | Ja | Eindeutige Kennung für den Cloud-Agenten \(z.B. bc_abc123\) |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `content` | string | Menschenlesbarer Konversationsverlauf |
|
||||
| `metadata` | object | Konversations-Metadaten |
|
||||
|
||||
### `cursor_launch_agent`
|
||||
|
||||
Starten Sie einen neuen Cloud-Agenten, um an einem GitHub-Repository mit den angegebenen Anweisungen zu arbeiten.
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Ja | Cursor API-Schlüssel |
|
||||
| `repository` | string | Ja | GitHub-Repository-URL \(z.B. https://github.com/your-org/your-repo\) |
|
||||
| `ref` | string | Nein | Branch, Tag oder Commit, von dem aus gearbeitet werden soll \(standardmäßig der Hauptbranch\) |
|
||||
| `promptText` | string | Ja | Der Anweisungstext für den Agenten |
|
||||
| `promptImages` | string | Nein | JSON-Array von Bildobjekten mit Base64-Daten und Abmessungen |
|
||||
| `model` | string | Nein | Zu verwendendes Modell \(leer lassen für automatische Auswahl\) |
|
||||
| `branchName` | string | Nein | Benutzerdefinierter Branch-Name für den Agenten |
|
||||
| `autoCreatePr` | boolean | Nein | Automatisches Erstellen eines PR, wenn der Agent fertig ist |
|
||||
| `openAsCursorGithubApp` | boolean | Nein | Öffnen des PR als Cursor GitHub App |
|
||||
| `skipReviewerRequest` | boolean | Nein | Überspringen der Anfrage nach Prüfern für den PR |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `content` | string | Erfolgsmeldung mit Agenten-Details |
|
||||
| `metadata` | object | Metadaten zum Startergebnis |
|
||||
|
||||
### `cursor_add_followup`
|
||||
|
||||
Fügen Sie einem bestehenden Cloud-Agenten eine Folgeanweisung hinzu.
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Ja | Cursor API-Schlüssel |
|
||||
| `agentId` | string | Ja | Eindeutige Kennung für den Cloud-Agenten \(z.B. bc_abc123\) |
|
||||
| `followupPromptText` | string | Ja | Der Folgeanweisungstext für den Agenten |
|
||||
| `promptImages` | string | Nein | JSON-Array von Bildobjekten mit Base64-Daten und Abmessungen \(max. 5\) |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `content` | string | Erfolgsmeldung |
|
||||
| `metadata` | object | Ergebnis-Metadaten |
|
||||
|
||||
### `cursor_stop_agent`
|
||||
|
||||
Stoppt einen laufenden Cloud-Agenten. Dies pausiert den Agenten, ohne ihn zu löschen.
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Ja | Cursor API-Schlüssel |
|
||||
| `agentId` | string | Ja | Eindeutige Kennung für den Cloud-Agenten \(z.B. bc_abc123\) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `content` | string | Erfolgsmeldung |
|
||||
| `metadata` | object | Ergebnis-Metadaten |
|
||||
|
||||
### `cursor_delete_agent`
|
||||
|
||||
Löscht einen Cloud-Agenten dauerhaft. Diese Aktion kann nicht rückgängig gemacht werden.
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Ja | Cursor API-Schlüssel |
|
||||
| `agentId` | string | Ja | Eindeutige Kennung für den Cloud-Agenten \(z.B. bc_abc123\) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `content` | string | Erfolgsmeldung |
|
||||
| `metadata` | object | Ergebnis-Metadaten |
|
||||
|
||||
## Hinweise
|
||||
|
||||
- Kategorie: `tools`
|
||||
- Typ: `cursor`
|
||||
302
apps/docs/content/docs/de/tools/datadog.mdx
Normal file
302
apps/docs/content/docs/de/tools/datadog.mdx
Normal file
@@ -0,0 +1,302 @@
|
||||
---
|
||||
title: Datadog
|
||||
description: Überwachen Sie Infrastruktur, Anwendungen und Logs mit Datadog
|
||||
---
|
||||
|
||||
import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
<BlockInfoCard
|
||||
type="datadog"
|
||||
color="#632CA6"
|
||||
/>
|
||||
|
||||
{/* MANUAL-CONTENT-START:intro */}
|
||||
[Datadog](https://datadoghq.com/) ist eine umfassende Überwachungs- und Analyseplattform für Infrastruktur, Anwendungen, Logs und mehr. Sie ermöglicht Organisationen Echtzeit-Einblicke in den Zustand und die Leistung von Systemen, erkennt Anomalien und automatisiert die Reaktion auf Vorfälle.
|
||||
|
||||
Mit Datadog können Sie:
|
||||
|
||||
- **Metriken überwachen**: Sammeln, visualisieren und analysieren Sie Metriken von Servern, Cloud-Diensten und benutzerdefinierten Anwendungen.
|
||||
- **Zeitreihendaten abfragen**: Führen Sie erweiterte Abfragen zu Leistungsmetriken für Trendanalysen und Berichte durch.
|
||||
- **Monitore und Ereignisse verwalten**: Richten Sie Monitore ein, um Probleme zu erkennen, Warnungen auszulösen und Ereignisse für die Beobachtbarkeit zu erstellen.
|
||||
- **Ausfallzeiten verwalten**: Planen und programmieren Sie geplante Ausfallzeiten, um Warnungen während der Wartung zu unterdrücken.
|
||||
- **Logs und Traces analysieren** *(mit zusätzlicher Einrichtung in Datadog)*: Zentralisieren und untersuchen Sie Logs oder verteilte Traces für eine tiefere Fehlerbehebung.
|
||||
|
||||
Die Datadog-Integration von Sim ermöglicht es Ihren Agenten, diese Vorgänge zu automatisieren und programmatisch mit Ihrem Datadog-Konto zu interagieren. Verwenden Sie sie, um benutzerdefinierte Metriken zu übermitteln, Zeitreihendaten abzufragen, Monitore zu verwalten, Ereignisse zu erstellen und Ihre Überwachungsabläufe direkt innerhalb von Sim-Automatisierungen zu optimieren.
|
||||
{/* MANUAL-CONTENT-END */}
|
||||
|
||||
## Gebrauchsanweisung
|
||||
|
||||
Integrieren Sie Datadog-Überwachung in Workflows. Übermitteln Sie Metriken, verwalten Sie Monitore, fragen Sie Logs ab, erstellen Sie Ereignisse, handhaben Sie Ausfallzeiten und mehr.
|
||||
|
||||
## Tools
|
||||
|
||||
### `datadog_submit_metrics`
|
||||
|
||||
Übermitteln Sie benutzerdefinierte Metriken an Datadog. Verwenden Sie diese zur Verfolgung der Anwendungsleistung, Geschäftsmetriken oder benutzerdefinierten Überwachungsdaten.
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `series` | string | Ja | JSON-Array von Metrikserien zur Übermittlung. Jede Serie sollte den Metriknamen, Typ \(gauge/rate/count\), Punkte \(Zeitstempel/Wert-Paare\) und optionale Tags enthalten. |
|
||||
| `apiKey` | string | Ja | Datadog API-Schlüssel |
|
||||
| `site` | string | Nein | Datadog-Site/Region \(Standard: datadoghq.com\) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Ob die Metriken erfolgreich übermittelt wurden |
|
||||
| `errors` | array | Alle Fehler, die während der Übermittlung aufgetreten sind |
|
||||
|
||||
### `datadog_query_timeseries`
|
||||
|
||||
Abfrage von Metrik-Zeitreihendaten aus Datadog. Verwenden Sie dies zur Analyse von Trends, zur Erstellung von Berichten oder zum Abrufen von Metrikwerten.
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `query` | string | Ja | Datadog-Metrikabfrage (z.B. "avg:system.cpu.user\{*\}") |
|
||||
| `from` | number | Ja | Startzeit als Unix-Zeitstempel in Sekunden |
|
||||
| `to` | number | Ja | Endzeit als Unix-Zeitstempel in Sekunden |
|
||||
| `apiKey` | string | Ja | Datadog API-Schlüssel |
|
||||
| `applicationKey` | string | Ja | Datadog Anwendungsschlüssel |
|
||||
| `site` | string | Nein | Datadog-Site/Region (Standard: datadoghq.com) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `series` | array | Array von Zeitreihendaten mit Metrikname, Tags und Datenpunkten |
|
||||
| `status` | string | Abfragestatus |
|
||||
|
||||
### `datadog_create_event`
|
||||
|
||||
Veröffentlichen Sie ein Ereignis im Datadog-Ereignisstrom. Verwenden Sie dies für Deployment-Benachrichtigungen, Warnungen oder andere wichtige Vorkommnisse.
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `title` | string | Ja | Ereignistitel |
|
||||
| `text` | string | Ja | Ereignistext/Beschreibung. Unterstützt Markdown. |
|
||||
| `alertType` | string | Nein | Warnungstyp: error, warning, info, success, user_update, recommendation oder snapshot |
|
||||
| `priority` | string | Nein | Ereignispriorität: normal oder low |
|
||||
| `host` | string | Nein | Hostname, der mit diesem Ereignis verknüpft werden soll |
|
||||
| `tags` | string | Nein | Kommagetrennte Liste von Tags (z.B. "env:production,service:api") |
|
||||
| `aggregationKey` | string | Nein | Schlüssel zum Zusammenfassen von Ereignissen |
|
||||
| `sourceTypeName` | string | Nein | Quelltypname für das Ereignis |
|
||||
| `dateHappened` | number | Nein | Unix-Zeitstempel, wann das Ereignis aufgetreten ist (standardmäßig jetzt) |
|
||||
| `apiKey` | string | Ja | Datadog API-Schlüssel |
|
||||
| `site` | string | Nein | Datadog-Site/Region (Standard: datadoghq.com) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `event` | object | Die Details des erstellten Events |
|
||||
|
||||
### `datadog_create_monitor`
|
||||
|
||||
Erstellen Sie einen neuen Monitor/Alert in Datadog. Monitore können Metriken, Service-Checks, Events und mehr überwachen.
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `name` | string | Ja | Name des Monitors |
|
||||
| `type` | string | Ja | Monitor-Typ: metric alert, service check, event alert, process alert, log alert, query alert, composite, synthetics alert, slo alert |
|
||||
| `query` | string | Ja | Monitor-Abfrage (z.B. `avg(last_5m):avg:system.cpu.idle{*} < 20`) |
|
||||
| `message` | string | Nein | Nachricht, die bei Benachrichtigungen enthalten sein soll. Kann @-Erwähnungen und Markdown enthalten. |
|
||||
| `tags` | string | Nein | Kommagetrennte Liste von Tags |
|
||||
| `priority` | number | Nein | Monitor-Priorität (1-5, wobei 1 die höchste ist) |
|
||||
| `options` | string | Nein | JSON-String mit Monitor-Optionen (Schwellenwerte, notify_no_data, renotify_interval, usw.) |
|
||||
| `apiKey` | string | Ja | Datadog API-Schlüssel |
|
||||
| `applicationKey` | string | Ja | Datadog Anwendungsschlüssel |
|
||||
| `site` | string | Nein | Datadog Site/Region (Standard: datadoghq.com) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `monitor` | object | Die Details des erstellten Monitors |
|
||||
|
||||
### `datadog_get_monitor`
|
||||
|
||||
Rufen Sie Details eines bestimmten Monitors anhand seiner ID ab.
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `monitorId` | string | Ja | Die ID des abzurufenden Monitors |
|
||||
| `groupStates` | string | Nein | Kommagetrennte Gruppenzustände, die einbezogen werden sollen: alert, warn, no data, ok |
|
||||
| `withDowntimes` | boolean | Nein | Downtime-Daten mit dem Monitor einbeziehen |
|
||||
| `apiKey` | string | Ja | Datadog API-Schlüssel |
|
||||
| `applicationKey` | string | Ja | Datadog Anwendungsschlüssel |
|
||||
| `site` | string | Nein | Datadog Site/Region (Standard: datadoghq.com) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `monitor` | object | Die Monitor-Details |
|
||||
|
||||
### `datadog_list_monitors`
|
||||
|
||||
Listet alle Monitore in Datadog auf, mit optionaler Filterung nach Namen, Tags oder Status.
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `groupStates` | string | Nein | Kommagetrennte Gruppenstatus zur Filterung: alert, warn, no data, ok |
|
||||
| `name` | string | Nein | Filtert Monitore nach Namen \(teilweise Übereinstimmung\) |
|
||||
| `tags` | string | Nein | Kommagetrennte Liste von Tags zur Filterung |
|
||||
| `monitorTags` | string | Nein | Kommagetrennte Liste von Monitor-Tags zur Filterung |
|
||||
| `withDowntimes` | boolean | Nein | Downtime-Daten mit Monitoren einbeziehen |
|
||||
| `page` | number | Nein | Seitennummer für Paginierung \(0-indiziert\) |
|
||||
| `pageSize` | number | Nein | Anzahl der Monitore pro Seite \(max. 1000\) |
|
||||
| `apiKey` | string | Ja | Datadog API-Schlüssel |
|
||||
| `applicationKey` | string | Ja | Datadog Anwendungsschlüssel |
|
||||
| `site` | string | Nein | Datadog Site/Region \(Standard: datadoghq.com\) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `monitors` | array | Liste der Monitore |
|
||||
|
||||
### `datadog_mute_monitor`
|
||||
|
||||
Stummschalten eines Monitors, um Benachrichtigungen vorübergehend zu unterdrücken.
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `monitorId` | string | Ja | Die ID des stummzuschaltenden Monitors |
|
||||
| `scope` | string | Nein | Bereich zum Stummschalten \(z.B. "host:myhost"\). Wenn nicht angegeben, werden alle Bereiche stummgeschaltet. |
|
||||
| `end` | number | Nein | Unix-Zeitstempel, wann die Stummschaltung enden soll. Wenn nicht angegeben, wird auf unbestimmte Zeit stummgeschaltet. |
|
||||
| `apiKey` | string | Ja | Datadog API-Schlüssel |
|
||||
| `applicationKey` | string | Ja | Datadog Anwendungsschlüssel |
|
||||
| `site` | string | Nein | Datadog Site/Region \(Standard: datadoghq.com\) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Gibt an, ob der Monitor erfolgreich stummgeschaltet wurde |
|
||||
|
||||
### `datadog_query_logs`
|
||||
|
||||
Suchen und abrufen von Logs aus Datadog. Verwenden Sie dies zur Fehlerbehebung, Analyse oder Überwachung.
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `query` | string | Ja | Log-Suchabfrage (z.B. "service:web-app status:error") |
|
||||
| `from` | string | Ja | Startzeit im ISO-8601-Format oder relativ (z.B. "now-1h") |
|
||||
| `to` | string | Ja | Endzeit im ISO-8601-Format oder relativ (z.B. "now") |
|
||||
| `limit` | number | Nein | Maximale Anzahl der zurückzugebenden Logs (Standard: 50, max: 1000) |
|
||||
| `sort` | string | Nein | Sortierreihenfolge: timestamp (älteste zuerst) oder -timestamp (neueste zuerst) |
|
||||
| `indexes` | string | Nein | Kommagetrennte Liste der zu durchsuchenden Log-Indizes |
|
||||
| `apiKey` | string | Ja | Datadog API-Schlüssel |
|
||||
| `applicationKey` | string | Ja | Datadog Anwendungsschlüssel |
|
||||
| `site` | string | Nein | Datadog Site/Region (Standard: datadoghq.com) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `logs` | array | Liste der Log-Einträge |
|
||||
|
||||
### `datadog_send_logs`
|
||||
|
||||
Senden von Log-Einträgen an Datadog für zentralisiertes Logging und Analyse.
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `logs` | string | Ja | JSON-Array von Log-Einträgen. Jeder Eintrag sollte message und optional ddsource, ddtags, hostname, service enthalten. |
|
||||
| `apiKey` | string | Ja | Datadog API-Schlüssel |
|
||||
| `site` | string | Nein | Datadog Site/Region (Standard: datadoghq.com) |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Ob die Logs erfolgreich gesendet wurden |
|
||||
|
||||
### `datadog_create_downtime`
|
||||
|
||||
Planen Sie eine Ausfallzeit, um Monitor-Benachrichtigungen während Wartungsfenstern zu unterdrücken.
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `scope` | string | Yes | Bereich, auf den die Ausfallzeit angewendet werden soll (z.B. "host:myhost", "env:production" oder "*" für alle) |
|
||||
| `message` | string | No | Nachricht, die während der Ausfallzeit angezeigt werden soll |
|
||||
| `start` | number | No | Unix-Zeitstempel für den Beginn der Ausfallzeit (standardmäßig jetzt) |
|
||||
| `end` | number | No | Unix-Zeitstempel für das Ende der Ausfallzeit |
|
||||
| `timezone` | string | No | Zeitzone für die Ausfallzeit (z.B. "America/New_York") |
|
||||
| `monitorId` | string | No | Spezifische Monitor-ID, die stummgeschaltet werden soll |
|
||||
| `monitorTags` | string | No | Kommagetrennte Monitor-Tags zur Übereinstimmung (z.B. "team:backend,priority:high") |
|
||||
| `muteFirstRecoveryNotification` | boolean | No | Die erste Wiederherstellungsbenachrichtigung stummschalten |
|
||||
| `apiKey` | string | Yes | Datadog API-Schlüssel |
|
||||
| `applicationKey` | string | Yes | Datadog Anwendungsschlüssel |
|
||||
| `site` | string | No | Datadog Site/Region (Standard: datadoghq.com) |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `downtime` | object | Die Details der erstellten Ausfallzeit |
|
||||
|
||||
### `datadog_list_downtimes`
|
||||
|
||||
Listet alle geplanten Ausfallzeiten in Datadog auf.
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `currentOnly` | boolean | No | Nur aktuell aktive Ausfallzeiten zurückgeben |
|
||||
| `monitorId` | string | No | Nach Monitor-ID filtern |
|
||||
| `apiKey` | string | Yes | Datadog API-Schlüssel |
|
||||
| `applicationKey` | string | Yes | Datadog Anwendungsschlüssel |
|
||||
| `site` | string | No | Datadog Site/Region (Standard: datadoghq.com) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `downtimes` | array | Liste der Ausfallzeiten |
|
||||
|
||||
### `datadog_cancel_downtime`
|
||||
|
||||
Eine geplante Ausfallzeit abbrechen.
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `downtimeId` | string | Ja | Die ID der abzubrechenden Ausfallzeit |
|
||||
| `apiKey` | string | Ja | Datadog API-Schlüssel |
|
||||
| `applicationKey` | string | Ja | Datadog Anwendungsschlüssel |
|
||||
| `site` | string | Nein | Datadog Site/Region \(Standard: datadoghq.com\) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Ob die Ausfallzeit erfolgreich abgebrochen wurde |
|
||||
|
||||
## Hinweise
|
||||
|
||||
- Kategorie: `tools`
|
||||
- Typ: `datadog`
|
||||
219
apps/docs/content/docs/de/tools/dropbox.mdx
Normal file
219
apps/docs/content/docs/de/tools/dropbox.mdx
Normal file
@@ -0,0 +1,219 @@
|
||||
---
|
||||
title: Dropbox
|
||||
description: Dateien in Dropbox hochladen, herunterladen, teilen und verwalten
|
||||
---
|
||||
|
||||
import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
<BlockInfoCard
|
||||
type="dropbox"
|
||||
color="#0061FF"
|
||||
/>
|
||||
|
||||
{/* MANUAL-CONTENT-START:intro */}
|
||||
[Dropbox](https://dropbox.com/) ist eine beliebte Cloud-Speicher- und Kollaborationsplattform, die es Einzelpersonen und Teams ermöglicht, Dateien sicher zu speichern, darauf zuzugreifen und sie von überall aus zu teilen. Dropbox ist für einfache Dateiverwaltung, Synchronisierung und leistungsstarke Zusammenarbeit konzipiert, egal ob Sie allein oder in einer Gruppe arbeiten.
|
||||
|
||||
Mit Dropbox in Sim können Sie:
|
||||
|
||||
- **Dateien hoch- und herunterladen**: Laden Sie jede Datei nahtlos in Ihre Dropbox hoch oder rufen Sie Inhalte bei Bedarf ab
|
||||
- **Ordnerinhalte auflisten**: Durchsuchen Sie die Dateien und Ordner in jedem Dropbox-Verzeichnis
|
||||
- **Neue Ordner erstellen**: Organisieren Sie Ihre Dateien, indem Sie programmgesteuert neue Ordner in Ihrer Dropbox erstellen
|
||||
- **Dateien und Ordner suchen**: Finden Sie Dokumente, Bilder oder andere Elemente nach Namen oder Inhalt
|
||||
- **Geteilte Links generieren**: Erstellen Sie schnell teilbare öffentliche oder private Links für Dateien und Ordner
|
||||
- **Dateien verwalten**: Verschieben, löschen oder benennen Sie Dateien und Ordner im Rahmen automatisierter Workflows um
|
||||
|
||||
Diese Funktionen ermöglichen es Ihren Sim-Agenten, Dropbox-Operationen direkt in Ihren Workflows zu automatisieren – vom Sichern wichtiger Dateien bis hin zur Verteilung von Inhalten und der Pflege organisierter Ordner. Verwenden Sie Dropbox sowohl als Quelle als auch als Ziel für Dateien und ermöglichen Sie so eine nahtlose Cloud-Speicherverwaltung als Teil Ihrer Geschäftsprozesse.
|
||||
{/* MANUAL-CONTENT-END */}
|
||||
|
||||
## Nutzungsanweisungen
|
||||
|
||||
Integrieren Sie Dropbox in Ihren Workflow für Dateiverwaltung, Freigabe und Zusammenarbeit. Laden Sie Dateien hoch, laden Sie Inhalte herunter, erstellen Sie Ordner, verwalten Sie freigegebene Links und mehr.
|
||||
|
||||
## Tools
|
||||
|
||||
### `dropbox_upload`
|
||||
|
||||
Eine Datei zu Dropbox hochladen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `path` | string | Ja | Der Pfad in Dropbox, wo die Datei gespeichert werden soll \(z.B. /ordner/dokument.pdf\) |
|
||||
| `fileContent` | string | Ja | Der base64-kodierte Inhalt der hochzuladenden Datei |
|
||||
| `fileName` | string | Nein | Optionaler Dateiname \(wird verwendet, wenn der Pfad ein Ordner ist\) |
|
||||
| `mode` | string | Nein | Schreibmodus: add \(Standard\) oder overwrite |
|
||||
| `autorename` | boolean | Nein | Wenn true, wird die Datei umbenannt, falls ein Konflikt besteht |
|
||||
| `mute` | boolean | Nein | Wenn true, wird der Benutzer nicht über diesen Upload benachrichtigt |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `file` | object | Die Metadaten der hochgeladenen Datei |
|
||||
|
||||
### `dropbox_download`
|
||||
|
||||
Eine Datei von Dropbox herunterladen und einen temporären Link erhalten
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `path` | string | Ja | Der Pfad der herunterzuladenden Datei (z.B. /ordner/dokument.pdf) |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `file` | object | Die Metadaten der Datei |
|
||||
|
||||
### `dropbox_list_folder`
|
||||
|
||||
Den Inhalt eines Ordners in Dropbox auflisten
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `path` | string | Ja | Der Pfad des aufzulistenden Ordners (verwende "" für das Stammverzeichnis) |
|
||||
| `recursive` | boolean | Nein | Wenn true, Inhalte rekursiv auflisten |
|
||||
| `includeDeleted` | boolean | Nein | Wenn true, gelöschte Dateien/Ordner einbeziehen |
|
||||
| `includeMediaInfo` | boolean | Nein | Wenn true, Medieninfos für Fotos/Videos einbeziehen |
|
||||
| `limit` | number | Nein | Maximale Anzahl der zurückzugebenden Ergebnisse (Standard: 500) |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `entries` | array | Liste der Dateien und Ordner im Verzeichnis |
|
||||
|
||||
### `dropbox_create_folder`
|
||||
|
||||
Einen neuen Ordner in Dropbox erstellen
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `path` | string | Ja | Der Pfad, an dem der Ordner erstellt werden soll (z.B. /neuer-ordner) |
|
||||
| `autorename` | boolean | Nein | Wenn true, den Ordner umbenennen, falls ein Konflikt besteht |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `folder` | object | Die Metadaten des erstellten Ordners |
|
||||
|
||||
### `dropbox_delete`
|
||||
|
||||
Eine Datei oder einen Ordner in Dropbox löschen (wird in den Papierkorb verschoben)
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `path` | string | Ja | Der Pfad der zu löschenden Datei oder des zu löschenden Ordners |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `metadata` | object | Metadaten des gelöschten Elements |
|
||||
|
||||
### `dropbox_copy`
|
||||
|
||||
Eine Datei oder einen Ordner in Dropbox kopieren
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `fromPath` | string | Ja | Der Quellpfad der zu kopierenden Datei oder des zu kopierenden Ordners |
|
||||
| `toPath` | string | Ja | Der Zielpfad für die kopierte Datei oder den kopierten Ordner |
|
||||
| `autorename` | boolean | Nein | Wenn true, wird die Datei umbenannt, falls am Zielort ein Konflikt besteht |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `metadata` | object | Metadaten des kopierten Elements |
|
||||
|
||||
### `dropbox_move`
|
||||
|
||||
Eine Datei oder einen Ordner in Dropbox verschieben oder umbenennen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `fromPath` | string | Ja | Der Quellpfad der zu verschiebenden Datei oder des zu verschiebenden Ordners |
|
||||
| `toPath` | string | Ja | Der Zielpfad für die verschobene Datei oder den verschobenen Ordner |
|
||||
| `autorename` | boolean | Nein | Wenn true, wird die Datei umbenannt, falls am Zielort ein Konflikt besteht |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `metadata` | object | Metadaten des verschobenen Elements |
|
||||
|
||||
### `dropbox_get_metadata`
|
||||
|
||||
Metadaten für eine Datei oder einen Ordner in Dropbox abrufen
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `path` | string | Ja | Der Pfad der Datei oder des Ordners, für die/den Metadaten abgerufen werden sollen |
|
||||
| `includeMediaInfo` | boolean | Nein | Wenn true, werden Medieninformationen für Fotos/Videos einbezogen |
|
||||
| `includeDeleted` | boolean | Nein | Wenn true, werden gelöschte Dateien in den Ergebnissen einbezogen |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `metadata` | object | Metadaten für die Datei oder den Ordner |
|
||||
|
||||
### `dropbox_create_shared_link`
|
||||
|
||||
Einen teilbaren Link für eine Datei oder einen Ordner in Dropbox erstellen
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `path` | string | Ja | Der Pfad der Datei oder des Ordners, der geteilt werden soll |
|
||||
| `requestedVisibility` | string | Nein | Sichtbarkeit: public, team_only oder password |
|
||||
| `linkPassword` | string | Nein | Passwort für den geteilten Link \(nur wenn die Sichtbarkeit password ist\) |
|
||||
| `expires` | string | Nein | Ablaufdatum im ISO 8601-Format \(z.B. 2025-12-31T23:59:59Z\) |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `sharedLink` | object | Der erstellte geteilte Link |
|
||||
|
||||
### `dropbox_search`
|
||||
|
||||
Suche nach Dateien und Ordnern in Dropbox
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `query` | string | Ja | Die Suchanfrage |
|
||||
| `path` | string | Nein | Suche auf einen bestimmten Ordnerpfad beschränken |
|
||||
| `fileExtensions` | string | Nein | Kommagetrennte Liste von Dateierweiterungen zur Filterung \(z.B. pdf,xlsx\) |
|
||||
| `maxResults` | number | Nein | Maximale Anzahl der zurückzugebenden Ergebnisse \(Standard: 100\) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `matches` | array | Suchergebnisse |
|
||||
|
||||
## Hinweise
|
||||
|
||||
- Kategorie: `tools`
|
||||
- Typ: `dropbox`
|
||||
63
apps/docs/content/docs/de/tools/duckduckgo.mdx
Normal file
63
apps/docs/content/docs/de/tools/duckduckgo.mdx
Normal file
@@ -0,0 +1,63 @@
|
||||
---
|
||||
title: DuckDuckGo
|
||||
description: Suche mit DuckDuckGo
|
||||
---
|
||||
|
||||
import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
<BlockInfoCard
|
||||
type="duckduckgo"
|
||||
color="#FFFFFF"
|
||||
/>
|
||||
|
||||
{/* MANUAL-CONTENT-START:intro */}
|
||||
[DuckDuckGo](https://duckduckgo.com/) ist eine datenschutzorientierte Websuchmaschine, die sofortige Antworten, Zusammenfassungen, verwandte Themen und mehr liefert – ohne dich oder deine Suchen zu verfolgen. DuckDuckGo macht es einfach, Informationen ohne Benutzerprofilierung oder zielgerichtete Werbung zu finden.
|
||||
|
||||
Mit DuckDuckGo in Sim kannst du:
|
||||
|
||||
- **Im Web suchen**: Finde sofort Antworten, Fakten und Übersichten für eine bestimmte Suchanfrage
|
||||
- **Direkte Antworten erhalten**: Erhalte spezifische Antworten für Berechnungen, Umrechnungen oder Faktenfragen
|
||||
- **Auf Zusammenfassungen zugreifen**: Erhalte kurze Zusammenfassungen oder Beschreibungen für deine Suchthemen
|
||||
- **Verwandte Themen abrufen**: Entdecke Links und Referenzen, die für deine Suche relevant sind
|
||||
- **Ausgabe filtern**: Optional HTML entfernen oder Begriffsklärungen überspringen für sauberere Ergebnisse
|
||||
|
||||
Diese Funktionen ermöglichen es deinen Sim-Agenten, den Zugriff auf aktuelles Webwissen zu automatisieren – vom Auffinden von Fakten in einem Workflow bis hin zur Anreicherung von Dokumenten und Analysen mit aktuellen Informationen. Da DuckDuckGos Instant Answers API offen ist und keinen API-Schlüssel erfordert, lässt sie sich einfach und datenschutzsicher in deine automatisierten Geschäftsprozesse integrieren.
|
||||
{/* MANUAL-CONTENT-END */}
|
||||
|
||||
## Nutzungsanleitung
|
||||
|
||||
Durchsuche das Web mit der DuckDuckGo Instant Answers API. Liefert sofortige Antworten, Zusammenfassungen, verwandte Themen und mehr. Kostenlos nutzbar ohne API-Schlüssel.
|
||||
|
||||
## Tools
|
||||
|
||||
### `duckduckgo_search`
|
||||
|
||||
Durchsuche das Web mit der DuckDuckGo Instant Answers API. Liefert sofortige Antworten, Zusammenfassungen und verwandte Themen für deine Anfrage. Kostenlos nutzbar ohne API-Schlüssel.
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `query` | string | Ja | Die auszuführende Suchanfrage |
|
||||
| `noHtml` | boolean | Nein | HTML aus Text in Ergebnissen entfernen \(Standard: true\) |
|
||||
| `skipDisambig` | boolean | Nein | Begriffsklärungsergebnisse überspringen \(Standard: false\) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `heading` | string | Die Überschrift/der Titel der Sofortantwort |
|
||||
| `abstract` | string | Eine kurze Zusammenfassung des Themas |
|
||||
| `abstractText` | string | Einfache Textversion der Zusammenfassung |
|
||||
| `abstractSource` | string | Die Quelle der Zusammenfassung \(z.B. Wikipedia\) |
|
||||
| `abstractURL` | string | URL zur Quelle der Zusammenfassung |
|
||||
| `image` | string | URL zu einem Bild zum Thema |
|
||||
| `answer` | string | Direkte Antwort, falls verfügbar \(z.B. für Berechnungen\) |
|
||||
| `answerType` | string | Typ der Antwort \(z.B. calc, ip, usw.\) |
|
||||
| `type` | string | Antworttyp: A \(Artikel\), D \(Begriffsklärung\), C \(Kategorie\), N \(Name\), E \(Exklusiv\) |
|
||||
| `relatedTopics` | array | Array verwandter Themen mit URLs und Beschreibungen |
|
||||
|
||||
## Hinweise
|
||||
|
||||
- Kategorie: `tools`
|
||||
- Typ: `duckduckgo`
|
||||
365
apps/docs/content/docs/de/tools/elasticsearch.mdx
Normal file
365
apps/docs/content/docs/de/tools/elasticsearch.mdx
Normal file
@@ -0,0 +1,365 @@
|
||||
---
|
||||
title: Elasticsearch
|
||||
description: Suchen, indexieren und verwalten Sie Daten in Elasticsearch
|
||||
---
|
||||
|
||||
import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
<BlockInfoCard
|
||||
type="elasticsearch"
|
||||
color="#E0E0E0"
|
||||
/>
|
||||
|
||||
{/* MANUAL-CONTENT-START:intro */}
|
||||
[Elasticsearch](https://www.elastic.co/elasticsearch/) ist eine leistungsstarke verteilte Such- und Analysemaschine, die es Ihnen ermöglicht, große Datenmengen in Echtzeit zu indexieren, zu durchsuchen und zu analysieren. Sie wird häufig für Suchfunktionen, Log- und Ereignisdatenanalysen, Beobachtbarkeit und mehr eingesetzt.
|
||||
|
||||
Mit Elasticsearch in Sim erhalten Sie programmatischen Zugriff auf die Kernfunktionen von Elasticsearch, darunter:
|
||||
|
||||
- **Dokumente durchsuchen**: Führen Sie erweiterte Suchen in strukturiertem oder unstrukturiertem Text mit Query DSL durch, mit Unterstützung für Sortierung, Paginierung und Feldauswahl.
|
||||
- **Dokumente indexieren**: Fügen Sie neue Dokumente hinzu oder aktualisieren Sie bestehende in jedem Elasticsearch-Index für sofortigen Abruf und Analyse.
|
||||
- **Dokumente abrufen, aktualisieren oder löschen**: Rufen Sie bestimmte Dokumente nach ID ab, ändern oder entfernen Sie sie.
|
||||
- **Massenoperationen**: Führen Sie mehrere Indexierungs- oder Aktualisierungsaktionen in einer einzigen Anfrage für Datenverarbeitung mit hohem Durchsatz aus.
|
||||
- **Indizes verwalten**: Erstellen, löschen oder rufen Sie Details zu Indizes als Teil Ihrer Workflow-Automatisierung ab.
|
||||
- **Cluster-Überwachung**: Überprüfen Sie den Zustand und die Statistiken Ihrer Elasticsearch-Bereitstellung.
|
||||
|
||||
Sims Elasticsearch-Tools funktionieren sowohl mit selbst gehosteten als auch mit Elastic Cloud-Umgebungen. Integrieren Sie Elasticsearch in Ihre Agent-Workflows, um die Datenaufnahme zu automatisieren, große Datensätze zu durchsuchen, Berichte zu erstellen oder benutzerdefinierte, suchgestützte Anwendungen zu erstellen – alles ohne manuelle Eingriffe.
|
||||
{/* MANUAL-CONTENT-END */}
|
||||
|
||||
## Nutzungsanweisungen
|
||||
|
||||
Integrieren Sie Elasticsearch in Workflows für leistungsstarke Suche, Indexierung und Datenverwaltung. Unterstützt CRUD-Operationen für Dokumente, erweiterte Suchabfragen, Massenoperationen, Indexverwaltung und Cluster-Überwachung. Funktioniert sowohl mit selbst gehosteten als auch mit Elastic Cloud-Bereitstellungen.
|
||||
|
||||
## Tools
|
||||
|
||||
### `elasticsearch_search`
|
||||
|
||||
Durchsuche Dokumente in Elasticsearch mit Query DSL. Gibt übereinstimmende Dokumente mit Scores und Metadaten zurück.
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `deploymentType` | string | Ja | Bereitstellungstyp: self_hosted oder cloud |
|
||||
| `host` | string | Nein | Elasticsearch-Host-URL (für self-hosted) |
|
||||
| `cloudId` | string | Nein | Elastic Cloud ID (für Cloud-Bereitstellungen) |
|
||||
| `authMethod` | string | Ja | Authentifizierungsmethode: api_key oder basic_auth |
|
||||
| `apiKey` | string | Nein | Elasticsearch API-Schlüssel |
|
||||
| `username` | string | Nein | Benutzername für Basic Auth |
|
||||
| `password` | string | Nein | Passwort für Basic Auth |
|
||||
| `index` | string | Ja | Indexname für die Suche |
|
||||
| `query` | string | Nein | Query DSL als JSON-String |
|
||||
| `from` | number | Nein | Startoffset für Paginierung (Standard: 0) |
|
||||
| `size` | number | Nein | Anzahl der zurückzugebenden Ergebnisse (Standard: 10) |
|
||||
| `sort` | string | Nein | Sortierungsspezifikation als JSON-String |
|
||||
| `sourceIncludes` | string | Nein | Kommagetrennte Liste von Feldern, die in _source eingeschlossen werden sollen |
|
||||
| `sourceExcludes` | string | Nein | Kommagetrennte Liste von Feldern, die aus _source ausgeschlossen werden sollen |
|
||||
| `trackTotalHits` | boolean | Nein | Genaue Gesamttrefferanzahl verfolgen (Standard: true) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `took` | number | Zeit in Millisekunden, die die Suche gedauert hat |
|
||||
| `timed_out` | boolean | Ob die Suche ein Timeout hatte |
|
||||
| `hits` | object | Suchergebnisse mit Gesamtanzahl und übereinstimmenden Dokumenten |
|
||||
| `aggregations` | json | Aggregationsergebnisse, falls vorhanden |
|
||||
|
||||
### `elasticsearch_index_document`
|
||||
|
||||
Dokument in Elasticsearch indexieren (erstellen oder aktualisieren).
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `deploymentType` | string | Ja | Bereitstellungstyp: self_hosted oder cloud |
|
||||
| `host` | string | Nein | Elasticsearch-Host-URL \(für self-hosted\) |
|
||||
| `cloudId` | string | Nein | Elastic Cloud ID \(für Cloud-Bereitstellungen\) |
|
||||
| `authMethod` | string | Ja | Authentifizierungsmethode: api_key oder basic_auth |
|
||||
| `apiKey` | string | Nein | Elasticsearch API-Schlüssel |
|
||||
| `username` | string | Nein | Benutzername für Basic-Auth |
|
||||
| `password` | string | Nein | Passwort für Basic-Auth |
|
||||
| `index` | string | Ja | Zielindexname |
|
||||
| `documentId` | string | Nein | Dokument-ID \(wird automatisch generiert, wenn nicht angegeben\) |
|
||||
| `document` | string | Ja | Dokumentinhalt als JSON-String |
|
||||
| `refresh` | string | Nein | Aktualisierungsrichtlinie: true, false oder wait_for |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `_index` | string | Index, in dem das Dokument gespeichert wurde |
|
||||
| `_id` | string | Dokument-ID |
|
||||
| `_version` | number | Dokumentversion |
|
||||
| `result` | string | Operationsergebnis \(erstellt oder aktualisiert\) |
|
||||
|
||||
### `elasticsearch_get_document`
|
||||
|
||||
Dokument anhand der ID aus Elasticsearch abrufen.
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `deploymentType` | string | Ja | Bereitstellungstyp: self_hosted oder cloud |
|
||||
| `host` | string | Nein | Elasticsearch-Host-URL \(für self-hosted\) |
|
||||
| `cloudId` | string | Nein | Elastic Cloud ID \(für Cloud-Bereitstellungen\) |
|
||||
| `authMethod` | string | Ja | Authentifizierungsmethode: api_key oder basic_auth |
|
||||
| `apiKey` | string | Nein | Elasticsearch API-Schlüssel |
|
||||
| `username` | string | Nein | Benutzername für Basic-Auth |
|
||||
| `password` | string | Nein | Passwort für Basic-Auth |
|
||||
| `index` | string | Ja | Indexname |
|
||||
| `documentId` | string | Ja | Abzurufende Dokument-ID |
|
||||
| `sourceIncludes` | string | Nein | Kommagetrennte Liste der einzuschließenden Felder |
|
||||
| `sourceExcludes` | string | Nein | Kommagetrennte Liste der auszuschließenden Felder |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `_index` | string | Indexname |
|
||||
| `_id` | string | Dokument-ID |
|
||||
| `_version` | number | Dokumentversion |
|
||||
| `found` | boolean | Ob das Dokument gefunden wurde |
|
||||
| `_source` | json | Dokumentinhalt |
|
||||
|
||||
### `elasticsearch_update_document`
|
||||
|
||||
Teilweise Aktualisierung eines Dokuments in Elasticsearch mittels Doc-Merge.
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `deploymentType` | string | Ja | Bereitstellungstyp: self_hosted oder cloud |
|
||||
| `host` | string | Nein | Elasticsearch-Host-URL (für self-hosted) |
|
||||
| `cloudId` | string | Nein | Elastic Cloud ID (für Cloud-Bereitstellungen) |
|
||||
| `authMethod` | string | Ja | Authentifizierungsmethode: api_key oder basic_auth |
|
||||
| `apiKey` | string | Nein | Elasticsearch API-Schlüssel |
|
||||
| `username` | string | Nein | Benutzername für Basic Auth |
|
||||
| `password` | string | Nein | Passwort für Basic Auth |
|
||||
| `index` | string | Ja | Indexname |
|
||||
| `documentId` | string | Ja | Zu aktualisierende Dokument-ID |
|
||||
| `document` | string | Ja | Teilweise Dokument zum Zusammenführen als JSON-String |
|
||||
| `retryOnConflict` | number | Nein | Anzahl der Wiederholungen bei Versionskonflikten |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `_index` | string | Indexname |
|
||||
| `_id` | string | Dokument-ID |
|
||||
| `_version` | number | Neue Dokumentversion |
|
||||
| `result` | string | Operationsergebnis (updated oder noop) |
|
||||
|
||||
### `elasticsearch_delete_document`
|
||||
|
||||
Löschen eines Dokuments aus Elasticsearch anhand der ID.
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `deploymentType` | string | Ja | Bereitstellungstyp: self_hosted oder cloud |
|
||||
| `host` | string | Nein | Elasticsearch-Host-URL \(für self-hosted\) |
|
||||
| `cloudId` | string | Nein | Elastic Cloud ID \(für Cloud-Bereitstellungen\) |
|
||||
| `authMethod` | string | Ja | Authentifizierungsmethode: api_key oder basic_auth |
|
||||
| `apiKey` | string | Nein | Elasticsearch API-Schlüssel |
|
||||
| `username` | string | Nein | Benutzername für Basic-Auth |
|
||||
| `password` | string | Nein | Passwort für Basic-Auth |
|
||||
| `index` | string | Ja | Index-Name |
|
||||
| `documentId` | string | Ja | Dokument-ID zum Löschen |
|
||||
| `refresh` | string | Nein | Aktualisierungsrichtlinie: true, false oder wait_for |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `_index` | string | Index-Name |
|
||||
| `_id` | string | Dokument-ID |
|
||||
| `_version` | number | Dokumentversion |
|
||||
| `result` | string | Operationsergebnis \(deleted oder not_found\) |
|
||||
|
||||
### `elasticsearch_bulk`
|
||||
|
||||
Führen Sie mehrere Index-, Erstellungs-, Lösch- oder Aktualisierungsoperationen in einer einzigen Anfrage für hohe Leistung durch.
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `deploymentType` | string | Ja | Bereitstellungstyp: self_hosted oder cloud |
|
||||
| `host` | string | Nein | Elasticsearch-Host-URL \(für self-hosted\) |
|
||||
| `cloudId` | string | Nein | Elastic Cloud ID \(für Cloud-Bereitstellungen\) |
|
||||
| `authMethod` | string | Ja | Authentifizierungsmethode: api_key oder basic_auth |
|
||||
| `apiKey` | string | Nein | Elasticsearch API-Schlüssel |
|
||||
| `username` | string | Nein | Benutzername für Basic-Auth |
|
||||
| `password` | string | Nein | Passwort für Basic-Auth |
|
||||
| `index` | string | Nein | Standardindex für Operationen, die keinen angeben |
|
||||
| `operations` | string | Ja | Massenoperationen als NDJSON-String \(zeilenweise abgegrenztes JSON\) |
|
||||
| `refresh` | string | Nein | Aktualisierungsrichtlinie: true, false oder wait_for |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `took` | number | Zeit in Millisekunden, die der Massenvorgang gedauert hat |
|
||||
| `errors` | boolean | Ob ein Vorgang einen Fehler hatte |
|
||||
| `items` | array | Ergebnisse für jeden Vorgang |
|
||||
|
||||
### `elasticsearch_count`
|
||||
|
||||
Zählt Dokumente, die einer Abfrage in Elasticsearch entsprechen.
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `deploymentType` | string | Ja | Bereitstellungstyp: self_hosted oder cloud |
|
||||
| `host` | string | Nein | Elasticsearch-Host-URL \(für self-hosted\) |
|
||||
| `cloudId` | string | Nein | Elastic Cloud ID \(für Cloud-Bereitstellungen\) |
|
||||
| `authMethod` | string | Ja | Authentifizierungsmethode: api_key oder basic_auth |
|
||||
| `apiKey` | string | Nein | Elasticsearch API-Schlüssel |
|
||||
| `username` | string | Nein | Benutzername für Basic-Auth |
|
||||
| `password` | string | Nein | Passwort für Basic-Auth |
|
||||
| `index` | string | Ja | Indexname, in dem Dokumente gezählt werden sollen |
|
||||
| `query` | string | Nein | Optionale Abfrage zum Filtern von Dokumenten \(JSON-String\) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `count` | number | Anzahl der Dokumente, die der Abfrage entsprechen |
|
||||
| `_shards` | object | Shard-Statistiken |
|
||||
|
||||
### `elasticsearch_create_index`
|
||||
|
||||
Erstellt einen neuen Index mit optionalen Einstellungen und Mappings.
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `deploymentType` | string | Ja | Bereitstellungstyp: self_hosted oder cloud |
|
||||
| `host` | string | Nein | Elasticsearch-Host-URL \(für self-hosted\) |
|
||||
| `cloudId` | string | Nein | Elastic Cloud ID \(für Cloud-Bereitstellungen\) |
|
||||
| `authMethod` | string | Ja | Authentifizierungsmethode: api_key oder basic_auth |
|
||||
| `apiKey` | string | Nein | Elasticsearch API-Schlüssel |
|
||||
| `username` | string | Nein | Benutzername für Basic-Auth |
|
||||
| `password` | string | Nein | Passwort für Basic-Auth |
|
||||
| `index` | string | Ja | Zu erstellender Indexname |
|
||||
| `settings` | string | Nein | Indexeinstellungen als JSON-String |
|
||||
| `mappings` | string | Nein | Index-Mappings als JSON-String |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `acknowledged` | boolean | Ob die Anfrage bestätigt wurde |
|
||||
| `shards_acknowledged` | boolean | Ob die Shards bestätigt wurden |
|
||||
| `index` | string | Name des erstellten Index |
|
||||
|
||||
### `elasticsearch_delete_index`
|
||||
|
||||
Löscht einen Index und alle seine Dokumente. Dieser Vorgang ist nicht rückgängig zu machen.
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `deploymentType` | string | Ja | Bereitstellungstyp: self_hosted oder cloud |
|
||||
| `host` | string | Nein | Elasticsearch-Host-URL \(für self-hosted\) |
|
||||
| `cloudId` | string | Nein | Elastic Cloud ID \(für Cloud-Bereitstellungen\) |
|
||||
| `authMethod` | string | Ja | Authentifizierungsmethode: api_key oder basic_auth |
|
||||
| `apiKey` | string | Nein | Elasticsearch API-Schlüssel |
|
||||
| `username` | string | Nein | Benutzername für Basic-Auth |
|
||||
| `password` | string | Nein | Passwort für Basic-Auth |
|
||||
| `index` | string | Ja | Name des zu löschenden Index |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `acknowledged` | boolean | Ob die Löschung bestätigt wurde |
|
||||
|
||||
### `elasticsearch_get_index`
|
||||
|
||||
Ruft Indexinformationen ab, einschließlich Einstellungen, Mappings und Aliase.
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `deploymentType` | string | Ja | Bereitstellungstyp: self_hosted oder cloud |
|
||||
| `host` | string | Nein | Elasticsearch-Host-URL \(für self-hosted\) |
|
||||
| `cloudId` | string | Nein | Elastic Cloud ID \(für Cloud-Bereitstellungen\) |
|
||||
| `authMethod` | string | Ja | Authentifizierungsmethode: api_key oder basic_auth |
|
||||
| `apiKey` | string | Nein | Elasticsearch API-Schlüssel |
|
||||
| `username` | string | Nein | Benutzername für Basic-Auth |
|
||||
| `password` | string | Nein | Passwort für Basic-Auth |
|
||||
| `index` | string | Ja | Name des Index, für den Informationen abgerufen werden sollen |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `index` | json | Indexinformationen einschließlich Aliase, Mappings und Einstellungen |
|
||||
|
||||
### `elasticsearch_cluster_health`
|
||||
|
||||
Ruft den Gesundheitsstatus des Elasticsearch-Clusters ab.
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `deploymentType` | string | Ja | Bereitstellungstyp: self_hosted oder cloud |
|
||||
| `host` | string | Nein | Elasticsearch-Host-URL \(für self-hosted\) |
|
||||
| `cloudId` | string | Nein | Elastic Cloud ID \(für Cloud-Bereitstellungen\) |
|
||||
| `authMethod` | string | Ja | Authentifizierungsmethode: api_key oder basic_auth |
|
||||
| `apiKey` | string | Nein | Elasticsearch API-Schlüssel |
|
||||
| `username` | string | Nein | Benutzername für Basic-Auth |
|
||||
| `password` | string | Nein | Passwort für Basic-Auth |
|
||||
| `waitForStatus` | string | Nein | Warten bis der Cluster diesen Status erreicht: green, yellow oder red |
|
||||
| `timeout` | string | Nein | Timeout für den Wartevorgang \(z.B. 30s, 1m\) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `cluster_name` | string | Name des Clusters |
|
||||
| `status` | string | Cluster-Gesundheitsstatus: green, yellow oder red |
|
||||
| `number_of_nodes` | number | Gesamtzahl der Knoten im Cluster |
|
||||
| `number_of_data_nodes` | number | Anzahl der Datenknoten |
|
||||
| `active_shards` | number | Anzahl der aktiven Shards |
|
||||
| `unassigned_shards` | number | Anzahl der nicht zugewiesenen Shards |
|
||||
|
||||
### `elasticsearch_cluster_stats`
|
||||
|
||||
Erhalte umfassende Statistiken über den Elasticsearch-Cluster.
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `deploymentType` | string | Ja | Bereitstellungstyp: self_hosted oder cloud |
|
||||
| `host` | string | Nein | Elasticsearch-Host-URL \(für self-hosted\) |
|
||||
| `cloudId` | string | Nein | Elastic Cloud ID \(für Cloud-Bereitstellungen\) |
|
||||
| `authMethod` | string | Ja | Authentifizierungsmethode: api_key oder basic_auth |
|
||||
| `apiKey` | string | Nein | Elasticsearch API-Schlüssel |
|
||||
| `username` | string | Nein | Benutzername für Basic-Auth |
|
||||
| `password` | string | Nein | Passwort für Basic-Auth |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `cluster_name` | string | Name des Clusters |
|
||||
| `status` | string | Cluster-Gesundheitsstatus |
|
||||
| `nodes` | object | Knotenstatistiken einschließlich Anzahl und Versionen |
|
||||
| `indices` | object | Indexstatistiken einschließlich Dokumentanzahl und Speichergröße |
|
||||
|
||||
## Hinweise
|
||||
|
||||
- Kategorie: `tools`
|
||||
- Typ: `elasticsearch`
|
||||
429
apps/docs/content/docs/de/tools/gitlab.mdx
Normal file
429
apps/docs/content/docs/de/tools/gitlab.mdx
Normal file
@@ -0,0 +1,429 @@
|
||||
---
|
||||
title: GitLab
|
||||
description: Interagiere mit GitLab-Projekten, Issues, Merge Requests und Pipelines
|
||||
---
|
||||
|
||||
import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
<BlockInfoCard
|
||||
type="gitlab"
|
||||
color="#E0E0E0"
|
||||
/>
|
||||
|
||||
{/* MANUAL-CONTENT-START:intro */}
|
||||
[GitLab](https://gitlab.com/) ist eine umfassende DevOps-Plattform, die Teams ermöglicht, ihren Software-Entwicklungszyklus zu verwalten, zusammenzuarbeiten und zu automatisieren. Mit GitLab kannst du mühelos Quellcodeverwaltung, CI/CD, Reviews und Zusammenarbeit in einer einzigen Anwendung handhaben.
|
||||
|
||||
Mit GitLab in Sim kannst du:
|
||||
|
||||
- **Projekte und Repositories verwalten**: Liste und rufe deine GitLab-Projekte ab, greife auf Details zu und organisiere deine Repositories
|
||||
- **Mit Issues arbeiten**: Issues auflisten, erstellen und kommentieren, um Arbeit zu verfolgen und effektiv zusammenzuarbeiten
|
||||
- **Merge Requests bearbeiten**: Überprüfe, erstelle und verwalte Merge Requests für Codeänderungen und Peer-Reviews
|
||||
- **CI/CD-Pipelines automatisieren**: Starte, überwache und interagiere mit GitLab-Pipelines als Teil deiner Automatisierungsabläufe
|
||||
- **Mit Kommentaren zusammenarbeiten**: Füge Kommentare zu Issues oder Merge Requests hinzu für eine effiziente Kommunikation innerhalb deines Teams
|
||||
|
||||
Mit Sims GitLab-Integration können deine Agenten programmatisch mit deinen GitLab-Projekten interagieren. Automatisiere Projektverwaltung, Issue-Tracking, Code-Reviews und Pipeline-Operationen nahtlos in deinen Workflows, optimiere deinen Software-Entwicklungsprozess und verbessere die Zusammenarbeit in deinem Team.
|
||||
{/* MANUAL-CONTENT-END */}
|
||||
|
||||
## Nutzungsanleitung
|
||||
|
||||
Integriere GitLab in den Workflow. Kann Projekte, Issues, Merge Requests, Pipelines verwalten und Kommentare hinzufügen. Unterstützt alle grundlegenden GitLab DevOps-Operationen.
|
||||
|
||||
## Tools
|
||||
|
||||
### `gitlab_list_projects`
|
||||
|
||||
GitLab-Projekte auflisten, auf die der authentifizierte Benutzer Zugriff hat
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `owned` | boolean | Nein | Beschränkung auf Projekte, die dem aktuellen Benutzer gehören |
|
||||
| `membership` | boolean | Nein | Beschränkung auf Projekte, in denen der aktuelle Benutzer Mitglied ist |
|
||||
| `search` | string | Nein | Projekte nach Namen durchsuchen |
|
||||
| `visibility` | string | Nein | Nach Sichtbarkeit filtern \(public, internal, private\) |
|
||||
| `orderBy` | string | Nein | Nach Feld sortieren \(id, name, path, created_at, updated_at, last_activity_at\) |
|
||||
| `sort` | string | Nein | Sortierrichtung \(asc, desc\) |
|
||||
| `perPage` | number | Nein | Anzahl der Ergebnisse pro Seite \(Standard 20, max 100\) |
|
||||
| `page` | number | Nein | Seitennummer für Paginierung |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `projects` | array | Liste der GitLab-Projekte |
|
||||
| `total` | number | Gesamtanzahl der Projekte |
|
||||
|
||||
### `gitlab_get_project`
|
||||
|
||||
Details zu einem bestimmten GitLab-Projekt abrufen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `projectId` | string | Ja | Projekt-ID oder URL-codierter Pfad \(z.B. "namespace/project"\) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `project` | object | Die GitLab-Projektdetails |
|
||||
|
||||
### `gitlab_list_issues`
|
||||
|
||||
Issues in einem GitLab-Projekt auflisten
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `projectId` | string | Ja | Projekt-ID oder URL-codierter Pfad |
|
||||
| `state` | string | Nein | Nach Status filtern \(opened, closed, all\) |
|
||||
| `labels` | string | Nein | Kommagetrennte Liste von Label-Namen |
|
||||
| `assigneeId` | number | Nein | Nach Bearbeiter-Benutzer-ID filtern |
|
||||
| `milestoneTitle` | string | Nein | Nach Meilenstein-Titel filtern |
|
||||
| `search` | string | Nein | Issues nach Titel und Beschreibung durchsuchen |
|
||||
| `orderBy` | string | Nein | Sortieren nach Feld \(created_at, updated_at\) |
|
||||
| `sort` | string | Nein | Sortierrichtung \(asc, desc\) |
|
||||
| `perPage` | number | Nein | Anzahl der Ergebnisse pro Seite \(Standard 20, max 100\) |
|
||||
| `page` | number | Nein | Seitennummer für Paginierung |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `issues` | array | Liste der GitLab-Issues |
|
||||
| `total` | number | Gesamtanzahl der Issues |
|
||||
|
||||
### `gitlab_get_issue`
|
||||
|
||||
Details zu einem bestimmten GitLab-Issue abrufen
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `projectId` | string | Ja | Projekt-ID oder URL-codierter Pfad |
|
||||
| `issueIid` | number | Ja | Issue-Nummer innerhalb des Projekts \(die # in der GitLab-UI angezeigt\) |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `issue` | object | Die GitLab-Issue-Details |
|
||||
|
||||
### `gitlab_create_issue`
|
||||
|
||||
Ein neues Issue in einem GitLab-Projekt erstellen
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `projectId` | string | Ja | Projekt-ID oder URL-codierter Pfad |
|
||||
| `title` | string | Ja | Issue-Titel |
|
||||
| `description` | string | Nein | Issue-Beschreibung \(Markdown unterstützt\) |
|
||||
| `labels` | string | Nein | Kommagetrennte Liste von Label-Namen |
|
||||
| `assigneeIds` | array | Nein | Array von Benutzer-IDs für die Zuweisung |
|
||||
| `milestoneId` | number | Nein | Meilenstein-ID für die Zuweisung |
|
||||
| `dueDate` | string | Nein | Fälligkeitsdatum im Format JJJJ-MM-TT |
|
||||
| `confidential` | boolean | Nein | Ob das Issue vertraulich ist |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `issue` | object | Das erstellte GitLab-Issue |
|
||||
|
||||
### `gitlab_update_issue`
|
||||
|
||||
Ein bestehendes Issue in einem GitLab-Projekt aktualisieren
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `projectId` | string | Ja | Projekt-ID oder URL-codierter Pfad |
|
||||
| `issueIid` | number | Ja | Interne Issue-ID (IID) |
|
||||
| `title` | string | Nein | Neuer Issue-Titel |
|
||||
| `description` | string | Nein | Neue Issue-Beschreibung (Markdown unterstützt) |
|
||||
| `stateEvent` | string | Nein | Status-Event (close oder reopen) |
|
||||
| `labels` | string | Nein | Kommagetrennte Liste von Label-Namen |
|
||||
| `assigneeIds` | array | Nein | Array von Benutzer-IDs für die Zuweisung |
|
||||
| `milestoneId` | number | Nein | Meilenstein-ID für die Zuweisung |
|
||||
| `dueDate` | string | Nein | Fälligkeitsdatum im Format JJJJ-MM-TT |
|
||||
| `confidential` | boolean | Nein | Ob das Issue vertraulich ist |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `issue` | object | Das aktualisierte GitLab-Issue |
|
||||
|
||||
### `gitlab_delete_issue`
|
||||
|
||||
Ein Issue aus einem GitLab-Projekt löschen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `projectId` | string | Ja | Projekt-ID oder URL-codierter Pfad |
|
||||
| `issueIid` | number | Ja | Interne Issue-ID (IID) |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Ob das Issue erfolgreich gelöscht wurde |
|
||||
|
||||
### `gitlab_create_issue_note`
|
||||
|
||||
Einen Kommentar zu einem GitLab-Issue hinzufügen
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `projectId` | string | Ja | Projekt-ID oder URL-codierter Pfad |
|
||||
| `issueIid` | number | Ja | Interne Issue-ID (IID) |
|
||||
| `body` | string | Ja | Kommentartext (Markdown unterstützt) |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `note` | object | Der erstellte Kommentar |
|
||||
|
||||
### `gitlab_list_merge_requests`
|
||||
|
||||
Merge-Requests in einem GitLab-Projekt auflisten
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `projectId` | string | Ja | Projekt-ID oder URL-codierter Pfad |
|
||||
| `state` | string | Nein | Nach Status filtern (opened, closed, merged, all) |
|
||||
| `labels` | string | Nein | Kommagetrennte Liste von Label-Namen |
|
||||
| `sourceBranch` | string | Nein | Nach Quell-Branch filtern |
|
||||
| `targetBranch` | string | Nein | Nach Ziel-Branch filtern |
|
||||
| `orderBy` | string | Nein | Sortieren nach Feld (created_at, updated_at) |
|
||||
| `sort` | string | Nein | Sortierrichtung (asc, desc) |
|
||||
| `perPage` | number | Nein | Anzahl der Ergebnisse pro Seite (Standard 20, max 100) |
|
||||
| `page` | number | Nein | Seitennummer für Paginierung |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `mergeRequests` | array | Liste der GitLab Merge-Requests |
|
||||
| `total` | number | Gesamtanzahl der Merge-Requests |
|
||||
|
||||
### `gitlab_get_merge_request`
|
||||
|
||||
Details zu einem bestimmten GitLab Merge-Request abrufen
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `projectId` | string | Ja | Projekt-ID oder URL-codierter Pfad |
|
||||
| `mergeRequestIid` | number | Ja | Interne ID des Merge-Requests \(IID\) |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `mergeRequest` | object | Die Details des GitLab Merge-Requests |
|
||||
|
||||
### `gitlab_create_merge_request`
|
||||
|
||||
Einen neuen Merge-Request in einem GitLab-Projekt erstellen
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `projectId` | string | Ja | Projekt-ID oder URL-codierter Pfad |
|
||||
| `sourceBranch` | string | Ja | Name des Quellbranches |
|
||||
| `targetBranch` | string | Ja | Name des Zielbranches |
|
||||
| `title` | string | Ja | Titel des Merge-Requests |
|
||||
| `description` | string | Nein | Beschreibung des Merge-Requests \(Markdown unterstützt\) |
|
||||
| `labels` | string | Nein | Kommagetrennte Liste von Label-Namen |
|
||||
| `assigneeIds` | array | Nein | Array von Benutzer-IDs für die Zuweisung |
|
||||
| `milestoneId` | number | Nein | Meilenstein-ID für die Zuweisung |
|
||||
| `removeSourceBranch` | boolean | Nein | Quellbranch nach dem Merge löschen |
|
||||
| `squash` | boolean | Nein | Commits beim Merge zusammenfassen |
|
||||
| `draft` | boolean | Nein | Als Entwurf markieren \(in Bearbeitung\) |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `mergeRequest` | object | Der erstellte GitLab Merge Request |
|
||||
|
||||
### `gitlab_update_merge_request`
|
||||
|
||||
Einen bestehenden Merge Request in einem GitLab-Projekt aktualisieren
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `projectId` | string | Yes | Projekt-ID oder URL-kodierter Pfad |
|
||||
| `mergeRequestIid` | number | Yes | Interne ID des Merge Requests \(IID\) |
|
||||
| `title` | string | No | Neuer Titel des Merge Requests |
|
||||
| `description` | string | No | Neue Beschreibung des Merge Requests |
|
||||
| `stateEvent` | string | No | Status-Event \(close oder reopen\) |
|
||||
| `labels` | string | No | Kommagetrennte Liste von Label-Namen |
|
||||
| `assigneeIds` | array | No | Array von Benutzer-IDs für die Zuweisung |
|
||||
| `milestoneId` | number | No | Meilenstein-ID für die Zuweisung |
|
||||
| `targetBranch` | string | No | Neuer Ziel-Branch |
|
||||
| `removeSourceBranch` | boolean | No | Quell-Branch nach dem Merge löschen |
|
||||
| `squash` | boolean | No | Commits beim Merge zusammenfassen |
|
||||
| `draft` | boolean | No | Als Entwurf markieren \(work in progress\) |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `mergeRequest` | object | Der aktualisierte GitLab Merge Request |
|
||||
|
||||
### `gitlab_merge_merge_request`
|
||||
|
||||
Einen Merge Request in einem GitLab-Projekt zusammenführen
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `projectId` | string | Yes | Projekt-ID oder URL-kodierter Pfad |
|
||||
| `mergeRequestIid` | number | Yes | Interne ID des Merge Requests \(IID\) |
|
||||
| `mergeCommitMessage` | string | No | Benutzerdefinierte Merge-Commit-Nachricht |
|
||||
| `squashCommitMessage` | string | No | Benutzerdefinierte Squash-Commit-Nachricht |
|
||||
| `squash` | boolean | No | Commits vor dem Merge zusammenfassen |
|
||||
| `shouldRemoveSourceBranch` | boolean | No | Quell-Branch nach dem Merge löschen |
|
||||
| `mergeWhenPipelineSucceeds` | boolean | No | Merge durchführen, wenn Pipeline erfolgreich ist |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `mergeRequest` | object | Der zusammengeführte GitLab Merge Request |
|
||||
|
||||
### `gitlab_create_merge_request_note`
|
||||
|
||||
Einen Kommentar zu einem GitLab Merge Request hinzufügen
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `projectId` | string | Ja | Projekt-ID oder URL-kodierter Pfad |
|
||||
| `mergeRequestIid` | number | Ja | Interne ID des Merge Requests \(IID\) |
|
||||
| `body` | string | Ja | Kommentartext \(Markdown wird unterstützt\) |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `note` | object | Der erstellte Kommentar |
|
||||
|
||||
### `gitlab_list_pipelines`
|
||||
|
||||
Pipelines in einem GitLab-Projekt auflisten
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `projectId` | string | Ja | Projekt-ID oder URL-kodierter Pfad |
|
||||
| `ref` | string | Nein | Nach Ref filtern \(Branch oder Tag\) |
|
||||
| `status` | string | Nein | Nach Status filtern \(created, waiting_for_resource, preparing, pending, running, success, failed, canceled, skipped, manual, scheduled\) |
|
||||
| `orderBy` | string | Nein | Sortieren nach Feld \(id, status, ref, updated_at, user_id\) |
|
||||
| `sort` | string | Nein | Sortierrichtung \(asc, desc\) |
|
||||
| `perPage` | number | Nein | Anzahl der Ergebnisse pro Seite \(Standard 20, max 100\) |
|
||||
| `page` | number | Nein | Seitennummer für Paginierung |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `pipelines` | array | Liste der GitLab-Pipelines |
|
||||
| `total` | number | Gesamtanzahl der Pipelines |
|
||||
|
||||
### `gitlab_get_pipeline`
|
||||
|
||||
Details zu einer bestimmten GitLab-Pipeline abrufen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `projectId` | string | Ja | Projekt-ID oder URL-codierter Pfad |
|
||||
| `pipelineId` | number | Ja | Pipeline-ID |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `pipeline` | object | Die GitLab-Pipeline-Details |
|
||||
|
||||
### `gitlab_create_pipeline`
|
||||
|
||||
Eine neue Pipeline in einem GitLab-Projekt auslösen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `projectId` | string | Ja | Projekt-ID oder URL-codierter Pfad |
|
||||
| `ref` | string | Ja | Branch oder Tag, auf dem die Pipeline ausgeführt werden soll |
|
||||
| `variables` | array | Nein | Array von Variablen für die Pipeline \(jede mit key, value und optionalem variable_type\) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `pipeline` | object | Die erstellte GitLab-Pipeline |
|
||||
|
||||
### `gitlab_retry_pipeline`
|
||||
|
||||
Eine fehlgeschlagene GitLab-Pipeline wiederholen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `projectId` | string | Ja | Projekt-ID oder URL-codierter Pfad |
|
||||
| `pipelineId` | number | Ja | Pipeline-ID |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `pipeline` | object | Die wiederholte GitLab-Pipeline |
|
||||
|
||||
### `gitlab_cancel_pipeline`
|
||||
|
||||
Eine laufende GitLab-Pipeline abbrechen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `projectId` | string | Ja | Projekt-ID oder URL-codierter Pfad |
|
||||
| `pipelineId` | number | Ja | Pipeline-ID |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `pipeline` | object | Die abgebrochene GitLab-Pipeline |
|
||||
|
||||
## Hinweise
|
||||
|
||||
- Kategorie: `tools`
|
||||
- Typ: `gitlab`
|
||||
@@ -38,14 +38,14 @@ Erstellt ein neues Ereignis in Google Kalender
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `calendarId` | string | Nein | Kalender-ID \(standardmäßig primary\) |
|
||||
| `calendarId` | string | Nein | Kalender-ID (standardmäßig primary) |
|
||||
| `summary` | string | Ja | Ereignistitel/Zusammenfassung |
|
||||
| `description` | string | Nein | Ereignisbeschreibung |
|
||||
| `location` | string | Nein | Ereignisort |
|
||||
| `startDateTime` | string | Ja | Startdatum und -uhrzeit \(RFC3339-Format, z.B. 2025-06-03T10:00:00-08:00\) |
|
||||
| `endDateTime` | string | Ja | Enddatum und -uhrzeit \(RFC3339-Format, z.B. 2025-06-03T11:00:00-08:00\) |
|
||||
| `timeZone` | string | Nein | Zeitzone \(z.B. America/Los_Angeles\) |
|
||||
| `attendees` | array | Nein | Array mit E-Mail-Adressen der Teilnehmer |
|
||||
| `startDateTime` | string | Ja | Startdatum und -uhrzeit. MUSS Zeitzonen-Offset enthalten (z.B. 2025-06-03T10:00:00-08:00) ODER timeZone-Parameter bereitstellen |
|
||||
| `endDateTime` | string | Ja | Enddatum und -uhrzeit. MUSS Zeitzonen-Offset enthalten (z.B. 2025-06-03T11:00:00-08:00) ODER timeZone-Parameter bereitstellen |
|
||||
| `timeZone` | string | Nein | Zeitzone (z.B. America/Los_Angeles). Erforderlich, wenn datetime keinen Offset enthält. Standardmäßig America/Los_Angeles, wenn nicht angegeben. |
|
||||
| `attendees` | array | Nein | Array von E-Mail-Adressen der Teilnehmer |
|
||||
| `sendUpdates` | string | Nein | Wie Updates an Teilnehmer gesendet werden: all, externalOnly oder none |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
@@ -108,10 +108,10 @@ Dateien und Ordner in Google Drive auflisten
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `folderSelector` | string | Nein | Den Ordner auswählen, aus dem Dateien aufgelistet werden sollen |
|
||||
| `folderSelector` | string | Nein | Wählen Sie den Ordner aus, aus dem Dateien aufgelistet werden sollen |
|
||||
| `folderId` | string | Nein | Die ID des Ordners, aus dem Dateien aufgelistet werden sollen (interne Verwendung) |
|
||||
| `query` | string | Nein | Eine Abfrage zum Filtern der Dateien |
|
||||
| `pageSize` | number | Nein | Die Anzahl der zurückzugebenden Dateien |
|
||||
| `query` | string | Nein | Suchbegriff, um Dateien nach Namen zu filtern (z.B. "budget" findet Dateien mit "budget" im Namen). Verwenden Sie hier KEINE Google Drive-Abfragesyntax - geben Sie einfach einen einfachen Suchbegriff ein. |
|
||||
| `pageSize` | number | Nein | Die maximale Anzahl der zurückzugebenden Dateien (Standard: 100) |
|
||||
| `pageToken` | string | Nein | Das Seitentoken für die Paginierung |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
217
apps/docs/content/docs/de/tools/google_groups.mdx
Normal file
217
apps/docs/content/docs/de/tools/google_groups.mdx
Normal file
@@ -0,0 +1,217 @@
|
||||
---
|
||||
title: Google Groups
|
||||
description: Google Workspace-Gruppen und deren Mitglieder verwalten
|
||||
---
|
||||
|
||||
import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
<BlockInfoCard
|
||||
type="google_groups"
|
||||
color="#E8F0FE"
|
||||
/>
|
||||
|
||||
## Gebrauchsanweisung
|
||||
|
||||
Verbinden Sie sich mit Google Workspace, um Gruppen und deren Mitglieder mit der Admin SDK Directory API zu erstellen, zu aktualisieren und zu verwalten.
|
||||
|
||||
## Tools
|
||||
|
||||
### `google_groups_list_groups`
|
||||
|
||||
Alle Gruppen in einer Google Workspace-Domain auflisten
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `customer` | string | Nein | Kunden-ID oder "my_customer" für die Domain des authentifizierten Benutzers |
|
||||
| `domain` | string | Nein | Domainname zum Filtern von Gruppen |
|
||||
| `maxResults` | number | Nein | Maximale Anzahl der zurückzugebenden Ergebnisse \(1-200\) |
|
||||
| `pageToken` | string | Nein | Token für Paginierung |
|
||||
| `query` | string | Nein | Suchabfrage zum Filtern von Gruppen \(z.B. "email:admin*"\) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `output` | json | Google Groups API-Antwortdaten |
|
||||
|
||||
### `google_groups_get_group`
|
||||
|
||||
Details einer bestimmten Google-Gruppe nach E-Mail oder Gruppen-ID abrufen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `groupKey` | string | Ja | E-Mail-Adresse der Gruppe oder eindeutige Gruppen-ID |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `output` | json | Google Groups API-Antwortdaten |
|
||||
|
||||
### `google_groups_create_group`
|
||||
|
||||
Eine neue Google-Gruppe in der Domain erstellen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `email` | string | Ja | E-Mail-Adresse für die neue Gruppe (z.B. team@yourdomain.com) |
|
||||
| `name` | string | Ja | Anzeigename für die Gruppe |
|
||||
| `description` | string | Nein | Beschreibung der Gruppe |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `output` | json | Google Groups API-Antwortdaten |
|
||||
|
||||
### `google_groups_update_group`
|
||||
|
||||
Eine bestehende Google-Gruppe aktualisieren
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `groupKey` | string | Ja | E-Mail-Adresse der Gruppe oder eindeutige Gruppen-ID |
|
||||
| `name` | string | Nein | Neuer Anzeigename für die Gruppe |
|
||||
| `description` | string | Nein | Neue Beschreibung für die Gruppe |
|
||||
| `email` | string | Nein | Neue E-Mail-Adresse für die Gruppe |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `output` | json | Google Groups API-Antwortdaten |
|
||||
|
||||
### `google_groups_delete_group`
|
||||
|
||||
Eine Google-Gruppe löschen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `groupKey` | string | Ja | E-Mail-Adresse der Gruppe oder eindeutige Gruppen-ID zum Löschen |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `output` | json | Google Groups API-Antwortdaten |
|
||||
|
||||
### `google_groups_list_members`
|
||||
|
||||
Alle Mitglieder einer Google-Gruppe auflisten
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `groupKey` | string | Ja | E-Mail-Adresse der Gruppe oder eindeutige Gruppen-ID |
|
||||
| `maxResults` | number | Nein | Maximale Anzahl der zurückzugebenden Ergebnisse \(1-200\) |
|
||||
| `pageToken` | string | Nein | Token für Seitenumbruch |
|
||||
| `roles` | string | Nein | Nach Rollen filtern \(durch Komma getrennt: OWNER, MANAGER, MEMBER\) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `output` | json | Google Groups API-Antwortdaten |
|
||||
|
||||
### `google_groups_get_member`
|
||||
|
||||
Details eines bestimmten Mitglieds in einer Google-Gruppe abrufen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `groupKey` | string | Ja | E-Mail-Adresse der Gruppe oder eindeutige Gruppen-ID |
|
||||
| `memberKey` | string | Ja | E-Mail-Adresse des Mitglieds oder eindeutige Mitglieds-ID |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `output` | json | Google Groups API-Antwortdaten |
|
||||
|
||||
### `google_groups_add_member`
|
||||
|
||||
Ein neues Mitglied zu einer Google-Gruppe hinzufügen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `groupKey` | string | Ja | E-Mail-Adresse der Gruppe oder eindeutige Gruppen-ID |
|
||||
| `email` | string | Ja | E-Mail-Adresse des hinzuzufügenden Mitglieds |
|
||||
| `role` | string | Nein | Rolle für das Mitglied \(MEMBER, MANAGER oder OWNER\). Standardmäßig MEMBER. |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `output` | json | Google Groups API-Antwortdaten |
|
||||
|
||||
### `google_groups_remove_member`
|
||||
|
||||
Ein Mitglied aus einer Google-Gruppe entfernen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `groupKey` | string | Ja | E-Mail-Adresse der Gruppe oder eindeutige Gruppen-ID |
|
||||
| `memberKey` | string | Ja | E-Mail-Adresse oder eindeutige ID des zu entfernenden Mitglieds |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `output` | json | Google Groups API-Antwortdaten |
|
||||
|
||||
### `google_groups_update_member`
|
||||
|
||||
Ein Mitglied aktualisieren
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `groupKey` | string | Ja | E-Mail-Adresse der Gruppe oder eindeutige Gruppen-ID |
|
||||
| `memberKey` | string | Ja | E-Mail-Adresse des Mitglieds oder eindeutige Mitglieds-ID |
|
||||
| `role` | string | Ja | Neue Rolle für das Mitglied \(MEMBER, MANAGER oder OWNER\) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `output` | json | Google Groups API-Antwortdaten |
|
||||
|
||||
### `google_groups_has_member`
|
||||
|
||||
Prüfen, ob ein Benutzer Mitglied einer Google-Gruppe ist
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `groupKey` | string | Ja | E-Mail-Adresse der Gruppe oder eindeutige Gruppen-ID |
|
||||
| `memberKey` | string | Ja | Zu prüfende E-Mail-Adresse des Mitglieds oder eindeutige Mitglieds-ID |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `output` | json | Google Groups API-Antwortdaten |
|
||||
|
||||
## Hinweise
|
||||
|
||||
- Kategorie: `tools`
|
||||
- Typ: `google_groups`
|
||||
@@ -88,8 +88,8 @@ Daten aus einer Google Sheets-Tabelle lesen
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `spreadsheetId` | string | Ja | Die ID der Tabelle, aus der gelesen werden soll |
|
||||
| `range` | string | Nein | Der Zellbereich, aus dem gelesen werden soll |
|
||||
| `spreadsheetId` | string | Ja | Die ID der Tabelle \(zu finden in der URL: docs.google.com/spreadsheets/d/\{SPREADSHEET_ID\}/edit\). |
|
||||
| `range` | string | Nein | Der A1-Notationsbereich zum Lesen \(z.B. "Sheet1!A1:D10", "A1:B5"\). Standardmäßig wird das erste Tabellenblatt A1:Z1000 verwendet, wenn nicht angegeben. |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
@@ -106,9 +106,9 @@ Daten in eine Google Sheets-Tabelle schreiben
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `spreadsheetId` | string | Ja | Die ID der Tabelle, in die geschrieben werden soll |
|
||||
| `range` | string | Nein | Der Zellbereich, in den geschrieben werden soll |
|
||||
| `values` | array | Ja | Die Daten, die in die Tabelle geschrieben werden sollen |
|
||||
| `spreadsheetId` | string | Ja | Die ID der Tabelle |
|
||||
| `range` | string | Nein | Der A1-Notationsbereich, in den geschrieben werden soll \(z.B. "Sheet1!A1:D10", "A1:B5"\) |
|
||||
| `values` | array | Ja | Die zu schreibenden Daten als 2D-Array \(z.B. \[\["Name", "Alter"\], \["Alice", 30\], \["Bob", 25\]\]\) oder Array von Objekten. |
|
||||
| `valueInputOption` | string | Nein | Das Format der zu schreibenden Daten |
|
||||
| `includeValuesInResponse` | boolean | Nein | Ob die geschriebenen Werte in der Antwort enthalten sein sollen |
|
||||
|
||||
@@ -131,8 +131,8 @@ Daten in einer Google Sheets-Tabelle aktualisieren
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `spreadsheetId` | string | Ja | Die ID der zu aktualisierenden Tabelle |
|
||||
| `range` | string | Nein | Der Bereich der zu aktualisierenden Zellen |
|
||||
| `values` | array | Ja | Die Daten, die in der Tabelle aktualisiert werden sollen |
|
||||
| `range` | string | Nein | Der A1-Notationsbereich, der aktualisiert werden soll \(z.B. "Sheet1!A1:D10", "A1:B5"\) |
|
||||
| `values` | array | Ja | Die zu aktualisierenden Daten als 2D-Array \(z.B. \[\["Name", "Alter"\], \["Alice", 30\]\]\) oder Array von Objekten. |
|
||||
| `valueInputOption` | string | Nein | Das Format der zu aktualisierenden Daten |
|
||||
| `includeValuesInResponse` | boolean | Nein | Ob die aktualisierten Werte in der Antwort enthalten sein sollen |
|
||||
|
||||
@@ -155,10 +155,10 @@ Daten am Ende einer Google Sheets-Tabelle anhängen
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `spreadsheetId` | string | Ja | Die ID der Tabelle, an die angehängt werden soll |
|
||||
| `range` | string | Nein | Der Bereich der Zellen, nach dem angehängt werden soll |
|
||||
| `values` | array | Ja | Die Daten, die an die Tabelle angehängt werden sollen |
|
||||
| `range` | string | Nein | Der A1-Notationsbereich, an den angehängt werden soll (z.B. "Sheet1", "Sheet1!A:D") |
|
||||
| `values` | array | Ja | Die anzuhängenden Daten als 2D-Array (z.B. [["Alice", 30], ["Bob", 25]]) oder Array von Objekten |
|
||||
| `valueInputOption` | string | Nein | Das Format der anzuhängenden Daten |
|
||||
| `insertDataOption` | string | Nein | Wie die Daten eingefügt werden sollen \(OVERWRITE oder INSERT_ROWS\) |
|
||||
| `insertDataOption` | string | Nein | Wie die Daten eingefügt werden sollen (OVERWRITE oder INSERT_ROWS) |
|
||||
| `includeValuesInResponse` | boolean | Nein | Ob die angehängten Werte in der Antwort enthalten sein sollen |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
180
apps/docs/content/docs/de/tools/google_slides.mdx
Normal file
180
apps/docs/content/docs/de/tools/google_slides.mdx
Normal file
@@ -0,0 +1,180 @@
|
||||
---
|
||||
title: Google Slides
|
||||
description: Präsentationen lesen, schreiben und erstellen
|
||||
---
|
||||
|
||||
import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
<BlockInfoCard
|
||||
type="google_slides"
|
||||
color="#E0E0E0"
|
||||
/>
|
||||
|
||||
{/* MANUAL-CONTENT-START:intro */}
|
||||
[Google Slides](https://slides.google.com) ist eine dynamische cloudbasierte Präsentationsanwendung, mit der Benutzer in Echtzeit Präsentationen erstellen, bearbeiten, gemeinsam daran arbeiten und präsentieren können. Als Teil der Google-Produktivitätssuite bietet Google Slides eine flexible Plattform zum Gestalten ansprechender Präsentationen, zur Zusammenarbeit mit anderen und zum nahtlosen Teilen von Inhalten über die Cloud.
|
||||
|
||||
Erfahren Sie, wie Sie die Google Slides-Tools in Sim integrieren können, um Präsentationen mühelos als Teil Ihrer automatisierten Workflows zu verwalten. Mit Sim können Sie Google Slides-Präsentationen direkt über Ihre Agenten und automatisierten Prozesse lesen, schreiben, erstellen und aktualisieren, wodurch es einfach wird, aktuelle Informationen zu liefern, benutzerdefinierte Berichte zu generieren oder Marken-Präsentationen programmatisch zu erstellen.
|
||||
|
||||
Mit Google Slides können Sie:
|
||||
|
||||
- **Präsentationen erstellen und bearbeiten**: Gestalten Sie visuell ansprechende Folien mit Designs, Layouts und Multimedia-Inhalten
|
||||
- **In Echtzeit zusammenarbeiten**: Arbeiten Sie gleichzeitig mit Teammitgliedern, kommentieren Sie, weisen Sie Aufgaben zu und erhalten Sie Live-Feedback zu Präsentationen
|
||||
- **Überall präsentieren**: Zeigen Sie Präsentationen online oder offline an, teilen Sie Links oder veröffentlichen Sie im Web
|
||||
- **Bilder und umfangreiche Inhalte hinzufügen**: Fügen Sie Bilder, Grafiken, Diagramme und Videos ein, um Ihre Präsentationen ansprechend zu gestalten
|
||||
- **Mit anderen Diensten integrieren**: Verbinden Sie sich nahtlos mit Google Drive, Docs, Sheets und anderen Drittanbieter-Tools
|
||||
- **Von jedem Gerät aus zugreifen**: Nutzen Sie Google Slides auf Desktop-Computern, Laptops, Tablets und mobilen Geräten für maximale Flexibilität
|
||||
|
||||
In Sim ermöglicht die Google Slides-Integration Ihren Agenten, direkt programmatisch mit Präsentationsdateien zu interagieren. Automatisieren Sie Aufgaben wie das Lesen von Folieninhalten, das Einfügen neuer Folien oder Bilder, das Ersetzen von Text in einer gesamten Präsentation, das Erstellen neuer Präsentationen und das Abrufen von Folien-Miniaturansichten. Dies ermöglicht Ihnen, die Inhaltserstellung zu skalieren, Präsentationen aktuell zu halten und sie in automatisierte Dokumenten-Workflows einzubetten. Durch die Verbindung von Sim mit Google Slides ermöglichen Sie KI-gestütztes Präsentationsmanagement – so wird es einfach, Präsentationen ohne manuellen Aufwand zu generieren, zu aktualisieren oder Informationen daraus zu extrahieren.
|
||||
{/* MANUAL-CONTENT-END */}
|
||||
|
||||
## Nutzungsanleitung
|
||||
|
||||
Integrieren Sie Google Slides in den Workflow. Kann Präsentationen lesen, schreiben, erstellen, Text ersetzen, Folien hinzufügen, Bilder einfügen und Vorschaubilder abrufen.
|
||||
|
||||
## Tools
|
||||
|
||||
### `google_slides_read`
|
||||
|
||||
Inhalte aus einer Google Slides-Präsentation lesen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `presentationId` | string | Ja | Die ID der zu lesenden Präsentation |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `slides` | json | Array von Folien mit ihren Inhalten |
|
||||
| `metadata` | json | Präsentationsmetadaten einschließlich ID, Titel und URL |
|
||||
|
||||
### `google_slides_write`
|
||||
|
||||
Inhalte in einer Google Slides-Präsentation schreiben oder aktualisieren
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `presentationId` | string | Ja | Die ID der Präsentation, in die geschrieben werden soll |
|
||||
| `content` | string | Ja | Der Inhalt, der in die Folie geschrieben werden soll |
|
||||
| `slideIndex` | number | Nein | Der Index der Folie, in die geschrieben werden soll \(standardmäßig die erste Folie\) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `updatedContent` | boolean | Gibt an, ob der Präsentationsinhalt erfolgreich aktualisiert wurde |
|
||||
| `metadata` | json | Aktualisierte Präsentationsmetadaten einschließlich ID, Titel und URL |
|
||||
|
||||
### `google_slides_create`
|
||||
|
||||
Eine neue Google Slides-Präsentation erstellen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `title` | string | Ja | Der Titel der zu erstellenden Präsentation |
|
||||
| `content` | string | Nein | Der Inhalt, der zur ersten Folie hinzugefügt werden soll |
|
||||
| `folderSelector` | string | Nein | Wählen Sie den Ordner aus, in dem die Präsentation erstellt werden soll |
|
||||
| `folderId` | string | Nein | Die ID des Ordners, in dem die Präsentation erstellt werden soll \(interne Verwendung\) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `metadata` | json | Metadaten der erstellten Präsentation einschließlich ID, Titel und URL |
|
||||
|
||||
### `google_slides_replace_all_text`
|
||||
|
||||
Suchen und ersetzen aller Textvorkommen in einer Google Slides-Präsentation
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `presentationId` | string | Ja | Die ID der Präsentation |
|
||||
| `findText` | string | Ja | Der zu suchende Text (z.B. \{\{placeholder\}\}) |
|
||||
| `replaceText` | string | Ja | Der Text, durch den ersetzt werden soll |
|
||||
| `matchCase` | boolean | Nein | Ob die Suche Groß-/Kleinschreibung berücksichtigen soll (Standard: true) |
|
||||
| `pageObjectIds` | string | Nein | Kommagetrennte Liste von Folienobjekt-IDs, um Ersetzungen auf bestimmte Folien zu beschränken (leer lassen für alle Folien) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `occurrencesChanged` | number | Anzahl der Textvorkommen, die ersetzt wurden |
|
||||
| `metadata` | json | Operationsmetadaten einschließlich Präsentations-ID und URL |
|
||||
|
||||
### `google_slides_add_slide`
|
||||
|
||||
Eine neue Folie mit einem bestimmten Layout zu einer Google Slides-Präsentation hinzufügen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `presentationId` | string | Ja | Die ID der Präsentation |
|
||||
| `layout` | string | Nein | Das vordefinierte Layout für die Folie (BLANK, TITLE, TITLE_AND_BODY, TITLE_ONLY, SECTION_HEADER, usw.). Standard ist BLANK. |
|
||||
| `insertionIndex` | number | Nein | Der optionale nullbasierte Index, der angibt, wo die Folie eingefügt werden soll. Wenn nicht angegeben, wird die Folie am Ende hinzugefügt. |
|
||||
| `placeholderIdMappings` | string | Nein | JSON-Array von Platzhalter-Zuordnungen, um Platzhaltern benutzerdefinierte Objekt-IDs zuzuweisen. Format: \[\{"layoutPlaceholder":\{"type":"TITLE"\},"objectId":"custom_title_id"\}\] |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `slideId` | string | Die Objekt-ID der neu erstellten Folie |
|
||||
| `metadata` | json | Operationsmetadaten einschließlich Präsentations-ID, Layout und URL |
|
||||
|
||||
### `google_slides_add_image`
|
||||
|
||||
Ein Bild in eine bestimmte Folie einer Google Slides-Präsentation einfügen
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `presentationId` | string | Ja | Die ID der Präsentation |
|
||||
| `pageObjectId` | string | Ja | Die Objekt-ID der Folie/Seite, zu der das Bild hinzugefügt werden soll |
|
||||
| `imageUrl` | string | Ja | Die öffentlich zugängliche URL des Bildes \(muss PNG, JPEG oder GIF sein, max. 50MB\) |
|
||||
| `width` | number | Nein | Breite des Bildes in Punkten \(Standard: 300\) |
|
||||
| `height` | number | Nein | Höhe des Bildes in Punkten \(Standard: 200\) |
|
||||
| `positionX` | number | Nein | X-Position vom linken Rand in Punkten \(Standard: 100\) |
|
||||
| `positionY` | number | Nein | Y-Position vom oberen Rand in Punkten \(Standard: 100\) |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `imageId` | string | Die Objekt-ID des neu erstellten Bildes |
|
||||
| `metadata` | json | Operationsmetadaten einschließlich Präsentations-ID und Bild-URL |
|
||||
|
||||
### `google_slides_get_thumbnail`
|
||||
|
||||
Ein Vorschaubild einer bestimmten Folie in einer Google Slides-Präsentation generieren
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `presentationId` | string | Ja | Die ID der Präsentation |
|
||||
| `pageObjectId` | string | Ja | Die Objekt-ID der Folie/Seite, für die ein Thumbnail erstellt werden soll |
|
||||
| `thumbnailSize` | string | Nein | Die Größe des Thumbnails: SMALL \(200px\), MEDIUM \(800px\) oder LARGE \(1600px\). Standardmäßig MEDIUM. |
|
||||
| `mimeType` | string | Nein | Der MIME-Typ des Thumbnail-Bildes: PNG oder GIF. Standardmäßig PNG. |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `contentUrl` | string | URL zum Thumbnail-Bild \(gültig für 30 Minuten\) |
|
||||
| `width` | number | Breite des Thumbnails in Pixeln |
|
||||
| `height` | number | Höhe des Thumbnails in Pixeln |
|
||||
| `metadata` | json | Operationsmetadaten einschließlich Präsentations-ID und Seitenobjekt-ID |
|
||||
|
||||
## Hinweise
|
||||
|
||||
- Kategorie: `tools`
|
||||
- Typ: `google_slides`
|
||||
494
apps/docs/content/docs/de/tools/grafana.mdx
Normal file
494
apps/docs/content/docs/de/tools/grafana.mdx
Normal file
@@ -0,0 +1,494 @@
|
||||
---
|
||||
title: Grafana
|
||||
description: Interagiere mit Grafana-Dashboards, Alarmen und Anmerkungen
|
||||
---
|
||||
|
||||
import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
<BlockInfoCard
|
||||
type="grafana"
|
||||
color="#E0E0E0"
|
||||
/>
|
||||
|
||||
{/* MANUAL-CONTENT-START:intro */}
|
||||
[Grafana](https://grafana.com/) ist eine führende Open-Source-Plattform für Monitoring, Observability und Visualisierung. Sie ermöglicht Benutzern, Daten aus verschiedenen Quellen abzufragen, zu visualisieren, zu überwachen und zu analysieren, was sie zu einem wesentlichen Werkzeug für Infrastruktur- und Anwendungsmonitoring macht.
|
||||
|
||||
Mit Grafana kannst du:
|
||||
|
||||
- **Daten visualisieren**: Dashboards erstellen und anpassen, um Metriken, Logs und Traces in Echtzeit anzuzeigen
|
||||
- **Gesundheit und Status überwachen**: Den Zustand deiner Grafana-Instanz und verbundener Datenquellen überprüfen
|
||||
- **Alarme und Anmerkungen verwalten**: Alarmregeln einrichten, Benachrichtigungen verwalten und Dashboards mit wichtigen Ereignissen versehen
|
||||
- **Inhalte organisieren**: Dashboards und Datenquellen in Ordnern organisieren für besseres Zugriffsmanagement
|
||||
|
||||
In Sim ermöglicht die Grafana-Integration deinen Agenten, direkt über die API mit deiner Grafana-Instanz zu interagieren, was Aktionen wie folgende ermöglicht:
|
||||
|
||||
- Überprüfung des Gesundheitsstatus von Grafana-Server, Datenbank und Datenquellen
|
||||
- Abrufen, Auflisten und Verwalten von Dashboards, Alarmregeln, Anmerkungen, Datenquellen und Ordnern
|
||||
- Automatisierung der Überwachung deiner Infrastruktur durch Integration von Grafana-Daten und Alarmen in deine Workflow-Automatisierungen
|
||||
|
||||
Diese Fähigkeiten ermöglichen es Sim-Agenten, Systeme zu überwachen, proaktiv auf Alarme zu reagieren und die Zuverlässigkeit und Sichtbarkeit deiner Dienste zu gewährleisten – alles als Teil deiner automatisierten Workflows.
|
||||
{/* MANUAL-CONTENT-END */}
|
||||
|
||||
## Nutzungsanleitung
|
||||
|
||||
Integriere Grafana in Workflows. Verwalte Dashboards, Alarme, Anmerkungen, Datenquellen, Ordner und überwache den Gesundheitsstatus.
|
||||
|
||||
## Tools
|
||||
|
||||
### `grafana_get_dashboard`
|
||||
|
||||
Ein Dashboard anhand seiner UID abrufen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Ja | Grafana Service Account Token |
|
||||
| `baseUrl` | string | Ja | Grafana-Instanz-URL \(z.B. https://your-grafana.com\) |
|
||||
| `organizationId` | string | Nein | Organisations-ID für Multi-Org-Grafana-Instanzen |
|
||||
| `dashboardUid` | string | Ja | Die UID des abzurufenden Dashboards |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `dashboard` | json | Das vollständige Dashboard-JSON-Objekt |
|
||||
| `meta` | json | Dashboard-Metadaten \(Version, Berechtigungen usw.\) |
|
||||
|
||||
### `grafana_list_dashboards`
|
||||
|
||||
Suchen und auflisten aller Dashboards
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Ja | Grafana Service Account Token |
|
||||
| `baseUrl` | string | Ja | Grafana-Instanz-URL \(z.B. https://your-grafana.com\) |
|
||||
| `organizationId` | string | Nein | Organisations-ID für Multi-Org-Grafana-Instanzen |
|
||||
| `query` | string | Nein | Suchanfrage zum Filtern von Dashboards nach Titel |
|
||||
| `tag` | string | Nein | Nach Tag filtern \(kommagetrennt für mehrere Tags\) |
|
||||
| `folderIds` | string | Nein | Nach Ordner-IDs filtern \(kommagetrennt\) |
|
||||
| `starred` | boolean | Nein | Nur mit Stern markierte Dashboards zurückgeben |
|
||||
| `limit` | number | Nein | Maximale Anzahl der zurückzugebenden Dashboards |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `dashboards` | array | Liste der Dashboard-Suchergebnisse |
|
||||
|
||||
### `grafana_create_dashboard`
|
||||
|
||||
Ein neues Dashboard erstellen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Ja | Grafana Service Account Token |
|
||||
| `baseUrl` | string | Ja | Grafana-Instanz-URL \(z.B. https://your-grafana.com\) |
|
||||
| `organizationId` | string | Nein | Organisations-ID für Multi-Org-Grafana-Instanzen |
|
||||
| `title` | string | Ja | Der Titel des neuen Dashboards |
|
||||
| `folderUid` | string | Nein | Die UID des Ordners, in dem das Dashboard erstellt werden soll |
|
||||
| `tags` | string | Nein | Kommagetrennte Liste von Tags |
|
||||
| `timezone` | string | Nein | Dashboard-Zeitzone \(z.B. browser, utc\) |
|
||||
| `refresh` | string | Nein | Auto-Aktualisierungsintervall \(z.B. 5s, 1m, 5m\) |
|
||||
| `panels` | string | Nein | JSON-Array von Panel-Konfigurationen |
|
||||
| `overwrite` | boolean | Nein | Vorhandenes Dashboard mit gleichem Titel überschreiben |
|
||||
| `message` | string | Nein | Commit-Nachricht für die Dashboard-Version |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `id` | number | Die numerische ID des erstellten Dashboards |
|
||||
| `uid` | string | Die UID des erstellten Dashboards |
|
||||
| `url` | string | Der URL-Pfad zum Dashboard |
|
||||
| `status` | string | Status der Operation \(success\) |
|
||||
| `version` | number | Die Versionsnummer des Dashboards |
|
||||
| `slug` | string | URL-freundlicher Slug des Dashboards |
|
||||
|
||||
### `grafana_update_dashboard`
|
||||
|
||||
Aktualisiert ein bestehendes Dashboard. Ruft das aktuelle Dashboard ab und führt Ihre Änderungen zusammen.
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Ja | Grafana Service Account Token |
|
||||
| `baseUrl` | string | Ja | Grafana-Instanz-URL \(z.B. https://your-grafana.com\) |
|
||||
| `organizationId` | string | Nein | Organisations-ID für Multi-Org-Grafana-Instanzen |
|
||||
| `dashboardUid` | string | Ja | Die UID des zu aktualisierenden Dashboards |
|
||||
| `title` | string | Nein | Neuer Titel für das Dashboard |
|
||||
| `folderUid` | string | Nein | Neue Ordner-UID, um das Dashboard zu verschieben |
|
||||
| `tags` | string | Nein | Kommagetrennte Liste neuer Tags |
|
||||
| `timezone` | string | Nein | Dashboard-Zeitzone \(z.B. browser, utc\) |
|
||||
| `refresh` | string | Nein | Auto-Refresh-Intervall \(z.B. 5s, 1m, 5m\) |
|
||||
| `panels` | string | Nein | JSON-Array von Panel-Konfigurationen |
|
||||
| `overwrite` | boolean | Nein | Überschreiben auch bei Versionskonflikten |
|
||||
| `message` | string | Nein | Commit-Nachricht für diese Version |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `id` | number | Die numerische ID des aktualisierten Dashboards |
|
||||
| `uid` | string | Die UID des aktualisierten Dashboards |
|
||||
| `url` | string | Der URL-Pfad zum Dashboard |
|
||||
| `status` | string | Status der Operation \(success\) |
|
||||
| `version` | number | Die neue Versionsnummer des Dashboards |
|
||||
| `slug` | string | URL-freundlicher Slug des Dashboards |
|
||||
|
||||
### `grafana_delete_dashboard`
|
||||
|
||||
Löschen eines Dashboards anhand seiner UID
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Ja | Grafana Service Account Token |
|
||||
| `baseUrl` | string | Ja | Grafana-Instanz-URL \(z.B. https://your-grafana.com\) |
|
||||
| `organizationId` | string | Nein | Organisations-ID für Multi-Org-Grafana-Instanzen |
|
||||
| `dashboardUid` | string | Ja | Die UID des zu löschenden Dashboards |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `title` | string | Der Titel des gelöschten Dashboards |
|
||||
| `message` | string | Bestätigungsnachricht |
|
||||
| `id` | number | Die ID des gelöschten Dashboards |
|
||||
|
||||
### `grafana_list_alert_rules`
|
||||
|
||||
Alle Alarmregeln in der Grafana-Instanz auflisten
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Ja | Grafana Service Account Token |
|
||||
| `baseUrl` | string | Ja | Grafana-Instanz-URL \(z.B. https://your-grafana.com\) |
|
||||
| `organizationId` | string | Nein | Organisations-ID für Multi-Org-Grafana-Instanzen |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `rules` | array | Liste der Alarmregeln |
|
||||
|
||||
### `grafana_get_alert_rule`
|
||||
|
||||
Eine bestimmte Alarmregel anhand ihrer UID abrufen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Ja | Grafana Service Account Token |
|
||||
| `baseUrl` | string | Ja | Grafana-Instanz-URL \(z.B. https://your-grafana.com\) |
|
||||
| `organizationId` | string | Nein | Organisations-ID für Multi-Org-Grafana-Instanzen |
|
||||
| `alertRuleUid` | string | Ja | Die UID der abzurufenden Alarmregel |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `uid` | string | Alarmregel-UID |
|
||||
| `title` | string | Alarmregel-Titel |
|
||||
| `condition` | string | Alarmbedingung |
|
||||
| `data` | json | Alarmregel-Abfragedaten |
|
||||
| `folderUID` | string | Übergeordnete Ordner-UID |
|
||||
| `ruleGroup` | string | Regelgruppenname |
|
||||
| `noDataState` | string | Status, wenn keine Daten zurückgegeben werden |
|
||||
| `execErrState` | string | Status bei Ausführungsfehler |
|
||||
| `annotations` | json | Alarmanmerkungen |
|
||||
| `labels` | json | Alarmlabels |
|
||||
|
||||
### `grafana_create_alert_rule`
|
||||
|
||||
Eine neue Alarmregel erstellen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Ja | Grafana Service Account Token |
|
||||
| `baseUrl` | string | Ja | Grafana-Instanz-URL \(z.B. https://your-grafana.com\) |
|
||||
| `organizationId` | string | Nein | Organisations-ID für Multi-Org-Grafana-Instanzen |
|
||||
| `title` | string | Ja | Der Titel der Alarmregel |
|
||||
| `folderUid` | string | Ja | Die UID des Ordners, in dem der Alarm erstellt werden soll |
|
||||
| `ruleGroup` | string | Ja | Der Name der Regelgruppe |
|
||||
| `condition` | string | Ja | Die refId der Abfrage oder des Ausdrucks, der als Alarmbedingung verwendet werden soll |
|
||||
| `data` | string | Ja | JSON-Array von Abfrage-/Ausdrucksdatenobjekten |
|
||||
| `forDuration` | string | Nein | Wartezeit vor dem Auslösen \(z.B. 5m, 1h\) |
|
||||
| `noDataState` | string | Nein | Status, wenn keine Daten zurückgegeben werden \(NoData, Alerting, OK\) |
|
||||
| `execErrState` | string | Nein | Status bei Ausführungsfehler \(Alerting, OK\) |
|
||||
| `annotations` | string | Nein | JSON-Objekt von Anmerkungen |
|
||||
| `labels` | string | Nein | JSON-Objekt von Labels |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `uid` | string | Die UID der erstellten Alarmregel |
|
||||
| `title` | string | Titel der Alarmregel |
|
||||
| `folderUID` | string | UID des übergeordneten Ordners |
|
||||
| `ruleGroup` | string | Name der Regelgruppe |
|
||||
|
||||
### `grafana_update_alert_rule`
|
||||
|
||||
Aktualisiert eine bestehende Alarmregel. Ruft die aktuelle Regel ab und führt Ihre Änderungen zusammen.
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Ja | Grafana Service-Account-Token |
|
||||
| `baseUrl` | string | Ja | Grafana-Instanz-URL (z.B. https://your-grafana.com) |
|
||||
| `organizationId` | string | Nein | Organisations-ID für Multi-Org-Grafana-Instanzen |
|
||||
| `alertRuleUid` | string | Ja | Die UID der zu aktualisierenden Alarmregel |
|
||||
| `title` | string | Nein | Neuer Titel für die Alarmregel |
|
||||
| `folderUid` | string | Nein | Neue Ordner-UID, um den Alarm zu verschieben |
|
||||
| `ruleGroup` | string | Nein | Neuer Name der Regelgruppe |
|
||||
| `condition` | string | Nein | Neue Bedingung refId |
|
||||
| `data` | string | Nein | Neues JSON-Array von Abfrage-/Ausdrucksdatenobjekten |
|
||||
| `forDuration` | string | Nein | Wartezeit vor dem Auslösen (z.B. 5m, 1h) |
|
||||
| `noDataState` | string | Nein | Status, wenn keine Daten zurückgegeben werden (NoData, Alerting, OK) |
|
||||
| `execErrState` | string | Nein | Status bei Ausführungsfehler (Alerting, OK) |
|
||||
| `annotations` | string | Nein | JSON-Objekt von Anmerkungen |
|
||||
| `labels` | string | Nein | JSON-Objekt von Labels |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `uid` | string | Die UID der aktualisierten Alarmregel |
|
||||
| `title` | string | Titel der Alarmregel |
|
||||
| `folderUID` | string | UID des übergeordneten Ordners |
|
||||
| `ruleGroup` | string | Name der Regelgruppe |
|
||||
|
||||
### `grafana_delete_alert_rule`
|
||||
|
||||
Löschen einer Alarmregel anhand ihrer UID
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Ja | Grafana Service-Account-Token |
|
||||
| `baseUrl` | string | Ja | Grafana-Instanz-URL \(z.B. https://your-grafana.com\) |
|
||||
| `organizationId` | string | Nein | Organisations-ID für Multi-Org-Grafana-Instanzen |
|
||||
| `alertRuleUid` | string | Ja | Die UID der zu löschenden Alarmregel |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `message` | string | Bestätigungsnachricht |
|
||||
|
||||
### `grafana_list_contact_points`
|
||||
|
||||
Alle Alarmbenachrichtigungs-Kontaktpunkte auflisten
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Ja | Grafana Service-Account-Token |
|
||||
| `baseUrl` | string | Ja | Grafana-Instanz-URL \(z.B. https://your-grafana.com\) |
|
||||
| `organizationId` | string | Nein | Organisations-ID für Multi-Org-Grafana-Instanzen |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `contactPoints` | array | Liste der Kontaktpunkte |
|
||||
|
||||
### `grafana_create_annotation`
|
||||
|
||||
Eine Anmerkung auf einem Dashboard oder als globale Anmerkung erstellen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Ja | Grafana Service Account Token |
|
||||
| `baseUrl` | string | Ja | Grafana-Instanz-URL \(z.B. https://your-grafana.com\) |
|
||||
| `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\) |
|
||||
| `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\) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `id` | number | Die ID der erstellten Anmerkung |
|
||||
| `message` | string | Bestätigungsnachricht |
|
||||
|
||||
### `grafana_list_annotations`
|
||||
|
||||
Anmerkungen nach Zeitraum, Dashboard oder Tags abfragen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Ja | Grafana Service Account Token |
|
||||
| `baseUrl` | string | Ja | Grafana-Instanz-URL \(z.B. https://your-grafana.com\) |
|
||||
| `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 |
|
||||
| `panelId` | number | Nein | Nach Panel-ID filtern |
|
||||
| `tags` | string | Nein | Kommagetrennte Liste von Tags, nach denen gefiltert werden soll |
|
||||
| `type` | string | Nein | Nach Typ filtern \(alert oder annotation\) |
|
||||
| `limit` | number | Nein | Maximale Anzahl von zurückzugebenden Anmerkungen |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `annotations` | array | Liste der Anmerkungen |
|
||||
|
||||
### `grafana_update_annotation`
|
||||
|
||||
Eine vorhandene Anmerkung aktualisieren
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Ja | Grafana Service-Account-Token |
|
||||
| `baseUrl` | string | Ja | Grafana-Instanz-URL \(z.B. https://your-grafana.com\) |
|
||||
| `organizationId` | string | Nein | Organisations-ID für Multi-Org-Grafana-Instanzen |
|
||||
| `annotationId` | number | Ja | Die ID der zu aktualisierenden Anmerkung |
|
||||
| `text` | string | Ja | Neuer Textinhalt für die Anmerkung |
|
||||
| `tags` | string | Nein | Kommagetrennte Liste neuer Tags |
|
||||
| `time` | number | Nein | Neue Startzeit in Epochenmillisekunden |
|
||||
| `timeEnd` | number | Nein | Neue Endzeit in Epochenmillisekunden |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `id` | number | Die ID der aktualisierten Anmerkung |
|
||||
| `message` | string | Bestätigungsnachricht |
|
||||
|
||||
### `grafana_delete_annotation`
|
||||
|
||||
Eine Anmerkung anhand ihrer ID löschen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Ja | Grafana Service-Account-Token |
|
||||
| `baseUrl` | string | Ja | Grafana-Instanz-URL \(z.B. https://your-grafana.com\) |
|
||||
| `organizationId` | string | Nein | Organisations-ID für Multi-Org-Grafana-Instanzen |
|
||||
| `annotationId` | number | Ja | Die ID der zu löschenden Anmerkung |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `message` | string | Bestätigungsnachricht |
|
||||
|
||||
### `grafana_list_data_sources`
|
||||
|
||||
Alle in Grafana konfigurierten Datenquellen auflisten
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Ja | Grafana Service Account Token |
|
||||
| `baseUrl` | string | Ja | Grafana-Instanz-URL \(z.B. https://your-grafana.com\) |
|
||||
| `organizationId` | string | Nein | Organisations-ID für Multi-Org-Grafana-Instanzen |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `dataSources` | array | Liste der Datenquellen |
|
||||
|
||||
### `grafana_get_data_source`
|
||||
|
||||
Eine Datenquelle anhand ihrer ID oder UID abrufen
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Ja | Grafana Service Account Token |
|
||||
| `baseUrl` | string | Ja | Grafana-Instanz-URL \(z.B. https://your-grafana.com\) |
|
||||
| `organizationId` | string | Nein | Organisations-ID für Multi-Org-Grafana-Instanzen |
|
||||
| `dataSourceId` | string | Ja | Die ID oder UID der abzurufenden Datenquelle |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `id` | number | Datenquellen-ID |
|
||||
| `uid` | string | Datenquellen-UID |
|
||||
| `name` | string | Name der Datenquelle |
|
||||
| `type` | string | Typ der Datenquelle |
|
||||
| `url` | string | Verbindungs-URL der Datenquelle |
|
||||
| `database` | string | Datenbankname \(falls zutreffend\) |
|
||||
| `isDefault` | boolean | Ob dies die Standard-Datenquelle ist |
|
||||
| `jsonData` | json | Zusätzliche Konfiguration der Datenquelle |
|
||||
|
||||
### `grafana_list_folders`
|
||||
|
||||
Alle Ordner in Grafana auflisten
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Ja | Grafana Service Account Token |
|
||||
| `baseUrl` | string | Ja | Grafana-Instanz-URL \(z.B. https://your-grafana.com\) |
|
||||
| `organizationId` | string | Nein | Organisations-ID für Grafana-Instanzen mit mehreren Organisationen |
|
||||
| `limit` | number | Nein | Maximale Anzahl der zurückzugebenden Ordner |
|
||||
| `page` | number | Nein | Seitennummer für Paginierung |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `folders` | array | Liste der Ordner |
|
||||
|
||||
### `grafana_create_folder`
|
||||
|
||||
Einen neuen Ordner in Grafana erstellen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Ja | Grafana Service Account Token |
|
||||
| `baseUrl` | string | Ja | Grafana-Instanz-URL \(z.B. https://your-grafana.com\) |
|
||||
| `organizationId` | string | Nein | Organisations-ID für Grafana-Instanzen mit mehreren Organisationen |
|
||||
| `title` | string | Ja | Der Titel des neuen Ordners |
|
||||
| `uid` | string | Nein | Optionale UID für den Ordner \(wird automatisch generiert, wenn nicht angegeben\) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | 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 |
|
||||
|
||||
## Notizen
|
||||
|
||||
- Kategorie: `tools`
|
||||
- Typ: `grafana`
|
||||
@@ -361,6 +361,8 @@ Einen bestehenden Zeitplan in incident.io aktualisieren
|
||||
| `id` | string | Ja | Die ID des zu aktualisierenden Zeitplans |
|
||||
| `name` | string | Nein | Neuer Name für den Zeitplan |
|
||||
| `timezone` | string | Nein | Neue Zeitzone für den Zeitplan \(z.B. America/New_York\) |
|
||||
| `config` | string | Nein | Zeitplankonfiguration als JSON-String mit Rotationen. Beispiel: \{"rotations": \[\{"name": "Primary", "users": \[\{"id": "user_id"\}\], "handover_start_at": "2024-01-01T09:00:00Z", "handovers": \[\{"interval": 1, "interval_type": "weekly"\}\]\}\]\} |
|
||||
| `Example` | string | Nein | Keine Beschreibung |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
|
||||
@@ -167,7 +167,7 @@ Ein Unternehmen in Intercom erstellen oder aktualisieren
|
||||
| `plan` | string | Nein | Der Unternehmensplan |
|
||||
| `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 |
|
||||
| `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\) |
|
||||
| `custom_attributes` | string | Nein | Benutzerdefinierte Attribute als JSON-Objekt |
|
||||
|
||||
#### Ausgabe
|
||||
@@ -196,7 +196,7 @@ Ein einzelnes Unternehmen anhand der ID von Intercom abrufen
|
||||
|
||||
### `intercom_list_companies`
|
||||
|
||||
Alle Unternehmen von Intercom mit Paginierungsunterstützung auflisten
|
||||
Listet alle Unternehmen von Intercom mit Paginierungsunterstützung auf. Hinweis: Dieser Endpunkt hat ein Limit von 10.000 Unternehmen, die über Paginierung zurückgegeben werden können. Für Datensätze mit mehr als 10.000 Unternehmen verwenden Sie stattdessen die Scroll-API.
|
||||
|
||||
#### Eingabe
|
||||
|
||||
@@ -259,8 +259,8 @@ Als Administrator auf eine Konversation in Intercom antworten
|
||||
| `conversationId` | string | Ja | Konversations-ID, auf die geantwortet werden soll |
|
||||
| `message_type` | string | Ja | Nachrichtentyp: "comment" oder "note" |
|
||||
| `body` | string | Ja | Der Textinhalt der Antwort |
|
||||
| `admin_id` | string | Ja | Die ID des Administrators, der die Antwort verfasst |
|
||||
| `attachment_urls` | string | Nein | Kommagetrennte Liste von Bild-URLs (max. 10) |
|
||||
| `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\) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
|
||||
386
apps/docs/content/docs/de/tools/kalshi.mdx
Normal file
386
apps/docs/content/docs/de/tools/kalshi.mdx
Normal file
@@ -0,0 +1,386 @@
|
||||
---
|
||||
title: Kalshi
|
||||
description: Zugriff auf Prognosemärkte und Handel auf Kalshi
|
||||
---
|
||||
|
||||
import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
<BlockInfoCard
|
||||
type="kalshi"
|
||||
color="#09C285"
|
||||
/>
|
||||
|
||||
{/* MANUAL-CONTENT-START:intro */}
|
||||
[Kalshi](https://kalshi.com) ist eine bundesweit regulierte Börse, an der Nutzer direkt mit den Ergebnissen zukünftiger Ereignisse handeln können – Prognosemärkte. Kalshis robuste API und Sim-Integration ermöglichen es Agenten und Workflows, programmatisch auf alle Aspekte der Plattform zuzugreifen und unterstützen alles von Forschung und Analyse bis hin zu automatisiertem Handel und Überwachung.
|
||||
|
||||
Mit Kalshis Integration in Sim können Sie:
|
||||
|
||||
- **Markt- & Ereignisdaten:** Echtzeit- und historische Daten für Märkte und Ereignisse suchen, filtern und abrufen; detaillierte Informationen zum Marktstatus, Serien, Ereignisgruppierungen und mehr abrufen.
|
||||
- **Konto- & Guthaben-Management:** Zugriff auf Kontostände, verfügbare Mittel und Überwachung von Echtzeit-Positionen.
|
||||
- **Auftrags- & Handelsmanagement:** Neue Aufträge platzieren, bestehende stornieren, offene Aufträge einsehen, ein Live-Orderbuch abrufen und auf vollständige Handelshistorien zugreifen.
|
||||
- **Ausführungsanalyse:** Abruf von aktuellen Trades, historischen Ausführungen und Candlestick-Daten für Backtesting oder Marktstrukturforschung.
|
||||
- **Überwachung:** Börsenweiten oder serienspezifischen Status prüfen, Echtzeit-Updates über Marktänderungen oder Handelsunterbrechungen erhalten und Reaktionen automatisieren.
|
||||
- **Automatisierungsbereit:** Entwicklung von End-to-End automatisierten Agenten und Dashboards, die Wahrscheinlichkeiten von Ereignissen in der realen Welt konsumieren, analysieren und damit handeln.
|
||||
|
||||
Durch die Nutzung dieser einheitlichen Tools und Endpunkte können Sie Kalshis Prognosemärkte, Live-Handelsfunktionen und umfangreiche Ereignisdaten nahtlos in Ihre KI-gestützten Anwendungen, Dashboards und Workflows integrieren – und so eine anspruchsvolle, automatisierte Entscheidungsfindung ermöglichen, die an reale Ergebnisse gekoppelt ist.
|
||||
{/* MANUAL-CONTENT-END */}
|
||||
|
||||
## Nutzungsanleitung
|
||||
|
||||
Integrieren Sie Kalshi-Prognosemärkte in den Workflow. Kann Märkte, Markt, Ereignisse, Ereignis, Kontostand, Positionen, Aufträge, Orderbuch, Trades, Candlesticks, Ausführungen, Serien, Börsenstatus abrufen und Trades platzieren/stornieren/ändern.
|
||||
|
||||
## Tools
|
||||
|
||||
### `kalshi_get_markets`
|
||||
|
||||
Rufe eine Liste von Prognosemärkten von Kalshi mit optionaler Filterung ab
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `status` | string | Nein | Nach Status filtern \(unopened, open, closed, settled\) |
|
||||
| `seriesTicker` | string | Nein | Nach Serien-Ticker filtern |
|
||||
| `eventTicker` | string | Nein | Nach Event-Ticker filtern |
|
||||
| `limit` | string | Nein | Anzahl der Ergebnisse \(1-1000, standard: 100\) |
|
||||
| `cursor` | string | Nein | Paginierungscursor für die nächste Seite |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `markets` | array | Array von Markt-Objekten |
|
||||
| `paging` | object | Paginierungscursor zum Abrufen weiterer Ergebnisse |
|
||||
|
||||
### `kalshi_get_market`
|
||||
|
||||
Rufe Details eines bestimmten Prognosemarkts nach Ticker ab
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `ticker` | string | Ja | Der Markt-Ticker \(z.B. "KXBTC-24DEC31"\) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `market` | object | Markt-Objekt mit Details |
|
||||
|
||||
### `kalshi_get_events`
|
||||
|
||||
Rufe eine Liste von Events von Kalshi mit optionaler Filterung ab
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `status` | string | Nein | Nach Status filtern \(open, closed, settled\) |
|
||||
| `seriesTicker` | string | Nein | Nach Serien-Ticker filtern |
|
||||
| `withNestedMarkets` | string | Nein | Verschachtelte Märkte in der Antwort einschließen \(true/false\) |
|
||||
| `limit` | string | Nein | Anzahl der Ergebnisse \(1-200, standard: 200\) |
|
||||
| `cursor` | string | Nein | Paginierungscursor für die nächste Seite |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `events` | array | Array von Ereignis-Objekten |
|
||||
| `paging` | object | Paginierungscursor zum Abrufen weiterer Ergebnisse |
|
||||
|
||||
### `kalshi_get_event`
|
||||
|
||||
Details eines bestimmten Ereignisses anhand des Tickers abrufen
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `eventTicker` | string | Ja | Der Ereignis-Ticker |
|
||||
| `withNestedMarkets` | string | Nein | Verschachtelte Märkte in die Antwort einbeziehen \(true/false\) |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `event` | object | Ereignis-Objekt mit Details |
|
||||
|
||||
### `kalshi_get_balance`
|
||||
|
||||
Kontostand und Portfoliowert von Kalshi abrufen
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `keyId` | string | Ja | Ihre Kalshi API-Schlüssel-ID |
|
||||
| `privateKey` | string | Ja | Ihr RSA Private Key \(PEM-Format\) |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `balance` | number | Kontostand in Cent |
|
||||
| `portfolioValue` | number | Portfoliowert in Cent |
|
||||
| `balanceDollars` | number | Kontostand in Dollar |
|
||||
| `portfolioValueDollars` | number | Portfoliowert in Dollar |
|
||||
|
||||
### `kalshi_get_positions`
|
||||
|
||||
Offene Positionen von Kalshi abrufen
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `keyId` | string | Ja | Ihre Kalshi API-Schlüssel-ID |
|
||||
| `privateKey` | string | Ja | Ihr RSA Private Key \(PEM-Format\) |
|
||||
| `ticker` | string | Nein | Nach Markt-Ticker filtern |
|
||||
| `eventTicker` | string | Nein | Nach Ereignis-Ticker filtern \(max. 10 durch Komma getrennt\) |
|
||||
| `settlementStatus` | string | Nein | Nach Abrechnungsstatus filtern \(all, unsettled, settled\). Standard: unsettled |
|
||||
| `limit` | string | Nein | Anzahl der Ergebnisse \(1-1000, Standard: 100\) |
|
||||
| `cursor` | string | Nein | Paginierungscursor für die nächste Seite |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `positions` | array | Array von Positions-Objekten |
|
||||
| `paging` | object | Paginierungscursor zum Abrufen weiterer Ergebnisse |
|
||||
|
||||
### `kalshi_get_orders`
|
||||
|
||||
Rufen Sie Ihre Bestellungen von Kalshi mit optionaler Filterung ab
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `keyId` | string | Ja | Ihre Kalshi API-Schlüssel-ID |
|
||||
| `privateKey` | string | Ja | Ihr RSA Private Key \(PEM-Format\) |
|
||||
| `ticker` | string | Nein | Nach Markt-Ticker filtern |
|
||||
| `eventTicker` | string | Nein | Nach Event-Ticker filtern \(maximal 10 durch Komma getrennt\) |
|
||||
| `status` | string | Nein | Nach Status filtern \(resting, canceled, executed\) |
|
||||
| `limit` | string | Nein | Anzahl der Ergebnisse \(1-200, Standard: 100\) |
|
||||
| `cursor` | string | Nein | Paginierungscursor für die nächste Seite |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `orders` | array | Array von Auftrags-Objekten |
|
||||
| `paging` | object | Paginierungscursor zum Abrufen weiterer Ergebnisse |
|
||||
|
||||
### `kalshi_get_order`
|
||||
|
||||
Rufen Sie Details zu einem bestimmten Auftrag anhand der ID von Kalshi ab
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `keyId` | string | Ja | Ihre Kalshi API-Schlüssel-ID |
|
||||
| `privateKey` | string | Ja | Ihr RSA Private Key \(PEM-Format\) |
|
||||
| `orderId` | string | Ja | Die abzurufende Auftrags-ID |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `order` | object | Auftrags-Objekt mit Details |
|
||||
|
||||
### `kalshi_get_orderbook`
|
||||
|
||||
Rufen Sie das Orderbuch (Ja- und Nein-Gebote) für einen bestimmten Markt ab
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `ticker` | string | Ja | Markt-Ticker \(z.B. KXBTC-24DEC31\) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `orderbook` | object | Orderbuch mit Ja/Nein-Geboten und -Anfragen |
|
||||
|
||||
### `kalshi_get_trades`
|
||||
|
||||
Rufen Sie aktuelle Trades über alle Märkte hinweg ab
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `limit` | string | Nein | Anzahl der Ergebnisse \(1-1000, Standard: 100\) |
|
||||
| `cursor` | string | Nein | Paginierungscursor für die nächste Seite |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `trades` | array | Array von Handelsobjekten |
|
||||
| `paging` | object | Paginierungscursor zum Abrufen weiterer Ergebnisse |
|
||||
|
||||
### `kalshi_get_candlesticks`
|
||||
|
||||
OHLC-Kerzendaten für einen bestimmten Markt abrufen
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `seriesTicker` | string | Ja | Serien-Ticker |
|
||||
| `ticker` | string | Ja | Markt-Ticker \(z.B. KXBTC-24DEC31\) |
|
||||
| `startTs` | number | Ja | Startzeitstempel \(Unix-Sekunden\) |
|
||||
| `endTs` | number | Ja | Endzeitstempel \(Unix-Sekunden\) |
|
||||
| `periodInterval` | number | Ja | Periodenintervall: 1 \(1min\), 60 \(1Stunde\) oder 1440 \(1Tag\) |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `candlesticks` | array | Array von OHLC-Kerzendaten |
|
||||
|
||||
### `kalshi_get_fills`
|
||||
|
||||
Ihr Portfolio abrufen
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `keyId` | string | Ja | Ihre Kalshi API-Schlüssel-ID |
|
||||
| `privateKey` | string | Ja | Ihr RSA Private Key \(PEM-Format\) |
|
||||
| `ticker` | string | Nein | Nach Markt-Ticker filtern |
|
||||
| `orderId` | string | Nein | Nach Bestell-ID filtern |
|
||||
| `minTs` | number | Nein | Minimaler Zeitstempel \(Unix-Millisekunden\) |
|
||||
| `maxTs` | number | Nein | Maximaler Zeitstempel \(Unix-Millisekunden\) |
|
||||
| `limit` | string | Nein | Anzahl der Ergebnisse \(1-1000, Standard: 100\) |
|
||||
| `cursor` | string | Nein | Paginierungscursor für die nächste Seite |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `fills` | array | Array von Ausführungs-/Handelsobjekten |
|
||||
| `paging` | object | Paginierungscursor zum Abrufen weiterer Ergebnisse |
|
||||
|
||||
### `kalshi_get_series_by_ticker`
|
||||
|
||||
Details einer bestimmten Marktserie nach Ticker abrufen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `seriesTicker` | string | Ja | Serien-Ticker |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `series` | object | Serienobjekt mit Details |
|
||||
|
||||
### `kalshi_get_exchange_status`
|
||||
|
||||
Den aktuellen Status der Kalshi-Börse abrufen (Handel und Börsenaktivität)
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `status` | object | Börsenstatus mit trading_active und exchange_active Flags |
|
||||
|
||||
### `kalshi_create_order`
|
||||
|
||||
Eine neue Order auf einem Kalshi-Prognosemarkt erstellen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `keyId` | string | Ja | Ihre Kalshi API-Schlüssel-ID |
|
||||
| `privateKey` | string | Ja | Ihr RSA Private Key \(PEM-Format\) |
|
||||
| `ticker` | string | Ja | Markt-Ticker \(z.B. KXBTC-24DEC31\) |
|
||||
| `side` | string | Ja | Seite der Order: 'yes' oder 'no' |
|
||||
| `action` | string | Ja | Aktionstyp: 'buy' oder 'sell' |
|
||||
| `count` | string | Ja | Anzahl der Kontrakte \(mindestens 1\) |
|
||||
| `type` | string | Nein | Ordertyp: 'limit' oder 'market' \(Standard: limit\) |
|
||||
| `yesPrice` | string | Nein | Yes-Preis in Cent \(1-99\) |
|
||||
| `noPrice` | string | Nein | No-Preis in Cent \(1-99\) |
|
||||
| `yesPriceDollars` | string | Nein | Yes-Preis in Dollar \(z.B. "0.56"\) |
|
||||
| `noPriceDollars` | string | Nein | No-Preis in Dollar \(z.B. "0.56"\) |
|
||||
| `clientOrderId` | string | Nein | Benutzerdefinierte Order-ID |
|
||||
| `expirationTs` | string | Nein | Unix-Zeitstempel für Order-Ablauf |
|
||||
| `timeInForce` | string | Nein | Gültigkeitsdauer: 'fill_or_kill', 'good_till_canceled', 'immediate_or_cancel' |
|
||||
| `buyMaxCost` | string | Nein | Maximale Kosten in Cent \(aktiviert automatisch fill_or_kill\) |
|
||||
| `postOnly` | string | Nein | Auf 'true' setzen für Maker-Only-Orders |
|
||||
| `reduceOnly` | string | Nein | Auf 'true' setzen für ausschließliche Positionsreduzierung |
|
||||
| `selfTradePreventionType` | string | Nein | Selbsthandel-Prävention: 'taker_at_cross' oder 'maker' |
|
||||
| `orderGroupId` | string | Nein | Zugehörige Ordergruppen-ID |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `order` | object | Das erstellte Auftragsobjekt |
|
||||
|
||||
### `kalshi_cancel_order`
|
||||
|
||||
Einen bestehenden Auftrag auf Kalshi stornieren
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `keyId` | string | Ja | Ihre Kalshi API-Schlüssel-ID |
|
||||
| `privateKey` | string | Ja | Ihr RSA Private Key \(PEM-Format\) |
|
||||
| `orderId` | string | Ja | Die zu stornierende Auftrags-ID |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `order` | object | Das stornierte Auftragsobjekt |
|
||||
| `reducedBy` | number | Anzahl der stornierten Kontrakte |
|
||||
|
||||
### `kalshi_amend_order`
|
||||
|
||||
Preis oder Menge eines bestehenden Auftrags auf Kalshi ändern
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `keyId` | string | Ja | Ihre Kalshi API-Schlüssel-ID |
|
||||
| `privateKey` | string | Ja | Ihr RSA Private Key \(PEM-Format\) |
|
||||
| `orderId` | string | Ja | Die zu ändernde Auftrags-ID |
|
||||
| `ticker` | string | Ja | Markt-Ticker |
|
||||
| `side` | string | Ja | Seite des Auftrags: 'yes' oder 'no' |
|
||||
| `action` | string | Ja | Aktionstyp: 'buy' oder 'sell' |
|
||||
| `clientOrderId` | string | Ja | Die ursprüngliche vom Kunden angegebene Auftrags-ID |
|
||||
| `updatedClientOrderId` | string | Ja | Die neue vom Kunden angegebene Auftrags-ID nach der Änderung |
|
||||
| `count` | string | Nein | Aktualisierte Menge für den Auftrag |
|
||||
| `yesPrice` | string | Nein | Aktualisierter Ja-Preis in Cent \(1-99\) |
|
||||
| `noPrice` | string | Nein | Aktualisierter Nein-Preis in Cent \(1-99\) |
|
||||
| `yesPriceDollars` | string | Nein | Aktualisierter Ja-Preis in Dollar \(z.B. "0.56"\) |
|
||||
| `noPriceDollars` | string | Nein | Aktualisierter Nein-Preis in Dollar \(z.B. "0.56"\) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `order` | object | Das geänderte Auftragsobjekt |
|
||||
|
||||
## Hinweise
|
||||
|
||||
- Kategorie: `tools`
|
||||
- Typ: `kalshi`
|
||||
341
apps/docs/content/docs/de/tools/polymarket.mdx
Normal file
341
apps/docs/content/docs/de/tools/polymarket.mdx
Normal file
@@ -0,0 +1,341 @@
|
||||
---
|
||||
title: Polymarket
|
||||
description: Zugriff auf Prognosemarktdaten von Polymarket
|
||||
---
|
||||
|
||||
import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
<BlockInfoCard
|
||||
type="polymarket"
|
||||
color="#4C82FB"
|
||||
/>
|
||||
|
||||
{/* MANUAL-CONTENT-START:intro */}
|
||||
[Polymarket](https://polymarket.com) ist eine dezentralisierte Plattform für Prognosemärkte, auf der Nutzer mit Blockchain-Technologie auf den Ausgang zukünftiger Ereignisse handeln können. Polymarket bietet eine umfassende API, die Entwicklern und Agenten den Zugriff auf Live-Marktdaten, Ereignislisten, Preisinformationen und Orderbuch-Statistiken ermöglicht, um datengesteuerte Workflows und KI-Automatisierungen zu unterstützen.
|
||||
|
||||
Mit der API von Polymarket und der Sim-Integration können Sie Agenten befähigen, programmatisch Informationen zu Prognosemärkten abzurufen, offene Märkte und zugehörige Ereignisse zu erkunden, historische Preisdaten zu analysieren und auf Orderbücher und Markt-Mittelwerte zuzugreifen. Dies schafft neue Möglichkeiten für Recherchen, automatisierte Analysen und die Entwicklung intelligenter Agenten, die auf Echtzeit-Ereigniswahrscheinlichkeiten reagieren, die aus Marktpreisen abgeleitet werden.
|
||||
|
||||
Zu den wichtigsten Funktionen der Polymarket-Integration gehören:
|
||||
|
||||
- **Marktlisting & Filterung:** Auflistung aller aktuellen oder historischen Prognosemärkte, Filterung nach Tags, Sortierung und Seitenweise Durchblättern der Ergebnisse.
|
||||
- **Marktdetails:** Abrufen von Details für einen einzelnen Markt anhand der Markt-ID oder des Slugs, einschließlich seiner Ergebnisse und Status.
|
||||
- **Ereignislisten:** Zugriff auf Listen von Polymarket-Ereignissen und detaillierte Ereignisinformationen.
|
||||
- **Orderbuch- & Preisdaten:** Analyse des Orderbuchs, Abruf der aktuellen Marktpreise, Einsicht in den Mittelwert oder Erhalt historischer Preisinformationen für jeden Markt.
|
||||
- **Automatisierungsbereit:** Erstellen von Agenten oder Tools, die programmatisch auf Marktentwicklungen, sich ändernde Quoten oder bestimmte Ereignisausgänge reagieren.
|
||||
|
||||
Durch die Nutzung dieser dokumentierten API-Endpunkte können Sie die umfangreichen On-Chain-Prognosemarktdaten von Polymarket nahtlos in Ihre eigenen KI-Workflows, Dashboards, Recherchetools und Handelsautomatisierungen integrieren.
|
||||
{/* MANUAL-CONTENT-END */}
|
||||
|
||||
## Nutzungsanweisungen
|
||||
|
||||
Integrieren Sie Polymarket-Prognosemärkte in den Workflow. Kann Märkte, Markt, Ereignisse, Ereignis, Tags, Serien, Orderbuch, Preis, Mittelpunkt, Preisverlauf, letzten Handelspreis, Spread, Tick-Größe, Positionen, Trades und Suche abrufen.
|
||||
|
||||
## Tools
|
||||
|
||||
### `polymarket_get_markets`
|
||||
|
||||
Rufen Sie eine Liste von Prognosemärkten von Polymarket mit optionaler Filterung ab
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `closed` | string | Nein | Nach geschlossenem Status filtern \(true/false\). Verwenden Sie false für nur aktive Märkte. |
|
||||
| `order` | string | Nein | Sortierfeld \(z.B. volumeNum, liquidityNum, startDate, endDate, createdAt\) |
|
||||
| `ascending` | string | Nein | Sortierrichtung \(true für aufsteigend, false für absteigend\) |
|
||||
| `tagId` | string | Nein | Nach Tag-ID filtern |
|
||||
| `limit` | string | Nein | Anzahl der Ergebnisse pro Seite \(max 50\) |
|
||||
| `offset` | string | Nein | Paginierungsoffset \(überspringe diese Anzahl an Ergebnissen\) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Erfolgsstatus der Operation |
|
||||
| `output` | object | Marktdaten und Metadaten |
|
||||
|
||||
### `polymarket_get_market`
|
||||
|
||||
Rufen Sie Details eines bestimmten Prognosemarktes nach ID oder Slug ab
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `marketId` | string | Nein | Die Markt-ID. Erforderlich, wenn Slug nicht angegeben wird. |
|
||||
| `slug` | string | Nein | Der Markt-Slug \(z.B. "will-trump-win"\). Erforderlich, wenn marketId nicht angegeben wird. |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Erfolgsstatus der Operation |
|
||||
| `output` | object | Marktdaten und Metadaten |
|
||||
|
||||
### `polymarket_get_events`
|
||||
|
||||
Ruft eine Liste von Events von Polymarket mit optionaler Filterung ab
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `closed` | string | Nein | Nach geschlossenem Status filtern \(true/false\). Verwenden Sie false für nur aktive Ereignisse. |
|
||||
| `order` | string | Nein | Sortierfeld \(z.B. volume, liquidity, startDate, endDate, createdAt\) |
|
||||
| `ascending` | string | Nein | Sortierrichtung \(true für aufsteigend, false für absteigend\) |
|
||||
| `tagId` | string | Nein | Nach Tag-ID filtern |
|
||||
| `limit` | string | Nein | Anzahl der Ergebnisse pro Seite \(max 50\) |
|
||||
| `offset` | string | Nein | Paginierungsoffset \(überspringe diese Anzahl an Ergebnissen\) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Erfolgsstatus der Operation |
|
||||
| `output` | object | Event-Daten und Metadaten |
|
||||
|
||||
### `polymarket_get_event`
|
||||
|
||||
Ruft Details eines bestimmten Events nach ID oder Slug ab
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `eventId` | string | Nein | Die Event-ID. Erforderlich, wenn kein Slug angegeben wird. |
|
||||
| `slug` | string | Nein | Der Event-Slug \(z.B. "2024-presidential-election"\). Erforderlich, wenn keine eventId angegeben wird. |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Erfolgsstatus der Operation |
|
||||
| `output` | object | Event-Daten und Metadaten |
|
||||
|
||||
### `polymarket_get_tags`
|
||||
|
||||
Verfügbare Tags zum Filtern von Märkten von Polymarket abrufen
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `limit` | string | Nein | Anzahl der Ergebnisse pro Seite \(max 50\) |
|
||||
| `offset` | string | Nein | Paginierungsoffset \(überspringe diese Anzahl an Ergebnissen\) |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Erfolgsstatus der Operation |
|
||||
| `output` | object | Tag-Daten und Metadaten |
|
||||
|
||||
### `polymarket_search`
|
||||
|
||||
Nach Märkten, Ereignissen und Profilen auf Polymarket suchen
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `query` | string | Ja | Suchbegriff |
|
||||
| `limit` | string | Nein | Anzahl der Ergebnisse pro Seite \(max 50\) |
|
||||
| `offset` | string | Nein | Paginierungsoffset |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Erfolgsstatus der Operation |
|
||||
| `output` | object | Suchergebnisse und Metadaten |
|
||||
|
||||
### `polymarket_get_series`
|
||||
|
||||
Serien (verwandte Marktgruppen) von Polymarket abrufen
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `limit` | string | Nein | Anzahl der Ergebnisse pro Seite \(max 50\) |
|
||||
| `offset` | string | Nein | Paginierungsoffset \(überspringe diese Anzahl an Ergebnissen\) |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `series` | array | Array von Serien-Objekten |
|
||||
|
||||
### `polymarket_get_series_by_id`
|
||||
|
||||
Eine bestimmte Serie (zugehörige Marktgruppe) anhand der ID von Polymarket abrufen
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `seriesId` | string | Ja | Die Serien-ID |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `series` | object | Serien-Objekt mit Details |
|
||||
|
||||
### `polymarket_get_orderbook`
|
||||
|
||||
Die Orderbuch-Zusammenfassung für einen bestimmten Token abrufen
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `tokenId` | string | Ja | Die CLOB-Token-ID (aus den clobTokenIds des Marktes) |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `orderbook` | object | Orderbuch mit Geld- und Briefkurs-Arrays |
|
||||
|
||||
### `polymarket_get_price`
|
||||
|
||||
Den Marktpreis für einen bestimmten Token und eine bestimmte Seite abrufen
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `tokenId` | string | Ja | Die CLOB-Token-ID (aus den clobTokenIds des Marktes) |
|
||||
| `side` | string | Ja | Orderseite: buy oder sell |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `price` | string | Marktpreis |
|
||||
|
||||
### `polymarket_get_midpoint`
|
||||
|
||||
Abrufen des Mittelpreises für einen bestimmten Token
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `tokenId` | string | Ja | Die CLOB-Token-ID (aus market clobTokenIds) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `midpoint` | string | Mittelkurs |
|
||||
|
||||
### `polymarket_get_price_history`
|
||||
|
||||
Abrufen historischer Preisdaten für einen bestimmten Markttoken
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `tokenId` | string | Ja | Die CLOB-Token-ID (aus market clobTokenIds) |
|
||||
| `interval` | string | Nein | Zeitraum, der zum aktuellen Zeitpunkt endet (1m, 1h, 6h, 1d, 1w, max). Schließt sich gegenseitig mit startTs/endTs aus. |
|
||||
| `fidelity` | number | Nein | Datenauflösung in Minuten (z.B. 60 für stündlich) |
|
||||
| `startTs` | number | Nein | Startzeitstempel (Unix-Sekunden UTC) |
|
||||
| `endTs` | number | Nein | Endzeitstempel (Unix-Sekunden UTC) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `history` | array | Array von Preisverlaufseinträgen mit Zeitstempel \(t\) und Preis \(p\) |
|
||||
|
||||
### `polymarket_get_last_trade_price`
|
||||
|
||||
Den letzten Handelspreis für einen bestimmten Token abrufen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `tokenId` | string | Ja | Die CLOB-Token-ID \(aus market clobTokenIds\) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `price` | string | Letzter Handelspreis |
|
||||
|
||||
### `polymarket_get_spread`
|
||||
|
||||
Die Geld-Brief-Spanne für einen bestimmten Token abrufen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `tokenId` | string | Ja | Die CLOB-Token-ID \(aus market clobTokenIds\) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `spread` | object | Geld-Brief-Spanne mit Geld- und Briefkursen |
|
||||
|
||||
### `polymarket_get_tick_size`
|
||||
|
||||
Die minimale Tickgröße für einen bestimmten Token abrufen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `tokenId` | string | Ja | Die CLOB-Token-ID \(aus market clobTokenIds\) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `tickSize` | string | Minimale Tick-Größe |
|
||||
|
||||
### `polymarket_get_positions`
|
||||
|
||||
Benutzerpositionen von Polymarket abrufen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `user` | string | Ja | Wallet-Adresse des Benutzers |
|
||||
| `market` | string | Nein | Optionale Markt-ID zum Filtern von Positionen |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `positions` | array | Array von Positions-Objekten |
|
||||
|
||||
### `polymarket_get_trades`
|
||||
|
||||
Handelshistorie von Polymarket abrufen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `user` | string | Nein | Wallet-Adresse des Benutzers zum Filtern von Trades |
|
||||
| `market` | string | Nein | Markt-ID zum Filtern von Trades |
|
||||
| `limit` | string | Nein | Anzahl der Ergebnisse pro Seite \(max 50\) |
|
||||
| `offset` | string | Nein | Paginierungsoffset \(überspringe diese Anzahl an Ergebnissen\) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `trades` | array | Array von Handelsobjekten |
|
||||
|
||||
## Hinweise
|
||||
|
||||
- Kategorie: `tools`
|
||||
- Typ: `polymarket`
|
||||
@@ -83,10 +83,17 @@ Ein neues Anliegen mit bestimmten Eigenschaften erstellen
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiToken` | string | Ja | Pylon API-Token |
|
||||
| `title` | string | Ja | Titel des Anliegens |
|
||||
| `bodyHtml` | string | Ja | Inhalt des Anliegens im HTML-Format |
|
||||
| `accountId` | string | Nein | Konto-ID, die mit dem Anliegen verknüpft werden soll |
|
||||
| `assigneeId` | string | Nein | Benutzer-ID, der das Anliegen zugewiesen werden soll |
|
||||
| `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
|
||||
|
||||
@@ -119,15 +126,18 @@ Aktualisiert ein bestehendes Issue
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Erforderlich | Beschreibung |
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiToken` | string | Ja | Pylon API-Token |
|
||||
| `issueId` | string | Ja | Die ID des zu aktualisierenden Issues |
|
||||
| `state` | string | Nein | Issue-Status |
|
||||
| `assigneeId` | string | Nein | Benutzer-ID, der das Issue zugewiesen werden soll |
|
||||
| `teamId` | string | Nein | Team-ID, dem das Issue zugewiesen werden soll |
|
||||
| `tags` | string | Nein | Kommagetrennte Tag-IDs |
|
||||
| `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
|
||||
|
||||
|
||||
@@ -135,283 +135,684 @@ Löschen eines Kontos aus Salesforce CRM
|
||||
|
||||
### `salesforce_get_contacts`
|
||||
|
||||
Kontakt(e) aus Salesforce abrufen - einzelner Kontakt, wenn ID angegeben, oder Liste, wenn nicht
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | Nein | Keine Beschreibung |
|
||||
| `instanceUrl` | string | Nein | Keine Beschreibung |
|
||||
| `contactId` | string | Nein | Kontakt-ID \(wenn angegeben, wird ein einzelner Kontakt zurückgegeben\) |
|
||||
| `limit` | string | Nein | Anzahl der Ergebnisse \(Standard: 100, max: 2000\). Nur für Listenabfrage. |
|
||||
| `fields` | string | Nein | Kommagetrennte Felder \(z.B. "Id,FirstName,LastName,Email,Phone"\) |
|
||||
| `orderBy` | string | Nein | Sortierfeld \(z.B. "LastName ASC"\). Nur für Listenabfrage. |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Status des Operationserfolgs |
|
||||
| `output` | json | Ergebnisdaten der Operation |
|
||||
| `output` | object | Kontaktdaten |
|
||||
|
||||
### `salesforce_create_contact`
|
||||
|
||||
Einen neuen Kontakt im Salesforce CRM erstellen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | Nein | Keine Beschreibung |
|
||||
| `instanceUrl` | string | Nein | Keine Beschreibung |
|
||||
| `lastName` | string | Ja | Nachname \(erforderlich\) |
|
||||
| `firstName` | string | Nein | Vorname |
|
||||
| `email` | string | Nein | E-Mail-Adresse |
|
||||
| `phone` | string | Nein | Telefonnummer |
|
||||
| `accountId` | string | Nein | Konto-ID, mit der der Kontakt verknüpft werden soll |
|
||||
| `title` | string | Nein | Keine Beschreibung |
|
||||
| `department` | string | Nein | Abteilung |
|
||||
| `mailingStreet` | string | Nein | Postanschrift \(Straße\) |
|
||||
| `mailingCity` | string | Nein | Postanschrift \(Stadt\) |
|
||||
| `mailingState` | string | Nein | Postanschrift \(Bundesland\) |
|
||||
| `mailingPostalCode` | string | Nein | Postanschrift \(Postleitzahl\) |
|
||||
| `mailingCountry` | string | Nein | Postanschrift \(Land\) |
|
||||
| `description` | string | Nein | Kontaktbeschreibung |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Status des Operationserfolgs |
|
||||
| `output` | json | Ergebnisdaten der Operation |
|
||||
| `output` | object | Daten des erstellten Kontakts |
|
||||
|
||||
### `salesforce_update_contact`
|
||||
|
||||
Aktualisieren eines bestehenden Kontakts in Salesforce CRM
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | Nein | Keine Beschreibung |
|
||||
| `instanceUrl` | string | Nein | Keine Beschreibung |
|
||||
| `contactId` | string | Ja | Zu aktualisierende Kontakt-ID \(erforderlich\) |
|
||||
| `lastName` | string | Nein | Nachname |
|
||||
| `firstName` | string | Nein | Vorname |
|
||||
| `email` | string | Nein | E-Mail-Adresse |
|
||||
| `phone` | string | Nein | Telefonnummer |
|
||||
| `accountId` | string | Nein | Zu verknüpfende Konto-ID |
|
||||
| `title` | string | Nein | Keine Beschreibung |
|
||||
| `department` | string | Nein | Abteilung |
|
||||
| `mailingStreet` | string | Nein | Postanschrift (Straße) |
|
||||
| `mailingCity` | string | Nein | Postanschrift (Stadt) |
|
||||
| `mailingState` | string | Nein | Postanschrift (Bundesland) |
|
||||
| `mailingPostalCode` | string | Nein | Postanschrift (Postleitzahl) |
|
||||
| `mailingCountry` | string | Nein | Postanschrift (Land) |
|
||||
| `description` | string | Nein | Beschreibung |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Status des Operationserfolgs |
|
||||
| `output` | json | Ergebnisdaten der Operation |
|
||||
| `output` | object | Daten des aktualisierten Kontakts |
|
||||
|
||||
### `salesforce_delete_contact`
|
||||
|
||||
Löschen eines Kontakts aus Salesforce CRM
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | Nein | Keine Beschreibung |
|
||||
| `instanceUrl` | string | Nein | Keine Beschreibung |
|
||||
| `contactId` | string | Ja | Zu löschende Kontakt-ID \(erforderlich\) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Status des Operationserfolgs |
|
||||
| `output` | json | Ergebnisdaten der Operation |
|
||||
| `output` | object | Daten des gelöschten Kontakts |
|
||||
|
||||
### `salesforce_get_leads`
|
||||
|
||||
Lead(s) aus Salesforce abrufen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | Nein | Keine Beschreibung |
|
||||
| `instanceUrl` | string | Nein | Keine Beschreibung |
|
||||
| `leadId` | string | Nein | Lead-ID \(optional\) |
|
||||
| `limit` | string | Nein | Maximale Ergebnisse \(Standard: 100\) |
|
||||
| `fields` | string | Nein | Kommagetrennte Felder |
|
||||
| `orderBy` | string | Nein | Sortierfeld |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Status des Operationserfolgs |
|
||||
| `output` | json | Ergebnisdaten der Operation |
|
||||
| `success` | boolean | Erfolgsstatus |
|
||||
| `output` | object | Lead-Daten |
|
||||
|
||||
### `salesforce_create_lead`
|
||||
|
||||
Einen neuen Lead erstellen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | Nein | Keine Beschreibung |
|
||||
| `instanceUrl` | string | Nein | Keine Beschreibung |
|
||||
| `lastName` | string | Ja | Nachname \(erforderlich\) |
|
||||
| `company` | string | Ja | Unternehmen \(erforderlich\) |
|
||||
| `firstName` | string | Nein | Vorname |
|
||||
| `email` | string | Nein | Keine Beschreibung |
|
||||
| `phone` | string | Nein | Keine Beschreibung |
|
||||
| `status` | string | Nein | Lead-Status |
|
||||
| `leadSource` | string | Nein | Lead-Quelle |
|
||||
| `title` | string | Nein | Keine Beschreibung |
|
||||
| `description` | string | Nein | Beschreibung |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Status des Operationserfolgs |
|
||||
| `output` | json | Ergebnisdaten der Operation |
|
||||
| `success` | boolean | Erfolg |
|
||||
| `output` | object | Erstellter Lead |
|
||||
|
||||
### `salesforce_update_lead`
|
||||
|
||||
Aktualisieren eines vorhandenen Leads
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | Nein | Keine Beschreibung |
|
||||
| `instanceUrl` | string | Nein | Keine Beschreibung |
|
||||
| `leadId` | string | Ja | Lead-ID (erforderlich) |
|
||||
| `lastName` | string | Nein | Nachname |
|
||||
| `company` | string | Nein | Keine Beschreibung |
|
||||
| `firstName` | string | Nein | Vorname |
|
||||
| `email` | string | Nein | Keine Beschreibung |
|
||||
| `phone` | string | Nein | Keine Beschreibung |
|
||||
| `status` | string | Nein | Lead-Status |
|
||||
| `leadSource` | string | Nein | Lead-Quelle |
|
||||
| `title` | string | Nein | Keine Beschreibung |
|
||||
| `description` | string | Nein | Beschreibung |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Status des Operationserfolgs |
|
||||
| `output` | json | Ergebnisdaten der Operation |
|
||||
| `success` | boolean | Erfolg |
|
||||
| `output` | object | Aktualisierter Lead |
|
||||
|
||||
### `salesforce_delete_lead`
|
||||
|
||||
Löschen eines Leads
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | Nein | Keine Beschreibung |
|
||||
| `instanceUrl` | string | Nein | Keine Beschreibung |
|
||||
| `leadId` | string | Ja | Lead-ID (erforderlich) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Status des Operationserfolgs |
|
||||
| `output` | json | Ergebnisdaten der Operation |
|
||||
| `success` | boolean | Erfolg |
|
||||
| `output` | object | Gelöschter Lead |
|
||||
|
||||
### `salesforce_get_opportunities`
|
||||
|
||||
Verkaufschance(n) aus Salesforce abrufen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | Nein | Keine Beschreibung |
|
||||
| `instanceUrl` | string | Nein | Keine Beschreibung |
|
||||
| `opportunityId` | string | Nein | Verkaufschancen-ID \(optional\) |
|
||||
| `limit` | string | Nein | Maximale Ergebnisse \(Standard: 100\) |
|
||||
| `fields` | string | Nein | Kommagetrennte Felder |
|
||||
| `orderBy` | string | Nein | Sortierfeld |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Status des Operationserfolgs |
|
||||
| `output` | json | Ergebnisdaten der Operation |
|
||||
| `success` | boolean | Erfolg |
|
||||
| `output` | object | Verkaufschancendaten |
|
||||
|
||||
### `salesforce_create_opportunity`
|
||||
|
||||
Eine neue Verkaufschance erstellen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | Nein | Keine Beschreibung |
|
||||
| `instanceUrl` | string | Nein | Keine Beschreibung |
|
||||
| `name` | string | Ja | Name der Verkaufschance \(erforderlich\) |
|
||||
| `stageName` | string | Ja | Phasenname \(erforderlich\) |
|
||||
| `closeDate` | string | Ja | Abschlussdatum JJJJ-MM-TT \(erforderlich\) |
|
||||
| `accountId` | string | Nein | Konto-ID |
|
||||
| `amount` | string | Nein | Betrag \(Zahl\) |
|
||||
| `probability` | string | Nein | Wahrscheinlichkeit \(0-100\) |
|
||||
| `description` | string | Nein | Beschreibung |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Status des Operationserfolgs |
|
||||
| `output` | json | Ergebnisdaten der Operation |
|
||||
| `success` | boolean | Erfolg |
|
||||
| `output` | object | Erstellte Verkaufschance |
|
||||
|
||||
### `salesforce_update_opportunity`
|
||||
|
||||
Aktualisieren einer bestehenden Verkaufschance
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | Nein | Keine Beschreibung |
|
||||
| `instanceUrl` | string | Nein | Keine Beschreibung |
|
||||
| `opportunityId` | string | Ja | Verkaufschancen-ID (erforderlich) |
|
||||
| `name` | string | Nein | Name der Verkaufschance |
|
||||
| `stageName` | string | Nein | Phasenname |
|
||||
| `closeDate` | string | Nein | Abschlussdatum JJJJ-MM-TT |
|
||||
| `accountId` | string | Nein | Konto-ID |
|
||||
| `amount` | string | Nein | Keine Beschreibung |
|
||||
| `probability` | string | Nein | Wahrscheinlichkeit (0-100) |
|
||||
| `description` | string | Nein | Beschreibung |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Status des Operationserfolgs |
|
||||
| `output` | json | Ergebnisdaten der Operation |
|
||||
| `success` | boolean | Erfolg |
|
||||
| `output` | object | Aktualisierte Verkaufschance |
|
||||
|
||||
### `salesforce_delete_opportunity`
|
||||
|
||||
Löschen einer Verkaufschance
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | Nein | Keine Beschreibung |
|
||||
| `instanceUrl` | string | Nein | Keine Beschreibung |
|
||||
| `opportunityId` | string | Ja | Verkaufschancen-ID (erforderlich) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Status des Operationserfolgs |
|
||||
| `output` | json | Ergebnisdaten der Operation |
|
||||
| `success` | boolean | Erfolg |
|
||||
| `output` | object | Gelöschte Verkaufschance |
|
||||
|
||||
### `salesforce_get_cases`
|
||||
|
||||
Fall/Fälle aus Salesforce abrufen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | Nein | Keine Beschreibung |
|
||||
| `instanceUrl` | string | Nein | Keine Beschreibung |
|
||||
| `caseId` | string | Nein | Fall-ID \(optional\) |
|
||||
| `limit` | string | Nein | Maximale Ergebnisse \(Standard: 100\) |
|
||||
| `fields` | string | Nein | Kommagetrennte Felder |
|
||||
| `orderBy` | string | Nein | Sortierfeld |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Status des Operationserfolgs |
|
||||
| `output` | json | Ergebnisdaten der Operation |
|
||||
| `success` | boolean | Erfolg |
|
||||
| `output` | object | Falldaten |
|
||||
|
||||
### `salesforce_create_case`
|
||||
|
||||
Einen neuen Fall erstellen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | Nein | Keine Beschreibung |
|
||||
| `instanceUrl` | string | Nein | Keine Beschreibung |
|
||||
| `subject` | string | Ja | Fallbetreff \(erforderlich\) |
|
||||
| `status` | string | Nein | Status \(z.B. Neu, In Bearbeitung, Eskaliert\) |
|
||||
| `priority` | string | Nein | Priorität \(z.B. Niedrig, Mittel, Hoch\) |
|
||||
| `origin` | string | Nein | Ursprung \(z.B. Telefon, E-Mail, Web\) |
|
||||
| `contactId` | string | Nein | Kontakt-ID |
|
||||
| `accountId` | string | Nein | Konto-ID |
|
||||
| `description` | string | Nein | Beschreibung |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Status des Operationserfolgs |
|
||||
| `output` | json | Ergebnisdaten der Operation |
|
||||
| `success` | boolean | Erfolg |
|
||||
| `output` | object | Erstellter Fall |
|
||||
|
||||
### `salesforce_update_case`
|
||||
|
||||
Aktualisieren eines vorhandenen Falls
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | Nein | Keine Beschreibung |
|
||||
| `instanceUrl` | string | Nein | Keine Beschreibung |
|
||||
| `caseId` | string | Ja | Fall-ID \(erforderlich\) |
|
||||
| `subject` | string | Nein | Fallbetreff |
|
||||
| `status` | string | Nein | Status |
|
||||
| `priority` | string | Nein | Priorität |
|
||||
| `description` | string | Nein | Beschreibung |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Status des Operationserfolgs |
|
||||
| `output` | json | Ergebnisdaten der Operation |
|
||||
| `success` | boolean | Erfolg |
|
||||
| `output` | object | Aktualisierter Fall |
|
||||
|
||||
### `salesforce_delete_case`
|
||||
|
||||
Löschen eines Falls
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | Nein | Keine Beschreibung |
|
||||
| `instanceUrl` | string | Nein | Keine Beschreibung |
|
||||
| `caseId` | string | Ja | Fall-ID \(erforderlich\) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Status des Operationserfolgs |
|
||||
| `output` | json | Ergebnisdaten der Operation |
|
||||
| `success` | boolean | Erfolg |
|
||||
| `output` | object | Gelöschter Fall |
|
||||
|
||||
### `salesforce_get_tasks`
|
||||
|
||||
Aufgabe(n) von Salesforce abrufen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | Nein | Keine Beschreibung |
|
||||
| `instanceUrl` | string | Nein | Keine Beschreibung |
|
||||
| `taskId` | string | Nein | Aufgaben-ID \(optional\) |
|
||||
| `limit` | string | Nein | Maximale Ergebnisse \(Standard: 100\) |
|
||||
| `fields` | string | Nein | Kommagetrennte Felder |
|
||||
| `orderBy` | string | Nein | Sortierfeld |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Status des Operationserfolgs |
|
||||
| `output` | json | Ergebnisdaten der Operation |
|
||||
| `success` | boolean | Erfolgsstatus |
|
||||
| `output` | object | Aufgabendaten |
|
||||
|
||||
### `salesforce_create_task`
|
||||
|
||||
Neue Aufgabe erstellen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | Nein | Keine Beschreibung |
|
||||
| `instanceUrl` | string | Nein | Keine Beschreibung |
|
||||
| `subject` | string | Ja | Aufgabenbetreff \(erforderlich\) |
|
||||
| `status` | string | Nein | Status \(z.B. Nicht begonnen, In Bearbeitung, Abgeschlossen\) |
|
||||
| `priority` | string | Nein | Priorität \(z.B. Niedrig, Normal, Hoch\) |
|
||||
| `activityDate` | string | Nein | Fälligkeitsdatum JJJJ-MM-TT |
|
||||
| `whoId` | string | Nein | Zugehörige Kontakt-/Lead-ID |
|
||||
| `whatId` | string | Nein | Zugehörige Konto-/Opportunity-ID |
|
||||
| `description` | string | Nein | Beschreibung |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Status des Operationserfolgs |
|
||||
| `output` | json | Ergebnisdaten der Operation |
|
||||
| `success` | boolean | Erfolgsstatus |
|
||||
| `output` | object | Erstellte Aufgabe |
|
||||
|
||||
### `salesforce_update_task`
|
||||
|
||||
Bestehende Aufgabe aktualisieren
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | Nein | Keine Beschreibung |
|
||||
| `instanceUrl` | string | Nein | Keine Beschreibung |
|
||||
| `taskId` | string | Ja | Aufgaben-ID \(erforderlich\) |
|
||||
| `subject` | string | Nein | Aufgabenbetreff |
|
||||
| `status` | string | Nein | Status |
|
||||
| `priority` | string | Nein | Priorität |
|
||||
| `activityDate` | string | Nein | Fälligkeitsdatum JJJJ-MM-TT |
|
||||
| `description` | string | Nein | Beschreibung |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Status des Operationserfolgs |
|
||||
| `output` | json | Ergebnisdaten der Operation |
|
||||
| `success` | boolean | Erfolg |
|
||||
| `output` | object | Aktualisierte Aufgabe |
|
||||
|
||||
### `salesforce_delete_task`
|
||||
|
||||
Aufgabe löschen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | Nein | Keine Beschreibung |
|
||||
| `instanceUrl` | string | Nein | Keine Beschreibung |
|
||||
| `taskId` | string | Ja | Aufgaben-ID \(erforderlich\) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Status des Operationserfolgs |
|
||||
| `output` | json | Ergebnisdaten der Operation |
|
||||
| `success` | boolean | Erfolg |
|
||||
| `output` | object | Gelöschte Aufgabe |
|
||||
|
||||
### `salesforce_list_reports`
|
||||
|
||||
Liste der für den aktuellen Benutzer zugänglichen Berichte abrufen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | Nein | Keine Beschreibung |
|
||||
| `instanceUrl` | string | Nein | Keine Beschreibung |
|
||||
| `folderName` | string | Nein | Nach Ordnernamen filtern |
|
||||
| `searchTerm` | string | Nein | Suchbegriff zum Filtern von Berichten nach Namen |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Erfolgsstatus |
|
||||
| `output` | object | Berichtsdaten |
|
||||
|
||||
### `salesforce_get_report`
|
||||
|
||||
Metadaten und Beschreibungsinformationen für einen bestimmten Bericht abrufen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | Nein | Keine Beschreibung |
|
||||
| `instanceUrl` | string | Nein | Keine Beschreibung |
|
||||
| `reportId` | string | Ja | Berichts-ID \(erforderlich\) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Erfolgsstatus |
|
||||
| `output` | object | Berichtsmetadaten |
|
||||
|
||||
### `salesforce_run_report`
|
||||
|
||||
Einen Bericht ausführen und die Ergebnisse abrufen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | Nein | Keine Beschreibung |
|
||||
| `instanceUrl` | string | Nein | Keine Beschreibung |
|
||||
| `reportId` | string | Ja | Berichts-ID \(erforderlich\) |
|
||||
| `includeDetails` | string | Nein | Detailzeilen einschließen \(true/false, Standard: true\) |
|
||||
| `filters` | string | Nein | JSON-String der anzuwendenden Berichtsfilter |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Erfolgsstatus |
|
||||
| `output` | object | Berichtsergebnisse |
|
||||
|
||||
### `salesforce_list_report_types`
|
||||
|
||||
Eine Liste der verfügbaren Berichtstypen abrufen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | Nein | Keine Beschreibung |
|
||||
| `instanceUrl` | string | Nein | Keine Beschreibung |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Erfolgsstatus |
|
||||
| `output` | object | Daten zu Berichtstypen |
|
||||
|
||||
### `salesforce_list_dashboards`
|
||||
|
||||
Eine Liste der für den aktuellen Benutzer zugänglichen Dashboards abrufen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | Nein | Keine Beschreibung |
|
||||
| `instanceUrl` | string | Nein | Keine Beschreibung |
|
||||
| `folderName` | string | Nein | Nach Ordnernamen filtern |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Erfolgsstatus |
|
||||
| `output` | object | Dashboard-Daten |
|
||||
|
||||
### `salesforce_get_dashboard`
|
||||
|
||||
Details und Ergebnisse für ein bestimmtes Dashboard abrufen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | Nein | Keine Beschreibung |
|
||||
| `instanceUrl` | string | Nein | Keine Beschreibung |
|
||||
| `dashboardId` | string | Ja | Dashboard-ID \(erforderlich\) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Erfolgsstatus |
|
||||
| `output` | object | Dashboard-Daten |
|
||||
|
||||
### `salesforce_refresh_dashboard`
|
||||
|
||||
Ein Dashboard aktualisieren, um die neuesten Daten zu erhalten
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | Nein | Keine Beschreibung |
|
||||
| `instanceUrl` | string | Nein | Keine Beschreibung |
|
||||
| `dashboardId` | string | Ja | Dashboard-ID \(erforderlich\) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Erfolgsstatus |
|
||||
| `output` | object | Aktualisierte Dashboard-Daten |
|
||||
|
||||
### `salesforce_query`
|
||||
|
||||
Eine benutzerdefinierte SOQL-Abfrage ausführen, um Daten aus Salesforce abzurufen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | Nein | Keine Beschreibung |
|
||||
| `instanceUrl` | string | Nein | Keine Beschreibung |
|
||||
| `query` | string | Ja | SOQL-Abfrage zur Ausführung \(z.B. SELECT Id, Name FROM Account LIMIT 10\) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Erfolgsstatus |
|
||||
| `output` | object | Abfrageergebnisse |
|
||||
|
||||
### `salesforce_query_more`
|
||||
|
||||
Abrufen zusätzlicher Abfrageergebnisse mit der nextRecordsUrl aus einer vorherigen Abfrage
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | Nein | Keine Beschreibung |
|
||||
| `instanceUrl` | string | Nein | Keine Beschreibung |
|
||||
| `nextRecordsUrl` | string | Ja | Die nextRecordsUrl aus einer vorherigen Abfrageantwort |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Erfolgsstatus |
|
||||
| `output` | object | Abfrageergebnisse |
|
||||
|
||||
### `salesforce_describe_object`
|
||||
|
||||
Metadaten und Feldinformationen für ein Salesforce-Objekt abrufen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | Nein | Keine Beschreibung |
|
||||
| `instanceUrl` | string | Nein | Keine Beschreibung |
|
||||
| `objectName` | string | Ja | API-Name des Objekts \(z.B. Account, Contact, Lead, Custom_Object__c\) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Erfolgsstatus |
|
||||
| `output` | object | Objekt-Metadaten |
|
||||
|
||||
### `salesforce_list_objects`
|
||||
|
||||
Liste aller verfügbaren Salesforce-Objekte abrufen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | Nein | Keine Beschreibung |
|
||||
| `instanceUrl` | string | Nein | Keine Beschreibung |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Erfolgsstatus |
|
||||
| `output` | object | Objektliste |
|
||||
|
||||
## Hinweise
|
||||
|
||||
|
||||
@@ -342,19 +342,30 @@ Eine E-Mail-Vorlage von SendGrid löschen
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Erfolgsstatus der Operation |
|
||||
| `messageId` | string | E-Mail-Nachrichten-ID (send_mail) |
|
||||
| `message` | string | Status- oder Erfolgsmeldung |
|
||||
| `messageId` | string | E-Mail-Nachrichten-ID \(send_mail\) |
|
||||
| `to` | string | E-Mail-Adresse des Empfängers \(send_mail\) |
|
||||
| `subject` | string | E-Mail-Betreff \(send_mail, create_template_version\) |
|
||||
| `id` | string | Ressourcen-ID |
|
||||
| `jobId` | string | Job-ID für asynchrone Operationen |
|
||||
| `email` | string | E-Mail-Adresse |
|
||||
| `firstName` | string | Vorname |
|
||||
| `lastName` | string | Nachname |
|
||||
| `email` | string | E-Mail-Adresse des Kontakts |
|
||||
| `firstName` | string | Vorname des Kontakts |
|
||||
| `lastName` | string | Nachname des Kontakts |
|
||||
| `createdAt` | string | Erstellungszeitstempel |
|
||||
| `updatedAt` | string | Zeitstempel der letzten Aktualisierung |
|
||||
| `listIds` | json | Array von Listen-IDs, zu denen der Kontakt gehört |
|
||||
| `customFields` | json | Benutzerdefinierte Feldwerte |
|
||||
| `contacts` | json | Array von Kontakten |
|
||||
| `contactCount` | number | Anzahl der Kontakte |
|
||||
| `lists` | json | Array von Listen |
|
||||
| `templates` | json | Array von Vorlagen |
|
||||
| `message` | string | Status- oder Erfolgsmeldung |
|
||||
| `name` | string | Ressourcenname |
|
||||
| `templates` | json | Array von Vorlagen |
|
||||
| `generation` | string | Vorlagengeneration |
|
||||
| `versions` | json | Array von Vorlagenversionen |
|
||||
| `templateId` | string | Vorlagen-ID |
|
||||
| `active` | boolean | Ob die Vorlagenversion aktiv ist |
|
||||
| `htmlContent` | string | HTML-Inhalt |
|
||||
| `plainContent` | string | Nur-Text-Inhalt |
|
||||
|
||||
### `sendgrid_create_template_version`
|
||||
|
||||
|
||||
183
apps/docs/content/docs/de/tools/sftp.mdx
Normal file
183
apps/docs/content/docs/de/tools/sftp.mdx
Normal file
@@ -0,0 +1,183 @@
|
||||
---
|
||||
title: SFTP
|
||||
description: Übertragen Sie Dateien über SFTP (SSH File Transfer Protocol)
|
||||
---
|
||||
|
||||
import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
<BlockInfoCard
|
||||
type="sftp"
|
||||
color="#2D3748"
|
||||
/>
|
||||
|
||||
{/* MANUAL-CONTENT-START:intro */}
|
||||
[SFTP (SSH File Transfer Protocol)](https://en.wikipedia.org/wiki/SSH_File_Transfer_Protocol) ist ein sicheres Netzwerkprotokoll, das es Ihnen ermöglicht, Dateien auf entfernten Servern hochzuladen, herunterzuladen und zu verwalten. SFTP arbeitet über SSH und ist damit ideal für automatisierte, verschlüsselte Dateiübertragungen und die Fernverwaltung von Dateien in modernen Arbeitsabläufen.
|
||||
|
||||
Mit den in Sim integrierten SFTP-Tools können Sie die Übertragung von Dateien zwischen Ihren KI-Agenten und externen Systemen oder Servern einfach automatisieren. Dies ermöglicht Ihren Agenten, kritische Datenaustausche, Backups, Dokumentenerstellung und die Orchestrierung entfernter Systeme – alles mit robuster Sicherheit – zu verwalten.
|
||||
|
||||
**Wichtige Funktionen, die über SFTP-Tools verfügbar sind:**
|
||||
|
||||
- **Dateien hochladen:** Übertragen Sie nahtlos Dateien jeder Art von Ihrem Workflow auf einen entfernten Server, mit Unterstützung für Passwort- und SSH-Private-Key-Authentifizierung.
|
||||
- **Dateien herunterladen:** Rufen Sie Dateien von entfernten SFTP-Servern direkt zur Verarbeitung, Archivierung oder weiteren Automatisierung ab.
|
||||
- **Dateien auflisten & verwalten:** Verzeichnisse auflisten, Dateien und Ordner löschen oder erstellen und Dateisystemberechtigungen ferngesteuert verwalten.
|
||||
- **Flexible Authentifizierung:** Verbinden Sie sich entweder mit herkömmlichen Passwörtern oder SSH-Schlüsseln, mit Unterstützung für Passphrasen und Berechtigungskontrolle.
|
||||
- **Unterstützung großer Dateien:** Verwalten Sie programmatisch große Datei-Uploads und -Downloads, mit integrierten Größenbeschränkungen für die Sicherheit.
|
||||
|
||||
Durch die Integration von SFTP in Sim können Sie sichere Dateioperationen als Teil jedes Workflows automatisieren, sei es Datenerfassung, Berichterstattung, Wartung entfernter Systeme oder dynamischer Inhaltsaustausch zwischen Plattformen.
|
||||
|
||||
Die folgenden Abschnitte beschreiben die wichtigsten verfügbaren SFTP-Tools:
|
||||
|
||||
- **sftp_upload:** Laden Sie eine oder mehrere Dateien auf einen entfernten Server hoch.
|
||||
- **sftp_download:** Laden Sie Dateien von einem entfernten Server in Ihren Workflow herunter.
|
||||
- **sftp_list:** Listen Sie Verzeichnisinhalte auf einem entfernten SFTP-Server auf.
|
||||
- **sftp_delete:** Löschen Sie Dateien oder Verzeichnisse von einem entfernten Server.
|
||||
- **sftp_create:** Erstellen Sie neue Dateien auf einem entfernten SFTP-Server.
|
||||
- **sftp_mkdir:** Erstellen Sie neue Verzeichnisse aus der Ferne.
|
||||
|
||||
Siehe die Werkzeugdokumentation unten für detaillierte Ein- und Ausgabeparameter für jede Operation.
|
||||
{/* MANUAL-CONTENT-END */}
|
||||
|
||||
## Nutzungsanweisungen
|
||||
|
||||
Dateien auf Remote-Servern über SFTP hochladen, herunterladen, auflisten und verwalten. Unterstützt sowohl Passwort- als auch Private-Key-Authentifizierung für sichere Dateiübertragungen.
|
||||
|
||||
## Werkzeuge
|
||||
|
||||
### `sftp_upload`
|
||||
|
||||
Dateien auf einen Remote-SFTP-Server hochladen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `host` | string | Ja | SFTP-Server-Hostname oder IP-Adresse |
|
||||
| `port` | number | Ja | SFTP-Server-Port \(Standard: 22\) |
|
||||
| `username` | string | Ja | SFTP-Benutzername |
|
||||
| `password` | string | Nein | Passwort für die Authentifizierung \(wenn kein Private Key verwendet wird\) |
|
||||
| `privateKey` | string | Nein | Private Key für die Authentifizierung \(OpenSSH-Format\) |
|
||||
| `passphrase` | string | Nein | Passphrase für verschlüsselten Private Key |
|
||||
| `remotePath` | string | Ja | Zielverzeichnis auf dem Remote-Server |
|
||||
| `files` | file[] | Nein | Hochzuladende Dateien |
|
||||
| `fileContent` | string | Nein | Direkter Dateiinhalt zum Hochladen \(für Textdateien\) |
|
||||
| `fileName` | string | Nein | Dateiname bei Verwendung von direktem Inhalt |
|
||||
| `overwrite` | boolean | Nein | Ob bestehende Dateien überschrieben werden sollen \(Standard: true\) |
|
||||
| `permissions` | string | Nein | Dateiberechtigungen \(z.B. 0644\) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Ob der Upload erfolgreich war |
|
||||
| `uploadedFiles` | json | Array mit Details zu hochgeladenen Dateien \(Name, remotePath, Größe\) |
|
||||
| `message` | string | Statusmeldung des Vorgangs |
|
||||
|
||||
### `sftp_download`
|
||||
|
||||
Datei von einem entfernten SFTP-Server herunterladen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `host` | string | Ja | SFTP-Server-Hostname oder IP-Adresse |
|
||||
| `port` | number | Ja | SFTP-Server-Port \(Standard: 22\) |
|
||||
| `username` | string | Ja | SFTP-Benutzername |
|
||||
| `password` | string | Nein | Passwort für die Authentifizierung \(wenn kein privater Schlüssel verwendet wird\) |
|
||||
| `privateKey` | string | Nein | Privater Schlüssel für die Authentifizierung \(OpenSSH-Format\) |
|
||||
| `passphrase` | string | Nein | Passphrase für verschlüsselten privaten Schlüssel |
|
||||
| `remotePath` | string | Ja | Pfad zur Datei auf dem entfernten Server |
|
||||
| `encoding` | string | Nein | Ausgabe-Kodierung: utf-8 für Text, base64 für Binärdaten \(Standard: utf-8\) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Ob der Download erfolgreich war |
|
||||
| `fileName` | string | Name der heruntergeladenen Datei |
|
||||
| `content` | string | Dateiinhalt \(Text oder base64-kodiert\) |
|
||||
| `size` | number | Dateigröße in Bytes |
|
||||
| `encoding` | string | Inhaltskodierung \(utf-8 oder base64\) |
|
||||
| `message` | string | Statusmeldung des Vorgangs |
|
||||
|
||||
### `sftp_list`
|
||||
|
||||
Dateien und Verzeichnisse auf einem entfernten SFTP-Server auflisten
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `host` | string | Ja | SFTP-Server-Hostname oder IP-Adresse |
|
||||
| `port` | number | Ja | SFTP-Server-Port \(Standard: 22\) |
|
||||
| `username` | string | Ja | SFTP-Benutzername |
|
||||
| `password` | string | Nein | Passwort für die Authentifizierung \(wenn kein privater Schlüssel verwendet wird\) |
|
||||
| `privateKey` | string | Nein | Privater Schlüssel für die Authentifizierung \(OpenSSH-Format\) |
|
||||
| `passphrase` | string | Nein | Passphrase für verschlüsselten privaten Schlüssel |
|
||||
| `remotePath` | string | Ja | Verzeichnispfad auf dem entfernten Server |
|
||||
| `detailed` | boolean | Nein | Detaillierte Dateiinformationen einschließen \(Größe, Berechtigungen, Änderungsdatum\) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Ob der Vorgang erfolgreich war |
|
||||
| `path` | string | Verzeichnispfad, der aufgelistet wurde |
|
||||
| `entries` | json | Array von Verzeichniseinträgen mit Name, Typ, Größe, Berechtigungen, modifiedAt |
|
||||
| `count` | number | Anzahl der Einträge im Verzeichnis |
|
||||
| `message` | string | Statusmeldung des Vorgangs |
|
||||
|
||||
### `sftp_delete`
|
||||
|
||||
Löschen einer Datei oder eines Verzeichnisses auf einem entfernten SFTP-Server
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `host` | string | Ja | SFTP-Server-Hostname oder IP-Adresse |
|
||||
| `port` | number | Ja | SFTP-Server-Port \(Standard: 22\) |
|
||||
| `username` | string | Ja | SFTP-Benutzername |
|
||||
| `password` | string | Nein | Passwort für die Authentifizierung \(wenn kein privater Schlüssel verwendet wird\) |
|
||||
| `privateKey` | string | Nein | Privater Schlüssel für die Authentifizierung \(OpenSSH-Format\) |
|
||||
| `passphrase` | string | Nein | Passphrase für verschlüsselten privaten Schlüssel |
|
||||
| `remotePath` | string | Ja | Pfad zur Datei oder zum Verzeichnis, das gelöscht werden soll |
|
||||
| `recursive` | boolean | Nein | Verzeichnisse rekursiv löschen |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Ob das Löschen erfolgreich war |
|
||||
| `deletedPath` | string | Pfad, der gelöscht wurde |
|
||||
| `message` | string | Statusmeldung des Vorgangs |
|
||||
|
||||
### `sftp_mkdir`
|
||||
|
||||
Ein Verzeichnis auf einem entfernten SFTP-Server erstellen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `host` | string | Ja | SFTP-Server-Hostname oder IP-Adresse |
|
||||
| `port` | number | Ja | SFTP-Server-Port \(Standard: 22\) |
|
||||
| `username` | string | Ja | SFTP-Benutzername |
|
||||
| `password` | string | Nein | Passwort für die Authentifizierung \(wenn kein privater Schlüssel verwendet wird\) |
|
||||
| `privateKey` | string | Nein | Privater Schlüssel für die Authentifizierung \(OpenSSH-Format\) |
|
||||
| `passphrase` | string | Nein | Passphrase für verschlüsselten privaten Schlüssel |
|
||||
| `remotePath` | string | Ja | Pfad für das neue Verzeichnis |
|
||||
| `recursive` | boolean | Nein | Übergeordnete Verzeichnisse erstellen, falls sie nicht existieren |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Ob das Verzeichnis erfolgreich erstellt wurde |
|
||||
| `createdPath` | string | Pfad des erstellten Verzeichnisses |
|
||||
| `message` | string | Statusmeldung des Vorgangs |
|
||||
|
||||
## Hinweise
|
||||
|
||||
- Kategorie: `tools`
|
||||
- Typ: `sftp`
|
||||
444
apps/docs/content/docs/de/tools/shopify.mdx
Normal file
444
apps/docs/content/docs/de/tools/shopify.mdx
Normal file
@@ -0,0 +1,444 @@
|
||||
---
|
||||
title: Shopify
|
||||
description: Verwalte Produkte, Bestellungen, Kunden und Lagerbestand in deinem Shopify-Shop
|
||||
---
|
||||
|
||||
import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
<BlockInfoCard
|
||||
type="shopify"
|
||||
color="#FFFFFF"
|
||||
/>
|
||||
|
||||
{/* MANUAL-CONTENT-START:intro */}
|
||||
[Shopify](https://www.shopify.com/) ist eine führende E-Commerce-Plattform, die entwickelt wurde, um Händlern beim Aufbau, Betrieb und Wachstum ihrer Online-Shops zu helfen. Shopify macht es einfach, jeden Aspekt deines Shops zu verwalten, von Produkten und Lagerbestand bis hin zu Bestellungen und Kunden.
|
||||
|
||||
Mit Shopify in Sim können deine Agenten:
|
||||
|
||||
- **Produkte erstellen und verwalten**: Neue Produkte hinzufügen, Produktdetails aktualisieren und Produkte aus deinem Shop entfernen.
|
||||
- **Bestellungen auflisten und abrufen**: Informationen über Kundenbestellungen erhalten, einschließlich Filterung und Bestellverwaltung.
|
||||
- **Kunden verwalten**: Auf Kundendetails zugreifen und diese aktualisieren oder neue Kunden zu deinem Shop hinzufügen.
|
||||
- **Lagerbestände anpassen**: Produktbestände programmatisch ändern, um deinen Lagerbestand genau zu halten.
|
||||
|
||||
Nutze Sims Shopify-Integration, um gängige Shop-Management-Workflows zu automatisieren – wie Lagerbestandssynchronisierung, Auftragsabwicklung oder Angebotsverwaltung – direkt aus deinen Automatisierungen heraus. Ermögliche deinen Agenten, auf alle deine Shop-Daten zuzugreifen, sie zu aktualisieren und zu organisieren, mit einfachen, programmatischen Tools.
|
||||
{/* MANUAL-CONTENT-END */}
|
||||
|
||||
## Nutzungsanleitung
|
||||
|
||||
Integriere Shopify in deinen Workflow. Verwalte Produkte, Bestellungen, Kunden und Lagerbestand. Erstelle, lese, aktualisiere und lösche Produkte. Liste und verwalte Bestellungen. Bearbeite Kundendaten und passe Lagerbestände an.
|
||||
|
||||
## Tools
|
||||
|
||||
### `shopify_create_product`
|
||||
|
||||
Erstelle ein neues Produkt in deinem Shopify-Shop
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `shopDomain` | string | Ja | Deine Shopify-Shop-Domain \(z.B. meinshop.myshopify.com\) |
|
||||
| `title` | string | Ja | Produkttitel |
|
||||
| `descriptionHtml` | string | Nein | Produktbeschreibung \(HTML\) |
|
||||
| `vendor` | string | Nein | Produktanbieter/Marke |
|
||||
| `productType` | string | Nein | Produkttyp/Kategorie |
|
||||
| `tags` | array | Nein | Produkt-Tags |
|
||||
| `status` | string | Nein | Produktstatus \(ACTIVE, DRAFT, ARCHIVED\) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `product` | object | Das erstellte Produkt |
|
||||
|
||||
### `shopify_get_product`
|
||||
|
||||
Ein einzelnes Produkt anhand der ID aus Ihrem Shopify-Shop abrufen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `shopDomain` | string | Ja | Ihre Shopify-Shop-Domain \(z.B. mystore.myshopify.com\) |
|
||||
| `productId` | string | Ja | Produkt-ID \(gid://shopify/Product/123456789\) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `product` | object | Die Produktdetails |
|
||||
|
||||
### `shopify_list_products`
|
||||
|
||||
Produkte aus Ihrem Shopify-Shop mit optionaler Filterung auflisten
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `shopDomain` | string | Ja | Ihre Shopify-Shop-Domain \(z.B. mystore.myshopify.com\) |
|
||||
| `first` | number | Nein | Anzahl der zurückzugebenden Produkte \(Standard: 50, max: 250\) |
|
||||
| `query` | string | Nein | Suchanfrage zum Filtern von Produkten \(z.B. "title:shirt" oder "vendor:Nike" oder "status:active"\) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `products` | array | Liste der Produkte |
|
||||
| `pageInfo` | object | Paginierungsinformationen |
|
||||
|
||||
### `shopify_update_product`
|
||||
|
||||
Ein bestehendes Produkt in Ihrem Shopify-Shop aktualisieren
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `shopDomain` | string | Ja | Ihre Shopify-Shop-Domain \(z.B. mystore.myshopify.com\) |
|
||||
| `productId` | string | Ja | Zu aktualisierende Produkt-ID \(gid://shopify/Product/123456789\) |
|
||||
| `title` | string | Nein | Neuer Produkttitel |
|
||||
| `descriptionHtml` | string | Nein | Neue Produktbeschreibung \(HTML\) |
|
||||
| `vendor` | string | Nein | Neuer Produktanbieter/Marke |
|
||||
| `productType` | string | Nein | Neuer Produkttyp/Kategorie |
|
||||
| `tags` | array | Nein | Neue Produkt-Tags |
|
||||
| `status` | string | Nein | Neuer Produktstatus \(ACTIVE, DRAFT, ARCHIVED\) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `product` | object | Das aktualisierte Produkt |
|
||||
|
||||
### `shopify_delete_product`
|
||||
|
||||
Ein Produkt aus Ihrem Shopify-Shop löschen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `shopDomain` | string | Ja | Ihre Shopify-Shop-Domain \(z.B. mystore.myshopify.com\) |
|
||||
| `productId` | string | Ja | Produkt-ID zum Löschen \(gid://shopify/Product/123456789\) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `deletedId` | string | Die ID des gelöschten Produkts |
|
||||
|
||||
### `shopify_get_order`
|
||||
|
||||
Eine einzelne Bestellung anhand der ID aus Ihrem Shopify-Shop abrufen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `shopDomain` | string | Ja | Ihre Shopify-Shop-Domain \(z.B. mystore.myshopify.com\) |
|
||||
| `orderId` | string | Ja | Bestell-ID \(gid://shopify/Order/123456789\) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `order` | object | Die Bestelldetails |
|
||||
|
||||
### `shopify_list_orders`
|
||||
|
||||
Bestellungen aus Ihrem Shopify-Shop mit optionaler Filterung auflisten
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `shopDomain` | string | Ja | Ihre Shopify-Shop-Domain \(z.B. mystore.myshopify.com\) |
|
||||
| `first` | number | Nein | Anzahl der zurückzugebenden Bestellungen \(Standard: 50, max: 250\) |
|
||||
| `status` | string | Nein | Nach Bestellstatus filtern \(open, closed, cancelled, any\) |
|
||||
| `query` | string | Nein | Suchanfrage zum Filtern von Bestellungen \(z.B. "financial_status:paid" oder "fulfillment_status:unfulfilled" oder "email:customer@example.com"\) |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `orders` | array | Liste der Bestellungen |
|
||||
| `pageInfo` | object | Paginierungsinformationen |
|
||||
|
||||
### `shopify_update_order`
|
||||
|
||||
Aktualisieren einer bestehenden Bestellung in Ihrem Shopify-Shop (Hinweis, Tags, E-Mail)
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `shopDomain` | string | Ja | Ihre Shopify-Shop-Domain \(z.B. mystore.myshopify.com\) |
|
||||
| `orderId` | string | Ja | Zu aktualisierende Bestell-ID \(gid://shopify/Order/123456789\) |
|
||||
| `note` | string | Nein | Neuer Bestellhinweis |
|
||||
| `tags` | array | Nein | Neue Bestell-Tags |
|
||||
| `email` | string | Nein | Neue Kunden-E-Mail für die Bestellung |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `order` | object | Die aktualisierte Bestellung |
|
||||
|
||||
### `shopify_cancel_order`
|
||||
|
||||
Stornieren einer Bestellung in Ihrem Shopify-Shop
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `shopDomain` | string | Ja | Ihre Shopify-Shop-Domain \(z.B. mystore.myshopify.com\) |
|
||||
| `orderId` | string | Ja | Zu stornierende Bestell-ID \(gid://shopify/Order/123456789\) |
|
||||
| `reason` | string | Ja | Stornierungsgrund \(CUSTOMER, DECLINED, FRAUD, INVENTORY, STAFF, OTHER\) |
|
||||
| `notifyCustomer` | boolean | Nein | Ob der Kunde über die Stornierung benachrichtigt werden soll |
|
||||
| `refund` | boolean | Nein | Ob die Bestellung erstattet werden soll |
|
||||
| `restock` | boolean | Nein | Ob der Bestand wieder aufgefüllt werden soll |
|
||||
| `staffNote` | string | Nein | Ein Hinweis zur Stornierung für Mitarbeiter |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `order` | object | Das Stornierungsergebnis |
|
||||
|
||||
### `shopify_create_customer`
|
||||
|
||||
Einen neuen Kunden in Ihrem Shopify-Shop erstellen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `shopDomain` | string | Ja | Ihre Shopify-Shop-Domain \(z.B. mystore.myshopify.com\) |
|
||||
| `email` | string | Nein | E-Mail-Adresse des Kunden |
|
||||
| `firstName` | string | Nein | Vorname des Kunden |
|
||||
| `lastName` | string | Nein | Nachname des Kunden |
|
||||
| `phone` | string | Nein | Telefonnummer des Kunden |
|
||||
| `note` | string | Nein | Notiz zum Kunden |
|
||||
| `tags` | array | Nein | Kundentags |
|
||||
| `addresses` | array | Nein | Kundenanschriften |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `customer` | object | Der erstellte Kunde |
|
||||
|
||||
### `shopify_get_customer`
|
||||
|
||||
Einen einzelnen Kunden anhand der ID aus Ihrem Shopify-Shop abrufen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `shopDomain` | string | Ja | Ihre Shopify-Shop-Domain \(z.B. mystore.myshopify.com\) |
|
||||
| `customerId` | string | Ja | Kunden-ID \(gid://shopify/Customer/123456789\) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `customer` | object | Die Kundendetails |
|
||||
|
||||
### `shopify_list_customers`
|
||||
|
||||
Kunden aus deinem Shopify-Shop mit optionaler Filterung auflisten
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `shopDomain` | string | Ja | Deine Shopify-Shop-Domain \(z.B. meinshop.myshopify.com\) |
|
||||
| `first` | number | Nein | Anzahl der zurückzugebenden Kunden \(Standard: 50, max: 250\) |
|
||||
| `query` | string | Nein | Suchanfrage zum Filtern von Kunden \(z.B. "first_name:John" oder "last_name:Smith" oder "email:*@gmail.com" oder "tag:vip"\) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `customers` | array | Liste der Kunden |
|
||||
| `pageInfo` | object | Paginierungsinformationen |
|
||||
|
||||
### `shopify_update_customer`
|
||||
|
||||
Einen bestehenden Kunden in deinem Shopify-Shop aktualisieren
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `shopDomain` | string | Ja | Deine Shopify-Shop-Domain \(z.B. meinshop.myshopify.com\) |
|
||||
| `customerId` | string | Ja | Kunden-ID zum Aktualisieren \(gid://shopify/Customer/123456789\) |
|
||||
| `email` | string | Nein | Neue E-Mail-Adresse des Kunden |
|
||||
| `firstName` | string | Nein | Neuer Vorname des Kunden |
|
||||
| `lastName` | string | Nein | Neuer Nachname des Kunden |
|
||||
| `phone` | string | Nein | Neue Telefonnummer des Kunden |
|
||||
| `note` | string | Nein | Neue Notiz über den Kunden |
|
||||
| `tags` | array | Nein | Neue Kunden-Tags |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `customer` | object | Der aktualisierte Kunde |
|
||||
|
||||
### `shopify_delete_customer`
|
||||
|
||||
Einen Kunden aus Ihrem Shopify-Shop löschen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `shopDomain` | string | Ja | Ihre Shopify-Shop-Domain (z.B. meinshop.myshopify.com) |
|
||||
| `customerId` | string | Ja | Kunden-ID zum Löschen (gid://shopify/Customer/123456789) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `deletedId` | string | Die ID des gelöschten Kunden |
|
||||
|
||||
### `shopify_list_inventory_items`
|
||||
|
||||
Bestandsartikel aus Ihrem Shopify-Shop auflisten. Verwenden Sie dies, um Bestandsartikel-IDs anhand der SKU zu finden.
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `shopDomain` | string | Ja | Ihre Shopify-Shop-Domain (z.B. meinshop.myshopify.com) |
|
||||
| `first` | number | Nein | Anzahl der zurückzugebenden Bestandsartikel (Standard: 50, max: 250) |
|
||||
| `query` | string | Nein | Suchanfrage zum Filtern von Bestandsartikeln (z.B. "sku:ABC123") |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `inventoryItems` | array | Liste der Bestandsartikel mit ihren IDs, SKUs und Lagerbeständen |
|
||||
| `pageInfo` | object | Paginierungsinformationen |
|
||||
|
||||
### `shopify_get_inventory_level`
|
||||
|
||||
Bestandsmenge für eine Produktvariante an einem bestimmten Standort abrufen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `shopDomain` | string | Ja | Ihre Shopify-Shop-Domain (z.B. meinshop.myshopify.com) |
|
||||
| `inventoryItemId` | string | Ja | Bestandsartikel-ID (gid://shopify/InventoryItem/123456789) |
|
||||
| `locationId` | string | Nein | Standort-ID zum Filtern (optional) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `inventoryLevel` | object | Die Details zum Bestandsniveau |
|
||||
|
||||
### `shopify_adjust_inventory`
|
||||
|
||||
Bestandsmenge für eine Produktvariante an einem bestimmten Standort anpassen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `shopDomain` | string | Ja | Ihre Shopify-Store-Domain (z.B. mystore.myshopify.com) |
|
||||
| `inventoryItemId` | string | Ja | Inventar-Element-ID (gid://shopify/InventoryItem/123456789) |
|
||||
| `locationId` | string | Ja | Standort-ID (gid://shopify/Location/123456789) |
|
||||
| `delta` | number | Ja | Anzahl der Anpassung (positiv für Erhöhung, negativ für Verringerung) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `inventoryLevel` | object | Das Ergebnis der Bestandsanpassung |
|
||||
|
||||
### `shopify_list_locations`
|
||||
|
||||
Listet Bestandsstandorte aus Ihrem Shopify-Store auf. Verwenden Sie dies, um Standort-IDs zu finden, die für Bestandsoperationen benötigt werden.
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `shopDomain` | string | Ja | Ihre Shopify-Store-Domain (z.B. mystore.myshopify.com) |
|
||||
| `first` | number | Nein | Anzahl der zurückzugebenden Standorte (Standard: 50, max: 250) |
|
||||
| `includeInactive` | boolean | Nein | Ob deaktivierte Standorte einbezogen werden sollen (Standard: false) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `locations` | array | Liste der Standorte mit ihren IDs, Namen und Adressen |
|
||||
| `pageInfo` | object | Paginierungsinformationen |
|
||||
|
||||
### `shopify_create_fulfillment`
|
||||
|
||||
Erstelle eine Fulfillment-Anfrage, um Bestellartikel als versendet zu markieren. Erfordert eine Fulfillment-Auftrags-ID (diese findest du in den Bestelldetails).
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `shopDomain` | string | Ja | Deine Shopify-Store-Domain \(z.B. meinshop.myshopify.com\) |
|
||||
| `fulfillmentOrderId` | string | Ja | Die Fulfillment-Auftrags-ID \(z.B. gid://shopify/FulfillmentOrder/123456789\) |
|
||||
| `trackingNumber` | string | Nein | Sendungsverfolgungsnummer |
|
||||
| `trackingCompany` | string | Nein | Name des Versanddienstleisters \(z.B. UPS, FedEx, USPS, DHL\) |
|
||||
| `trackingUrl` | string | Nein | URL zur Sendungsverfolgung |
|
||||
| `notifyCustomer` | boolean | Nein | Ob eine Versandbestätigungs-E-Mail an den Kunden gesendet werden soll \(Standard: true\) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `fulfillment` | object | Das erstellte Fulfillment mit Tracking-Informationen und erfüllten Artikeln |
|
||||
|
||||
### `shopify_list_collections`
|
||||
|
||||
Liste Produktkollektionen aus deinem Shopify-Shop auf. Filtere nach Titel, Typ (benutzerdefiniert/smart) oder Handle.
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `shopDomain` | string | Ja | Deine Shopify-Store-Domain \(z.B. meinshop.myshopify.com\) |
|
||||
| `first` | number | Nein | Anzahl der zurückzugebenden Kollektionen \(Standard: 50, max: 250\) |
|
||||
| `query` | string | Nein | Suchanfrage zum Filtern von Kollektionen \(z.B. "title:Sommer" oder "collection_type:smart"\) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `collections` | array | Liste der Kollektionen mit ihren IDs, Titeln und Produktanzahlen |
|
||||
| `pageInfo` | object | Paginierungsinformationen |
|
||||
|
||||
### `shopify_get_collection`
|
||||
|
||||
Rufen Sie eine bestimmte Kollektion anhand ihrer ID ab, einschließlich ihrer Produkte. Verwenden Sie dies, um Produkte innerhalb einer Kollektion abzurufen.
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `shopDomain` | string | Ja | Ihre Shopify-Store-Domain \(z.B. mystore.myshopify.com\) |
|
||||
| `collectionId` | string | Ja | Die Kollektions-ID \(z.B. gid://shopify/Collection/123456789\) |
|
||||
| `productsFirst` | number | Nein | Anzahl der Produkte, die aus dieser Kollektion zurückgegeben werden sollen \(Standard: 50, max: 250\) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `collection` | object | Die Kollektionsdetails einschließlich ihrer Produkte |
|
||||
|
||||
## Hinweise
|
||||
|
||||
- Kategorie: `tools`
|
||||
- Typ: `shopify`
|
||||
@@ -120,6 +120,82 @@ Lesen Sie die neuesten Nachrichten aus Slack-Kanälen. Rufen Sie den Konversatio
|
||||
| --------- | ---- | ----------- |
|
||||
| `messages` | array | Array von Nachrichtenobjekten aus dem Kanal |
|
||||
|
||||
### `slack_list_channels`
|
||||
|
||||
Listet alle Kanäle in einem Slack-Workspace auf. Gibt öffentliche und private Kanäle zurück, auf die der Bot Zugriff hat.
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `authMethod` | string | Nein | Authentifizierungsmethode: oauth oder bot_token |
|
||||
| `botToken` | string | Nein | Bot-Token für benutzerdefinierten Bot |
|
||||
| `includePrivate` | boolean | Nein | Private Kanäle einschließen, in denen der Bot Mitglied ist \(Standard: true\) |
|
||||
| `excludeArchived` | boolean | Nein | Archivierte Kanäle ausschließen \(Standard: true\) |
|
||||
| `limit` | number | Nein | Maximale Anzahl der zurückzugebenden Kanäle \(Standard: 100, max: 200\) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `channels` | array | Array von Kanalobjekten aus dem Workspace |
|
||||
|
||||
### `slack_list_members`
|
||||
|
||||
Listet alle Mitglieder (Benutzer-IDs) in einem Slack-Kanal auf. Verwenden Sie diese Funktion mit Get User Info, um IDs in Namen aufzulösen.
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `authMethod` | string | Nein | Authentifizierungsmethode: oauth oder bot_token |
|
||||
| `botToken` | string | Nein | Bot-Token für benutzerdefinierten Bot |
|
||||
| `channel` | string | Ja | Kanal-ID, aus der Mitglieder aufgelistet werden sollen |
|
||||
| `limit` | number | Nein | Maximale Anzahl der zurückzugebenden Mitglieder \(Standard: 100, max: 200\) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `members` | array | Array von Benutzer-IDs, die Mitglieder des Kanals sind \(z.B. U1234567890\) |
|
||||
|
||||
### `slack_list_users`
|
||||
|
||||
Listet alle Benutzer in einem Slack-Workspace auf. Gibt Benutzerprofile mit Namen und Avataren zurück.
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `authMethod` | string | Nein | Authentifizierungsmethode: oauth oder bot_token |
|
||||
| `botToken` | string | Nein | Bot-Token für benutzerdefinierten Bot |
|
||||
| `includeDeleted` | boolean | Nein | Deaktivierte/gelöschte Benutzer einbeziehen \(Standard: false\) |
|
||||
| `limit` | number | Nein | Maximale Anzahl der zurückzugebenden Benutzer \(Standard: 100, max: 200\) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `users` | array | Array von Benutzerobjekten aus dem Workspace |
|
||||
|
||||
### `slack_get_user`
|
||||
|
||||
Ruft detaillierte Informationen über einen bestimmten Slack-Benutzer anhand seiner Benutzer-ID ab.
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `authMethod` | string | Nein | Authentifizierungsmethode: oauth oder bot_token |
|
||||
| `botToken` | string | Nein | Bot-Token für benutzerdefinierten Bot |
|
||||
| `userId` | string | Ja | Zu suchende Benutzer-ID \(z.B. U1234567890\) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `user` | object | Detaillierte Benutzerinformationen |
|
||||
|
||||
### `slack_download`
|
||||
|
||||
Eine Datei von Slack herunterladen
|
||||
@@ -148,7 +224,7 @@ Eine zuvor vom Bot in Slack gesendete Nachricht aktualisieren
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `authMethod` | string | Nein | Authentifizierungsmethode: oauth oder bot_token |
|
||||
| `botToken` | string | Nein | Bot-Token für Custom Bot |
|
||||
| `botToken` | string | Nein | Bot-Token für benutzerdefinierten Bot |
|
||||
| `channel` | string | Ja | Kanal-ID, in dem die Nachricht gepostet wurde \(z.B. C1234567890\) |
|
||||
| `timestamp` | string | Ja | Zeitstempel der zu aktualisierenden Nachricht \(z.B. 1405894322.002768\) |
|
||||
| `text` | string | Ja | Neuer Nachrichtentext \(unterstützt Slack mrkdwn-Formatierung\) |
|
||||
@@ -159,7 +235,7 @@ Eine zuvor vom Bot in Slack gesendete Nachricht aktualisieren
|
||||
| --------- | ---- | ----------- |
|
||||
| `message` | object | Vollständiges aktualisiertes Nachrichtenobjekt mit allen von Slack zurückgegebenen Eigenschaften |
|
||||
| `content` | string | Erfolgsmeldung |
|
||||
| `metadata` | object | Metadaten der aktualisierten Nachricht |
|
||||
| `metadata` | object | Aktualisierte Nachrichtenmetadaten |
|
||||
|
||||
### `slack_delete_message`
|
||||
|
||||
@@ -170,7 +246,7 @@ Eine zuvor vom Bot in Slack gesendete Nachricht löschen
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `authMethod` | string | Nein | Authentifizierungsmethode: oauth oder bot_token |
|
||||
| `botToken` | string | Nein | Bot-Token für Custom Bot |
|
||||
| `botToken` | string | Nein | Bot-Token für benutzerdefinierten Bot |
|
||||
| `channel` | string | Ja | Kanal-ID, in dem die Nachricht gepostet wurde \(z.B. C1234567890\) |
|
||||
| `timestamp` | string | Ja | Zeitstempel der zu löschenden Nachricht \(z.B. 1405894322.002768\) |
|
||||
|
||||
@@ -183,7 +259,7 @@ Eine zuvor vom Bot in Slack gesendete Nachricht löschen
|
||||
|
||||
### `slack_add_reaction`
|
||||
|
||||
Emoji-Reaktion zu einer Slack-Nachricht hinzufügen
|
||||
Eine Emoji-Reaktion zu einer Slack-Nachricht hinzufügen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@ import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
<BlockInfoCard
|
||||
type="smtp"
|
||||
color="#4A5568"
|
||||
color="#2D3748"
|
||||
/>
|
||||
|
||||
{/* MANUAL-CONTENT-START:intro */}
|
||||
|
||||
394
apps/docs/content/docs/de/tools/ssh.mdx
Normal file
394
apps/docs/content/docs/de/tools/ssh.mdx
Normal file
@@ -0,0 +1,394 @@
|
||||
---
|
||||
title: SSH
|
||||
description: Verbindung zu Remote-Servern über SSH herstellen
|
||||
---
|
||||
|
||||
import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
<BlockInfoCard
|
||||
type="ssh"
|
||||
color="#000000"
|
||||
/>
|
||||
|
||||
{/* MANUAL-CONTENT-START:intro */}
|
||||
[SSH (Secure Shell)](https://en.wikipedia.org/wiki/Secure_Shell) ist ein weit verbreitetes Protokoll für die sichere Verbindung zu Remote-Servern, das es ermöglicht, Befehle auszuführen, Dateien zu übertragen und Systeme über verschlüsselte Kanäle zu verwalten.
|
||||
|
||||
Mit SSH-Unterstützung in Sim können Ihre Agenten:
|
||||
|
||||
- **Remote-Befehle ausführen**: Shell-Befehle auf jedem SSH-zugänglichen Server ausführen
|
||||
- **Skripte hochladen und ausführen**: Einfaches Übertragen und Ausführen von mehrzeiligen Skripten für erweiterte Automatisierung
|
||||
- **Dateien sicher übertragen**: Hoch- und Herunterladen von Dateien als Teil Ihrer Workflows (demnächst oder per Befehl)
|
||||
- **Serververwaltung automatisieren**: Programmatische Durchführung von Updates, Wartung, Überwachung, Bereitstellungen und Konfigurationsaufgaben
|
||||
- **Flexible Authentifizierung nutzen**: Verbindung mit Passwort- oder Private-Key-Authentifizierung, einschließlich Unterstützung für verschlüsselte Schlüssel
|
||||
|
||||
Die folgenden Sim SSH-Tools ermöglichen es Ihren Agenten, mit Servern als Teil größerer Automatisierungen zu interagieren:
|
||||
|
||||
- `ssh_execute_command`: Führt einen einzelnen Shell-Befehl remote aus und erfasst Ausgabe, Status und Fehler.
|
||||
- `ssh_execute_script`: Lädt ein vollständiges mehrzeiliges Skript hoch und führt es auf dem Remote-System aus.
|
||||
- (Weitere Tools wie Dateiübertragung kommen in Kürze.)
|
||||
|
||||
Durch die Integration von SSH in Ihre Agenten-Workflows können Sie sicheren Zugriff, Remote-Operationen und Server-Orchestrierung automatisieren – und so DevOps, IT-Automatisierung und benutzerdefinierte Remote-Verwaltung rationalisieren, alles innerhalb von Sim.
|
||||
{/* MANUAL-CONTENT-END */}
|
||||
|
||||
## Nutzungsanleitung
|
||||
|
||||
Führen Sie Befehle aus, übertragen Sie Dateien und verwalten Sie Remote-Server über SSH. Unterstützt Passwort- und Private-Key-Authentifizierung für sicheren Serverzugriff.
|
||||
|
||||
## Tools
|
||||
|
||||
### `ssh_execute_command`
|
||||
|
||||
Einen Shell-Befehl auf einem Remote-SSH-Server ausführen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `host` | string | Ja | SSH-Server-Hostname oder IP-Adresse |
|
||||
| `port` | number | Ja | SSH-Server-Port \(Standard: 22\) |
|
||||
| `username` | string | Ja | SSH-Benutzername |
|
||||
| `password` | string | Nein | Passwort für die Authentifizierung \(wenn kein Private Key verwendet wird\) |
|
||||
| `privateKey` | string | Nein | Private Key für die Authentifizierung \(OpenSSH-Format\) |
|
||||
| `passphrase` | string | Nein | Passphrase für verschlüsselten Private Key |
|
||||
| `command` | string | Ja | Shell-Befehl, der auf dem Remote-Server ausgeführt werden soll |
|
||||
| `workingDirectory` | string | Nein | Arbeitsverzeichnis für die Befehlsausführung |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `stdout` | string | Standardausgabe des Befehls |
|
||||
| `stderr` | string | Standardfehlerausgabe |
|
||||
| `exitCode` | number | Exit-Code des Befehls |
|
||||
| `success` | boolean | Ob der Befehl erfolgreich war (Exit-Code 0) |
|
||||
| `message` | string | Statusmeldung des Vorgangs |
|
||||
|
||||
### `ssh_execute_script`
|
||||
|
||||
Ein mehrzeiliges Skript auf einem entfernten SSH-Server hochladen und ausführen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `host` | string | Ja | SSH-Server-Hostname oder IP-Adresse |
|
||||
| `port` | number | Ja | SSH-Server-Port (Standard: 22) |
|
||||
| `username` | string | Ja | SSH-Benutzername |
|
||||
| `password` | string | Nein | Passwort für die Authentifizierung (falls kein privater Schlüssel verwendet wird) |
|
||||
| `privateKey` | string | Nein | Privater Schlüssel für die Authentifizierung (OpenSSH-Format) |
|
||||
| `passphrase` | string | Nein | Passphrase für verschlüsselten privaten Schlüssel |
|
||||
| `script` | string | Ja | Skriptinhalt zur Ausführung (bash, python, etc.) |
|
||||
| `interpreter` | string | Nein | Skript-Interpreter (Standard: /bin/bash) |
|
||||
| `workingDirectory` | string | Nein | Arbeitsverzeichnis für die Skriptausführung |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `stdout` | string | Standardausgabe des Skripts |
|
||||
| `stderr` | string | Standardfehlerausgabe |
|
||||
| `exitCode` | number | Exit-Code des Skripts |
|
||||
| `success` | boolean | Ob das Skript erfolgreich war (Exit-Code 0) |
|
||||
| `scriptPath` | string | Temporärer Pfad, wohin das Skript hochgeladen wurde |
|
||||
| `message` | string | Statusmeldung des Vorgangs |
|
||||
|
||||
### `ssh_check_command_exists`
|
||||
|
||||
Überprüfen, ob ein Befehl/Programm auf dem entfernten SSH-Server existiert
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `host` | string | Ja | SSH-Server-Hostname oder IP-Adresse |
|
||||
| `port` | number | Ja | SSH-Server-Port \(Standard: 22\) |
|
||||
| `username` | string | Ja | SSH-Benutzername |
|
||||
| `password` | string | Nein | Passwort für die Authentifizierung \(wenn kein privater Schlüssel verwendet wird\) |
|
||||
| `privateKey` | string | Nein | Privater Schlüssel für die Authentifizierung \(OpenSSH-Format\) |
|
||||
| `passphrase` | string | Nein | Passphrase für verschlüsselten privaten Schlüssel |
|
||||
| `commandName` | string | Ja | Zu überprüfender Befehlsname \(z.B. docker, git, python3\) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `commandExists` | boolean | Ob der Befehl existiert |
|
||||
| `commandPath` | string | Vollständiger Pfad zum Befehl \(falls gefunden\) |
|
||||
| `version` | string | Versionsinformation des Befehls \(falls zutreffend\) |
|
||||
| `message` | string | Statusmeldung der Operation |
|
||||
|
||||
### `ssh_upload_file`
|
||||
|
||||
Eine Datei auf einen entfernten SSH-Server hochladen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `host` | string | Ja | SSH-Server-Hostname oder IP-Adresse |
|
||||
| `port` | number | Ja | SSH-Server-Port \(Standard: 22\) |
|
||||
| `username` | string | Ja | SSH-Benutzername |
|
||||
| `password` | string | Nein | Passwort für die Authentifizierung \(wenn kein privater Schlüssel verwendet wird\) |
|
||||
| `privateKey` | string | Nein | Privater Schlüssel für die Authentifizierung \(OpenSSH-Format\) |
|
||||
| `passphrase` | string | Nein | Passphrase für verschlüsselten privaten Schlüssel |
|
||||
| `fileContent` | string | Ja | Hochzuladender Dateiinhalt \(base64-kodiert für Binärdateien\) |
|
||||
| `fileName` | string | Ja | Name der hochzuladenden Datei |
|
||||
| `remotePath` | string | Ja | Zielpfad auf dem entfernten Server |
|
||||
| `permissions` | string | Nein | Dateiberechtigungen \(z.B. 0644\) |
|
||||
| `overwrite` | boolean | Nein | Ob bestehende Dateien überschrieben werden sollen \(Standard: true\) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `uploaded` | boolean | Ob die Datei erfolgreich hochgeladen wurde |
|
||||
| `remotePath` | string | Endgültiger Pfad auf dem Remote-Server |
|
||||
| `size` | number | Dateigröße in Bytes |
|
||||
| `message` | string | Statusmeldung des Vorgangs |
|
||||
|
||||
### `ssh_download_file`
|
||||
|
||||
Eine Datei von einem Remote-SSH-Server herunterladen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `host` | string | Ja | SSH-Server-Hostname oder IP-Adresse |
|
||||
| `port` | number | Ja | SSH-Server-Port \(Standard: 22\) |
|
||||
| `username` | string | Ja | SSH-Benutzername |
|
||||
| `password` | string | Nein | Passwort für die Authentifizierung \(wenn kein privater Schlüssel verwendet wird\) |
|
||||
| `privateKey` | string | Nein | Privater Schlüssel für die Authentifizierung \(OpenSSH-Format\) |
|
||||
| `passphrase` | string | Nein | Passphrase für verschlüsselten privaten Schlüssel |
|
||||
| `remotePath` | string | Ja | Pfad der Datei auf dem Remote-Server |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `downloaded` | boolean | Ob die Datei erfolgreich heruntergeladen wurde |
|
||||
| `fileContent` | string | Dateiinhalt \(base64-kodiert für Binärdateien\) |
|
||||
| `fileName` | string | Name der heruntergeladenen Datei |
|
||||
| `remotePath` | string | Quellpfad auf dem Remote-Server |
|
||||
| `size` | number | Dateigröße in Bytes |
|
||||
| `message` | string | Statusmeldung des Vorgangs |
|
||||
|
||||
### `ssh_list_directory`
|
||||
|
||||
Dateien und Verzeichnisse in einem Remote-Verzeichnis auflisten
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `host` | string | Ja | SSH-Server-Hostname oder IP-Adresse |
|
||||
| `port` | number | Ja | SSH-Server-Port \(Standard: 22\) |
|
||||
| `username` | string | Ja | SSH-Benutzername |
|
||||
| `password` | string | Nein | Passwort für die Authentifizierung \(wenn kein privater Schlüssel verwendet wird\) |
|
||||
| `privateKey` | string | Nein | Privater Schlüssel für die Authentifizierung \(OpenSSH-Format\) |
|
||||
| `passphrase` | string | Nein | Passphrase für verschlüsselten privaten Schlüssel |
|
||||
| `path` | string | Ja | Remote-Verzeichnispfad zum Auflisten |
|
||||
| `detailed` | boolean | Nein | Dateidetails einschließen \(Größe, Berechtigungen, Änderungsdatum\) |
|
||||
| `recursive` | boolean | Nein | Unterverzeichnisse rekursiv auflisten \(Standard: false\) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `entries` | array | Array von Datei- und Verzeichniseinträgen |
|
||||
|
||||
### `ssh_check_file_exists`
|
||||
|
||||
Überprüfen, ob eine Datei oder ein Verzeichnis auf dem Remote-SSH-Server existiert
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `host` | string | Ja | SSH-Server-Hostname oder IP-Adresse |
|
||||
| `port` | number | Ja | SSH-Server-Port \(Standard: 22\) |
|
||||
| `username` | string | Ja | SSH-Benutzername |
|
||||
| `password` | string | Nein | Passwort für die Authentifizierung \(wenn kein privater Schlüssel verwendet wird\) |
|
||||
| `privateKey` | string | Nein | Privater Schlüssel für die Authentifizierung \(OpenSSH-Format\) |
|
||||
| `passphrase` | string | Nein | Passphrase für verschlüsselten privaten Schlüssel |
|
||||
| `path` | string | Ja | Remote-Datei- oder Verzeichnispfad zur Überprüfung |
|
||||
| `type` | string | Nein | Erwarteter Typ: Datei, Verzeichnis oder beliebig \(Standard: beliebig\) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `exists` | boolean | Ob der Pfad existiert |
|
||||
| `type` | string | Typ des Pfads (Datei, Verzeichnis, Symlink, nicht_gefunden) |
|
||||
| `size` | number | Dateigröße, wenn es eine Datei ist |
|
||||
| `permissions` | string | Dateiberechtigungen (z.B. 0755) |
|
||||
| `modified` | string | Zeitstempel der letzten Änderung |
|
||||
| `message` | string | Statusmeldung des Vorgangs |
|
||||
|
||||
### `ssh_create_directory`
|
||||
|
||||
Erstellt ein Verzeichnis auf dem entfernten SSH-Server
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `host` | string | Ja | SSH-Server-Hostname oder IP-Adresse |
|
||||
| `port` | number | Ja | SSH-Server-Port (Standard: 22) |
|
||||
| `username` | string | Ja | SSH-Benutzername |
|
||||
| `password` | string | Nein | Passwort für die Authentifizierung (wenn kein privater Schlüssel verwendet wird) |
|
||||
| `privateKey` | string | Nein | Privater Schlüssel für die Authentifizierung (OpenSSH-Format) |
|
||||
| `passphrase` | string | Nein | Passphrase für verschlüsselten privaten Schlüssel |
|
||||
| `path` | string | Ja | Verzeichnispfad zum Erstellen |
|
||||
| `recursive` | boolean | Nein | Übergeordnete Verzeichnisse erstellen, wenn sie nicht existieren (Standard: true) |
|
||||
| `permissions` | string | Nein | Verzeichnisberechtigungen (Standard: 0755) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `created` | boolean | Ob das Verzeichnis erfolgreich erstellt wurde |
|
||||
| `remotePath` | string | Erstellter Verzeichnispfad |
|
||||
| `alreadyExists` | boolean | Ob das Verzeichnis bereits existierte |
|
||||
| `message` | string | Statusmeldung des Vorgangs |
|
||||
|
||||
### `ssh_delete_file`
|
||||
|
||||
Löschen einer Datei oder eines Verzeichnisses vom entfernten SSH-Server
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `host` | string | Ja | SSH-Server-Hostname oder IP-Adresse |
|
||||
| `port` | number | Ja | SSH-Server-Port \(Standard: 22\) |
|
||||
| `username` | string | Ja | SSH-Benutzername |
|
||||
| `password` | string | Nein | Passwort für die Authentifizierung \(wenn kein privater Schlüssel verwendet wird\) |
|
||||
| `privateKey` | string | Nein | Privater Schlüssel für die Authentifizierung \(OpenSSH-Format\) |
|
||||
| `passphrase` | string | Nein | Passphrase für verschlüsselten privaten Schlüssel |
|
||||
| `path` | string | Ja | Zu löschender Pfad |
|
||||
| `recursive` | boolean | Nein | Verzeichnisse rekursiv löschen \(Standard: false\) |
|
||||
| `force` | boolean | Nein | Löschen ohne Bestätigung erzwingen \(Standard: false\) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `deleted` | boolean | Ob der Pfad erfolgreich gelöscht wurde |
|
||||
| `remotePath` | string | Gelöschter Pfad |
|
||||
| `message` | string | Statusmeldung des Vorgangs |
|
||||
|
||||
### `ssh_move_rename`
|
||||
|
||||
Verschieben oder umbenennen einer Datei oder eines Verzeichnisses auf dem entfernten SSH-Server
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `host` | string | Ja | SSH-Server-Hostname oder IP-Adresse |
|
||||
| `port` | number | Ja | SSH-Server-Port \(Standard: 22\) |
|
||||
| `username` | string | Ja | SSH-Benutzername |
|
||||
| `password` | string | Nein | Passwort für die Authentifizierung \(wenn kein privater Schlüssel verwendet wird\) |
|
||||
| `privateKey` | string | Nein | Privater Schlüssel für die Authentifizierung \(OpenSSH-Format\) |
|
||||
| `passphrase` | string | Nein | Passphrase für verschlüsselten privaten Schlüssel |
|
||||
| `sourcePath` | string | Ja | Aktueller Pfad der Datei oder des Verzeichnisses |
|
||||
| `destinationPath` | string | Ja | Neuer Pfad für die Datei oder das Verzeichnis |
|
||||
| `overwrite` | boolean | Nein | Ziel überschreiben, falls es existiert \(Standard: false\) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `moved` | boolean | Ob der Vorgang erfolgreich war |
|
||||
| `sourcePath` | string | Ursprünglicher Pfad |
|
||||
| `destinationPath` | string | Neuer Pfad |
|
||||
| `message` | string | Statusmeldung des Vorgangs |
|
||||
|
||||
### `ssh_get_system_info`
|
||||
|
||||
Systeminformationen vom entfernten SSH-Server abrufen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `host` | string | Ja | SSH-Server-Hostname oder IP-Adresse |
|
||||
| `port` | number | Ja | SSH-Server-Port \(Standard: 22\) |
|
||||
| `username` | string | Ja | SSH-Benutzername |
|
||||
| `password` | string | Nein | Passwort für die Authentifizierung \(wenn kein privater Schlüssel verwendet wird\) |
|
||||
| `privateKey` | string | Nein | Privater Schlüssel für die Authentifizierung \(OpenSSH-Format\) |
|
||||
| `passphrase` | string | Nein | Passphrase für verschlüsselten privaten Schlüssel |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `hostname` | string | Server-Hostname |
|
||||
| `os` | string | Betriebssystem \(z.B. Linux, Darwin\) |
|
||||
| `architecture` | string | CPU-Architektur \(z.B. x64, arm64\) |
|
||||
| `uptime` | number | Systemlaufzeit in Sekunden |
|
||||
| `memory` | json | Speicherinformationen \(gesamt, frei, verwendet\) |
|
||||
| `diskSpace` | json | Festplattenplatzinformationen \(gesamt, frei, verwendet\) |
|
||||
| `message` | string | Statusmeldung des Vorgangs |
|
||||
|
||||
### `ssh_read_file_content`
|
||||
|
||||
Inhalt einer entfernten Datei lesen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `host` | string | Ja | SSH-Server-Hostname oder IP-Adresse |
|
||||
| `port` | number | Ja | SSH-Server-Port \(Standard: 22\) |
|
||||
| `username` | string | Ja | SSH-Benutzername |
|
||||
| `password` | string | Nein | Passwort für die Authentifizierung \(wenn kein privater Schlüssel verwendet wird\) |
|
||||
| `privateKey` | string | Nein | Privater Schlüssel für die Authentifizierung \(OpenSSH-Format\) |
|
||||
| `passphrase` | string | Nein | Passphrase für verschlüsselten privaten Schlüssel |
|
||||
| `path` | string | Ja | Pfad zur entfernten Datei, die gelesen werden soll |
|
||||
| `encoding` | string | Nein | Dateikodierung \(Standard: utf-8\) |
|
||||
| `maxSize` | number | Nein | Maximale zu lesende Dateigröße in MB \(Standard: 10\) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `content` | string | Dateiinhalt als Zeichenfolge |
|
||||
| `size` | number | Dateigröße in Bytes |
|
||||
| `lines` | number | Anzahl der Zeilen in der Datei |
|
||||
| `remotePath` | string | Pfad zur entfernten Datei |
|
||||
| `message` | string | Statusmeldung des Vorgangs |
|
||||
|
||||
### `ssh_write_file_content`
|
||||
|
||||
Inhalt in eine entfernte Datei schreiben oder anhängen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `host` | string | Ja | SSH-Server-Hostname oder IP-Adresse |
|
||||
| `port` | number | Ja | SSH-Server-Port \(Standard: 22\) |
|
||||
| `username` | string | Ja | SSH-Benutzername |
|
||||
| `password` | string | Nein | Passwort für die Authentifizierung \(wenn kein privater Schlüssel verwendet wird\) |
|
||||
| `privateKey` | string | Nein | Privater Schlüssel für die Authentifizierung \(OpenSSH-Format\) |
|
||||
| `passphrase` | string | Nein | Passphrase für verschlüsselten privaten Schlüssel |
|
||||
| `path` | string | Ja | Pfad zur entfernten Datei, in die geschrieben werden soll |
|
||||
| `content` | string | Ja | Inhalt, der in die Datei geschrieben werden soll |
|
||||
| `mode` | string | Nein | Schreibmodus: überschreiben, anhängen oder erstellen \(Standard: überschreiben\) |
|
||||
| `permissions` | string | Nein | Dateiberechtigungen \(z.B. 0644\) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `written` | boolean | Ob die Datei erfolgreich geschrieben wurde |
|
||||
| `remotePath` | string | Dateipfad |
|
||||
| `size` | number | Endgültige Dateigröße in Bytes |
|
||||
| `message` | string | Statusmeldung der Operation |
|
||||
|
||||
## Hinweise
|
||||
|
||||
- Kategorie: `tools`
|
||||
- Typ: `ssh`
|
||||
566
apps/docs/content/docs/de/tools/wordpress.mdx
Normal file
566
apps/docs/content/docs/de/tools/wordpress.mdx
Normal file
@@ -0,0 +1,566 @@
|
||||
---
|
||||
title: WordPress
|
||||
description: WordPress-Inhalte verwalten
|
||||
---
|
||||
|
||||
import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
<BlockInfoCard
|
||||
type="wordpress"
|
||||
color="#21759B"
|
||||
/>
|
||||
|
||||
{/* MANUAL-CONTENT-START:intro */}
|
||||
[WordPress](https://wordpress.org/) ist das weltweit führende Open-Source-Content-Management-System, das es einfach macht, Websites, Blogs und alle Arten von Online-Inhalten zu veröffentlichen und zu verwalten. Mit WordPress können Sie Beiträge oder Seiten erstellen und aktualisieren, Ihre Inhalte mit Kategorien und Schlagwörtern organisieren, Mediendateien verwalten, Kommentare moderieren und Benutzerkonten verwalten – so können Sie alles von persönlichen Blogs bis hin zu komplexen Unternehmenswebsites betreiben.
|
||||
|
||||
Die Integration von Sim mit WordPress ermöglicht es Ihren Agenten, wesentliche Website-Aufgaben zu automatisieren. Sie können programmatisch neue Blogbeiträge mit spezifischen Titeln, Inhalten, Kategorien, Schlagwörtern und Hauptbildern erstellen. Das Aktualisieren bestehender Beiträge – wie das Ändern von Inhalten, Titeln oder Veröffentlichungsstatus – ist unkompliziert. Sie können Inhalte auch veröffentlichen oder als Entwürfe speichern, statische Seiten verwalten, mit Medien-Uploads arbeiten, Kommentare überwachen und Inhalte relevanten Organisationstaxonomien zuweisen.
|
||||
|
||||
Durch die Verbindung von WordPress mit Ihren Automatisierungen ermöglicht Sim Ihren Agenten, die Veröffentlichung von Inhalten, redaktionelle Arbeitsabläufe und die tägliche Website-Verwaltung zu optimieren – so bleibt Ihre Website ohne manuellen Aufwand aktuell, organisiert und sicher.
|
||||
{/* MANUAL-CONTENT-END */}
|
||||
|
||||
## Nutzungsanleitung
|
||||
|
||||
Integrieren Sie WordPress, um Beiträge, Seiten, Medien, Kommentare, Kategorien, Schlagwörter und Benutzer zu erstellen, zu aktualisieren und zu verwalten. Unterstützt WordPress.com-Websites über OAuth und selbst gehostete WordPress-Websites mit Anwendungspasswort-Authentifizierung.
|
||||
|
||||
## Tools
|
||||
|
||||
### `wordpress_create_post`
|
||||
|
||||
Einen neuen Blogbeitrag in WordPress.com erstellen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `siteId` | string | Ja | WordPress.com-Site-ID oder Domain \(z.B. 12345678 oder meineseite.wordpress.com\) |
|
||||
| `title` | string | Ja | Beitragstitel |
|
||||
| `content` | string | Nein | Beitragsinhalt \(HTML oder Klartext\) |
|
||||
| `status` | string | Nein | Beitragsstatus: publish, draft, pending, private oder future |
|
||||
| `excerpt` | string | Nein | Beitragsauszug |
|
||||
| `categories` | string | Nein | Kommagetrennte Kategorie-IDs |
|
||||
| `tags` | string | Nein | Kommagetrennte Schlagwort-IDs |
|
||||
| `featuredMedia` | number | Nein | Medien-ID des Hauptbildes |
|
||||
| `slug` | string | Nein | URL-Slug für den Beitrag |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `post` | object | Der erstellte Beitrag |
|
||||
|
||||
### `wordpress_update_post`
|
||||
|
||||
Aktualisieren eines vorhandenen Blog-Beitrags in WordPress.com
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `siteId` | string | Ja | WordPress.com-Site-ID oder Domain \(z.B. 12345678 oder mysite.wordpress.com\) |
|
||||
| `postId` | number | Ja | Die ID des zu aktualisierenden Beitrags |
|
||||
| `title` | string | Nein | Beitragstitel |
|
||||
| `content` | string | Nein | Beitragsinhalt \(HTML oder Klartext\) |
|
||||
| `status` | string | Nein | Beitragsstatus: publish, draft, pending, private oder future |
|
||||
| `excerpt` | string | Nein | Beitragsauszug |
|
||||
| `categories` | string | Nein | Kommagetrennte Kategorie-IDs |
|
||||
| `tags` | string | Nein | Kommagetrennte Tag-IDs |
|
||||
| `featuredMedia` | number | Nein | Medien-ID des Beitragsbilds |
|
||||
| `slug` | string | Nein | URL-Slug für den Beitrag |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `post` | object | Der aktualisierte Beitrag |
|
||||
|
||||
### `wordpress_delete_post`
|
||||
|
||||
Löschen eines Blog-Beitrags von WordPress.com
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `siteId` | string | Ja | WordPress.com-Site-ID oder Domain \(z.B. 12345678 oder mysite.wordpress.com\) |
|
||||
| `postId` | number | Ja | Die ID des zu löschenden Beitrags |
|
||||
| `force` | boolean | Nein | Papierkorb umgehen und dauerhaft löschen erzwingen |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `deleted` | boolean | Gibt an, ob der Beitrag gelöscht wurde |
|
||||
| `post` | object | Der gelöschte Beitrag |
|
||||
|
||||
### `wordpress_get_post`
|
||||
|
||||
Einen einzelnen Blog-Beitrag von WordPress.com anhand der ID abrufen
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `siteId` | string | Ja | WordPress.com-Site-ID oder Domain \(z.B. 12345678 oder mysite.wordpress.com\) |
|
||||
| `postId` | number | Ja | Die ID des abzurufenden Beitrags |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `post` | object | Der abgerufene Beitrag |
|
||||
|
||||
### `wordpress_list_posts`
|
||||
|
||||
Blog-Beiträge von WordPress.com mit optionalen Filtern auflisten
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `siteId` | string | Ja | WordPress.com-Site-ID oder Domain \(z.B. 12345678 oder mysite.wordpress.com\) |
|
||||
| `perPage` | number | Nein | Anzahl der Beiträge pro Seite \(Standard: 10, max: 100\) |
|
||||
| `page` | number | Nein | Seitennummer für Paginierung |
|
||||
| `status` | string | Nein | Beitragsstatus-Filter: publish, draft, pending, private |
|
||||
| `author` | number | Nein | Nach Autor-ID filtern |
|
||||
| `categories` | string | Nein | Kommagetrennte Kategorie-IDs zum Filtern |
|
||||
| `tags` | string | Nein | Kommagetrennte Tag-IDs zum Filtern |
|
||||
| `search` | string | Nein | Suchbegriff zum Filtern von Beiträgen |
|
||||
| `orderBy` | string | Nein | Sortieren nach Feld: date, id, title, slug, modified |
|
||||
| `order` | string | Nein | Sortierrichtung: asc oder desc |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `posts` | array | Liste der Beiträge |
|
||||
|
||||
### `wordpress_create_page`
|
||||
|
||||
Eine neue Seite in WordPress.com erstellen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `siteId` | string | Ja | WordPress.com-Site-ID oder Domain \(z.B. 12345678 oder meinseite.wordpress.com\) |
|
||||
| `title` | string | Ja | Seitentitel |
|
||||
| `content` | string | Nein | Seiteninhalt \(HTML oder Klartext\) |
|
||||
| `status` | string | Nein | Seitenstatus: publish, draft, pending, private |
|
||||
| `excerpt` | string | Nein | Seitenauszug |
|
||||
| `parent` | number | Nein | Übergeordnete Seiten-ID für hierarchische Seiten |
|
||||
| `menuOrder` | number | Nein | Reihenfolge im Seitenmenü |
|
||||
| `featuredMedia` | number | Nein | Medien-ID des Beitragsbilds |
|
||||
| `slug` | string | Nein | URL-Slug für die Seite |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `page` | object | Die erstellte Seite |
|
||||
|
||||
### `wordpress_update_page`
|
||||
|
||||
Eine bestehende Seite in WordPress.com aktualisieren
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `siteId` | string | Ja | WordPress.com-Site-ID oder Domain \(z.B. 12345678 oder meinseite.wordpress.com\) |
|
||||
| `pageId` | number | Ja | Die ID der zu aktualisierenden Seite |
|
||||
| `title` | string | Nein | Seitentitel |
|
||||
| `content` | string | Nein | Seiteninhalt \(HTML oder Klartext\) |
|
||||
| `status` | string | Nein | Seitenstatus: publish, draft, pending, private |
|
||||
| `excerpt` | string | Nein | Seitenauszug |
|
||||
| `parent` | number | Nein | Übergeordnete Seiten-ID für hierarchische Seiten |
|
||||
| `menuOrder` | number | Nein | Reihenfolge im Seitenmenü |
|
||||
| `featuredMedia` | number | Nein | Medien-ID des Beitragsbilds |
|
||||
| `slug` | string | Nein | URL-Slug für die Seite |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `page` | object | Die aktualisierte Seite |
|
||||
|
||||
### `wordpress_delete_page`
|
||||
|
||||
Eine Seite von WordPress.com löschen
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `siteId` | string | Ja | WordPress.com-Site-ID oder Domain \(z.B. 12345678 oder mysite.wordpress.com\) |
|
||||
| `pageId` | number | Ja | Die ID der zu löschenden Seite |
|
||||
| `force` | boolean | Nein | Papierkorb umgehen und dauerhaft löschen erzwingen |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `deleted` | boolean | Ob die Seite gelöscht wurde |
|
||||
| `page` | object | Die gelöschte Seite |
|
||||
|
||||
### `wordpress_get_page`
|
||||
|
||||
Eine einzelne Seite von WordPress.com anhand der ID abrufen
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `siteId` | string | Ja | WordPress.com-Site-ID oder Domain \(z.B. 12345678 oder mysite.wordpress.com\) |
|
||||
| `pageId` | number | Ja | Die ID der abzurufenden Seite |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `page` | object | Die abgerufene Seite |
|
||||
|
||||
### `wordpress_list_pages`
|
||||
|
||||
Seiten von WordPress.com mit optionalen Filtern auflisten
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `siteId` | string | Ja | WordPress.com-Site-ID oder Domain \(z.B. 12345678 oder mysite.wordpress.com\) |
|
||||
| `perPage` | number | Nein | Anzahl der Seiten pro Anfrage \(Standard: 10, max: 100\) |
|
||||
| `page` | number | Nein | Seitennummer für Paginierung |
|
||||
| `status` | string | Nein | Seitenstatus-Filter: publish, draft, pending, private |
|
||||
| `parent` | number | Nein | Nach übergeordneter Seiten-ID filtern |
|
||||
| `search` | string | Nein | Suchbegriff zum Filtern von Seiten |
|
||||
| `orderBy` | string | Nein | Sortieren nach Feld: date, id, title, slug, modified, menu_order |
|
||||
| `order` | string | Nein | Sortierrichtung: asc oder desc |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `pages` | array | Liste der Seiten |
|
||||
|
||||
### `wordpress_upload_media`
|
||||
|
||||
Eine Mediendatei (Bild, Video, Dokument) zu WordPress.com hochladen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| 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\) |
|
||||
| `title` | string | Nein | Medientitel |
|
||||
| `caption` | string | Nein | Medienunterschrift |
|
||||
| `altText` | string | Nein | Alternativer Text für Barrierefreiheit |
|
||||
| `description` | string | Nein | Medienbeschreibung |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `media` | object | Das hochgeladene Medienelement |
|
||||
|
||||
### `wordpress_get_media`
|
||||
|
||||
Ein einzelnes Medienelement von WordPress.com anhand der ID abrufen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `siteId` | string | Ja | WordPress.com-Website-ID oder Domain \(z.B. 12345678 oder meinwebsite.wordpress.com\) |
|
||||
| `mediaId` | number | Ja | Die ID des abzurufenden Medienelements |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `media` | object | Das abgerufene Medienelement |
|
||||
|
||||
### `wordpress_list_media`
|
||||
|
||||
Medienelemente aus der WordPress.com-Medienbibliothek auflisten
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `siteId` | string | Ja | WordPress.com-Site-ID oder Domain \(z.B. 12345678 oder mysite.wordpress.com\) |
|
||||
| `perPage` | number | Nein | Anzahl der Medienelemente pro Anfrage \(Standard: 10, max: 100\) |
|
||||
| `page` | number | Nein | Seitenzahl für Paginierung |
|
||||
| `search` | string | Nein | Suchbegriff zum Filtern von Medien |
|
||||
| `mediaType` | string | Nein | Nach Medientyp filtern: image, video, audio, application |
|
||||
| `mimeType` | string | Nein | Nach spezifischem MIME-Typ filtern \(z.B. image/jpeg\) |
|
||||
| `orderBy` | string | Nein | Sortieren nach Feld: date, id, title, slug |
|
||||
| `order` | string | Nein | Sortierrichtung: asc oder desc |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `media` | array | Liste der Medienelemente |
|
||||
|
||||
### `wordpress_delete_media`
|
||||
|
||||
Ein Medienelement von WordPress.com löschen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `siteId` | string | Ja | WordPress.com-Site-ID oder Domain \(z.B. 12345678 oder mysite.wordpress.com\) |
|
||||
| `mediaId` | number | Ja | Die ID des zu löschenden Medienelements |
|
||||
| `force` | boolean | Nein | Erzwungenes Löschen \(Medien haben keinen Papierkorb, daher ist das Löschen permanent\) |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `deleted` | boolean | Ob das Medium gelöscht wurde |
|
||||
| `media` | object | Das gelöschte Medienelement |
|
||||
|
||||
### `wordpress_create_comment`
|
||||
|
||||
Einen neuen Kommentar zu einem WordPress.com-Beitrag erstellen
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `siteId` | string | Ja | WordPress.com-Site-ID oder Domain \(z.B. 12345678 oder mysite.wordpress.com\) |
|
||||
| `postId` | number | Ja | Die ID des Beitrags, der kommentiert werden soll |
|
||||
| `content` | string | Ja | Kommentarinhalt |
|
||||
| `parent` | number | Nein | Übergeordnete Kommentar-ID für Antworten |
|
||||
| `authorName` | string | Nein | Anzeigename des Kommentarautors |
|
||||
| `authorEmail` | string | Nein | E-Mail des Kommentarautors |
|
||||
| `authorUrl` | string | Nein | URL des Kommentarautors |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `comment` | object | Der erstellte Kommentar |
|
||||
|
||||
### `wordpress_list_comments`
|
||||
|
||||
Kommentare von WordPress.com mit optionalen Filtern auflisten
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `siteId` | string | Ja | WordPress.com-Site-ID oder Domain \(z.B. 12345678 oder mysite.wordpress.com\) |
|
||||
| `perPage` | number | Nein | Anzahl der Kommentare pro Anfrage \(Standard: 10, max: 100\) |
|
||||
| `page` | number | Nein | Seitenzahl für Paginierung |
|
||||
| `postId` | number | Nein | Nach Beitrags-ID filtern |
|
||||
| `status` | string | Nein | Nach Kommentarstatus filtern: approved, hold, spam, trash |
|
||||
| `search` | string | Nein | Suchbegriff zum Filtern von Kommentaren |
|
||||
| `orderBy` | string | Nein | Sortieren nach Feld: date, id, parent |
|
||||
| `order` | string | Nein | Sortierrichtung: asc oder desc |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `comments` | array | Liste der Kommentare |
|
||||
|
||||
### `wordpress_update_comment`
|
||||
|
||||
Aktualisieren eines Kommentars in WordPress.com (Inhalt oder Status)
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `siteId` | string | Ja | WordPress.com-Site-ID oder Domain \(z.B. 12345678 oder mysite.wordpress.com\) |
|
||||
| `commentId` | number | Ja | Die ID des zu aktualisierenden Kommentars |
|
||||
| `content` | string | Nein | Aktualisierter Kommentarinhalt |
|
||||
| `status` | string | Nein | Kommentarstatus: approved, hold, spam, trash |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `comment` | object | Der aktualisierte Kommentar |
|
||||
|
||||
### `wordpress_delete_comment`
|
||||
|
||||
Löschen eines Kommentars von WordPress.com
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `siteId` | string | Ja | WordPress.com-Site-ID oder Domain \(z.B. 12345678 oder mysite.wordpress.com\) |
|
||||
| `commentId` | number | Ja | Die ID des zu löschenden Kommentars |
|
||||
| `force` | boolean | Nein | Papierkorb umgehen und dauerhaft löschen erzwingen |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `deleted` | boolean | Ob der Kommentar gelöscht wurde |
|
||||
| `comment` | object | Der gelöschte Kommentar |
|
||||
|
||||
### `wordpress_create_category`
|
||||
|
||||
Erstellen einer neuen Kategorie in WordPress.com
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `siteId` | string | Ja | WordPress.com-Site-ID oder Domain \(z.B. 12345678 oder meinseite.wordpress.com\) |
|
||||
| `name` | string | Ja | Kategoriename |
|
||||
| `description` | string | Nein | Kategoriebeschreibung |
|
||||
| `parent` | number | Nein | Übergeordnete Kategorie-ID für hierarchische Kategorien |
|
||||
| `slug` | string | Nein | URL-Slug für die Kategorie |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `category` | object | Die erstellte Kategorie |
|
||||
|
||||
### `wordpress_list_categories`
|
||||
|
||||
Kategorien von WordPress.com auflisten
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `siteId` | string | Ja | WordPress.com-Site-ID oder Domain \(z.B. 12345678 oder meinseite.wordpress.com\) |
|
||||
| `perPage` | number | Nein | Anzahl der Kategorien pro Anfrage \(Standard: 10, max: 100\) |
|
||||
| `page` | number | Nein | Seitenzahl für Paginierung |
|
||||
| `search` | string | Nein | Suchbegriff zum Filtern von Kategorien |
|
||||
| `order` | string | Nein | Sortierrichtung: asc oder desc |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `categories` | array | Liste der Kategorien |
|
||||
|
||||
### `wordpress_create_tag`
|
||||
|
||||
Einen neuen Tag in WordPress.com erstellen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `siteId` | string | Ja | WordPress.com-Site-ID oder Domain \(z.B. 12345678 oder meinseite.wordpress.com\) |
|
||||
| `name` | string | Ja | Tag-Name |
|
||||
| `description` | string | Nein | Tag-Beschreibung |
|
||||
| `slug` | string | Nein | URL-Slug für den Tag |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `tag` | object | Der erstellte Tag |
|
||||
|
||||
### `wordpress_list_tags`
|
||||
|
||||
Tags von WordPress.com auflisten
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `siteId` | string | Ja | WordPress.com-Site-ID oder Domain \(z.B. 12345678 oder mysite.wordpress.com\) |
|
||||
| `perPage` | number | Nein | Anzahl der Tags pro Anfrage \(Standard: 10, max: 100\) |
|
||||
| `page` | number | Nein | Seitennummer für Paginierung |
|
||||
| `search` | string | Nein | Suchbegriff zum Filtern von Tags |
|
||||
| `order` | string | Nein | Sortierrichtung: asc oder desc |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `tags` | array | Liste der Tags |
|
||||
|
||||
### `wordpress_get_current_user`
|
||||
|
||||
Informationen über den aktuell authentifizierten WordPress.com-Benutzer abrufen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `siteId` | string | Ja | WordPress.com-Site-ID oder Domain \(z.B. 12345678 oder mysite.wordpress.com\) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `user` | object | Der aktuelle Benutzer |
|
||||
|
||||
### `wordpress_list_users`
|
||||
|
||||
Benutzer von WordPress.com auflisten (erfordert Administratorrechte)
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `siteId` | string | Ja | WordPress.com-Site-ID oder Domain \(z.B. 12345678 oder mysite.wordpress.com\) |
|
||||
| `perPage` | number | Nein | Anzahl der Benutzer pro Anfrage \(Standard: 10, max: 100\) |
|
||||
| `page` | number | Nein | Seitennummer für Paginierung |
|
||||
| `search` | string | Nein | Suchbegriff zum Filtern von Benutzern |
|
||||
| `roles` | string | Nein | Kommagetrennte Rollennamen zum Filtern |
|
||||
| `order` | string | Nein | Sortierrichtung: asc oder desc |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `users` | array | Liste der Benutzer |
|
||||
|
||||
### `wordpress_get_user`
|
||||
|
||||
Einen bestimmten Benutzer von WordPress.com anhand der ID abrufen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `siteId` | string | Ja | WordPress.com-Site-ID oder Domain \(z.B. 12345678 oder mysite.wordpress.com\) |
|
||||
| `userId` | number | Ja | Die ID des abzurufenden Benutzers |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `user` | object | Der abgerufene Benutzer |
|
||||
|
||||
### `wordpress_search_content`
|
||||
|
||||
Suche über alle Inhaltstypen in WordPress.com (Beiträge, Seiten, Medien)
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `siteId` | string | Ja | WordPress.com-Site-ID oder Domain \(z.B. 12345678 oder mysite.wordpress.com\) |
|
||||
| `query` | string | Ja | Suchanfrage |
|
||||
| `perPage` | number | Nein | Anzahl der Ergebnisse pro Anfrage \(Standard: 10, max: 100\) |
|
||||
| `page` | number | Nein | Seitenzahl für Paginierung |
|
||||
| `type` | string | Nein | Nach Inhaltstyp filtern: post, page, attachment |
|
||||
| `subtype` | string | Nein | Nach Beitragstyp-Slug filtern \(z.B. post, page\) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `results` | array | Suchergebnisse |
|
||||
|
||||
## Notizen
|
||||
|
||||
- Kategorie: `tools`
|
||||
- Typ: `wordpress`
|
||||
@@ -109,11 +109,14 @@ Ein neues Ticket in Zendesk erstellen mit Unterstützung für benutzerdefinierte
|
||||
| `subdomain` | string | Ja | Ihre Zendesk-Subdomain |
|
||||
| `subject` | string | Nein | Ticket-Betreff \(optional - wird automatisch generiert, wenn nicht angegeben\) |
|
||||
| `description` | string | Ja | Ticket-Beschreibung \(erster Kommentar\) |
|
||||
| `priority` | string | Nein | Priorität \(niedrig, normal, hoch, dringend\) |
|
||||
| `status` | string | Nein | Status \(neu, offen, ausstehend, angehalten, gelöst, geschlossen\) |
|
||||
| `type` | string | Nein | Typ \(problem, vorfall, frage, aufgabe\) |
|
||||
| `priority` | string | Nein | Priorität \(low, normal, high, urgent\) |
|
||||
| `status` | string | Nein | Status \(new, open, pending, hold, solved, closed\) |
|
||||
| `type` | string | Nein | Typ \(problem, incident, question, task\) |
|
||||
| `tags` | string | Nein | Kommagetrennte Tags |
|
||||
| `assigneeId` | string | Nein | Bearbeiter-Benutzer-ID |
|
||||
| `groupId` | string | Nein | Gruppen-ID |
|
||||
| `requesterId` | string | Nein | Anforderer-Benutzer-ID |
|
||||
| `customFields` | string | Nein | Benutzerdefinierte Felder als JSON-Objekt \(z.B. \{"field_id": "value"\}\) |
|
||||
|
||||
#### Output
|
||||
|
||||
|
||||
250
apps/docs/content/docs/de/tools/zoom.mdx
Normal file
250
apps/docs/content/docs/de/tools/zoom.mdx
Normal file
@@ -0,0 +1,250 @@
|
||||
---
|
||||
title: Zoom
|
||||
description: Zoom-Meetings und -Aufzeichnungen erstellen und verwalten
|
||||
---
|
||||
|
||||
import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
<BlockInfoCard
|
||||
type="zoom"
|
||||
color="#2D8CFF"
|
||||
/>
|
||||
|
||||
{/* MANUAL-CONTENT-START:intro */}
|
||||
[Zoom](https://zoom.us/) ist eine führende cloudbasierte Kommunikationsplattform für Videomeetings, Webinare und Online-Zusammenarbeit. Sie ermöglicht Benutzern und Organisationen, Meetings einfach zu planen, zu hosten und zu verwalten und bietet Tools für Bildschirmfreigabe, Chat, Aufzeichnungen und mehr.
|
||||
|
||||
Mit Zoom können Sie:
|
||||
|
||||
- **Meetings planen und verwalten**: Sofortige oder geplante Meetings erstellen, einschließlich wiederkehrender Termine
|
||||
- **Meeting-Optionen konfigurieren**: Meeting-Passwörter festlegen, Warteräume aktivieren und Video/Audio der Teilnehmer steuern
|
||||
- **Einladungen versenden und Details teilen**: Meeting-Einladungen und Informationen zum einfachen Teilen abrufen
|
||||
- **Meeting-Daten abrufen und aktualisieren**: Auf Meeting-Details zugreifen, bestehende Meetings ändern und Einstellungen programmgesteuert verwalten
|
||||
|
||||
In Sim ermöglicht die Zoom-Integration Ihren Agenten die Automatisierung der Planung und Meeting-Verwaltung. Verwenden Sie Tool-Aktionen, um:
|
||||
|
||||
- Neue Meetings mit benutzerdefinierten Einstellungen programmgesteuert zu erstellen
|
||||
- Alle Meetings für einen bestimmten Benutzer (oder sich selbst) aufzulisten
|
||||
- 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.
|
||||
{/* MANUAL-CONTENT-END */}
|
||||
|
||||
## Nutzungsanleitung
|
||||
|
||||
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.
|
||||
|
||||
## Tools
|
||||
|
||||
### `zoom_create_meeting`
|
||||
|
||||
Ein neues Zoom-Meeting erstellen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `userId` | string | Ja | Die Benutzer-ID oder E-Mail-Adresse. Verwenden Sie "me" für den authentifizierten Benutzer. |
|
||||
| `topic` | string | Ja | Meeting-Thema |
|
||||
| `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\) |
|
||||
| `password` | string | Nein | Meeting-Passwort |
|
||||
| `agenda` | string | Nein | Meeting-Agenda |
|
||||
| `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 |
|
||||
| `autoRecording` | string | Nein | Automatische Aufzeichnungseinstellung: local, cloud oder none |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `meeting` | object | Das erstellte Meeting mit allen seinen Eigenschaften |
|
||||
|
||||
### `zoom_list_meetings`
|
||||
|
||||
Alle Meetings eines Zoom-Benutzers auflisten
|
||||
|
||||
#### Input
|
||||
|
||||
| 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) |
|
||||
| `nextPageToken` | string | Nein | Token für Paginierung, um die nächste Ergebnisseite zu erhalten |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `meetings` | array | Liste der Meetings |
|
||||
| `pageInfo` | object | Paginierungsinformationen |
|
||||
|
||||
### `zoom_get_meeting`
|
||||
|
||||
Details eines bestimmten Zoom-Meetings abrufen
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `meetingId` | string | Ja | Die Meeting-ID |
|
||||
| `occurrenceId` | string | Nein | Vorkommnis-ID für wiederkehrende Meetings |
|
||||
| `showPreviousOccurrences` | boolean | Nein | Frühere Vorkommnisse für wiederkehrende Meetings anzeigen |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `meeting` | object | Die Meeting-Details |
|
||||
|
||||
### `zoom_update_meeting`
|
||||
|
||||
Ein bestehendes Zoom-Meeting aktualisieren
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `meetingId` | string | Ja | Die zu aktualisierende Meeting-ID |
|
||||
| `topic` | string | Nein | Meeting-Thema |
|
||||
| `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\) |
|
||||
| `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 |
|
||||
| `joinBeforeHost` | boolean | Nein | Teilnehmern erlauben, vor dem Host beizutreten |
|
||||
| `muteUponEntry` | boolean | Nein | Teilnehmer beim Betreten stummschalten |
|
||||
| `waitingRoom` | boolean | Nein | Warteraum aktivieren |
|
||||
| `autoRecording` | string | Nein | Automatische Aufzeichnungseinstellung: local, cloud oder none |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Ob das Meeting erfolgreich aktualisiert wurde |
|
||||
|
||||
### `zoom_delete_meeting`
|
||||
|
||||
Ein Zoom-Meeting löschen oder abbrechen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| 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 |
|
||||
| `scheduleForReminder` | boolean | Nein | Erinnerungs-E-Mail zur Stornierung an Teilnehmer senden |
|
||||
| `cancelMeetingReminder` | boolean | Nein | Stornierungsmail an Teilnehmer und alternative Hosts senden |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Ob das Meeting erfolgreich gelöscht wurde |
|
||||
|
||||
### `zoom_get_meeting_invitation`
|
||||
|
||||
Abrufen des Einladungstextes für ein Zoom-Meeting
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `meetingId` | string | Ja | Die Meeting-ID |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `invitation` | string | Der Einladungstext für das Meeting |
|
||||
|
||||
### `zoom_list_recordings`
|
||||
|
||||
Alle Cloud-Aufzeichnungen für einen Zoom-Benutzer 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\) |
|
||||
| `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 |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `recordings` | array | Liste der Aufzeichnungen |
|
||||
| `pageInfo` | object | Paginierungsinformationen |
|
||||
|
||||
### `zoom_get_meeting_recordings`
|
||||
|
||||
Alle Aufzeichnungen für ein bestimmtes Zoom-Meeting abrufen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| 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\) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `recording` | object | Die Meeting-Aufzeichnung mit allen Dateien |
|
||||
|
||||
### `zoom_delete_recording`
|
||||
|
||||
Cloud-Aufzeichnungen für ein Zoom-Meeting löschen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `meetingId` | string | Ja | Die Meeting-ID oder Meeting-UUID |
|
||||
| `recordingId` | string | Nein | Spezifische Aufzeichnungsdatei-ID zum Löschen. Wenn nicht angegeben, werden alle Aufzeichnungen gelöscht. |
|
||||
| `action` | string | Nein | Löschaktion: "trash" \(in Papierkorb verschieben\) oder "delete" \(dauerhaft löschen\) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Ob die Aufzeichnung erfolgreich gelöscht wurde |
|
||||
|
||||
### `zoom_list_past_participants`
|
||||
|
||||
Teilnehmer eines vergangenen Zoom-Meetings auflisten
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `meetingId` | string | Ja | Die vergangene Meeting-ID oder UUID |
|
||||
| `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 |
|
||||
| `pageInfo` | object | Paginierungsinformationen |
|
||||
|
||||
## Hinweise
|
||||
|
||||
- Kategorie: `tools`
|
||||
- Typ: `zoom`
|
||||
@@ -30,15 +30,19 @@ Verwende den Start-Block für alles, was aus dem Editor, deploy-to-API oder depl
|
||||
<Card title="Schedule" href="/triggers/schedule">
|
||||
Cron- oder intervallbasierte Ausführung
|
||||
</Card>
|
||||
<Card title="RSS Feed" href="/triggers/rss">
|
||||
RSS- und Atom-Feeds auf neue Inhalte überwachen
|
||||
</Card>
|
||||
</Cards>
|
||||
|
||||
## Schneller Vergleich
|
||||
|
||||
| Trigger | Startbedingung |
|
||||
|---------|-----------------|
|
||||
| **Start** | Editor-Ausführungen, deploy-to-API Anfragen oder Chat-Nachrichten |
|
||||
| **Start** | Editor-Ausführungen, Deploy-to-API-Anfragen oder Chat-Nachrichten |
|
||||
| **Schedule** | Timer, der im Schedule-Block verwaltet wird |
|
||||
| **Webhook** | Bei eingehender HTTP-Anfrage |
|
||||
| **RSS Feed** | Neues Element im Feed veröffentlicht |
|
||||
|
||||
> Der Start-Block stellt immer `input`, `conversationId` und `files` Felder bereit. Füge benutzerdefinierte Felder zum Eingabeformat für zusätzliche strukturierte Daten hinzu.
|
||||
|
||||
|
||||
49
apps/docs/content/docs/de/triggers/rss.mdx
Normal file
49
apps/docs/content/docs/de/triggers/rss.mdx
Normal file
@@ -0,0 +1,49 @@
|
||||
---
|
||||
title: RSS-Feed
|
||||
---
|
||||
|
||||
import { Callout } from 'fumadocs-ui/components/callout'
|
||||
import { Image } from '@/components/ui/image'
|
||||
|
||||
Der RSS-Feed-Block überwacht RSS- und Atom-Feeds – wenn neue Einträge veröffentlicht werden, wird Ihr Workflow automatisch ausgelöst.
|
||||
|
||||
<div className="flex justify-center">
|
||||
<Image
|
||||
src="/static/blocks/rss.png"
|
||||
alt="RSS-Feed-Block"
|
||||
width={500}
|
||||
height={400}
|
||||
className="my-6"
|
||||
/>
|
||||
</div>
|
||||
|
||||
## Konfiguration
|
||||
|
||||
1. **RSS-Feed-Block hinzufügen** - Ziehen Sie den RSS-Feed-Block, um Ihren Workflow zu starten
|
||||
2. **Feed-URL eingeben** - Fügen Sie die URL eines beliebigen RSS- oder Atom-Feeds ein
|
||||
3. **Bereitstellen** - Stellen Sie Ihren Workflow bereit, um das Polling zu aktivieren
|
||||
|
||||
Nach der Bereitstellung wird der Feed jede Minute auf neue Einträge überprüft.
|
||||
|
||||
## Ausgabefelder
|
||||
|
||||
| Feld | Typ | Beschreibung |
|
||||
|-------|------|-------------|
|
||||
| `title` | string | Titel des Eintrags |
|
||||
| `link` | string | Link des Eintrags |
|
||||
| `pubDate` | string | Veröffentlichungsdatum |
|
||||
| `item` | object | Rohdaten des Eintrags mit allen Feldern |
|
||||
| `feed` | object | Rohdaten der Feed-Metadaten |
|
||||
|
||||
Greifen Sie direkt auf zugeordnete Felder zu (`<rss.title>`) oder verwenden Sie die Rohobjekte für beliebige Felder (`<rss.item.author>`, `<rss.feed.language>`).
|
||||
|
||||
## Anwendungsfälle
|
||||
|
||||
- **Inhaltsüberwachung** - Verfolgen Sie Blogs, Nachrichtenseiten oder Updates von Wettbewerbern
|
||||
- **Podcast-Automatisierung** - Lösen Sie Workflows aus, wenn neue Episoden erscheinen
|
||||
- **Release-Tracking** - Überwachen Sie GitHub-Releases, Changelogs oder Produkt-Updates
|
||||
- **Social-Media-Aggregation** - Sammeln Sie Inhalte von Plattformen, die RSS-Feeds anbieten
|
||||
|
||||
<Callout>
|
||||
RSS-Trigger werden nur für Einträge ausgelöst, die nach dem Speichern des Triggers veröffentlicht wurden. Bestehende Feed-Einträge werden nicht verarbeitet.
|
||||
</Callout>
|
||||
@@ -66,16 +66,16 @@ Um Umgebungsvariablen in Ihren Workflows zu referenzieren, verwenden Sie die `{{
|
||||
height={350}
|
||||
/>
|
||||
|
||||
## Variablen-Präzedenz
|
||||
## Wie Variablen aufgelöst werden
|
||||
|
||||
Wenn Sie sowohl persönliche als auch Workspace-Variablen mit demselben Namen haben:
|
||||
**Workspace-Variablen haben immer Vorrang** vor persönlichen Variablen, unabhängig davon, wer den Workflow ausführt.
|
||||
|
||||
1. **Workspace-Variablen haben Vorrang** vor persönlichen Variablen
|
||||
2. Dies verhindert Namenskonflikte und gewährleistet ein konsistentes Verhalten in Team-Workflows
|
||||
3. Wenn eine Workspace-Variable existiert, wird die persönliche Variable mit demselben Namen ignoriert
|
||||
Wenn keine Workspace-Variable für einen Schlüssel existiert, werden persönliche Variablen verwendet:
|
||||
- **Manuelle Ausführungen (UI)**: Ihre persönlichen Variablen
|
||||
- **Automatisierte Ausführungen (API, Webhook, Zeitplan, bereitgestellter Chat)**: Persönliche Variablen des Workflow-Besitzers
|
||||
|
||||
<Callout type="warning">
|
||||
Wählen Sie Variablennamen sorgfältig, um unbeabsichtigte Überschreibungen zu vermeiden. Erwägen Sie, persönliche Variablen mit Ihren Initialen oder Workspace-Variablen mit dem Projektnamen zu versehen.
|
||||
<Callout type="info">
|
||||
Persönliche Variablen eignen sich am besten zum Testen. Verwenden Sie Workspace-Variablen für Produktions-Workflows.
|
||||
</Callout>
|
||||
|
||||
## Sicherheits-Best-Practices
|
||||
|
||||
@@ -135,7 +135,7 @@ Function (Process) → Condition (account_type === 'enterprise') → Advanced or
|
||||
## Best Practices
|
||||
|
||||
- **Order conditions correctly**: Place more specific conditions before general ones to ensure specific logic takes precedence over fallbacks
|
||||
- **Include a default condition**: Add a catch-all condition (`true`) as the last condition to handle unmatched cases and prevent workflow execution from getting stuck
|
||||
- **Use the else branch when needed**: If no conditions match and the else branch is not connected, the workflow branch will end gracefully. Connect the else branch if you need a fallback path for unmatched cases
|
||||
- **Keep expressions simple**: Use clear, straightforward boolean expressions for better readability and easier debugging
|
||||
- **Document your conditions**: Add descriptions to explain the purpose of each condition for better team collaboration and maintenance
|
||||
- **Test edge cases**: Verify conditions handle boundary values correctly by testing with values at the edges of your condition ranges
|
||||
|
||||
@@ -27,14 +27,16 @@ All API responses include information about your workflow execution limits and u
|
||||
"limits": {
|
||||
"workflowExecutionRateLimit": {
|
||||
"sync": {
|
||||
"limit": 60, // Max sync workflow executions per minute
|
||||
"remaining": 58, // Remaining sync workflow executions
|
||||
"resetAt": "..." // When the window resets
|
||||
"requestsPerMinute": 60, // Sustained rate limit per minute
|
||||
"maxBurst": 120, // Maximum burst capacity
|
||||
"remaining": 118, // Current tokens available (up to maxBurst)
|
||||
"resetAt": "..." // When tokens next refill
|
||||
},
|
||||
"async": {
|
||||
"limit": 60, // Max async workflow executions per minute
|
||||
"remaining": 59, // Remaining async workflow executions
|
||||
"resetAt": "..." // When the window resets
|
||||
"requestsPerMinute": 200, // Sustained rate limit per minute
|
||||
"maxBurst": 400, // Maximum burst capacity
|
||||
"remaining": 398, // Current tokens available
|
||||
"resetAt": "..." // When tokens next refill
|
||||
}
|
||||
},
|
||||
"usage": {
|
||||
@@ -46,7 +48,7 @@ All API responses include information about your workflow execution limits and u
|
||||
}
|
||||
```
|
||||
|
||||
**Note:** The rate limits in the response body are for workflow executions. The rate limits for calling this API endpoint are in the response headers (`X-RateLimit-*`).
|
||||
**Note:** Rate limits use a token bucket algorithm. `remaining` can exceed `requestsPerMinute` up to `maxBurst` when you haven't used your full allowance recently, allowing for burst traffic. The rate limits in the response body are for workflow executions. The rate limits for calling this API endpoint are in the response headers (`X-RateLimit-*`).
|
||||
|
||||
### Query Logs
|
||||
|
||||
@@ -108,13 +110,15 @@ Query workflow execution logs with extensive filtering options.
|
||||
"limits": {
|
||||
"workflowExecutionRateLimit": {
|
||||
"sync": {
|
||||
"limit": 60,
|
||||
"remaining": 58,
|
||||
"requestsPerMinute": 60,
|
||||
"maxBurst": 120,
|
||||
"remaining": 118,
|
||||
"resetAt": "2025-01-01T12:35:56.789Z"
|
||||
},
|
||||
"async": {
|
||||
"limit": 60,
|
||||
"remaining": 59,
|
||||
"requestsPerMinute": 200,
|
||||
"maxBurst": 400,
|
||||
"remaining": 398,
|
||||
"resetAt": "2025-01-01T12:35:56.789Z"
|
||||
}
|
||||
},
|
||||
@@ -184,13 +188,15 @@ Retrieve detailed information about a specific log entry.
|
||||
"limits": {
|
||||
"workflowExecutionRateLimit": {
|
||||
"sync": {
|
||||
"limit": 60,
|
||||
"remaining": 58,
|
||||
"requestsPerMinute": 60,
|
||||
"maxBurst": 120,
|
||||
"remaining": 118,
|
||||
"resetAt": "2025-01-01T12:35:56.789Z"
|
||||
},
|
||||
"async": {
|
||||
"limit": 60,
|
||||
"remaining": 59,
|
||||
"requestsPerMinute": 200,
|
||||
"maxBurst": 400,
|
||||
"remaining": 398,
|
||||
"resetAt": "2025-01-01T12:35:56.789Z"
|
||||
}
|
||||
},
|
||||
@@ -240,32 +246,78 @@ Retrieve execution details including the workflow state snapshot.
|
||||
</Tab>
|
||||
</Tabs>
|
||||
|
||||
## Webhook Subscriptions
|
||||
## Notifications
|
||||
|
||||
Get real-time notifications when workflow executions complete. Webhooks are configured through the Sim UI in the workflow editor.
|
||||
Get real-time notifications when workflow executions complete via webhook, email, or Slack. Notifications are configured at the workspace level from the Logs page.
|
||||
|
||||
### Configuration
|
||||
|
||||
Webhooks can be configured for each workflow through the workflow editor UI. Click the webhook icon in the control bar to set up your webhook subscriptions.
|
||||
Configure notifications from the Logs page by clicking the menu button and selecting "Configure Notifications".
|
||||
|
||||
<div className="mx-auto w-full overflow-hidden rounded-lg">
|
||||
<Video src="configure-webhook.mp4" width={700} height={450} />
|
||||
</div>
|
||||
**Notification Channels:**
|
||||
- **Webhook**: Send HTTP POST requests to your endpoint
|
||||
- **Email**: Receive email notifications with execution details
|
||||
- **Slack**: Post messages to a Slack channel
|
||||
|
||||
**Available Configuration Options:**
|
||||
**Workflow Selection:**
|
||||
- Select specific workflows to monitor
|
||||
- Or choose "All Workflows" to include current and future workflows
|
||||
|
||||
**Filtering Options:**
|
||||
- `levelFilter`: Log levels to receive (`info`, `error`)
|
||||
- `triggerFilter`: Trigger types to receive (`api`, `webhook`, `schedule`, `manual`, `chat`)
|
||||
|
||||
**Optional Data:**
|
||||
- `includeFinalOutput`: Include the workflow's final output
|
||||
- `includeTraceSpans`: Include detailed execution trace spans
|
||||
- `includeRateLimits`: Include rate limit information (sync/async limits and remaining)
|
||||
- `includeUsageData`: Include billing period usage and limits
|
||||
|
||||
### Alert Rules
|
||||
|
||||
Instead of receiving notifications for every execution, configure alert rules to be notified only when issues are detected:
|
||||
|
||||
**Consecutive Failures**
|
||||
- Alert after X consecutive failed executions (e.g., 3 failures in a row)
|
||||
- Resets when an execution succeeds
|
||||
|
||||
**Failure Rate**
|
||||
- Alert when failure rate exceeds X% over the last Y hours
|
||||
- Requires minimum 5 executions in the window
|
||||
- Only triggers after the full time window has elapsed
|
||||
|
||||
**Latency Threshold**
|
||||
- Alert when any execution takes longer than X seconds
|
||||
- Useful for catching slow or hanging workflows
|
||||
|
||||
**Latency Spike**
|
||||
- Alert when execution is X% slower than the average
|
||||
- Compares against the average duration over the configured time window
|
||||
- Requires minimum 5 executions to establish baseline
|
||||
|
||||
**Cost Threshold**
|
||||
- Alert when a single execution costs more than $X
|
||||
- Useful for catching expensive LLM calls
|
||||
|
||||
**No Activity**
|
||||
- Alert when no executions occur within X hours
|
||||
- Useful for monitoring scheduled workflows that should run regularly
|
||||
|
||||
**Error Count**
|
||||
- Alert when error count exceeds X within a time window
|
||||
- Tracks total errors, not consecutive
|
||||
|
||||
All alert types include a 1-hour cooldown to prevent notification spam.
|
||||
|
||||
### Webhook Configuration
|
||||
|
||||
For webhooks, additional options are available:
|
||||
- `url`: Your webhook endpoint URL
|
||||
- `secret`: Optional secret for HMAC signature verification
|
||||
- `includeFinalOutput`: Include the workflow's final output in the payload
|
||||
- `includeTraceSpans`: Include detailed execution trace spans
|
||||
- `includeRateLimits`: Include the workflow owner's rate limit information
|
||||
- `includeUsageData`: Include the workflow owner's usage and billing data
|
||||
- `levelFilter`: Array of log levels to receive (`info`, `error`)
|
||||
- `triggerFilter`: Array of trigger types to receive (`api`, `webhook`, `schedule`, `manual`, `chat`)
|
||||
- `active`: Enable/disable the webhook subscription
|
||||
|
||||
### Webhook Payload
|
||||
### Payload Structure
|
||||
|
||||
When a workflow execution completes, Sim sends a POST request to your webhook URL:
|
||||
When a workflow execution completes, Sim sends the following payload (via webhook POST, email, or Slack):
|
||||
|
||||
```json
|
||||
{
|
||||
@@ -316,7 +368,7 @@ When a workflow execution completes, Sim sends a POST request to your webhook UR
|
||||
|
||||
### Webhook Headers
|
||||
|
||||
Each webhook request includes these headers:
|
||||
Each webhook request includes these headers (webhook channel only):
|
||||
|
||||
- `sim-event`: Event type (always `workflow.execution.completed`)
|
||||
- `sim-timestamp`: Unix timestamp in milliseconds
|
||||
@@ -421,17 +473,25 @@ Failed webhook deliveries are retried with exponential backoff and jitter:
|
||||
|
||||
## Rate Limiting
|
||||
|
||||
The API implements rate limiting to ensure fair usage:
|
||||
The API uses a **token bucket algorithm** for rate limiting, providing fair usage while allowing burst traffic:
|
||||
|
||||
- **Free plan**: 10 requests per minute
|
||||
- **Pro plan**: 30 requests per minute
|
||||
- **Team plan**: 60 requests per minute
|
||||
- **Enterprise plan**: Custom limits
|
||||
| Plan | Requests/Minute | Burst Capacity |
|
||||
|------|-----------------|----------------|
|
||||
| Free | 10 | 20 |
|
||||
| Pro | 30 | 60 |
|
||||
| Team | 60 | 120 |
|
||||
| Enterprise | 120 | 240 |
|
||||
|
||||
**How it works:**
|
||||
- Tokens refill at `requestsPerMinute` rate
|
||||
- You can accumulate up to `maxBurst` tokens when idle
|
||||
- Each request consumes 1 token
|
||||
- Burst capacity allows handling traffic spikes
|
||||
|
||||
Rate limit information is included in response headers:
|
||||
- `X-RateLimit-Limit`: Maximum requests per window
|
||||
- `X-RateLimit-Remaining`: Requests remaining in current window
|
||||
- `X-RateLimit-Reset`: ISO timestamp when the window resets
|
||||
- `X-RateLimit-Limit`: Requests per minute (refill rate)
|
||||
- `X-RateLimit-Remaining`: Current tokens available
|
||||
- `X-RateLimit-Reset`: ISO timestamp when tokens next refill
|
||||
|
||||
## Example: Polling for New Logs
|
||||
|
||||
|
||||
@@ -143,8 +143,20 @@ curl -X GET -H "X-API-Key: YOUR_API_KEY" -H "Content-Type: application/json" htt
|
||||
{
|
||||
"success": true,
|
||||
"rateLimit": {
|
||||
"sync": { "isLimited": false, "limit": 10, "remaining": 10, "resetAt": "2025-09-08T22:51:55.999Z" },
|
||||
"async": { "isLimited": false, "limit": 50, "remaining": 50, "resetAt": "2025-09-08T22:51:56.155Z" },
|
||||
"sync": {
|
||||
"isLimited": false,
|
||||
"requestsPerMinute": 25,
|
||||
"maxBurst": 50,
|
||||
"remaining": 50,
|
||||
"resetAt": "2025-09-08T22:51:55.999Z"
|
||||
},
|
||||
"async": {
|
||||
"isLimited": false,
|
||||
"requestsPerMinute": 200,
|
||||
"maxBurst": 400,
|
||||
"remaining": 400,
|
||||
"resetAt": "2025-09-08T22:51:56.155Z"
|
||||
},
|
||||
"authType": "api"
|
||||
},
|
||||
"usage": {
|
||||
@@ -155,6 +167,11 @@ curl -X GET -H "X-API-Key: YOUR_API_KEY" -H "Content-Type: application/json" htt
|
||||
}
|
||||
```
|
||||
|
||||
**Rate Limit Fields:**
|
||||
- `requestsPerMinute`: Sustained rate limit (tokens refill at this rate)
|
||||
- `maxBurst`: Maximum tokens you can accumulate (burst capacity)
|
||||
- `remaining`: Current tokens available (can be up to `maxBurst`)
|
||||
|
||||
**Response Fields:**
|
||||
- `currentPeriodCost` reflects usage in the current billing period
|
||||
- `limit` is derived from individual limits (Free/Pro) or pooled organization limits (Team/Enterprise)
|
||||
|
||||
@@ -147,4 +147,4 @@ The snapshot provides:
|
||||
|
||||
- Learn about [Cost Calculation](/execution/costs) to understand workflow pricing
|
||||
- Explore the [External API](/execution/api) for programmatic log access
|
||||
- Set up [Webhook notifications](/execution/api#webhook-subscriptions) for real-time alerts
|
||||
- Set up [Notifications](/execution/api#notifications) for real-time alerts via webhook, email, or Slack
|
||||
@@ -72,7 +72,7 @@ For custom integrations, leverage our [MCP (Model Context Protocol) support](/mc
|
||||
<Video src="introduction/integrations-sidebar.mp4" width={700} height={450} />
|
||||
</div>
|
||||
|
||||
## AI-Powered Copilot
|
||||
## Copilot
|
||||
|
||||
**Ask Questions & Get Guidance**
|
||||
Copilot answers questions about Sim, explains your workflows, and provides suggestions for improvements. Use the `@` symbol to reference workflows, blocks, documentation, knowledge, and logs for contextual assistance.
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
---
|
||||
title: Knowledgebase
|
||||
title: Overview
|
||||
description: Upload, process, and search through your documents with intelligent vector search and chunking
|
||||
---
|
||||
|
||||
import { Video } from '@/components/ui/video'
|
||||
|
||||
4
apps/docs/content/docs/en/knowledgebase/meta.json
Normal file
4
apps/docs/content/docs/en/knowledgebase/meta.json
Normal file
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"title": "Knowledgebase",
|
||||
"pages": ["index", "tags"]
|
||||
}
|
||||
@@ -13,7 +13,8 @@
|
||||
"variables",
|
||||
"execution",
|
||||
"permissions",
|
||||
"sdks"
|
||||
"sdks",
|
||||
"self-hosting"
|
||||
],
|
||||
"defaultOpen": false
|
||||
}
|
||||
|
||||
150
apps/docs/content/docs/en/self-hosting/docker.mdx
Normal file
150
apps/docs/content/docs/en/self-hosting/docker.mdx
Normal file
@@ -0,0 +1,150 @@
|
||||
---
|
||||
title: Docker
|
||||
description: Deploy Sim Studio with Docker Compose
|
||||
---
|
||||
|
||||
import { Tab, Tabs } from 'fumadocs-ui/components/tabs'
|
||||
import { Callout } from 'fumadocs-ui/components/callout'
|
||||
|
||||
## Quick Start
|
||||
|
||||
```bash
|
||||
# Clone and start
|
||||
git clone https://github.com/simstudioai/sim.git && cd sim
|
||||
docker compose -f docker-compose.prod.yml up -d
|
||||
```
|
||||
|
||||
Open [http://localhost:3000](http://localhost:3000)
|
||||
|
||||
## Production Setup
|
||||
|
||||
### 1. Configure Environment
|
||||
|
||||
```bash
|
||||
# Generate secrets
|
||||
cat > .env << EOF
|
||||
DATABASE_URL=postgresql://postgres:postgres@db:5432/simstudio
|
||||
BETTER_AUTH_SECRET=$(openssl rand -hex 32)
|
||||
ENCRYPTION_KEY=$(openssl rand -hex 32)
|
||||
INTERNAL_API_SECRET=$(openssl rand -hex 32)
|
||||
NEXT_PUBLIC_APP_URL=https://sim.yourdomain.com
|
||||
BETTER_AUTH_URL=https://sim.yourdomain.com
|
||||
NEXT_PUBLIC_SOCKET_URL=https://sim.yourdomain.com
|
||||
EOF
|
||||
```
|
||||
|
||||
### 2. Start Services
|
||||
|
||||
```bash
|
||||
docker compose -f docker-compose.prod.yml up -d
|
||||
```
|
||||
|
||||
### 3. Set Up SSL
|
||||
|
||||
<Tabs items={['Caddy (Recommended)', 'Nginx + Certbot']}>
|
||||
<Tab value="Caddy (Recommended)">
|
||||
Caddy automatically handles SSL certificates.
|
||||
|
||||
```bash
|
||||
# Install Caddy
|
||||
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https curl
|
||||
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
|
||||
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
|
||||
sudo apt update && sudo apt install caddy
|
||||
```
|
||||
|
||||
Create `/etc/caddy/Caddyfile`:
|
||||
```
|
||||
sim.yourdomain.com {
|
||||
reverse_proxy localhost:3000
|
||||
|
||||
handle /socket.io/* {
|
||||
reverse_proxy localhost:3002
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
```bash
|
||||
sudo systemctl restart caddy
|
||||
```
|
||||
</Tab>
|
||||
<Tab value="Nginx + Certbot">
|
||||
```bash
|
||||
# Install
|
||||
sudo apt install nginx certbot python3-certbot-nginx -y
|
||||
|
||||
# Create /etc/nginx/sites-available/sim
|
||||
server {
|
||||
listen 80;
|
||||
server_name sim.yourdomain.com;
|
||||
|
||||
location / {
|
||||
proxy_pass http://127.0.0.1:3000;
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Upgrade $http_upgrade;
|
||||
proxy_set_header Connection 'upgrade';
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
}
|
||||
|
||||
location /socket.io/ {
|
||||
proxy_pass http://127.0.0.1:3002;
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Upgrade $http_upgrade;
|
||||
proxy_set_header Connection "upgrade";
|
||||
}
|
||||
}
|
||||
|
||||
# Enable and get certificate
|
||||
sudo ln -s /etc/nginx/sites-available/sim /etc/nginx/sites-enabled/
|
||||
sudo certbot --nginx -d sim.yourdomain.com
|
||||
```
|
||||
</Tab>
|
||||
</Tabs>
|
||||
|
||||
## Ollama
|
||||
|
||||
```bash
|
||||
# With GPU
|
||||
docker compose -f docker-compose.ollama.yml --profile gpu --profile setup up -d
|
||||
|
||||
# CPU only
|
||||
docker compose -f docker-compose.ollama.yml --profile cpu --profile setup up -d
|
||||
```
|
||||
|
||||
Pull additional models:
|
||||
```bash
|
||||
docker compose -f docker-compose.ollama.yml exec ollama ollama pull llama3.2
|
||||
```
|
||||
|
||||
### External Ollama
|
||||
|
||||
If Ollama runs on your host machine (not in Docker):
|
||||
|
||||
```bash
|
||||
# macOS/Windows
|
||||
OLLAMA_URL=http://host.docker.internal:11434 docker compose -f docker-compose.prod.yml up -d
|
||||
|
||||
# Linux - use your host IP
|
||||
OLLAMA_URL=http://192.168.1.100:11434 docker compose -f docker-compose.prod.yml up -d
|
||||
```
|
||||
|
||||
<Callout type="warning">
|
||||
Inside Docker, `localhost` refers to the container, not your host. Use `host.docker.internal` or your host's IP.
|
||||
</Callout>
|
||||
|
||||
## Commands
|
||||
|
||||
```bash
|
||||
# View logs
|
||||
docker compose -f docker-compose.prod.yml logs -f simstudio
|
||||
|
||||
# Stop
|
||||
docker compose -f docker-compose.prod.yml down
|
||||
|
||||
# Update
|
||||
docker compose -f docker-compose.prod.yml pull && docker compose -f docker-compose.prod.yml up -d
|
||||
|
||||
# Backup database
|
||||
docker compose -f docker-compose.prod.yml exec db pg_dump -U postgres simstudio > backup.sql
|
||||
```
|
||||
@@ -0,0 +1,87 @@
|
||||
---
|
||||
title: Environment Variables
|
||||
description: Configuration reference for Sim Studio
|
||||
---
|
||||
|
||||
import { Callout } from 'fumadocs-ui/components/callout'
|
||||
|
||||
## Required
|
||||
|
||||
| Variable | Description |
|
||||
|----------|-------------|
|
||||
| `DATABASE_URL` | PostgreSQL connection string |
|
||||
| `BETTER_AUTH_SECRET` | Auth secret (32 hex chars): `openssl rand -hex 32` |
|
||||
| `BETTER_AUTH_URL` | Your app URL |
|
||||
| `ENCRYPTION_KEY` | Encryption key (32 hex chars): `openssl rand -hex 32` |
|
||||
| `INTERNAL_API_SECRET` | Internal API secret (32 hex chars): `openssl rand -hex 32` |
|
||||
| `NEXT_PUBLIC_APP_URL` | Public app URL |
|
||||
| `NEXT_PUBLIC_SOCKET_URL` | WebSocket URL (default: `http://localhost:3002`) |
|
||||
|
||||
## AI Providers
|
||||
|
||||
| Variable | Provider |
|
||||
|----------|----------|
|
||||
| `OPENAI_API_KEY` | OpenAI |
|
||||
| `ANTHROPIC_API_KEY_1` | Anthropic Claude |
|
||||
| `GEMINI_API_KEY_1` | Google Gemini |
|
||||
| `MISTRAL_API_KEY` | Mistral |
|
||||
| `OLLAMA_URL` | Ollama (default: `http://localhost:11434`) |
|
||||
|
||||
<Callout type="info">
|
||||
For load balancing, add multiple keys with `_1`, `_2`, `_3` suffixes (e.g., `OPENAI_API_KEY_1`, `OPENAI_API_KEY_2`). Works with OpenAI, Anthropic, and Gemini.
|
||||
</Callout>
|
||||
|
||||
<Callout type="info">
|
||||
In Docker, use `OLLAMA_URL=http://host.docker.internal:11434` for host-machine Ollama.
|
||||
</Callout>
|
||||
|
||||
### Azure OpenAI
|
||||
|
||||
| Variable | Description |
|
||||
|----------|-------------|
|
||||
| `AZURE_OPENAI_API_KEY` | Azure OpenAI API key |
|
||||
| `AZURE_OPENAI_ENDPOINT` | Azure OpenAI endpoint URL |
|
||||
| `AZURE_OPENAI_API_VERSION` | API version (e.g., `2024-02-15-preview`) |
|
||||
|
||||
### vLLM (Self-Hosted)
|
||||
|
||||
| Variable | Description |
|
||||
|----------|-------------|
|
||||
| `VLLM_BASE_URL` | vLLM server URL (e.g., `http://localhost:8000/v1`) |
|
||||
| `VLLM_API_KEY` | Optional bearer token for vLLM |
|
||||
|
||||
## OAuth Providers
|
||||
|
||||
| Variable | Description |
|
||||
|----------|-------------|
|
||||
| `GOOGLE_CLIENT_ID` | Google OAuth client ID |
|
||||
| `GOOGLE_CLIENT_SECRET` | Google OAuth client secret |
|
||||
| `GITHUB_CLIENT_ID` | GitHub OAuth client ID |
|
||||
| `GITHUB_CLIENT_SECRET` | GitHub OAuth client secret |
|
||||
|
||||
## Optional
|
||||
|
||||
| Variable | Description |
|
||||
|----------|-------------|
|
||||
| `API_ENCRYPTION_KEY` | Encrypts stored API keys (32 hex chars): `openssl rand -hex 32` |
|
||||
| `COPILOT_API_KEY` | API key for copilot features |
|
||||
| `ADMIN_API_KEY` | Admin API key for GitOps operations |
|
||||
| `RESEND_API_KEY` | Email service for notifications |
|
||||
| `ALLOWED_LOGIN_DOMAINS` | Restrict signups to domains (comma-separated) |
|
||||
| `ALLOWED_LOGIN_EMAILS` | Restrict signups to specific emails (comma-separated) |
|
||||
| `DISABLE_REGISTRATION` | Set to `true` to disable new user signups |
|
||||
|
||||
## Example .env
|
||||
|
||||
```bash
|
||||
DATABASE_URL=postgresql://postgres:postgres@db:5432/simstudio
|
||||
BETTER_AUTH_SECRET=<openssl rand -hex 32>
|
||||
BETTER_AUTH_URL=https://sim.yourdomain.com
|
||||
ENCRYPTION_KEY=<openssl rand -hex 32>
|
||||
INTERNAL_API_SECRET=<openssl rand -hex 32>
|
||||
NEXT_PUBLIC_APP_URL=https://sim.yourdomain.com
|
||||
NEXT_PUBLIC_SOCKET_URL=https://sim.yourdomain.com
|
||||
OPENAI_API_KEY=sk-...
|
||||
```
|
||||
|
||||
See `apps/sim/.env.example` for all options.
|
||||
50
apps/docs/content/docs/en/self-hosting/index.mdx
Normal file
50
apps/docs/content/docs/en/self-hosting/index.mdx
Normal file
@@ -0,0 +1,50 @@
|
||||
---
|
||||
title: Self-Hosting
|
||||
description: Deploy Sim Studio on your own infrastructure
|
||||
---
|
||||
|
||||
import { Card, Cards } from 'fumadocs-ui/components/card'
|
||||
import { Callout } from 'fumadocs-ui/components/callout'
|
||||
|
||||
Deploy Sim Studio on your own infrastructure with Docker or Kubernetes.
|
||||
|
||||
## Requirements
|
||||
|
||||
| Resource | Minimum | Recommended |
|
||||
|----------|---------|-------------|
|
||||
| CPU | 2 cores | 4+ cores |
|
||||
| RAM | 12 GB | 16+ GB |
|
||||
| Storage | 20 GB SSD | 50+ GB SSD |
|
||||
| Docker | 20.10+ | Latest |
|
||||
|
||||
## Quick Start
|
||||
|
||||
```bash
|
||||
git clone https://github.com/simstudioai/sim.git && cd sim
|
||||
docker compose -f docker-compose.prod.yml up -d
|
||||
```
|
||||
|
||||
Open [http://localhost:3000](http://localhost:3000)
|
||||
|
||||
## Deployment Options
|
||||
|
||||
<Cards>
|
||||
<Card title="Docker" href="/self-hosting/docker">
|
||||
Deploy with Docker Compose on any server
|
||||
</Card>
|
||||
<Card title="Kubernetes" href="/self-hosting/kubernetes">
|
||||
Deploy with Helm on Kubernetes clusters
|
||||
</Card>
|
||||
<Card title="Cloud Platforms" href="/self-hosting/platforms">
|
||||
Railway, DigitalOcean, AWS, Azure, GCP guides
|
||||
</Card>
|
||||
</Cards>
|
||||
|
||||
## Architecture
|
||||
|
||||
| Component | Port | Description |
|
||||
|-----------|------|-------------|
|
||||
| simstudio | 3000 | Main application |
|
||||
| realtime | 3002 | WebSocket server |
|
||||
| db | 5432 | PostgreSQL with pgvector |
|
||||
| migrations | - | Database migrations (runs once) |
|
||||
127
apps/docs/content/docs/en/self-hosting/kubernetes.mdx
Normal file
127
apps/docs/content/docs/en/self-hosting/kubernetes.mdx
Normal file
@@ -0,0 +1,127 @@
|
||||
---
|
||||
title: Kubernetes
|
||||
description: Deploy Sim Studio with Helm
|
||||
---
|
||||
|
||||
import { Tab, Tabs } from 'fumadocs-ui/components/tabs'
|
||||
import { Callout } from 'fumadocs-ui/components/callout'
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- Kubernetes 1.19+
|
||||
- Helm 3.0+
|
||||
- PV provisioner support
|
||||
|
||||
## Installation
|
||||
|
||||
```bash
|
||||
# Clone repo
|
||||
git clone https://github.com/simstudioai/sim.git && cd sim
|
||||
|
||||
# Generate secrets
|
||||
BETTER_AUTH_SECRET=$(openssl rand -hex 32)
|
||||
ENCRYPTION_KEY=$(openssl rand -hex 32)
|
||||
INTERNAL_API_SECRET=$(openssl rand -hex 32)
|
||||
|
||||
# Install
|
||||
helm install sim ./helm/sim \
|
||||
--set app.env.BETTER_AUTH_SECRET="$BETTER_AUTH_SECRET" \
|
||||
--set app.env.ENCRYPTION_KEY="$ENCRYPTION_KEY" \
|
||||
--set app.env.INTERNAL_API_SECRET="$INTERNAL_API_SECRET" \
|
||||
--namespace simstudio --create-namespace
|
||||
```
|
||||
|
||||
## Cloud-Specific Values
|
||||
|
||||
<Tabs items={['AWS EKS', 'Azure AKS', 'GCP GKE']}>
|
||||
<Tab value="AWS EKS">
|
||||
```bash
|
||||
helm install sim ./helm/sim \
|
||||
--values ./helm/sim/examples/values-aws.yaml \
|
||||
--set app.env.BETTER_AUTH_SECRET="$BETTER_AUTH_SECRET" \
|
||||
--set app.env.ENCRYPTION_KEY="$ENCRYPTION_KEY" \
|
||||
--set app.env.INTERNAL_API_SECRET="$INTERNAL_API_SECRET" \
|
||||
--set app.env.NEXT_PUBLIC_APP_URL="https://sim.yourdomain.com" \
|
||||
--namespace simstudio --create-namespace
|
||||
```
|
||||
</Tab>
|
||||
<Tab value="Azure AKS">
|
||||
```bash
|
||||
helm install sim ./helm/sim \
|
||||
--values ./helm/sim/examples/values-azure.yaml \
|
||||
--set app.env.BETTER_AUTH_SECRET="$BETTER_AUTH_SECRET" \
|
||||
--set app.env.ENCRYPTION_KEY="$ENCRYPTION_KEY" \
|
||||
--set app.env.INTERNAL_API_SECRET="$INTERNAL_API_SECRET" \
|
||||
--set app.env.NEXT_PUBLIC_APP_URL="https://sim.yourdomain.com" \
|
||||
--namespace simstudio --create-namespace
|
||||
```
|
||||
</Tab>
|
||||
<Tab value="GCP GKE">
|
||||
```bash
|
||||
helm install sim ./helm/sim \
|
||||
--values ./helm/sim/examples/values-gcp.yaml \
|
||||
--set app.env.BETTER_AUTH_SECRET="$BETTER_AUTH_SECRET" \
|
||||
--set app.env.ENCRYPTION_KEY="$ENCRYPTION_KEY" \
|
||||
--set app.env.INTERNAL_API_SECRET="$INTERNAL_API_SECRET" \
|
||||
--set app.env.NEXT_PUBLIC_APP_URL="https://sim.yourdomain.com" \
|
||||
--namespace simstudio --create-namespace
|
||||
```
|
||||
</Tab>
|
||||
</Tabs>
|
||||
|
||||
## Key Configuration
|
||||
|
||||
```yaml
|
||||
# Custom values.yaml
|
||||
app:
|
||||
replicaCount: 2
|
||||
env:
|
||||
NEXT_PUBLIC_APP_URL: "https://sim.yourdomain.com"
|
||||
OPENAI_API_KEY: "sk-..."
|
||||
|
||||
postgresql:
|
||||
persistence:
|
||||
size: 50Gi
|
||||
|
||||
ingress:
|
||||
enabled: true
|
||||
className: nginx
|
||||
tls:
|
||||
enabled: true
|
||||
app:
|
||||
host: sim.yourdomain.com
|
||||
```
|
||||
|
||||
See `helm/sim/values.yaml` for all options.
|
||||
|
||||
## External Database
|
||||
|
||||
```yaml
|
||||
postgresql:
|
||||
enabled: false
|
||||
|
||||
externalDatabase:
|
||||
enabled: true
|
||||
host: "your-db-host"
|
||||
port: 5432
|
||||
username: "postgres"
|
||||
password: "your-password"
|
||||
database: "simstudio"
|
||||
sslMode: "require"
|
||||
```
|
||||
|
||||
## Commands
|
||||
|
||||
```bash
|
||||
# Port forward for local access
|
||||
kubectl port-forward deployment/sim-sim-app 3000:3000 -n simstudio
|
||||
|
||||
# View logs
|
||||
kubectl logs -l app.kubernetes.io/component=app -n simstudio --tail=100
|
||||
|
||||
# Upgrade
|
||||
helm upgrade sim ./helm/sim --namespace simstudio
|
||||
|
||||
# Uninstall
|
||||
helm uninstall sim --namespace simstudio
|
||||
```
|
||||
12
apps/docs/content/docs/en/self-hosting/meta.json
Normal file
12
apps/docs/content/docs/en/self-hosting/meta.json
Normal file
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"title": "Self-Hosting",
|
||||
"pages": [
|
||||
"index",
|
||||
"docker",
|
||||
"kubernetes",
|
||||
"platforms",
|
||||
"environment-variables",
|
||||
"troubleshooting"
|
||||
],
|
||||
"defaultOpen": false
|
||||
}
|
||||
116
apps/docs/content/docs/en/self-hosting/platforms.mdx
Normal file
116
apps/docs/content/docs/en/self-hosting/platforms.mdx
Normal file
@@ -0,0 +1,116 @@
|
||||
---
|
||||
title: Cloud Platforms
|
||||
description: Deploy Sim Studio on cloud platforms
|
||||
---
|
||||
|
||||
import { Tab, Tabs } from 'fumadocs-ui/components/tabs'
|
||||
import { Callout } from 'fumadocs-ui/components/callout'
|
||||
|
||||
## Railway
|
||||
|
||||
One-click deployment with automatic PostgreSQL provisioning.
|
||||
|
||||
[](https://railway.com/new/template/sim-studio)
|
||||
|
||||
After deployment, add environment variables in Railway dashboard:
|
||||
- `BETTER_AUTH_SECRET`, `ENCRYPTION_KEY`, `INTERNAL_API_SECRET` (auto-generated)
|
||||
- `OPENAI_API_KEY` or other AI provider keys
|
||||
- Custom domain in Settings → Networking
|
||||
|
||||
## VPS Deployment
|
||||
|
||||
For DigitalOcean, AWS EC2, Azure VMs, or any Linux server:
|
||||
|
||||
<Tabs items={['DigitalOcean', 'AWS EC2', 'Azure VM']}>
|
||||
<Tab value="DigitalOcean">
|
||||
**Recommended:** 16 GB RAM Droplet, Ubuntu 24.04
|
||||
|
||||
```bash
|
||||
# Create Droplet via console, then SSH in
|
||||
ssh root@your-droplet-ip
|
||||
```
|
||||
</Tab>
|
||||
<Tab value="AWS EC2">
|
||||
**Recommended:** t3.xlarge (16 GB RAM), Ubuntu 24.04
|
||||
|
||||
```bash
|
||||
ssh -i your-key.pem ubuntu@your-ec2-ip
|
||||
```
|
||||
</Tab>
|
||||
<Tab value="Azure VM">
|
||||
**Recommended:** Standard_D4s_v3 (16 GB RAM), Ubuntu 24.04
|
||||
|
||||
```bash
|
||||
ssh azureuser@your-vm-ip
|
||||
```
|
||||
</Tab>
|
||||
</Tabs>
|
||||
|
||||
### Install Docker
|
||||
|
||||
```bash
|
||||
# Install Docker (official method)
|
||||
curl -fsSL https://get.docker.com | sudo sh
|
||||
sudo usermod -aG docker $USER
|
||||
|
||||
# Logout and reconnect, then verify
|
||||
docker --version
|
||||
```
|
||||
|
||||
### Deploy Sim Studio
|
||||
|
||||
```bash
|
||||
git clone https://github.com/simstudioai/sim.git && cd sim
|
||||
|
||||
# Create .env with secrets
|
||||
cat > .env << EOF
|
||||
DATABASE_URL=postgresql://postgres:postgres@db:5432/simstudio
|
||||
BETTER_AUTH_SECRET=$(openssl rand -hex 32)
|
||||
ENCRYPTION_KEY=$(openssl rand -hex 32)
|
||||
INTERNAL_API_SECRET=$(openssl rand -hex 32)
|
||||
NEXT_PUBLIC_APP_URL=https://sim.yourdomain.com
|
||||
BETTER_AUTH_URL=https://sim.yourdomain.com
|
||||
NEXT_PUBLIC_SOCKET_URL=https://sim.yourdomain.com
|
||||
EOF
|
||||
|
||||
# Start
|
||||
docker compose -f docker-compose.prod.yml up -d
|
||||
```
|
||||
|
||||
### SSL with Caddy
|
||||
|
||||
```bash
|
||||
# Install Caddy
|
||||
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https curl
|
||||
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
|
||||
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
|
||||
sudo apt update && sudo apt install caddy
|
||||
|
||||
# Configure (replace domain)
|
||||
echo 'sim.yourdomain.com {
|
||||
reverse_proxy localhost:3000
|
||||
handle /socket.io/* {
|
||||
reverse_proxy localhost:3002
|
||||
}
|
||||
}' | sudo tee /etc/caddy/Caddyfile
|
||||
|
||||
sudo systemctl restart caddy
|
||||
```
|
||||
|
||||
Point your domain's DNS A record to your server IP.
|
||||
|
||||
## Kubernetes (EKS, AKS, GKE)
|
||||
|
||||
See the [Kubernetes guide](/self-hosting/kubernetes) for Helm deployment on managed Kubernetes.
|
||||
|
||||
## Managed Database (Optional)
|
||||
|
||||
For production, use a managed PostgreSQL service:
|
||||
|
||||
- **AWS RDS** / **Azure Database** / **Cloud SQL** - Enable pgvector extension
|
||||
- **Supabase** / **Neon** - pgvector included
|
||||
|
||||
Set `DATABASE_URL` in your environment:
|
||||
```bash
|
||||
DATABASE_URL="postgresql://user:pass@host:5432/db?sslmode=require"
|
||||
```
|
||||
110
apps/docs/content/docs/en/self-hosting/troubleshooting.mdx
Normal file
110
apps/docs/content/docs/en/self-hosting/troubleshooting.mdx
Normal file
@@ -0,0 +1,110 @@
|
||||
---
|
||||
title: Troubleshooting
|
||||
description: Common issues and solutions
|
||||
---
|
||||
|
||||
## Database Connection Failed
|
||||
|
||||
```bash
|
||||
# Check database is running
|
||||
docker compose ps db
|
||||
|
||||
# Test connection
|
||||
docker compose exec db psql -U postgres -c "SELECT 1"
|
||||
```
|
||||
|
||||
Verify `DATABASE_URL` format: `postgresql://user:pass@host:5432/database`
|
||||
|
||||
## Ollama Models Not Showing
|
||||
|
||||
Inside Docker, `localhost` = the container, not your host machine.
|
||||
|
||||
```bash
|
||||
# For host-machine Ollama, use:
|
||||
OLLAMA_URL=http://host.docker.internal:11434 # macOS/Windows
|
||||
OLLAMA_URL=http://192.168.1.x:11434 # Linux (use actual IP)
|
||||
```
|
||||
|
||||
## WebSocket/Realtime Not Working
|
||||
|
||||
1. Check `NEXT_PUBLIC_SOCKET_URL` matches your domain
|
||||
2. Verify realtime service is running: `docker compose ps realtime`
|
||||
3. Ensure reverse proxy passes WebSocket upgrades (see [Docker guide](/self-hosting/docker))
|
||||
|
||||
## 502 Bad Gateway
|
||||
|
||||
```bash
|
||||
# Check app is running
|
||||
docker compose ps simstudio
|
||||
docker compose logs simstudio
|
||||
|
||||
# Common causes: out of memory, database not ready
|
||||
```
|
||||
|
||||
## Migration Errors
|
||||
|
||||
```bash
|
||||
# View migration logs
|
||||
docker compose logs migrations
|
||||
|
||||
# Run manually
|
||||
docker compose exec simstudio bun run db:migrate
|
||||
```
|
||||
|
||||
## pgvector Not Found
|
||||
|
||||
Use the correct PostgreSQL image:
|
||||
```yaml
|
||||
image: pgvector/pgvector:pg17 # NOT postgres:17
|
||||
```
|
||||
|
||||
## Certificate Errors (CERT_HAS_EXPIRED)
|
||||
|
||||
If you see SSL certificate errors when calling external APIs:
|
||||
|
||||
```bash
|
||||
# Update CA certificates in container
|
||||
docker compose exec simstudio apt-get update && apt-get install -y ca-certificates
|
||||
|
||||
# Or set in environment (not recommended for production)
|
||||
NODE_TLS_REJECT_UNAUTHORIZED=0
|
||||
```
|
||||
|
||||
## Blank Page After Login
|
||||
|
||||
1. Check browser console for errors
|
||||
2. Verify `NEXT_PUBLIC_APP_URL` matches your actual domain
|
||||
3. Clear browser cookies and local storage
|
||||
4. Check that all services are running: `docker compose ps`
|
||||
|
||||
## Windows-Specific Issues
|
||||
|
||||
**Turbopack errors on Windows:**
|
||||
```bash
|
||||
# Use WSL2 for better compatibility
|
||||
wsl --install
|
||||
|
||||
# Or disable Turbopack in package.json
|
||||
# Change "next dev --turbopack" to "next dev"
|
||||
```
|
||||
|
||||
**Line ending issues:**
|
||||
```bash
|
||||
# Configure git to use LF
|
||||
git config --global core.autocrlf input
|
||||
```
|
||||
|
||||
## View Logs
|
||||
|
||||
```bash
|
||||
# All services
|
||||
docker compose logs -f
|
||||
|
||||
# Specific service
|
||||
docker compose logs -f simstudio
|
||||
```
|
||||
|
||||
## Getting Help
|
||||
|
||||
- [GitHub Issues](https://github.com/simstudioai/sim/issues)
|
||||
- [Discord](https://discord.gg/Hr4UWYEcTT)
|
||||
205
apps/docs/content/docs/en/tools/ahrefs.mdx
Normal file
205
apps/docs/content/docs/en/tools/ahrefs.mdx
Normal file
@@ -0,0 +1,205 @@
|
||||
---
|
||||
title: Ahrefs
|
||||
description: SEO analysis with Ahrefs
|
||||
---
|
||||
|
||||
import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
<BlockInfoCard
|
||||
type="ahrefs"
|
||||
color="#E0E0E0"
|
||||
/>
|
||||
|
||||
{/* MANUAL-CONTENT-START:intro */}
|
||||
[Ahrefs](https://ahrefs.com/) is a leading SEO toolset for analyzing websites, tracking rankings, monitoring backlinks, and researching keywords. It provides detailed insights into your own website as well as your competitors, helping you make data-driven decisions to improve your search visibility.
|
||||
|
||||
With the Ahrefs integration in Sim, you can:
|
||||
|
||||
- **Analyze Domain Rating & Authority**: Instantly check the Domain Rating (DR) and Ahrefs Rank of any website to gauge its authority.
|
||||
- **Fetch Backlinks**: Retrieve a list of backlinks pointing to a site or specific URL, with details like anchor text, referring page DR, and more.
|
||||
- **Get Backlink Statistics**: Access metrics on backlink types (dofollow, nofollow, text, image, redirect, etc.) for a domain or URL.
|
||||
- **Explore Organic Keywords** *(planned)*: View keywords a domain ranks for and their positions in Google search results.
|
||||
- **Discover Top Pages** *(planned)*: Identify the highest-performing pages by organic traffic and links.
|
||||
|
||||
These tools let your agents automate SEO research, monitor competitors, and generate reports—all as part of your workflow automations. To use the Ahrefs integration, you’ll need an Ahrefs Enterprise subscription with API access.
|
||||
{/* MANUAL-CONTENT-END */}
|
||||
|
||||
|
||||
## Usage Instructions
|
||||
|
||||
Integrate Ahrefs SEO tools into your workflow. Analyze domain ratings, backlinks, organic keywords, top pages, and more. Requires an Ahrefs Enterprise plan with API access.
|
||||
|
||||
|
||||
|
||||
## Tools
|
||||
|
||||
### `ahrefs_domain_rating`
|
||||
|
||||
Get the Domain Rating (DR) and Ahrefs Rank for a target domain. Domain Rating shows the strength of a website
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `target` | string | Yes | The target domain to analyze \(e.g., example.com\) |
|
||||
| `date` | string | No | Date for historical data in YYYY-MM-DD format \(defaults to today\) |
|
||||
| `apiKey` | string | Yes | Ahrefs API Key |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `domainRating` | number | Domain Rating score \(0-100\) |
|
||||
| `ahrefsRank` | number | Ahrefs Rank - global ranking based on backlink profile strength |
|
||||
|
||||
### `ahrefs_backlinks`
|
||||
|
||||
Get a list of backlinks pointing to a target domain or URL. Returns details about each backlink including source URL, anchor text, and domain rating.
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `target` | string | Yes | The target domain or URL to analyze |
|
||||
| `mode` | string | No | Analysis mode: domain \(entire domain\), prefix \(URL prefix\), subdomains \(include all subdomains\), exact \(exact URL match\) |
|
||||
| `date` | string | No | Date for historical data in YYYY-MM-DD format \(defaults to today\) |
|
||||
| `limit` | number | No | Maximum number of results to return \(default: 100\) |
|
||||
| `offset` | number | No | Number of results to skip for pagination |
|
||||
| `apiKey` | string | Yes | Ahrefs API Key |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `backlinks` | array | List of backlinks pointing to the target |
|
||||
|
||||
### `ahrefs_backlinks_stats`
|
||||
|
||||
Get backlink statistics for a target domain or URL. Returns totals for different backlink types including dofollow, nofollow, text, image, and redirect links.
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `target` | string | Yes | The target domain or URL to analyze |
|
||||
| `mode` | string | No | Analysis mode: domain \(entire domain\), prefix \(URL prefix\), subdomains \(include all subdomains\), exact \(exact URL match\) |
|
||||
| `date` | string | No | Date for historical data in YYYY-MM-DD format \(defaults to today\) |
|
||||
| `apiKey` | string | Yes | Ahrefs API Key |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `stats` | object | Backlink statistics summary |
|
||||
|
||||
### `ahrefs_referring_domains`
|
||||
|
||||
Get a list of domains that link to a target domain or URL. Returns unique referring domains with their domain rating, backlink counts, and discovery dates.
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `target` | string | Yes | The target domain or URL to analyze |
|
||||
| `mode` | string | No | Analysis mode: domain \(entire domain\), prefix \(URL prefix\), subdomains \(include all subdomains\), exact \(exact URL match\) |
|
||||
| `date` | string | No | Date for historical data in YYYY-MM-DD format \(defaults to today\) |
|
||||
| `limit` | number | No | Maximum number of results to return \(default: 100\) |
|
||||
| `offset` | number | No | Number of results to skip for pagination |
|
||||
| `apiKey` | string | Yes | Ahrefs API Key |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `referringDomains` | array | List of domains linking to the target |
|
||||
|
||||
### `ahrefs_organic_keywords`
|
||||
|
||||
Get organic keywords that a target domain or URL ranks for in Google search results. Returns keyword details including search volume, ranking position, and estimated traffic.
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `target` | string | Yes | The target domain or URL to analyze |
|
||||
| `country` | string | No | Country code for search results \(e.g., us, gb, de\). Default: us |
|
||||
| `mode` | string | No | Analysis mode: domain \(entire domain\), prefix \(URL prefix\), subdomains \(include all subdomains\), exact \(exact URL match\) |
|
||||
| `date` | string | No | Date for historical data in YYYY-MM-DD format \(defaults to today\) |
|
||||
| `limit` | number | No | Maximum number of results to return \(default: 100\) |
|
||||
| `offset` | number | No | Number of results to skip for pagination |
|
||||
| `apiKey` | string | Yes | Ahrefs API Key |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `keywords` | array | List of organic keywords the target ranks for |
|
||||
|
||||
### `ahrefs_top_pages`
|
||||
|
||||
Get the top pages of a target domain sorted by organic traffic. Returns page URLs with their traffic, keyword counts, and estimated traffic value.
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `target` | string | Yes | The target domain to analyze |
|
||||
| `country` | string | No | Country code for traffic data \(e.g., us, gb, de\). Default: us |
|
||||
| `mode` | string | No | Analysis mode: domain \(entire domain\), prefix \(URL prefix\), subdomains \(include all subdomains\) |
|
||||
| `date` | string | No | Date for historical data in YYYY-MM-DD format \(defaults to today\) |
|
||||
| `limit` | number | No | Maximum number of results to return \(default: 100\) |
|
||||
| `offset` | number | No | Number of results to skip for pagination |
|
||||
| `select` | string | No | Comma-separated list of fields to return \(e.g., url,traffic,keywords,top_keyword,value\). Default: url,traffic,keywords,top_keyword,value |
|
||||
| `apiKey` | string | Yes | Ahrefs API Key |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `pages` | array | List of top pages by organic traffic |
|
||||
|
||||
### `ahrefs_keyword_overview`
|
||||
|
||||
Get detailed metrics for a keyword including search volume, keyword difficulty, CPC, clicks, and traffic potential.
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `keyword` | string | Yes | The keyword to analyze |
|
||||
| `country` | string | No | Country code for keyword data \(e.g., us, gb, de\). Default: us |
|
||||
| `apiKey` | string | Yes | Ahrefs API Key |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `overview` | object | Keyword metrics overview |
|
||||
|
||||
### `ahrefs_broken_backlinks`
|
||||
|
||||
Get a list of broken backlinks pointing to a target domain or URL. Useful for identifying link reclamation opportunities.
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `target` | string | Yes | The target domain or URL to analyze |
|
||||
| `mode` | string | No | Analysis mode: domain \(entire domain\), prefix \(URL prefix\), subdomains \(include all subdomains\), exact \(exact URL match\) |
|
||||
| `date` | string | No | Date for historical data in YYYY-MM-DD format \(defaults to today\) |
|
||||
| `limit` | number | No | Maximum number of results to return \(default: 100\) |
|
||||
| `offset` | number | No | Number of results to skip for pagination |
|
||||
| `apiKey` | string | Yes | Ahrefs API Key |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `brokenBacklinks` | array | List of broken backlinks |
|
||||
|
||||
|
||||
|
||||
## Notes
|
||||
|
||||
- Category: `tools`
|
||||
- Type: `ahrefs`
|
||||
186
apps/docs/content/docs/en/tools/cursor.mdx
Normal file
186
apps/docs/content/docs/en/tools/cursor.mdx
Normal file
@@ -0,0 +1,186 @@
|
||||
---
|
||||
title: Cursor
|
||||
description: Launch and manage Cursor cloud agents to work on GitHub repositories
|
||||
---
|
||||
|
||||
import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
<BlockInfoCard
|
||||
type="cursor"
|
||||
color="#1E1E1E"
|
||||
/>
|
||||
|
||||
{/* MANUAL-CONTENT-START:intro */}
|
||||
[Cursor](https://www.cursor.so/) is an AI IDE and cloud-based platform that lets you launch and manage powerful AI agents able to work directly on your GitHub repositories. Cursor agents can automate development tasks, enhance your team's productivity, and collaborate with you by making code changes, responding to natural language instructions, and maintaining conversation history about their activities.
|
||||
|
||||
With Cursor, you can:
|
||||
|
||||
- **Launch cloud agents for codebases**: Instantly create new AI agents that work on your repositories in the cloud
|
||||
- **Delegate coding tasks using natural language**: Guide agents with written instructions, amendments, and clarifications
|
||||
- **Monitor progress and outputs**: Retrieve agent status, view detailed results, and inspect current or completed tasks
|
||||
- **Access full conversation history**: Review all prompts and AI responses for transparency and auditability
|
||||
- **Control and manage agent lifecycle**: List active agents, terminate agents, and manage API-based agent launches and follow-ups
|
||||
|
||||
In Sim, the Cursor integration enables your agents and workflows to interact programmatically with Cursor cloud agents. This means you can use Sim to:
|
||||
|
||||
- List all cloud agents and browse their current state (`cursor_list_agents`)
|
||||
- Retrieve up-to-date status and outputs for any agent (`cursor_get_agent`)
|
||||
- View the full conversation history for any coding agent (`cursor_get_conversation`)
|
||||
- Add follow-up instructions or new prompts to a running agent
|
||||
- Manage and terminate agents as needed
|
||||
|
||||
This integration helps you combine the flexible intelligence of Sim agents with the powerful development automation capabilities of Cursor, making it possible to scale AI-driven development across your projects.
|
||||
{/* MANUAL-CONTENT-END */}
|
||||
|
||||
|
||||
## Usage Instructions
|
||||
|
||||
Interact with Cursor Cloud Agents API to launch AI agents that can work on your GitHub repositories. Supports launching agents, adding follow-up instructions, checking status, viewing conversations, and managing agent lifecycle.
|
||||
|
||||
|
||||
|
||||
## Tools
|
||||
|
||||
### `cursor_list_agents`
|
||||
|
||||
List all cloud agents for the authenticated user with optional pagination.
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Yes | Cursor API key |
|
||||
| `limit` | number | No | Number of agents to return \(default: 20, max: 100\) |
|
||||
| `cursor` | string | No | Pagination cursor from previous response |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `content` | string | Human-readable list of agents |
|
||||
| `metadata` | object | Agent list metadata |
|
||||
|
||||
### `cursor_get_agent`
|
||||
|
||||
Retrieve the current status and results of a cloud agent.
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Yes | Cursor API key |
|
||||
| `agentId` | string | Yes | Unique identifier for the cloud agent \(e.g., bc_abc123\) |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `content` | string | Human-readable agent details |
|
||||
| `metadata` | object | Agent metadata |
|
||||
|
||||
### `cursor_get_conversation`
|
||||
|
||||
Retrieve the conversation history of a cloud agent, including all user prompts and assistant responses.
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Yes | Cursor API key |
|
||||
| `agentId` | string | Yes | Unique identifier for the cloud agent \(e.g., bc_abc123\) |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `content` | string | Human-readable conversation history |
|
||||
| `metadata` | object | Conversation metadata |
|
||||
|
||||
### `cursor_launch_agent`
|
||||
|
||||
Start a new cloud agent to work on a GitHub repository with the given instructions.
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Yes | Cursor API key |
|
||||
| `repository` | string | Yes | GitHub repository URL \(e.g., https://github.com/your-org/your-repo\) |
|
||||
| `ref` | string | No | Branch, tag, or commit to work from \(defaults to default branch\) |
|
||||
| `promptText` | string | Yes | The instruction text for the agent |
|
||||
| `promptImages` | string | No | JSON array of image objects with base64 data and dimensions |
|
||||
| `model` | string | No | Model to use \(leave empty for auto-selection\) |
|
||||
| `branchName` | string | No | Custom branch name for the agent to use |
|
||||
| `autoCreatePr` | boolean | No | Automatically create a PR when the agent finishes |
|
||||
| `openAsCursorGithubApp` | boolean | No | Open the PR as the Cursor GitHub App |
|
||||
| `skipReviewerRequest` | boolean | No | Skip requesting reviewers on the PR |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `content` | string | Success message with agent details |
|
||||
| `metadata` | object | Launch result metadata |
|
||||
|
||||
### `cursor_add_followup`
|
||||
|
||||
Add a follow-up instruction to an existing cloud agent.
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Yes | Cursor API key |
|
||||
| `agentId` | string | Yes | Unique identifier for the cloud agent \(e.g., bc_abc123\) |
|
||||
| `followupPromptText` | string | Yes | The follow-up instruction text for the agent |
|
||||
| `promptImages` | string | No | JSON array of image objects with base64 data and dimensions \(max 5\) |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `content` | string | Success message |
|
||||
| `metadata` | object | Result metadata |
|
||||
|
||||
### `cursor_stop_agent`
|
||||
|
||||
Stop a running cloud agent. This pauses the agent without deleting it.
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Yes | Cursor API key |
|
||||
| `agentId` | string | Yes | Unique identifier for the cloud agent \(e.g., bc_abc123\) |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `content` | string | Success message |
|
||||
| `metadata` | object | Result metadata |
|
||||
|
||||
### `cursor_delete_agent`
|
||||
|
||||
Permanently delete a cloud agent. This action cannot be undone.
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Yes | Cursor API key |
|
||||
| `agentId` | string | Yes | Unique identifier for the cloud agent \(e.g., bc_abc123\) |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `content` | string | Success message |
|
||||
| `metadata` | object | Result metadata |
|
||||
|
||||
|
||||
|
||||
## Notes
|
||||
|
||||
- Category: `tools`
|
||||
- Type: `cursor`
|
||||
307
apps/docs/content/docs/en/tools/datadog.mdx
Normal file
307
apps/docs/content/docs/en/tools/datadog.mdx
Normal file
@@ -0,0 +1,307 @@
|
||||
---
|
||||
title: Datadog
|
||||
description: Monitor infrastructure, applications, and logs with Datadog
|
||||
---
|
||||
|
||||
import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
<BlockInfoCard
|
||||
type="datadog"
|
||||
color="#632CA6"
|
||||
/>
|
||||
|
||||
{/* MANUAL-CONTENT-START:intro */}
|
||||
[Datadog](https://datadoghq.com/) is a comprehensive monitoring and analytics platform for infrastructure, applications, logs, and more. It enables organizations to gain real-time visibility into the health and performance of systems, detect anomalies, and automate incident response.
|
||||
|
||||
With Datadog, you can:
|
||||
|
||||
- **Monitor metrics**: Collect, visualize, and analyze metrics from servers, cloud services, and custom applications.
|
||||
- **Query time series data**: Run advanced queries on performance metrics for trend analysis and reporting.
|
||||
- **Manage monitors and events**: Set up monitors to detect issues, trigger alerts, and create events for observability.
|
||||
- **Handle downtimes**: Schedule and programmatically manage planned downtimes to suppress alerts during maintenance.
|
||||
- **Analyze logs and traces** *(with additional setup in Datadog)*: Centralize and inspect logs or distributed traces for deeper troubleshooting.
|
||||
|
||||
Sim’s Datadog integration lets your agents automate these operations and interact with your Datadog account programmatically. Use it to submit custom metrics, query timeseries data, manage monitors, create events, and streamline your monitoring workflows directly within Sim automations.
|
||||
{/* MANUAL-CONTENT-END */}
|
||||
|
||||
|
||||
## Usage Instructions
|
||||
|
||||
Integrate Datadog monitoring into workflows. Submit metrics, manage monitors, query logs, create events, handle downtimes, and more.
|
||||
|
||||
|
||||
|
||||
## Tools
|
||||
|
||||
### `datadog_submit_metrics`
|
||||
|
||||
Submit custom metrics to Datadog. Use for tracking application performance, business metrics, or custom monitoring data.
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `series` | string | Yes | JSON array of metric series to submit. Each series should include metric name, type \(gauge/rate/count\), points \(timestamp/value pairs\), and optional tags. |
|
||||
| `apiKey` | string | Yes | Datadog API key |
|
||||
| `site` | string | No | Datadog site/region \(default: datadoghq.com\) |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Whether the metrics were submitted successfully |
|
||||
| `errors` | array | Any errors that occurred during submission |
|
||||
|
||||
### `datadog_query_timeseries`
|
||||
|
||||
Query metric timeseries data from Datadog. Use for analyzing trends, creating reports, or retrieving metric values.
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `query` | string | Yes | Datadog metrics query \(e.g., "avg:system.cpu.user\{*\}"\) |
|
||||
| `from` | number | Yes | Start time as Unix timestamp in seconds |
|
||||
| `to` | number | Yes | End time as Unix timestamp in seconds |
|
||||
| `apiKey` | string | Yes | Datadog API key |
|
||||
| `applicationKey` | string | Yes | Datadog Application key |
|
||||
| `site` | string | No | Datadog site/region \(default: datadoghq.com\) |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `series` | array | Array of timeseries data with metric name, tags, and data points |
|
||||
| `status` | string | Query status |
|
||||
|
||||
### `datadog_create_event`
|
||||
|
||||
Post an event to the Datadog event stream. Use for deployment notifications, alerts, or any significant occurrences.
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `title` | string | Yes | Event title |
|
||||
| `text` | string | Yes | Event body/description. Supports markdown. |
|
||||
| `alertType` | string | No | Alert type: error, warning, info, success, user_update, recommendation, or snapshot |
|
||||
| `priority` | string | No | Event priority: normal or low |
|
||||
| `host` | string | No | Host name to associate with this event |
|
||||
| `tags` | string | No | Comma-separated list of tags \(e.g., "env:production,service:api"\) |
|
||||
| `aggregationKey` | string | No | Key to aggregate events together |
|
||||
| `sourceTypeName` | string | No | Source type name for the event |
|
||||
| `dateHappened` | number | No | Unix timestamp when the event occurred \(defaults to now\) |
|
||||
| `apiKey` | string | Yes | Datadog API key |
|
||||
| `site` | string | No | Datadog site/region \(default: datadoghq.com\) |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `event` | object | The created event details |
|
||||
|
||||
### `datadog_create_monitor`
|
||||
|
||||
Create a new monitor/alert in Datadog. Monitors can track metrics, service checks, events, and more.
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `name` | string | Yes | Monitor name |
|
||||
| `type` | string | Yes | Monitor type: metric alert, service check, event alert, process alert, log alert, query alert, composite, synthetics alert, slo alert |
|
||||
| `query` | string | Yes | Monitor query \(e.g., "avg\(last_5m\):avg:system.cpu.idle\{*\} < 20"\) |
|
||||
| `message` | string | No | Message to include with notifications. Can include @-mentions and markdown. |
|
||||
| `tags` | string | No | Comma-separated list of tags |
|
||||
| `priority` | number | No | Monitor priority \(1-5, where 1 is highest\) |
|
||||
| `options` | string | No | JSON string of monitor options \(thresholds, notify_no_data, renotify_interval, etc.\) |
|
||||
| `apiKey` | string | Yes | Datadog API key |
|
||||
| `applicationKey` | string | Yes | Datadog Application key |
|
||||
| `site` | string | No | Datadog site/region \(default: datadoghq.com\) |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `monitor` | object | The created monitor details |
|
||||
|
||||
### `datadog_get_monitor`
|
||||
|
||||
Retrieve details of a specific monitor by ID.
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `monitorId` | string | Yes | The ID of the monitor to retrieve |
|
||||
| `groupStates` | string | No | Comma-separated group states to include: alert, warn, no data, ok |
|
||||
| `withDowntimes` | boolean | No | Include downtime data with the monitor |
|
||||
| `apiKey` | string | Yes | Datadog API key |
|
||||
| `applicationKey` | string | Yes | Datadog Application key |
|
||||
| `site` | string | No | Datadog site/region \(default: datadoghq.com\) |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `monitor` | object | The monitor details |
|
||||
|
||||
### `datadog_list_monitors`
|
||||
|
||||
List all monitors in Datadog with optional filtering by name, tags, or state.
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `groupStates` | string | No | Comma-separated group states to filter by: alert, warn, no data, ok |
|
||||
| `name` | string | No | Filter monitors by name \(partial match\) |
|
||||
| `tags` | string | No | Comma-separated list of tags to filter by |
|
||||
| `monitorTags` | string | No | Comma-separated list of monitor tags to filter by |
|
||||
| `withDowntimes` | boolean | No | Include downtime data with monitors |
|
||||
| `page` | number | No | Page number for pagination \(0-indexed\) |
|
||||
| `pageSize` | number | No | Number of monitors per page \(max 1000\) |
|
||||
| `apiKey` | string | Yes | Datadog API key |
|
||||
| `applicationKey` | string | Yes | Datadog Application key |
|
||||
| `site` | string | No | Datadog site/region \(default: datadoghq.com\) |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `monitors` | array | List of monitors |
|
||||
|
||||
### `datadog_mute_monitor`
|
||||
|
||||
Mute a monitor to temporarily suppress notifications.
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `monitorId` | string | Yes | The ID of the monitor to mute |
|
||||
| `scope` | string | No | Scope to mute \(e.g., "host:myhost"\). If not specified, mutes all scopes. |
|
||||
| `end` | number | No | Unix timestamp when the mute should end. If not specified, mutes indefinitely. |
|
||||
| `apiKey` | string | Yes | Datadog API key |
|
||||
| `applicationKey` | string | Yes | Datadog Application key |
|
||||
| `site` | string | No | Datadog site/region \(default: datadoghq.com\) |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Whether the monitor was successfully muted |
|
||||
|
||||
### `datadog_query_logs`
|
||||
|
||||
Search and retrieve logs from Datadog. Use for troubleshooting, analysis, or monitoring.
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `query` | string | Yes | Log search query \(e.g., "service:web-app status:error"\) |
|
||||
| `from` | string | Yes | Start time in ISO-8601 format or relative \(e.g., "now-1h"\) |
|
||||
| `to` | string | Yes | End time in ISO-8601 format or relative \(e.g., "now"\) |
|
||||
| `limit` | number | No | Maximum number of logs to return \(default: 50, max: 1000\) |
|
||||
| `sort` | string | No | Sort order: timestamp \(oldest first\) or -timestamp \(newest first\) |
|
||||
| `indexes` | string | No | Comma-separated list of log indexes to search |
|
||||
| `apiKey` | string | Yes | Datadog API key |
|
||||
| `applicationKey` | string | Yes | Datadog Application key |
|
||||
| `site` | string | No | Datadog site/region \(default: datadoghq.com\) |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `logs` | array | List of log entries |
|
||||
|
||||
### `datadog_send_logs`
|
||||
|
||||
Send log entries to Datadog for centralized logging and analysis.
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `logs` | string | Yes | JSON array of log entries. Each entry should have message and optionally ddsource, ddtags, hostname, service. |
|
||||
| `apiKey` | string | Yes | Datadog API key |
|
||||
| `site` | string | No | Datadog site/region \(default: datadoghq.com\) |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Whether the logs were sent successfully |
|
||||
|
||||
### `datadog_create_downtime`
|
||||
|
||||
Schedule a downtime to suppress monitor notifications during maintenance windows.
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `scope` | string | Yes | Scope to apply downtime to \(e.g., "host:myhost", "env:production", or "*" for all\) |
|
||||
| `message` | string | No | Message to display during downtime |
|
||||
| `start` | number | No | Unix timestamp for downtime start \(defaults to now\) |
|
||||
| `end` | number | No | Unix timestamp for downtime end |
|
||||
| `timezone` | string | No | Timezone for the downtime \(e.g., "America/New_York"\) |
|
||||
| `monitorId` | string | No | Specific monitor ID to mute |
|
||||
| `monitorTags` | string | No | Comma-separated monitor tags to match \(e.g., "team:backend,priority:high"\) |
|
||||
| `muteFirstRecoveryNotification` | boolean | No | Mute the first recovery notification |
|
||||
| `apiKey` | string | Yes | Datadog API key |
|
||||
| `applicationKey` | string | Yes | Datadog Application key |
|
||||
| `site` | string | No | Datadog site/region \(default: datadoghq.com\) |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `downtime` | object | The created downtime details |
|
||||
|
||||
### `datadog_list_downtimes`
|
||||
|
||||
List all scheduled downtimes in Datadog.
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `currentOnly` | boolean | No | Only return currently active downtimes |
|
||||
| `monitorId` | string | No | Filter by monitor ID |
|
||||
| `apiKey` | string | Yes | Datadog API key |
|
||||
| `applicationKey` | string | Yes | Datadog Application key |
|
||||
| `site` | string | No | Datadog site/region \(default: datadoghq.com\) |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `downtimes` | array | List of downtimes |
|
||||
|
||||
### `datadog_cancel_downtime`
|
||||
|
||||
Cancel a scheduled downtime.
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `downtimeId` | string | Yes | The ID of the downtime to cancel |
|
||||
| `apiKey` | string | Yes | Datadog API key |
|
||||
| `applicationKey` | string | Yes | Datadog Application key |
|
||||
| `site` | string | No | Datadog site/region \(default: datadoghq.com\) |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Whether the downtime was successfully canceled |
|
||||
|
||||
|
||||
|
||||
## Notes
|
||||
|
||||
- Category: `tools`
|
||||
- Type: `datadog`
|
||||
224
apps/docs/content/docs/en/tools/dropbox.mdx
Normal file
224
apps/docs/content/docs/en/tools/dropbox.mdx
Normal file
@@ -0,0 +1,224 @@
|
||||
---
|
||||
title: Dropbox
|
||||
description: Upload, download, share, and manage files in Dropbox
|
||||
---
|
||||
|
||||
import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
<BlockInfoCard
|
||||
type="dropbox"
|
||||
color="#0061FF"
|
||||
/>
|
||||
|
||||
{/* MANUAL-CONTENT-START:intro */}
|
||||
[Dropbox](https://dropbox.com/) is a popular cloud storage and collaboration platform that enables individuals and teams to securely store, access, and share files from anywhere. Dropbox is designed for easy file management, syncing, and powerful collaboration, whether you're working solo or with a group.
|
||||
|
||||
With Dropbox in Sim, you can:
|
||||
|
||||
- **Upload and download files**: Seamlessly upload any file to your Dropbox or retrieve content on demand
|
||||
- **List folder contents**: Browse the files and folders within any Dropbox directory
|
||||
- **Create new folders**: Organize your files by programmatically creating new folders in your Dropbox
|
||||
- **Search files and folders**: Locate documents, images, or other items by name or content
|
||||
- **Generate shared links**: Quickly create shareable public or private links for files and folders
|
||||
- **Manage files**: Move, delete, or rename files and folders as part of automated workflows
|
||||
|
||||
These capabilities allow your Sim agents to automate Dropbox operations directly within your workflows — from backing up important files to distributing content and maintaining organized folders. Use Dropbox as both a source and destination for files, enabling seamless cloud storage management as part of your business processes.
|
||||
{/* MANUAL-CONTENT-END */}
|
||||
|
||||
|
||||
## Usage Instructions
|
||||
|
||||
Integrate Dropbox into your workflow for file management, sharing, and collaboration. Upload files, download content, create folders, manage shared links, and more.
|
||||
|
||||
|
||||
|
||||
## Tools
|
||||
|
||||
### `dropbox_upload`
|
||||
|
||||
Upload a file to Dropbox
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `path` | string | Yes | The path in Dropbox where the file should be saved \(e.g., /folder/document.pdf\) |
|
||||
| `fileContent` | string | Yes | The base64 encoded content of the file to upload |
|
||||
| `fileName` | string | No | Optional filename \(used if path is a folder\) |
|
||||
| `mode` | string | No | Write mode: add \(default\) or overwrite |
|
||||
| `autorename` | boolean | No | If true, rename the file if there is a conflict |
|
||||
| `mute` | boolean | No | If true, don't notify the user about this upload |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `file` | object | The uploaded file metadata |
|
||||
|
||||
### `dropbox_download`
|
||||
|
||||
Download a file from Dropbox and get a temporary link
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `path` | string | Yes | The path of the file to download \(e.g., /folder/document.pdf\) |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `file` | object | The file metadata |
|
||||
|
||||
### `dropbox_list_folder`
|
||||
|
||||
List the contents of a folder in Dropbox
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `path` | string | Yes | The path of the folder to list \(use "" for root\) |
|
||||
| `recursive` | boolean | No | If true, list contents recursively |
|
||||
| `includeDeleted` | boolean | No | If true, include deleted files/folders |
|
||||
| `includeMediaInfo` | boolean | No | If true, include media info for photos/videos |
|
||||
| `limit` | number | No | Maximum number of results to return \(default: 500\) |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `entries` | array | List of files and folders in the directory |
|
||||
|
||||
### `dropbox_create_folder`
|
||||
|
||||
Create a new folder in Dropbox
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `path` | string | Yes | The path where the folder should be created \(e.g., /new-folder\) |
|
||||
| `autorename` | boolean | No | If true, rename the folder if there is a conflict |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `folder` | object | The created folder metadata |
|
||||
|
||||
### `dropbox_delete`
|
||||
|
||||
Delete a file or folder in Dropbox (moves to trash)
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `path` | string | Yes | The path of the file or folder to delete |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `metadata` | object | Metadata of the deleted item |
|
||||
|
||||
### `dropbox_copy`
|
||||
|
||||
Copy a file or folder in Dropbox
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `fromPath` | string | Yes | The source path of the file or folder to copy |
|
||||
| `toPath` | string | Yes | The destination path for the copied file or folder |
|
||||
| `autorename` | boolean | No | If true, rename the file if there is a conflict at destination |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `metadata` | object | Metadata of the copied item |
|
||||
|
||||
### `dropbox_move`
|
||||
|
||||
Move or rename a file or folder in Dropbox
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `fromPath` | string | Yes | The source path of the file or folder to move |
|
||||
| `toPath` | string | Yes | The destination path for the moved file or folder |
|
||||
| `autorename` | boolean | No | If true, rename the file if there is a conflict at destination |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `metadata` | object | Metadata of the moved item |
|
||||
|
||||
### `dropbox_get_metadata`
|
||||
|
||||
Get metadata for a file or folder in Dropbox
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `path` | string | Yes | The path of the file or folder to get metadata for |
|
||||
| `includeMediaInfo` | boolean | No | If true, include media info for photos/videos |
|
||||
| `includeDeleted` | boolean | No | If true, include deleted files in results |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `metadata` | object | Metadata for the file or folder |
|
||||
|
||||
### `dropbox_create_shared_link`
|
||||
|
||||
Create a shareable link for a file or folder in Dropbox
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `path` | string | Yes | The path of the file or folder to share |
|
||||
| `requestedVisibility` | string | No | Visibility: public, team_only, or password |
|
||||
| `linkPassword` | string | No | Password for the shared link \(only if visibility is password\) |
|
||||
| `expires` | string | No | Expiration date in ISO 8601 format \(e.g., 2025-12-31T23:59:59Z\) |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `sharedLink` | object | The created shared link |
|
||||
|
||||
### `dropbox_search`
|
||||
|
||||
Search for files and folders in Dropbox
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `query` | string | Yes | The search query |
|
||||
| `path` | string | No | Limit search to a specific folder path |
|
||||
| `fileExtensions` | string | No | Comma-separated list of file extensions to filter by \(e.g., pdf,xlsx\) |
|
||||
| `maxResults` | number | No | Maximum number of results to return \(default: 100\) |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `matches` | array | Search results |
|
||||
|
||||
|
||||
|
||||
## Notes
|
||||
|
||||
- Category: `tools`
|
||||
- Type: `dropbox`
|
||||
68
apps/docs/content/docs/en/tools/duckduckgo.mdx
Normal file
68
apps/docs/content/docs/en/tools/duckduckgo.mdx
Normal file
@@ -0,0 +1,68 @@
|
||||
---
|
||||
title: DuckDuckGo
|
||||
description: Search with DuckDuckGo
|
||||
---
|
||||
|
||||
import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
<BlockInfoCard
|
||||
type="duckduckgo"
|
||||
color="#FFFFFF"
|
||||
/>
|
||||
|
||||
{/* MANUAL-CONTENT-START:intro */}
|
||||
[DuckDuckGo](https://duckduckgo.com/) is a privacy-focused web search engine that delivers instant answers, abstracts, related topics, and more — without tracking you or your searches. DuckDuckGo makes it easy to find information without any user profiling or targeted ads.
|
||||
|
||||
With DuckDuckGo in Sim, you can:
|
||||
|
||||
- **Search the web**: Instantly find answers, facts, and overviews for a given search query
|
||||
- **Get direct answers**: Retrieve specific responses for calculations, conversions, or factual queries
|
||||
- **Access abstracts**: Receive short summaries or descriptions for your search topics
|
||||
- **Fetch related topics**: Discover links and references relevant to your search
|
||||
- **Filter output**: Optionally remove HTML or skip disambiguation for cleaner results
|
||||
|
||||
These features enable your Sim agents to automate access to fresh web knowledge — from surfacing facts in a workflow, to enriching documents and analysis with up-to-date information. Because DuckDuckGo’s Instant Answers API is open and does not require an API key, it’s simple and privacy-safe to integrate into your automated business processes.
|
||||
{/* MANUAL-CONTENT-END */}
|
||||
|
||||
|
||||
## Usage Instructions
|
||||
|
||||
Search the web using DuckDuckGo Instant Answers API. Returns instant answers, abstracts, related topics, and more. Free to use without an API key.
|
||||
|
||||
|
||||
|
||||
## Tools
|
||||
|
||||
### `duckduckgo_search`
|
||||
|
||||
Search the web using DuckDuckGo Instant Answers API. Returns instant answers, abstracts, and related topics for your query. Free to use without an API key.
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `query` | string | Yes | The search query to execute |
|
||||
| `noHtml` | boolean | No | Remove HTML from text in results \(default: true\) |
|
||||
| `skipDisambig` | boolean | No | Skip disambiguation results \(default: false\) |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `heading` | string | The heading/title of the instant answer |
|
||||
| `abstract` | string | A short abstract summary of the topic |
|
||||
| `abstractText` | string | Plain text version of the abstract |
|
||||
| `abstractSource` | string | The source of the abstract \(e.g., Wikipedia\) |
|
||||
| `abstractURL` | string | URL to the source of the abstract |
|
||||
| `image` | string | URL to an image related to the topic |
|
||||
| `answer` | string | Direct answer if available \(e.g., for calculations\) |
|
||||
| `answerType` | string | Type of the answer \(e.g., calc, ip, etc.\) |
|
||||
| `type` | string | Response type: A \(article\), D \(disambiguation\), C \(category\), N \(name\), E \(exclusive\) |
|
||||
| `relatedTopics` | array | Array of related topics with URLs and descriptions |
|
||||
|
||||
|
||||
|
||||
## Notes
|
||||
|
||||
- Category: `tools`
|
||||
- Type: `duckduckgo`
|
||||
370
apps/docs/content/docs/en/tools/elasticsearch.mdx
Normal file
370
apps/docs/content/docs/en/tools/elasticsearch.mdx
Normal file
@@ -0,0 +1,370 @@
|
||||
---
|
||||
title: Elasticsearch
|
||||
description: Search, index, and manage data in Elasticsearch
|
||||
---
|
||||
|
||||
import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
<BlockInfoCard
|
||||
type="elasticsearch"
|
||||
color="#E0E0E0"
|
||||
/>
|
||||
|
||||
{/* MANUAL-CONTENT-START:intro */}
|
||||
[Elasticsearch](https://www.elastic.co/elasticsearch/) is a powerful distributed search and analytics engine that enables you to index, search, and analyze large volumes of data in real time. It’s widely used for powering search features, log and event data analytics, observability, and more.
|
||||
|
||||
With Elasticsearch in Sim, you gain programmatic access to core Elasticsearch capabilities, including:
|
||||
|
||||
- **Search documents**: Perform advanced searches on structured or unstructured text using Query DSL, with support for sorting, pagination, and field selection.
|
||||
- **Index documents**: Add new documents or update existing ones in any Elasticsearch index for immediate retrieval and analysis.
|
||||
- **Get, update, or delete documents**: Retrieve, modify, or remove specific documents by ID.
|
||||
- **Bulk operations**: Execute multiple indexing or update actions in a single request for high-throughput data processing.
|
||||
- **Manage indexes**: Create, delete, or get details about indexes as part of your workflow automation.
|
||||
- **Cluster monitoring**: Check the health and stats of your Elasticsearch deployment.
|
||||
|
||||
Sim's Elasticsearch tools work with both self-hosted and Elastic Cloud environments. Integrate Elasticsearch into your agent workflows to automate data ingestion, search across vast datasets, run reporting, or build custom search-powered applications – all without manual intervention.
|
||||
{/* MANUAL-CONTENT-END */}
|
||||
|
||||
|
||||
## Usage Instructions
|
||||
|
||||
Integrate Elasticsearch into workflows for powerful search, indexing, and data management. Supports document CRUD operations, advanced search queries, bulk operations, index management, and cluster monitoring. Works with both self-hosted and Elastic Cloud deployments.
|
||||
|
||||
|
||||
|
||||
## Tools
|
||||
|
||||
### `elasticsearch_search`
|
||||
|
||||
Search documents in Elasticsearch using Query DSL. Returns matching documents with scores and metadata.
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `deploymentType` | string | Yes | Deployment type: self_hosted or cloud |
|
||||
| `host` | string | No | Elasticsearch host URL \(for self-hosted\) |
|
||||
| `cloudId` | string | No | Elastic Cloud ID \(for cloud deployments\) |
|
||||
| `authMethod` | string | Yes | Authentication method: api_key or basic_auth |
|
||||
| `apiKey` | string | No | Elasticsearch API key |
|
||||
| `username` | string | No | Username for basic auth |
|
||||
| `password` | string | No | Password for basic auth |
|
||||
| `index` | string | Yes | Index name to search |
|
||||
| `query` | string | No | Query DSL as JSON string |
|
||||
| `from` | number | No | Starting offset for pagination \(default: 0\) |
|
||||
| `size` | number | No | Number of results to return \(default: 10\) |
|
||||
| `sort` | string | No | Sort specification as JSON string |
|
||||
| `sourceIncludes` | string | No | Comma-separated list of fields to include in _source |
|
||||
| `sourceExcludes` | string | No | Comma-separated list of fields to exclude from _source |
|
||||
| `trackTotalHits` | boolean | No | Track accurate total hit count \(default: true\) |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `took` | number | Time in milliseconds the search took |
|
||||
| `timed_out` | boolean | Whether the search timed out |
|
||||
| `hits` | object | Search results with total count and matching documents |
|
||||
| `aggregations` | json | Aggregation results if any |
|
||||
|
||||
### `elasticsearch_index_document`
|
||||
|
||||
Index (create or update) a document in Elasticsearch.
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `deploymentType` | string | Yes | Deployment type: self_hosted or cloud |
|
||||
| `host` | string | No | Elasticsearch host URL \(for self-hosted\) |
|
||||
| `cloudId` | string | No | Elastic Cloud ID \(for cloud deployments\) |
|
||||
| `authMethod` | string | Yes | Authentication method: api_key or basic_auth |
|
||||
| `apiKey` | string | No | Elasticsearch API key |
|
||||
| `username` | string | No | Username for basic auth |
|
||||
| `password` | string | No | Password for basic auth |
|
||||
| `index` | string | Yes | Target index name |
|
||||
| `documentId` | string | No | Document ID \(auto-generated if not provided\) |
|
||||
| `document` | string | Yes | Document body as JSON string |
|
||||
| `refresh` | string | No | Refresh policy: true, false, or wait_for |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `_index` | string | Index where the document was stored |
|
||||
| `_id` | string | Document ID |
|
||||
| `_version` | number | Document version |
|
||||
| `result` | string | Operation result \(created or updated\) |
|
||||
|
||||
### `elasticsearch_get_document`
|
||||
|
||||
Retrieve a document by ID from Elasticsearch.
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `deploymentType` | string | Yes | Deployment type: self_hosted or cloud |
|
||||
| `host` | string | No | Elasticsearch host URL \(for self-hosted\) |
|
||||
| `cloudId` | string | No | Elastic Cloud ID \(for cloud deployments\) |
|
||||
| `authMethod` | string | Yes | Authentication method: api_key or basic_auth |
|
||||
| `apiKey` | string | No | Elasticsearch API key |
|
||||
| `username` | string | No | Username for basic auth |
|
||||
| `password` | string | No | Password for basic auth |
|
||||
| `index` | string | Yes | Index name |
|
||||
| `documentId` | string | Yes | Document ID to retrieve |
|
||||
| `sourceIncludes` | string | No | Comma-separated list of fields to include |
|
||||
| `sourceExcludes` | string | No | Comma-separated list of fields to exclude |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `_index` | string | Index name |
|
||||
| `_id` | string | Document ID |
|
||||
| `_version` | number | Document version |
|
||||
| `found` | boolean | Whether the document was found |
|
||||
| `_source` | json | Document content |
|
||||
|
||||
### `elasticsearch_update_document`
|
||||
|
||||
Partially update a document in Elasticsearch using doc merge.
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `deploymentType` | string | Yes | Deployment type: self_hosted or cloud |
|
||||
| `host` | string | No | Elasticsearch host URL \(for self-hosted\) |
|
||||
| `cloudId` | string | No | Elastic Cloud ID \(for cloud deployments\) |
|
||||
| `authMethod` | string | Yes | Authentication method: api_key or basic_auth |
|
||||
| `apiKey` | string | No | Elasticsearch API key |
|
||||
| `username` | string | No | Username for basic auth |
|
||||
| `password` | string | No | Password for basic auth |
|
||||
| `index` | string | Yes | Index name |
|
||||
| `documentId` | string | Yes | Document ID to update |
|
||||
| `document` | string | Yes | Partial document to merge as JSON string |
|
||||
| `retryOnConflict` | number | No | Number of retries on version conflict |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `_index` | string | Index name |
|
||||
| `_id` | string | Document ID |
|
||||
| `_version` | number | New document version |
|
||||
| `result` | string | Operation result \(updated or noop\) |
|
||||
|
||||
### `elasticsearch_delete_document`
|
||||
|
||||
Delete a document from Elasticsearch by ID.
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `deploymentType` | string | Yes | Deployment type: self_hosted or cloud |
|
||||
| `host` | string | No | Elasticsearch host URL \(for self-hosted\) |
|
||||
| `cloudId` | string | No | Elastic Cloud ID \(for cloud deployments\) |
|
||||
| `authMethod` | string | Yes | Authentication method: api_key or basic_auth |
|
||||
| `apiKey` | string | No | Elasticsearch API key |
|
||||
| `username` | string | No | Username for basic auth |
|
||||
| `password` | string | No | Password for basic auth |
|
||||
| `index` | string | Yes | Index name |
|
||||
| `documentId` | string | Yes | Document ID to delete |
|
||||
| `refresh` | string | No | Refresh policy: true, false, or wait_for |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `_index` | string | Index name |
|
||||
| `_id` | string | Document ID |
|
||||
| `_version` | number | Document version |
|
||||
| `result` | string | Operation result \(deleted or not_found\) |
|
||||
|
||||
### `elasticsearch_bulk`
|
||||
|
||||
Perform multiple index, create, delete, or update operations in a single request for high performance.
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `deploymentType` | string | Yes | Deployment type: self_hosted or cloud |
|
||||
| `host` | string | No | Elasticsearch host URL \(for self-hosted\) |
|
||||
| `cloudId` | string | No | Elastic Cloud ID \(for cloud deployments\) |
|
||||
| `authMethod` | string | Yes | Authentication method: api_key or basic_auth |
|
||||
| `apiKey` | string | No | Elasticsearch API key |
|
||||
| `username` | string | No | Username for basic auth |
|
||||
| `password` | string | No | Password for basic auth |
|
||||
| `index` | string | No | Default index for operations that do not specify one |
|
||||
| `operations` | string | Yes | Bulk operations as NDJSON string \(newline-delimited JSON\) |
|
||||
| `refresh` | string | No | Refresh policy: true, false, or wait_for |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `took` | number | Time in milliseconds the bulk operation took |
|
||||
| `errors` | boolean | Whether any operation had an error |
|
||||
| `items` | array | Results for each operation |
|
||||
|
||||
### `elasticsearch_count`
|
||||
|
||||
Count documents matching a query in Elasticsearch.
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `deploymentType` | string | Yes | Deployment type: self_hosted or cloud |
|
||||
| `host` | string | No | Elasticsearch host URL \(for self-hosted\) |
|
||||
| `cloudId` | string | No | Elastic Cloud ID \(for cloud deployments\) |
|
||||
| `authMethod` | string | Yes | Authentication method: api_key or basic_auth |
|
||||
| `apiKey` | string | No | Elasticsearch API key |
|
||||
| `username` | string | No | Username for basic auth |
|
||||
| `password` | string | No | Password for basic auth |
|
||||
| `index` | string | Yes | Index name to count documents in |
|
||||
| `query` | string | No | Optional query to filter documents \(JSON string\) |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `count` | number | Number of documents matching the query |
|
||||
| `_shards` | object | Shard statistics |
|
||||
|
||||
### `elasticsearch_create_index`
|
||||
|
||||
Create a new index with optional settings and mappings.
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `deploymentType` | string | Yes | Deployment type: self_hosted or cloud |
|
||||
| `host` | string | No | Elasticsearch host URL \(for self-hosted\) |
|
||||
| `cloudId` | string | No | Elastic Cloud ID \(for cloud deployments\) |
|
||||
| `authMethod` | string | Yes | Authentication method: api_key or basic_auth |
|
||||
| `apiKey` | string | No | Elasticsearch API key |
|
||||
| `username` | string | No | Username for basic auth |
|
||||
| `password` | string | No | Password for basic auth |
|
||||
| `index` | string | Yes | Index name to create |
|
||||
| `settings` | string | No | Index settings as JSON string |
|
||||
| `mappings` | string | No | Index mappings as JSON string |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `acknowledged` | boolean | Whether the request was acknowledged |
|
||||
| `shards_acknowledged` | boolean | Whether the shards were acknowledged |
|
||||
| `index` | string | Created index name |
|
||||
|
||||
### `elasticsearch_delete_index`
|
||||
|
||||
Delete an index and all its documents. This operation is irreversible.
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `deploymentType` | string | Yes | Deployment type: self_hosted or cloud |
|
||||
| `host` | string | No | Elasticsearch host URL \(for self-hosted\) |
|
||||
| `cloudId` | string | No | Elastic Cloud ID \(for cloud deployments\) |
|
||||
| `authMethod` | string | Yes | Authentication method: api_key or basic_auth |
|
||||
| `apiKey` | string | No | Elasticsearch API key |
|
||||
| `username` | string | No | Username for basic auth |
|
||||
| `password` | string | No | Password for basic auth |
|
||||
| `index` | string | Yes | Index name to delete |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `acknowledged` | boolean | Whether the deletion was acknowledged |
|
||||
|
||||
### `elasticsearch_get_index`
|
||||
|
||||
Retrieve index information including settings, mappings, and aliases.
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `deploymentType` | string | Yes | Deployment type: self_hosted or cloud |
|
||||
| `host` | string | No | Elasticsearch host URL \(for self-hosted\) |
|
||||
| `cloudId` | string | No | Elastic Cloud ID \(for cloud deployments\) |
|
||||
| `authMethod` | string | Yes | Authentication method: api_key or basic_auth |
|
||||
| `apiKey` | string | No | Elasticsearch API key |
|
||||
| `username` | string | No | Username for basic auth |
|
||||
| `password` | string | No | Password for basic auth |
|
||||
| `index` | string | Yes | Index name to retrieve info for |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `index` | json | Index information including aliases, mappings, and settings |
|
||||
|
||||
### `elasticsearch_cluster_health`
|
||||
|
||||
Get the health status of the Elasticsearch cluster.
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `deploymentType` | string | Yes | Deployment type: self_hosted or cloud |
|
||||
| `host` | string | No | Elasticsearch host URL \(for self-hosted\) |
|
||||
| `cloudId` | string | No | Elastic Cloud ID \(for cloud deployments\) |
|
||||
| `authMethod` | string | Yes | Authentication method: api_key or basic_auth |
|
||||
| `apiKey` | string | No | Elasticsearch API key |
|
||||
| `username` | string | No | Username for basic auth |
|
||||
| `password` | string | No | Password for basic auth |
|
||||
| `waitForStatus` | string | No | Wait until cluster reaches this status: green, yellow, or red |
|
||||
| `timeout` | string | No | Timeout for the wait operation \(e.g., 30s, 1m\) |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `cluster_name` | string | Name of the cluster |
|
||||
| `status` | string | Cluster health status: green, yellow, or red |
|
||||
| `number_of_nodes` | number | Total number of nodes in the cluster |
|
||||
| `number_of_data_nodes` | number | Number of data nodes |
|
||||
| `active_shards` | number | Number of active shards |
|
||||
| `unassigned_shards` | number | Number of unassigned shards |
|
||||
|
||||
### `elasticsearch_cluster_stats`
|
||||
|
||||
Get comprehensive statistics about the Elasticsearch cluster.
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `deploymentType` | string | Yes | Deployment type: self_hosted or cloud |
|
||||
| `host` | string | No | Elasticsearch host URL \(for self-hosted\) |
|
||||
| `cloudId` | string | No | Elastic Cloud ID \(for cloud deployments\) |
|
||||
| `authMethod` | string | Yes | Authentication method: api_key or basic_auth |
|
||||
| `apiKey` | string | No | Elasticsearch API key |
|
||||
| `username` | string | No | Username for basic auth |
|
||||
| `password` | string | No | Password for basic auth |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `cluster_name` | string | Name of the cluster |
|
||||
| `status` | string | Cluster health status |
|
||||
| `nodes` | object | Node statistics including count and versions |
|
||||
| `indices` | object | Index statistics including document count and store size |
|
||||
|
||||
|
||||
|
||||
## Notes
|
||||
|
||||
- Category: `tools`
|
||||
- Type: `elasticsearch`
|
||||
434
apps/docs/content/docs/en/tools/gitlab.mdx
Normal file
434
apps/docs/content/docs/en/tools/gitlab.mdx
Normal file
@@ -0,0 +1,434 @@
|
||||
---
|
||||
title: GitLab
|
||||
description: Interact with GitLab projects, issues, merge requests, and pipelines
|
||||
---
|
||||
|
||||
import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
<BlockInfoCard
|
||||
type="gitlab"
|
||||
color="#E0E0E0"
|
||||
/>
|
||||
|
||||
{/* MANUAL-CONTENT-START:intro */}
|
||||
[GitLab](https://gitlab.com/) is a comprehensive DevOps platform that allows teams to manage, collaborate on, and automate their software development lifecycle. With GitLab, you can effortlessly handle source code management, CI/CD, reviews, and collaboration in a single application.
|
||||
|
||||
With GitLab in Sim, you can:
|
||||
|
||||
- **Manage projects and repositories**: List and retrieve your GitLab projects, access details, and organize your repositories
|
||||
- **Work with issues**: List, create, and comment on issues to track work and collaborate effectively
|
||||
- **Handle merge requests**: Review, create, and manage merge requests for code changes and peer reviews
|
||||
- **Automate CI/CD pipelines**: Trigger, monitor, and interact with GitLab pipelines as part of your automation flows
|
||||
- **Collaborate with comments**: Add comments to issues or merge requests for efficient communication within your team
|
||||
|
||||
Using Sim’s GitLab integration, your agents can programmatically interact with your GitLab projects. Automate project management, issue tracking, code reviews, and pipeline operations seamlessly in your workflows, optimizing your software development process and enhancing collaboration across your team.
|
||||
{/* MANUAL-CONTENT-END */}
|
||||
|
||||
|
||||
## Usage Instructions
|
||||
|
||||
Integrate GitLab into the workflow. Can manage projects, issues, merge requests, pipelines, and add comments. Supports all core GitLab DevOps operations.
|
||||
|
||||
|
||||
|
||||
## Tools
|
||||
|
||||
### `gitlab_list_projects`
|
||||
|
||||
List GitLab projects accessible to the authenticated user
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `owned` | boolean | No | Limit to projects owned by the current user |
|
||||
| `membership` | boolean | No | Limit to projects the current user is a member of |
|
||||
| `search` | string | No | Search projects by name |
|
||||
| `visibility` | string | No | Filter by visibility \(public, internal, private\) |
|
||||
| `orderBy` | string | No | Order by field \(id, name, path, created_at, updated_at, last_activity_at\) |
|
||||
| `sort` | string | No | Sort direction \(asc, desc\) |
|
||||
| `perPage` | number | No | Number of results per page \(default 20, max 100\) |
|
||||
| `page` | number | No | Page number for pagination |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `projects` | array | List of GitLab projects |
|
||||
| `total` | number | Total number of projects |
|
||||
|
||||
### `gitlab_get_project`
|
||||
|
||||
Get details of a specific GitLab project
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `projectId` | string | Yes | Project ID or URL-encoded path \(e.g., "namespace/project"\) |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `project` | object | The GitLab project details |
|
||||
|
||||
### `gitlab_list_issues`
|
||||
|
||||
List issues in a GitLab project
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `projectId` | string | Yes | Project ID or URL-encoded path |
|
||||
| `state` | string | No | Filter by state \(opened, closed, all\) |
|
||||
| `labels` | string | No | Comma-separated list of label names |
|
||||
| `assigneeId` | number | No | Filter by assignee user ID |
|
||||
| `milestoneTitle` | string | No | Filter by milestone title |
|
||||
| `search` | string | No | Search issues by title and description |
|
||||
| `orderBy` | string | No | Order by field \(created_at, updated_at\) |
|
||||
| `sort` | string | No | Sort direction \(asc, desc\) |
|
||||
| `perPage` | number | No | Number of results per page \(default 20, max 100\) |
|
||||
| `page` | number | No | Page number for pagination |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `issues` | array | List of GitLab issues |
|
||||
| `total` | number | Total number of issues |
|
||||
|
||||
### `gitlab_get_issue`
|
||||
|
||||
Get details of a specific GitLab issue
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `projectId` | string | Yes | Project ID or URL-encoded path |
|
||||
| `issueIid` | number | Yes | Issue number within the project \(the # shown in GitLab UI\) |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `issue` | object | The GitLab issue details |
|
||||
|
||||
### `gitlab_create_issue`
|
||||
|
||||
Create a new issue in a GitLab project
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `projectId` | string | Yes | Project ID or URL-encoded path |
|
||||
| `title` | string | Yes | Issue title |
|
||||
| `description` | string | No | Issue description \(Markdown supported\) |
|
||||
| `labels` | string | No | Comma-separated list of label names |
|
||||
| `assigneeIds` | array | No | Array of user IDs to assign |
|
||||
| `milestoneId` | number | No | Milestone ID to assign |
|
||||
| `dueDate` | string | No | Due date in YYYY-MM-DD format |
|
||||
| `confidential` | boolean | No | Whether the issue is confidential |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `issue` | object | The created GitLab issue |
|
||||
|
||||
### `gitlab_update_issue`
|
||||
|
||||
Update an existing issue in a GitLab project
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `projectId` | string | Yes | Project ID or URL-encoded path |
|
||||
| `issueIid` | number | Yes | Issue internal ID \(IID\) |
|
||||
| `title` | string | No | New issue title |
|
||||
| `description` | string | No | New issue description \(Markdown supported\) |
|
||||
| `stateEvent` | string | No | State event \(close or reopen\) |
|
||||
| `labels` | string | No | Comma-separated list of label names |
|
||||
| `assigneeIds` | array | No | Array of user IDs to assign |
|
||||
| `milestoneId` | number | No | Milestone ID to assign |
|
||||
| `dueDate` | string | No | Due date in YYYY-MM-DD format |
|
||||
| `confidential` | boolean | No | Whether the issue is confidential |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `issue` | object | The updated GitLab issue |
|
||||
|
||||
### `gitlab_delete_issue`
|
||||
|
||||
Delete an issue from a GitLab project
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `projectId` | string | Yes | Project ID or URL-encoded path |
|
||||
| `issueIid` | number | Yes | Issue internal ID \(IID\) |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Whether the issue was deleted successfully |
|
||||
|
||||
### `gitlab_create_issue_note`
|
||||
|
||||
Add a comment to a GitLab issue
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `projectId` | string | Yes | Project ID or URL-encoded path |
|
||||
| `issueIid` | number | Yes | Issue internal ID \(IID\) |
|
||||
| `body` | string | Yes | Comment body \(Markdown supported\) |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `note` | object | The created comment |
|
||||
|
||||
### `gitlab_list_merge_requests`
|
||||
|
||||
List merge requests in a GitLab project
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `projectId` | string | Yes | Project ID or URL-encoded path |
|
||||
| `state` | string | No | Filter by state \(opened, closed, merged, all\) |
|
||||
| `labels` | string | No | Comma-separated list of label names |
|
||||
| `sourceBranch` | string | No | Filter by source branch |
|
||||
| `targetBranch` | string | No | Filter by target branch |
|
||||
| `orderBy` | string | No | Order by field \(created_at, updated_at\) |
|
||||
| `sort` | string | No | Sort direction \(asc, desc\) |
|
||||
| `perPage` | number | No | Number of results per page \(default 20, max 100\) |
|
||||
| `page` | number | No | Page number for pagination |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `mergeRequests` | array | List of GitLab merge requests |
|
||||
| `total` | number | Total number of merge requests |
|
||||
|
||||
### `gitlab_get_merge_request`
|
||||
|
||||
Get details of a specific GitLab merge request
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `projectId` | string | Yes | Project ID or URL-encoded path |
|
||||
| `mergeRequestIid` | number | Yes | Merge request internal ID \(IID\) |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `mergeRequest` | object | The GitLab merge request details |
|
||||
|
||||
### `gitlab_create_merge_request`
|
||||
|
||||
Create a new merge request in a GitLab project
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `projectId` | string | Yes | Project ID or URL-encoded path |
|
||||
| `sourceBranch` | string | Yes | Source branch name |
|
||||
| `targetBranch` | string | Yes | Target branch name |
|
||||
| `title` | string | Yes | Merge request title |
|
||||
| `description` | string | No | Merge request description \(Markdown supported\) |
|
||||
| `labels` | string | No | Comma-separated list of label names |
|
||||
| `assigneeIds` | array | No | Array of user IDs to assign |
|
||||
| `milestoneId` | number | No | Milestone ID to assign |
|
||||
| `removeSourceBranch` | boolean | No | Delete source branch after merge |
|
||||
| `squash` | boolean | No | Squash commits on merge |
|
||||
| `draft` | boolean | No | Mark as draft \(work in progress\) |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `mergeRequest` | object | The created GitLab merge request |
|
||||
|
||||
### `gitlab_update_merge_request`
|
||||
|
||||
Update an existing merge request in a GitLab project
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `projectId` | string | Yes | Project ID or URL-encoded path |
|
||||
| `mergeRequestIid` | number | Yes | Merge request internal ID \(IID\) |
|
||||
| `title` | string | No | New merge request title |
|
||||
| `description` | string | No | New merge request description |
|
||||
| `stateEvent` | string | No | State event \(close or reopen\) |
|
||||
| `labels` | string | No | Comma-separated list of label names |
|
||||
| `assigneeIds` | array | No | Array of user IDs to assign |
|
||||
| `milestoneId` | number | No | Milestone ID to assign |
|
||||
| `targetBranch` | string | No | New target branch |
|
||||
| `removeSourceBranch` | boolean | No | Delete source branch after merge |
|
||||
| `squash` | boolean | No | Squash commits on merge |
|
||||
| `draft` | boolean | No | Mark as draft \(work in progress\) |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `mergeRequest` | object | The updated GitLab merge request |
|
||||
|
||||
### `gitlab_merge_merge_request`
|
||||
|
||||
Merge a merge request in a GitLab project
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `projectId` | string | Yes | Project ID or URL-encoded path |
|
||||
| `mergeRequestIid` | number | Yes | Merge request internal ID \(IID\) |
|
||||
| `mergeCommitMessage` | string | No | Custom merge commit message |
|
||||
| `squashCommitMessage` | string | No | Custom squash commit message |
|
||||
| `squash` | boolean | No | Squash commits before merging |
|
||||
| `shouldRemoveSourceBranch` | boolean | No | Delete source branch after merge |
|
||||
| `mergeWhenPipelineSucceeds` | boolean | No | Merge when pipeline succeeds |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `mergeRequest` | object | The merged GitLab merge request |
|
||||
|
||||
### `gitlab_create_merge_request_note`
|
||||
|
||||
Add a comment to a GitLab merge request
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `projectId` | string | Yes | Project ID or URL-encoded path |
|
||||
| `mergeRequestIid` | number | Yes | Merge request internal ID \(IID\) |
|
||||
| `body` | string | Yes | Comment body \(Markdown supported\) |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `note` | object | The created comment |
|
||||
|
||||
### `gitlab_list_pipelines`
|
||||
|
||||
List pipelines in a GitLab project
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `projectId` | string | Yes | Project ID or URL-encoded path |
|
||||
| `ref` | string | No | Filter by ref \(branch or tag\) |
|
||||
| `status` | string | No | Filter by status \(created, waiting_for_resource, preparing, pending, running, success, failed, canceled, skipped, manual, scheduled\) |
|
||||
| `orderBy` | string | No | Order by field \(id, status, ref, updated_at, user_id\) |
|
||||
| `sort` | string | No | Sort direction \(asc, desc\) |
|
||||
| `perPage` | number | No | Number of results per page \(default 20, max 100\) |
|
||||
| `page` | number | No | Page number for pagination |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `pipelines` | array | List of GitLab pipelines |
|
||||
| `total` | number | Total number of pipelines |
|
||||
|
||||
### `gitlab_get_pipeline`
|
||||
|
||||
Get details of a specific GitLab pipeline
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `projectId` | string | Yes | Project ID or URL-encoded path |
|
||||
| `pipelineId` | number | Yes | Pipeline ID |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `pipeline` | object | The GitLab pipeline details |
|
||||
|
||||
### `gitlab_create_pipeline`
|
||||
|
||||
Trigger a new pipeline in a GitLab project
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `projectId` | string | Yes | Project ID or URL-encoded path |
|
||||
| `ref` | string | Yes | Branch or tag to run the pipeline on |
|
||||
| `variables` | array | No | Array of variables for the pipeline \(each with key, value, and optional variable_type\) |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `pipeline` | object | The created GitLab pipeline |
|
||||
|
||||
### `gitlab_retry_pipeline`
|
||||
|
||||
Retry a failed GitLab pipeline
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `projectId` | string | Yes | Project ID or URL-encoded path |
|
||||
| `pipelineId` | number | Yes | Pipeline ID |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `pipeline` | object | The retried GitLab pipeline |
|
||||
|
||||
### `gitlab_cancel_pipeline`
|
||||
|
||||
Cancel a running GitLab pipeline
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `projectId` | string | Yes | Project ID or URL-encoded path |
|
||||
| `pipelineId` | number | Yes | Pipeline ID |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `pipeline` | object | The cancelled GitLab pipeline |
|
||||
|
||||
|
||||
|
||||
## Notes
|
||||
|
||||
- Category: `tools`
|
||||
- Type: `gitlab`
|
||||
@@ -45,9 +45,9 @@ Create a new event in Google Calendar
|
||||
| `summary` | string | Yes | Event title/summary |
|
||||
| `description` | string | No | Event description |
|
||||
| `location` | string | No | Event location |
|
||||
| `startDateTime` | string | Yes | Start date and time \(RFC3339 format, e.g., 2025-06-03T10:00:00-08:00\) |
|
||||
| `endDateTime` | string | Yes | End date and time \(RFC3339 format, e.g., 2025-06-03T11:00:00-08:00\) |
|
||||
| `timeZone` | string | No | Time zone \(e.g., America/Los_Angeles\) |
|
||||
| `startDateTime` | string | Yes | Start date and time. MUST include timezone offset \(e.g., 2025-06-03T10:00:00-08:00\) OR provide timeZone parameter |
|
||||
| `endDateTime` | string | Yes | End date and time. MUST include timezone offset \(e.g., 2025-06-03T11:00:00-08:00\) OR provide timeZone parameter |
|
||||
| `timeZone` | string | No | Time zone \(e.g., America/Los_Angeles\). Required if datetime does not include offset. Defaults to America/Los_Angeles if not provided. |
|
||||
| `attendees` | array | No | Array of attendee email addresses |
|
||||
| `sendUpdates` | string | No | How to send updates to attendees: all, externalOnly, or none |
|
||||
|
||||
|
||||
@@ -113,8 +113,8 @@ List files and folders in Google Drive
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `folderSelector` | string | No | Select the folder to list files from |
|
||||
| `folderId` | string | No | The ID of the folder to list files from \(internal use\) |
|
||||
| `query` | string | No | A query to filter the files |
|
||||
| `pageSize` | number | No | The number of files to return |
|
||||
| `query` | string | No | Search term to filter files by name \(e.g. "budget" finds files with "budget" in the name\). Do NOT use Google Drive query syntax here - just provide a plain search term. |
|
||||
| `pageSize` | number | No | The maximum number of files to return \(default: 100\) |
|
||||
| `pageToken` | string | No | The page token to use for pagination |
|
||||
|
||||
#### Output
|
||||
|
||||
221
apps/docs/content/docs/en/tools/google_groups.mdx
Normal file
221
apps/docs/content/docs/en/tools/google_groups.mdx
Normal file
@@ -0,0 +1,221 @@
|
||||
---
|
||||
title: Google Groups
|
||||
description: Manage Google Workspace Groups and their members
|
||||
---
|
||||
|
||||
import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
<BlockInfoCard
|
||||
type="google_groups"
|
||||
color="#E8F0FE"
|
||||
/>
|
||||
|
||||
## Usage Instructions
|
||||
|
||||
Connect to Google Workspace to create, update, and manage groups and their members using the Admin SDK Directory API.
|
||||
|
||||
|
||||
|
||||
## Tools
|
||||
|
||||
### `google_groups_list_groups`
|
||||
|
||||
List all groups in a Google Workspace domain
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `customer` | string | No | Customer ID or "my_customer" for the authenticated user\'s domain |
|
||||
| `domain` | string | No | Domain name to filter groups by |
|
||||
| `maxResults` | number | No | Maximum number of results to return \(1-200\) |
|
||||
| `pageToken` | string | No | Token for pagination |
|
||||
| `query` | string | No | Search query to filter groups \(e.g., "email:admin*"\) |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `output` | json | Google Groups API response data |
|
||||
|
||||
### `google_groups_get_group`
|
||||
|
||||
Get details of a specific Google Group by email or group ID
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `groupKey` | string | Yes | Group email address or unique group ID |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `output` | json | Google Groups API response data |
|
||||
|
||||
### `google_groups_create_group`
|
||||
|
||||
Create a new Google Group in the domain
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `email` | string | Yes | Email address for the new group \(e.g., team@yourdomain.com\) |
|
||||
| `name` | string | Yes | Display name for the group |
|
||||
| `description` | string | No | Description of the group |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `output` | json | Google Groups API response data |
|
||||
|
||||
### `google_groups_update_group`
|
||||
|
||||
Update an existing Google Group
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `groupKey` | string | Yes | Group email address or unique group ID |
|
||||
| `name` | string | No | New display name for the group |
|
||||
| `description` | string | No | New description for the group |
|
||||
| `email` | string | No | New email address for the group |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `output` | json | Google Groups API response data |
|
||||
|
||||
### `google_groups_delete_group`
|
||||
|
||||
Delete a Google Group
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `groupKey` | string | Yes | Group email address or unique group ID to delete |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `output` | json | Google Groups API response data |
|
||||
|
||||
### `google_groups_list_members`
|
||||
|
||||
List all members of a Google Group
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `groupKey` | string | Yes | Group email address or unique group ID |
|
||||
| `maxResults` | number | No | Maximum number of results to return \(1-200\) |
|
||||
| `pageToken` | string | No | Token for pagination |
|
||||
| `roles` | string | No | Filter by roles \(comma-separated: OWNER, MANAGER, MEMBER\) |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `output` | json | Google Groups API response data |
|
||||
|
||||
### `google_groups_get_member`
|
||||
|
||||
Get details of a specific member in a Google Group
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `groupKey` | string | Yes | Group email address or unique group ID |
|
||||
| `memberKey` | string | Yes | Member email address or unique member ID |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `output` | json | Google Groups API response data |
|
||||
|
||||
### `google_groups_add_member`
|
||||
|
||||
Add a new member to a Google Group
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `groupKey` | string | Yes | Group email address or unique group ID |
|
||||
| `email` | string | Yes | Email address of the member to add |
|
||||
| `role` | string | No | Role for the member \(MEMBER, MANAGER, or OWNER\). Defaults to MEMBER. |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `output` | json | Google Groups API response data |
|
||||
|
||||
### `google_groups_remove_member`
|
||||
|
||||
Remove a member from a Google Group
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `groupKey` | string | Yes | Group email address or unique group ID |
|
||||
| `memberKey` | string | Yes | Email address or unique ID of the member to remove |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `output` | json | Google Groups API response data |
|
||||
|
||||
### `google_groups_update_member`
|
||||
|
||||
Update a member
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `groupKey` | string | Yes | Group email address or unique group ID |
|
||||
| `memberKey` | string | Yes | Member email address or unique member ID |
|
||||
| `role` | string | Yes | New role for the member \(MEMBER, MANAGER, or OWNER\) |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `output` | json | Google Groups API response data |
|
||||
|
||||
### `google_groups_has_member`
|
||||
|
||||
Check if a user is a member of a Google Group
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `groupKey` | string | Yes | Group email address or unique group ID |
|
||||
| `memberKey` | string | Yes | Member email address or unique member ID to check |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `output` | json | Google Groups API response data |
|
||||
|
||||
|
||||
|
||||
## Notes
|
||||
|
||||
- Category: `tools`
|
||||
- Type: `google_groups`
|
||||
@@ -91,8 +91,8 @@ Read data from a Google Sheets spreadsheet
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `spreadsheetId` | string | Yes | The ID of the spreadsheet to read from |
|
||||
| `range` | string | No | The range of cells to read from |
|
||||
| `spreadsheetId` | string | Yes | The ID of the spreadsheet \(found in the URL: docs.google.com/spreadsheets/d/\{SPREADSHEET_ID\}/edit\). |
|
||||
| `range` | string | No | The A1 notation range to read \(e.g. "Sheet1!A1:D10", "A1:B5"\). Defaults to first sheet A1:Z1000 if not specified. |
|
||||
|
||||
#### Output
|
||||
|
||||
@@ -109,9 +109,9 @@ Write data to a Google Sheets spreadsheet
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `spreadsheetId` | string | Yes | The ID of the spreadsheet to write to |
|
||||
| `range` | string | No | The range of cells to write to |
|
||||
| `values` | array | Yes | The data to write to the spreadsheet |
|
||||
| `spreadsheetId` | string | Yes | The ID of the spreadsheet |
|
||||
| `range` | string | No | The A1 notation range to write to \(e.g. "Sheet1!A1:D10", "A1:B5"\) |
|
||||
| `values` | array | Yes | The data to write as a 2D array \(e.g. \[\["Name", "Age"\], \["Alice", 30\], \["Bob", 25\]\]\) or array of objects. |
|
||||
| `valueInputOption` | string | No | The format of the data to write |
|
||||
| `includeValuesInResponse` | boolean | No | Whether to include the written values in the response |
|
||||
|
||||
@@ -134,8 +134,8 @@ Update data in a Google Sheets spreadsheet
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `spreadsheetId` | string | Yes | The ID of the spreadsheet to update |
|
||||
| `range` | string | No | The range of cells to update |
|
||||
| `values` | array | Yes | The data to update in the spreadsheet |
|
||||
| `range` | string | No | The A1 notation range to update \(e.g. "Sheet1!A1:D10", "A1:B5"\) |
|
||||
| `values` | array | Yes | The data to update as a 2D array \(e.g. \[\["Name", "Age"\], \["Alice", 30\]\]\) or array of objects. |
|
||||
| `valueInputOption` | string | No | The format of the data to update |
|
||||
| `includeValuesInResponse` | boolean | No | Whether to include the updated values in the response |
|
||||
|
||||
@@ -158,8 +158,8 @@ Append data to the end of a Google Sheets spreadsheet
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `spreadsheetId` | string | Yes | The ID of the spreadsheet to append to |
|
||||
| `range` | string | No | The range of cells to append after |
|
||||
| `values` | array | Yes | The data to append to the spreadsheet |
|
||||
| `range` | string | No | The A1 notation range to append after \(e.g. "Sheet1", "Sheet1!A:D"\) |
|
||||
| `values` | array | Yes | The data to append as a 2D array \(e.g. \[\["Alice", 30\], \["Bob", 25\]\]\) or array of objects. |
|
||||
| `valueInputOption` | string | No | The format of the data to append |
|
||||
| `insertDataOption` | string | No | How to insert the data \(OVERWRITE or INSERT_ROWS\) |
|
||||
| `includeValuesInResponse` | boolean | No | Whether to include the appended values in the response |
|
||||
|
||||
185
apps/docs/content/docs/en/tools/google_slides.mdx
Normal file
185
apps/docs/content/docs/en/tools/google_slides.mdx
Normal file
@@ -0,0 +1,185 @@
|
||||
---
|
||||
title: Google Slides
|
||||
description: Read, write, and create presentations
|
||||
---
|
||||
|
||||
import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
<BlockInfoCard
|
||||
type="google_slides"
|
||||
color="#E0E0E0"
|
||||
/>
|
||||
|
||||
{/* MANUAL-CONTENT-START:intro */}
|
||||
[Google Slides](https://slides.google.com) is a dynamic cloud-based presentation application that allows users to create, edit, collaborate on, and present slideshows in real-time. As part of Google's productivity suite, Google Slides offers a flexible platform for designing engaging presentations, collaborating with others, and sharing content seamlessly through the cloud.
|
||||
|
||||
Learn how to integrate the Google Slides tools in Sim to effortlessly manage presentations as part of your automated workflows. With Sim, you can read, write, create, and update Google Slides presentations directly through your agents and automated processes, making it easy to deliver up-to-date information, generate custom reports, or produce branded decks programmatically.
|
||||
|
||||
With Google Slides, you can:
|
||||
|
||||
- **Create and edit presentations**: Design visually appealing slides with themes, layouts, and multimedia content
|
||||
- **Collaborate in real-time**: Work simultaneously with teammates, comment, assign tasks, and receive live feedback on presentations
|
||||
- **Present anywhere**: Display presentations online or offline, share links, or publish to the web
|
||||
- **Add images and rich content**: Insert images, graphics, charts, and videos to make your presentations engaging
|
||||
- **Integrate with other services**: Connect seamlessly with Google Drive, Docs, Sheets, and other third-party tools
|
||||
- **Access from any device**: Use Google Slides on desktops, laptops, tablets, and mobile devices for maximum flexibility
|
||||
|
||||
In Sim, the Google Slides integration enables your agents to interact directly with presentation files programmatically. Automate tasks like reading slide content, inserting new slides or images, replacing text throughout a deck, generating new presentations, and retrieving slide thumbnails. This empowers you to scale content creation, keep presentations up-to-date, and embed them into automated document workflows. By connecting Sim with Google Slides, you facilitate AI-driven presentation management—making it easy to generate, update, or extract information from presentations without manual effort.
|
||||
{/* MANUAL-CONTENT-END */}
|
||||
|
||||
|
||||
## Usage Instructions
|
||||
|
||||
Integrate Google Slides into the workflow. Can read, write, create presentations, replace text, add slides, add images, and get thumbnails.
|
||||
|
||||
|
||||
|
||||
## Tools
|
||||
|
||||
### `google_slides_read`
|
||||
|
||||
Read content from a Google Slides presentation
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `presentationId` | string | Yes | The ID of the presentation to read |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `slides` | json | Array of slides with their content |
|
||||
| `metadata` | json | Presentation metadata including ID, title, and URL |
|
||||
|
||||
### `google_slides_write`
|
||||
|
||||
Write or update content in a Google Slides presentation
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `presentationId` | string | Yes | The ID of the presentation to write to |
|
||||
| `content` | string | Yes | The content to write to the slide |
|
||||
| `slideIndex` | number | No | The index of the slide to write to \(defaults to first slide\) |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `updatedContent` | boolean | Indicates if presentation content was updated successfully |
|
||||
| `metadata` | json | Updated presentation metadata including ID, title, and URL |
|
||||
|
||||
### `google_slides_create`
|
||||
|
||||
Create a new Google Slides presentation
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `title` | string | Yes | The title of the presentation to create |
|
||||
| `content` | string | No | The content to add to the first slide |
|
||||
| `folderSelector` | string | No | Select the folder to create the presentation in |
|
||||
| `folderId` | string | No | The ID of the folder to create the presentation in \(internal use\) |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `metadata` | json | Created presentation metadata including ID, title, and URL |
|
||||
|
||||
### `google_slides_replace_all_text`
|
||||
|
||||
Find and replace all occurrences of text throughout a Google Slides presentation
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `presentationId` | string | Yes | The ID of the presentation |
|
||||
| `findText` | string | Yes | The text to find \(e.g., \{\{placeholder\}\}\) |
|
||||
| `replaceText` | string | Yes | The text to replace with |
|
||||
| `matchCase` | boolean | No | Whether the search should be case-sensitive \(default: true\) |
|
||||
| `pageObjectIds` | string | No | Comma-separated list of slide object IDs to limit replacements to specific slides \(leave empty for all slides\) |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `occurrencesChanged` | number | Number of text occurrences that were replaced |
|
||||
| `metadata` | json | Operation metadata including presentation ID and URL |
|
||||
|
||||
### `google_slides_add_slide`
|
||||
|
||||
Add a new slide to a Google Slides presentation with a specified layout
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `presentationId` | string | Yes | The ID of the presentation |
|
||||
| `layout` | string | No | The predefined layout for the slide \(BLANK, TITLE, TITLE_AND_BODY, TITLE_ONLY, SECTION_HEADER, etc.\). Defaults to BLANK. |
|
||||
| `insertionIndex` | number | No | The optional zero-based index indicating where to insert the slide. If not specified, the slide is added at the end. |
|
||||
| `placeholderIdMappings` | string | No | JSON array of placeholder mappings to assign custom object IDs to placeholders. Format: \[\{"layoutPlaceholder":\{"type":"TITLE"\},"objectId":"custom_title_id"\}\] |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `slideId` | string | The object ID of the newly created slide |
|
||||
| `metadata` | json | Operation metadata including presentation ID, layout, and URL |
|
||||
|
||||
### `google_slides_add_image`
|
||||
|
||||
Insert an image into a specific slide in a Google Slides presentation
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `presentationId` | string | Yes | The ID of the presentation |
|
||||
| `pageObjectId` | string | Yes | The object ID of the slide/page to add the image to |
|
||||
| `imageUrl` | string | Yes | The publicly accessible URL of the image \(must be PNG, JPEG, or GIF, max 50MB\) |
|
||||
| `width` | number | No | Width of the image in points \(default: 300\) |
|
||||
| `height` | number | No | Height of the image in points \(default: 200\) |
|
||||
| `positionX` | number | No | X position from the left edge in points \(default: 100\) |
|
||||
| `positionY` | number | No | Y position from the top edge in points \(default: 100\) |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `imageId` | string | The object ID of the newly created image |
|
||||
| `metadata` | json | Operation metadata including presentation ID and image URL |
|
||||
|
||||
### `google_slides_get_thumbnail`
|
||||
|
||||
Generate a thumbnail image of a specific slide in a Google Slides presentation
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `presentationId` | string | Yes | The ID of the presentation |
|
||||
| `pageObjectId` | string | Yes | The object ID of the slide/page to get a thumbnail for |
|
||||
| `thumbnailSize` | string | No | The size of the thumbnail: SMALL \(200px\), MEDIUM \(800px\), or LARGE \(1600px\). Defaults to MEDIUM. |
|
||||
| `mimeType` | string | No | The MIME type of the thumbnail image: PNG or GIF. Defaults to PNG. |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `contentUrl` | string | URL to the thumbnail image \(valid for 30 minutes\) |
|
||||
| `width` | number | Width of the thumbnail in pixels |
|
||||
| `height` | number | Height of the thumbnail in pixels |
|
||||
| `metadata` | json | Operation metadata including presentation ID and page object ID |
|
||||
|
||||
|
||||
|
||||
## Notes
|
||||
|
||||
- Category: `tools`
|
||||
- Type: `google_slides`
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user