diff --git a/.dockerignore b/.dockerignore index c1689c398..98af3e0c6 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1,11 +1,67 @@ +# Git +.git +.gitignore + +# Documentation LICENSE NOTICE +README.md +*.md +docs/ + +# IDE and editor +.vscode +.idea +*.swp +*.swo + +# Environment and config +.env* +!.env.example .prettierrc .prettierignore -README.md -.gitignore -.husky +.eslintrc* +.eslintignore + +# CI/CD and DevOps .github .devcontainer -.env.example -node_modules \ No newline at end of file +.husky +docker-compose*.yml +Dockerfile* + +# Build artifacts and caches +.next +.turbo +.cache +dist +build +out +coverage +*.log + +# Dependencies (will be installed fresh in container) +node_modules +.bun + +# Test files +**/*.test.ts +**/*.test.tsx +**/*.spec.ts +**/*.spec.tsx +__tests__ +__mocks__ +jest.config.* +vitest.config.* + +# TypeScript build info +*.tsbuildinfo + +# OS files +.DS_Store +Thumbs.db + +# Temporary files +tmp +temp +*.tmp diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 3db18c5d4..8b8ba0146 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -16,10 +16,35 @@ jobs: uses: ./.github/workflows/test-build.yml secrets: inherit + # Detect if this is a version release commit (e.g., "v0.5.24: ...") + detect-version: + name: Detect Version + runs-on: blacksmith-4vcpu-ubuntu-2404 + if: github.event_name == 'push' && (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/staging') + outputs: + version: ${{ steps.extract.outputs.version }} + is_release: ${{ steps.extract.outputs.is_release }} + steps: + - name: Extract version from commit message + id: extract + run: | + COMMIT_MSG="${{ github.event.head_commit.message }}" + # Only tag versions on main branch + if [ "${{ github.ref }}" = "refs/heads/main" ] && [[ "$COMMIT_MSG" =~ ^(v[0-9]+\.[0-9]+\.[0-9]+): ]]; then + VERSION="${BASH_REMATCH[1]}" + echo "version=${VERSION}" >> $GITHUB_OUTPUT + echo "is_release=true" >> $GITHUB_OUTPUT + echo "✅ Detected release commit: ${VERSION}" + else + echo "version=" >> $GITHUB_OUTPUT + echo "is_release=false" >> $GITHUB_OUTPUT + echo "ℹ️ Not a release commit" + fi + # Build AMD64 images and push to ECR immediately (+ GHCR for main) build-amd64: name: Build AMD64 - needs: test-build + needs: [test-build, detect-version] if: github.event_name == 'push' && (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/staging') runs-on: blacksmith-8vcpu-ubuntu-2404 permissions: @@ -93,6 +118,14 @@ jobs: GHCR_AMD64="${GHCR_IMAGE}:latest-amd64" GHCR_SHA="${GHCR_IMAGE}:${{ github.sha }}-amd64" TAGS="${TAGS},$GHCR_AMD64,$GHCR_SHA" + + # Add version tag if this is a release commit + if [ "${{ needs.detect-version.outputs.is_release }}" = "true" ]; then + VERSION="${{ needs.detect-version.outputs.version }}" + GHCR_VERSION="${GHCR_IMAGE}:${VERSION}-amd64" + TAGS="${TAGS},$GHCR_VERSION" + echo "📦 Adding version tag: ${VERSION}-amd64" + fi fi echo "tags=${TAGS}" >> $GITHUB_OUTPUT @@ -111,7 +144,7 @@ jobs: # Build ARM64 images for GHCR (main branch only, runs in parallel) build-ghcr-arm64: name: Build ARM64 (GHCR Only) - needs: test-build + needs: [test-build, detect-version] runs-on: blacksmith-8vcpu-ubuntu-2404-arm if: github.event_name == 'push' && github.ref == 'refs/heads/main' permissions: @@ -146,7 +179,16 @@ jobs: id: meta run: | IMAGE="${{ matrix.image }}" - echo "tags=${IMAGE}:latest-arm64,${IMAGE}:${{ github.sha }}-arm64" >> $GITHUB_OUTPUT + TAGS="${IMAGE}:latest-arm64,${IMAGE}:${{ github.sha }}-arm64" + + # Add version tag if this is a release commit + if [ "${{ needs.detect-version.outputs.is_release }}" = "true" ]; then + VERSION="${{ needs.detect-version.outputs.version }}" + TAGS="${TAGS},${IMAGE}:${VERSION}-arm64" + echo "📦 Adding version tag: ${VERSION}-arm64" + fi + + echo "tags=${TAGS}" >> $GITHUB_OUTPUT - name: Build and push ARM64 to GHCR uses: useblacksmith/build-push-action@v2 @@ -162,8 +204,8 @@ jobs: # Create GHCR multi-arch manifests (only for main, after both builds) create-ghcr-manifests: name: Create GHCR Manifests - runs-on: blacksmith-8vcpu-ubuntu-2404 - needs: [build-amd64, build-ghcr-arm64] + runs-on: blacksmith-2vcpu-ubuntu-2404 + needs: [build-amd64, build-ghcr-arm64, detect-version] if: github.event_name == 'push' && github.ref == 'refs/heads/main' permissions: packages: write @@ -198,6 +240,16 @@ jobs: "${IMAGE_BASE}:${{ github.sha }}-arm64" docker manifest push "${IMAGE_BASE}:${{ github.sha }}" + # Create version manifest if this is a release commit + if [ "${{ needs.detect-version.outputs.is_release }}" = "true" ]; then + VERSION="${{ needs.detect-version.outputs.version }}" + echo "📦 Creating version manifest: ${VERSION}" + docker manifest create "${IMAGE_BASE}:${VERSION}" \ + "${IMAGE_BASE}:${VERSION}-amd64" \ + "${IMAGE_BASE}:${VERSION}-arm64" + docker manifest push "${IMAGE_BASE}:${VERSION}" + fi + # Check if docs changed check-docs-changes: name: Check Docs Changes diff --git a/apps/docs/components/icons.tsx b/apps/docs/components/icons.tsx index da739b927..f9e690a72 100644 --- a/apps/docs/components/icons.tsx +++ b/apps/docs/components/icons.tsx @@ -3667,31 +3667,6 @@ export function ZoomIcon(props: SVGProps) { ) } -export function PylonIcon(props: SVGProps) { - return ( - - - - - - - - - - - ) -} - export function SendgridIcon(props: SVGProps) { return ( ) { ) } +export function SQSIcon(props: SVGProps) { + return ( + + + + + + + + ) +} + export function McpIcon(props: SVGProps) { return ( ) { ) } + +export function SpotifyIcon(props: SVGProps) { + return ( + + + + + ) +} diff --git a/apps/docs/components/ui/icon-mapping.ts b/apps/docs/components/ui/icon-mapping.ts index eae3993dc..977138187 100644 --- a/apps/docs/components/ui/icon-mapping.ts +++ b/apps/docs/components/ui/icon-mapping.ts @@ -75,7 +75,6 @@ import { PolymarketIcon, PostgresIcon, PosthogIcon, - PylonIcon, QdrantIcon, RDSIcon, RedditIcon, @@ -90,6 +89,8 @@ import { ShopifyIcon, SlackIcon, SmtpIcon, + SpotifyIcon, + SQSIcon, SshIcon, STTIcon, StagehandIcon, @@ -118,116 +119,116 @@ import { type IconComponent = ComponentType> export const blockTypeToIconMap: Record = { - zoom: ZoomIcon, - zep: ZepIcon, + calendly: CalendlyIcon, + mailchimp: MailchimpIcon, + postgresql: PostgresIcon, + twilio_voice: TwilioIcon, + elasticsearch: ElasticsearchIcon, + rds: RDSIcon, + translate: TranslateIcon, + dynamodb: DynamoDBIcon, + wordpress: WordpressIcon, + tavily: TavilyIcon, zendesk: ZendeskIcon, youtube: YouTubeIcon, - x: xIcon, - wordpress: WordpressIcon, - wikipedia: WikipediaIcon, - whatsapp: WhatsAppIcon, - webflow: WebflowIcon, - wealthbox: WealthboxIcon, - vision: EyeIcon, - video_generator: VideoIcon, - typeform: TypeformIcon, - twilio_voice: TwilioIcon, - twilio_sms: TwilioIcon, - tts: TTSIcon, - trello: TrelloIcon, - translate: TranslateIcon, - thinking: BrainIcon, - telegram: TelegramIcon, - tavily: TavilyIcon, supabase: SupabaseIcon, - stt: STTIcon, - stripe: StripeIcon, - stagehand_agent: StagehandIcon, - stagehand: StagehandIcon, - ssh: SshIcon, - smtp: SmtpIcon, - slack: SlackIcon, - shopify: ShopifyIcon, - sharepoint: MicrosoftSharepointIcon, - sftp: SftpIcon, - serper: SerperIcon, - sentry: SentryIcon, - sendgrid: SendgridIcon, - search: SearchIcon, - salesforce: SalesforceIcon, - s3: S3Icon, - resend: ResendIcon, - reddit: RedditIcon, - rds: RDSIcon, - qdrant: QdrantIcon, - pylon: PylonIcon, - posthog: PosthogIcon, - postgresql: PostgresIcon, - polymarket: PolymarketIcon, - pipedrive: PipedriveIcon, - pinecone: PineconeIcon, - perplexity: PerplexityIcon, - parallel_ai: ParallelIcon, - outlook: OutlookIcon, - openai: OpenAIIcon, - onedrive: MicrosoftOneDriveIcon, - notion: NotionIcon, - neo4j: Neo4jIcon, - mysql: MySQLIcon, - mongodb: MongoDBIcon, - mistral_parse: MistralIcon, - microsoft_teams: MicrosoftTeamsIcon, - microsoft_planner: MicrosoftPlannerIcon, - microsoft_excel: MicrosoftExcelIcon, - memory: BrainIcon, - mem0: Mem0Icon, - mailgun: MailgunIcon, - mailchimp: MailchimpIcon, - linkup: LinkupIcon, - linkedin: LinkedInIcon, - linear: LinearIcon, - knowledge: PackageSearchIcon, - kalshi: KalshiIcon, - jira: JiraIcon, - jina: JinaAIIcon, - intercom: IntercomIcon, - incidentio: IncidentioIcon, - image_generator: ImageIcon, - hunter: HunterIOIcon, - huggingface: HuggingFaceIcon, - hubspot: HubspotIcon, - grafana: GrafanaIcon, - google_vault: GoogleVaultIcon, - google_slides: GoogleSlidesIcon, - google_sheets: GoogleSheetsIcon, - google_groups: GoogleGroupsIcon, - google_forms: GoogleFormsIcon, - google_drive: GoogleDriveIcon, - google_docs: GoogleDocsIcon, - google_calendar: GoogleCalendarIcon, - google_search: GoogleIcon, - gmail: GmailIcon, - gitlab: GitLabIcon, - github: GithubIcon, - firecrawl: FirecrawlIcon, - file: DocumentIcon, - exa: ExaAIIcon, - elevenlabs: ElevenLabsIcon, - elasticsearch: ElasticsearchIcon, - dynamodb: DynamoDBIcon, - duckduckgo: DuckDuckGoIcon, - dropbox: DropboxIcon, - discord: DiscordIcon, - datadog: DatadogIcon, - cursor: CursorIcon, + vision: EyeIcon, + zoom: ZoomIcon, confluence: ConfluenceIcon, - clay: ClayIcon, - calendly: CalendlyIcon, - browser_use: BrowserUseIcon, - asana: AsanaIcon, arxiv: ArxivIcon, + webflow: WebflowIcon, + pinecone: PineconeIcon, apollo: ApolloIcon, + whatsapp: WhatsAppIcon, + typeform: TypeformIcon, + qdrant: QdrantIcon, + shopify: ShopifyIcon, + asana: AsanaIcon, + sqs: SQSIcon, apify: ApifyIcon, + memory: BrainIcon, + gitlab: GitLabIcon, + polymarket: PolymarketIcon, + serper: SerperIcon, + linear: LinearIcon, + exa: ExaAIIcon, + telegram: TelegramIcon, + salesforce: SalesforceIcon, + hubspot: HubspotIcon, + hunter: HunterIOIcon, + linkup: LinkupIcon, + mongodb: MongoDBIcon, airtable: AirtableIcon, + discord: DiscordIcon, ahrefs: AhrefsIcon, + neo4j: Neo4jIcon, + tts: TTSIcon, + jina: JinaAIIcon, + google_docs: GoogleDocsIcon, + perplexity: PerplexityIcon, + google_search: GoogleIcon, + x: xIcon, + kalshi: KalshiIcon, + google_calendar: GoogleCalendarIcon, + zep: ZepIcon, + posthog: PosthogIcon, + grafana: GrafanaIcon, + google_slides: GoogleSlidesIcon, + microsoft_planner: MicrosoftPlannerIcon, + thinking: BrainIcon, + pipedrive: PipedriveIcon, + dropbox: DropboxIcon, + stagehand: StagehandIcon, + google_forms: GoogleFormsIcon, + file: DocumentIcon, + mistral_parse: MistralIcon, + gmail: GmailIcon, + openai: OpenAIIcon, + outlook: OutlookIcon, + incidentio: IncidentioIcon, + onedrive: MicrosoftOneDriveIcon, + resend: ResendIcon, + google_vault: GoogleVaultIcon, + sharepoint: MicrosoftSharepointIcon, + huggingface: HuggingFaceIcon, + sendgrid: SendgridIcon, + video_generator: VideoIcon, + smtp: SmtpIcon, + google_groups: GoogleGroupsIcon, + mailgun: MailgunIcon, + clay: ClayIcon, + jira: JiraIcon, + search: SearchIcon, + linkedin: LinkedInIcon, + wealthbox: WealthboxIcon, + notion: NotionIcon, + elevenlabs: ElevenLabsIcon, + microsoft_teams: MicrosoftTeamsIcon, + github: GithubIcon, + sftp: SftpIcon, + ssh: SshIcon, + google_drive: GoogleDriveIcon, + sentry: SentryIcon, + reddit: RedditIcon, + parallel_ai: ParallelIcon, + spotify: SpotifyIcon, + stripe: StripeIcon, + s3: S3Icon, + trello: TrelloIcon, + mem0: Mem0Icon, + knowledge: PackageSearchIcon, + intercom: IntercomIcon, + twilio_sms: TwilioIcon, + duckduckgo: DuckDuckGoIcon, + slack: SlackIcon, + datadog: DatadogIcon, + microsoft_excel: MicrosoftExcelIcon, + image_generator: ImageIcon, + google_sheets: GoogleSheetsIcon, + wikipedia: WikipediaIcon, + cursor: CursorIcon, + firecrawl: FirecrawlIcon, + mysql: MySQLIcon, + browser_use: BrowserUseIcon, + stt: STTIcon, } diff --git a/apps/docs/content/docs/de/tools/apify.mdx b/apps/docs/content/docs/de/tools/apify.mdx index c8c82105c..658cd8a4b 100644 --- a/apps/docs/content/docs/de/tools/apify.mdx +++ b/apps/docs/content/docs/de/tools/apify.mdx @@ -51,10 +51,9 @@ Führe einen APIFY-Aktor synchron aus und erhalte Ergebnisse (maximal 5 Minuten) | Parameter | Typ | Beschreibung | | --------- | ---- | ----------- | -| `success` | boolean | Ob die Aktor-Ausführung erfolgreich war | -| `runId` | string | APIFY-Ausführungs-ID | -| `status` | string | Ausführungsstatus \(SUCCEEDED, FAILED, usw.\) | -| `datasetId` | string | Dataset-ID mit Ergebnissen | +| `success` | boolean | Ob der Actor-Lauf erfolgreich war | +| `runId` | string | APIFY-Lauf-ID | +| `status` | string | Laufstatus \(SUCCEEDED, FAILED, usw.\) | | `items` | array | Dataset-Elemente \(falls abgeschlossen\) | ### `apify_run_actor_async` diff --git a/apps/docs/content/docs/de/tools/asana.mdx b/apps/docs/content/docs/de/tools/asana.mdx index bc4843a1d..a0f66ae3f 100644 --- a/apps/docs/content/docs/de/tools/asana.mdx +++ b/apps/docs/content/docs/de/tools/asana.mdx @@ -34,7 +34,14 @@ Eine einzelne Aufgabe anhand der GID abrufen oder mehrere Aufgaben mit Filtern e | Parameter | Typ | Beschreibung | | --------- | ---- | ----------- | | `success` | boolean | Erfolgsstatus der Operation | -| `output` | object | Details einer einzelnen Aufgabe oder Array von Aufgaben, abhängig davon, ob taskGid angegeben wurde | +| `ts` | string | Zeitstempel der Antwort | +| `gid` | string | Global eindeutige Kennung der Aufgabe | +| `resource_type` | string | Ressourcentyp \(task\) | +| `resource_subtype` | string | Ressourcen-Subtyp | +| `name` | string | Aufgabenname | +| `notes` | string | Aufgabennotizen oder -beschreibung | +| `completed` | boolean | Ob die Aufgabe abgeschlossen ist | +| `assignee` | object | Details zum Zugewiesenen | ### `asana_create_task` @@ -54,8 +61,14 @@ Eine neue Aufgabe in Asana erstellen | Parameter | Typ | Beschreibung | | --------- | ---- | ----------- | -| `success` | boolean | Status des Operationserfolgs | -| `output` | object | Details der erstellten Aufgabe mit Zeitstempel, GID, Name, Notizen und Permalink | +| `success` | boolean | Erfolgsstatus der Operation | +| `ts` | string | Zeitstempel der Antwort | +| `gid` | string | Global eindeutige Kennung der Aufgabe | +| `name` | string | Aufgabenname | +| `notes` | string | Aufgabennotizen oder -beschreibung | +| `completed` | boolean | Ob die Aufgabe abgeschlossen ist | +| `created_at` | string | Zeitstempel der Aufgabenerstellung | +| `permalink_url` | string | URL zur Aufgabe in Asana | ### `asana_update_task` @@ -77,7 +90,12 @@ Eine bestehende Aufgabe in Asana aktualisieren | Parameter | Typ | Beschreibung | | --------- | ---- | ----------- | | `success` | boolean | Erfolgsstatus der Operation | -| `output` | object | Aktualisierte Aufgabendetails mit Zeitstempel, GID, Name, Notizen und Änderungszeitstempel | +| `ts` | string | Zeitstempel der Antwort | +| `gid` | string | Global eindeutige Kennung der Aufgabe | +| `name` | string | Aufgabenname | +| `notes` | string | Aufgabennotizen oder -beschreibung | +| `completed` | boolean | Ob die Aufgabe abgeschlossen ist | +| `modified_at` | string | Zeitstempel der letzten Änderung der Aufgabe | ### `asana_get_projects` @@ -94,7 +112,8 @@ Alle Projekte aus einem Asana-Workspace abrufen | Parameter | Typ | Beschreibung | | --------- | ---- | ----------- | | `success` | boolean | Erfolgsstatus der Operation | -| `output` | object | Liste der Projekte mit ihrer GID, Name und Ressourcentyp | +| `ts` | string | Zeitstempel der Antwort | +| `projects` | array | Array von Projekten | ### `asana_search_tasks` @@ -115,7 +134,8 @@ Nach Aufgaben in einem Asana-Workspace suchen | Parameter | Typ | Beschreibung | | --------- | ---- | ----------- | | `success` | boolean | Erfolgsstatus der Operation | -| `output` | object | Liste der Aufgaben, die den Suchkriterien entsprechen | +| `ts` | string | Zeitstempel der Antwort | +| `tasks` | array | Array von passenden Aufgaben | ### `asana_add_comment` @@ -133,7 +153,11 @@ Einen Kommentar (Story) zu einer Asana-Aufgabe hinzufügen | Parameter | Typ | Beschreibung | | --------- | ---- | ----------- | | `success` | boolean | Erfolgsstatus der Operation | -| `output` | object | Kommentardetails einschließlich gid, Text, Erstellungszeitstempel und Autor | +| `ts` | string | Zeitstempel der Antwort | +| `gid` | string | Global eindeutige Kennung des Kommentars | +| `text` | string | Textinhalt des Kommentars | +| `created_at` | string | Erstellungszeitstempel des Kommentars | +| `created_by` | object | Details zum Autor des Kommentars | ## Hinweise diff --git a/apps/docs/content/docs/de/tools/confluence.mdx b/apps/docs/content/docs/de/tools/confluence.mdx index 0c1768ab0..3e16cfaec 100644 --- a/apps/docs/content/docs/de/tools/confluence.mdx +++ b/apps/docs/content/docs/de/tools/confluence.mdx @@ -221,9 +221,36 @@ Löscht einen Kommentar von einer Confluence-Seite. | `commentId` | string | Gelöschte Kommentar-ID | | `deleted` | boolean | Löschstatus | +### `confluence_upload_attachment` + +Laden Sie eine Datei als Anhang zu einer Confluence-Seite hoch. + +#### Eingabe + +| Parameter | Typ | Erforderlich | Beschreibung | +| --------- | ---- | -------- | ----------- | +| `domain` | string | Ja | Ihre Confluence-Domain (z.B. ihrfirma.atlassian.net) | +| `pageId` | string | Ja | Confluence-Seiten-ID, an die die Datei angehängt werden soll | +| `file` | file | Ja | Die als Anhang hochzuladende Datei | +| `fileName` | string | Nein | Optionaler benutzerdefinierter Dateiname für den Anhang | +| `comment` | string | Nein | Optionaler Kommentar zum Anhang | +| `cloudId` | string | Nein | Confluence Cloud-ID für die Instanz. Wenn nicht angegeben, wird sie über die Domain abgerufen. | + +#### Ausgabe + +| Parameter | Typ | Beschreibung | +| --------- | ---- | ----------- | +| `ts` | string | Zeitstempel des Uploads | +| `attachmentId` | string | Hochgeladene Anhangs-ID | +| `title` | string | Dateiname des Anhangs | +| `fileSize` | number | Dateigröße in Bytes | +| `mediaType` | string | MIME-Typ des Anhangs | +| `downloadUrl` | string | Download-URL für den Anhang | +| `pageId` | string | Seiten-ID, zu der der Anhang hinzugefügt wurde | + ### `confluence_list_attachments` -Listet alle Anhänge einer Confluence-Seite auf. +Listen Sie alle Anhänge einer Confluence-Seite auf. #### Eingabe @@ -243,7 +270,7 @@ Listet alle Anhänge einer Confluence-Seite auf. ### `confluence_delete_attachment` -Löscht einen Anhang von einer Confluence-Seite (wird in den Papierkorb verschoben). +Löschen eines Anhangs von einer Confluence-Seite (wird in den Papierkorb verschoben). #### Eingabe @@ -263,7 +290,7 @@ Löscht einen Anhang von einer Confluence-Seite (wird in den Papierkorb verschob ### `confluence_list_labels` -Alle Labels einer Confluence-Seite auflisten. +Listet alle Labels einer Confluence-Seite auf. #### Eingabe @@ -282,7 +309,7 @@ Alle Labels einer Confluence-Seite auflisten. ### `confluence_get_space` -Details zu einem bestimmten Confluence-Space abrufen. +Ruft Details zu einem bestimmten Confluence-Space ab. #### Eingabe @@ -306,7 +333,7 @@ Details zu einem bestimmten Confluence-Space abrufen. ### `confluence_list_spaces` -Alle für den Benutzer zugänglichen Confluence-Spaces auflisten. +Listet alle Confluence-Spaces auf, auf die der Benutzer zugreifen kann. #### Eingabe diff --git a/apps/docs/content/docs/de/tools/firecrawl.mdx b/apps/docs/content/docs/de/tools/firecrawl.mdx index f8341136e..e80f5cbe8 100644 --- a/apps/docs/content/docs/de/tools/firecrawl.mdx +++ b/apps/docs/content/docs/de/tools/firecrawl.mdx @@ -144,8 +144,7 @@ Extrahieren Sie strukturierte Daten aus vollständigen Webseiten mithilfe von na | Parameter | Typ | Beschreibung | | --------- | ---- | ----------- | | `success` | boolean | Ob der Extraktionsvorgang erfolgreich war | -| `data` | object | Extrahierte strukturierte Daten gemäß dem Schema oder Prompt | -| `sources` | array | Datenquellen \(nur wenn showSources aktiviert ist\) | +| `data` | object | Extrahierte strukturierte Daten gemäß dem Schema oder der Eingabeaufforderung | ## Hinweise diff --git a/apps/docs/content/docs/de/tools/google_groups.mdx b/apps/docs/content/docs/de/tools/google_groups.mdx index f9bdcb67c..63575505b 100644 --- a/apps/docs/content/docs/de/tools/google_groups.mdx +++ b/apps/docs/content/docs/de/tools/google_groups.mdx @@ -34,7 +34,8 @@ Alle Gruppen in einer Google Workspace-Domain auflisten | Parameter | Typ | Beschreibung | | --------- | ---- | ----------- | -| `output` | json | Google Groups API-Antwortdaten | +| `groups` | json | Array von Gruppenobjekten | +| `nextPageToken` | string | Token zum Abrufen der nächsten Ergebnisseite | ### `google_groups_get_group` @@ -50,7 +51,7 @@ Details einer bestimmten Google-Gruppe nach E-Mail oder Gruppen-ID abrufen | Parameter | Typ | Beschreibung | | --------- | ---- | ----------- | -| `output` | json | Google Groups API-Antwortdaten | +| `group` | json | Gruppenobjekt | ### `google_groups_create_group` @@ -68,7 +69,7 @@ Eine neue Google-Gruppe in der Domain erstellen | Parameter | Typ | Beschreibung | | --------- | ---- | ----------- | -| `output` | json | Google Groups API-Antwortdaten | +| `group` | json | Erstelltes Gruppenobjekt | ### `google_groups_update_group` @@ -87,7 +88,7 @@ Eine bestehende Google-Gruppe aktualisieren | Parameter | Typ | Beschreibung | | --------- | ---- | ----------- | -| `output` | json | Google Groups API-Antwortdaten | +| `group` | json | Aktualisiertes Gruppenobjekt | ### `google_groups_delete_group` @@ -103,7 +104,7 @@ Eine Google-Gruppe löschen | Parameter | Typ | Beschreibung | | --------- | ---- | ----------- | -| `output` | json | Google Groups API-Antwortdaten | +| `message` | string | Erfolgsmeldung | ### `google_groups_list_members` @@ -122,7 +123,8 @@ Alle Mitglieder einer Google-Gruppe auflisten | Parameter | Typ | Beschreibung | | --------- | ---- | ----------- | -| `output` | json | Google Groups API-Antwortdaten | +| `members` | json | Array von Mitgliederobjekten | +| `nextPageToken` | string | Token zum Abrufen der nächsten Ergebnisseite | ### `google_groups_get_member` @@ -139,7 +141,7 @@ Details eines bestimmten Mitglieds in einer Google-Gruppe abrufen | Parameter | Typ | Beschreibung | | --------- | ---- | ----------- | -| `output` | json | Google Groups API-Antwortdaten | +| `member` | json | Mitgliederobjekt | ### `google_groups_add_member` @@ -157,7 +159,7 @@ Ein neues Mitglied zu einer Google-Gruppe hinzufügen | Parameter | Typ | Beschreibung | | --------- | ---- | ----------- | -| `output` | json | Google Groups API-Antwortdaten | +| `member` | json | Hinzugefügtes Mitgliederobjekt | ### `google_groups_remove_member` @@ -174,7 +176,7 @@ Ein Mitglied aus einer Google-Gruppe entfernen | Parameter | Typ | Beschreibung | | --------- | ---- | ----------- | -| `output` | json | Google Groups API-Antwortdaten | +| `message` | string | Erfolgsmeldung | ### `google_groups_update_member` @@ -192,7 +194,7 @@ Ein Mitglied aktualisieren | Parameter | Typ | Beschreibung | | --------- | ---- | ----------- | -| `output` | json | Google Groups API-Antwortdaten | +| `member` | json | Aktualisiertes Mitgliederobjekt | ### `google_groups_has_member` @@ -209,7 +211,7 @@ Prüfen, ob ein Benutzer Mitglied einer Google-Gruppe ist | Parameter | Typ | Beschreibung | | --------- | ---- | ----------- | -| `output` | json | Google Groups API-Antwortdaten | +| `isMember` | boolean | Gibt an, ob der Benutzer ein Mitglied der Gruppe ist | ## Hinweise diff --git a/apps/docs/content/docs/de/tools/google_vault.mdx b/apps/docs/content/docs/de/tools/google_vault.mdx index 100d5e1f9..910ad6a34 100644 --- a/apps/docs/content/docs/de/tools/google_vault.mdx +++ b/apps/docs/content/docs/de/tools/google_vault.mdx @@ -35,8 +35,7 @@ Einen Export in einer Angelegenheit erstellen | Parameter | Typ | Beschreibung | | --------- | ---- | ----------- | -| `output` | json | Vault API-Antwortdaten | -| `file` | json | Heruntergeladene Exportdatei \(UserFile\) aus Ausführungsdateien | +| `export` | json | Erstelltes Export-Objekt | ### `google_vault_list_matters_export` @@ -55,8 +54,9 @@ Exporte für eine Angelegenheit auflisten | Parameter | Typ | Beschreibung | | --------- | ---- | ----------- | -| `output` | json | Vault API-Antwortdaten | -| `file` | json | Heruntergeladene Exportdatei \(UserFile\) aus Ausführungsdateien | +| `exports` | json | Array von Export-Objekten | +| `export` | json | Einzelnes Export-Objekt \(wenn exportId angegeben ist\) | +| `nextPageToken` | string | Token zum Abrufen der nächsten Ergebnisseite | ### `google_vault_download_export_file` @@ -95,8 +95,7 @@ Eine Aufbewahrung in einer Angelegenheit erstellen | Parameter | Typ | Beschreibung | | --------- | ---- | ----------- | -| `output` | json | Vault-API-Antwortdaten | -| `file` | json | Heruntergeladene Exportdatei \(UserFile\) aus Ausführungsdateien | +| `hold` | json | Erstelltes Hold-Objekt | ### `google_vault_list_matters_holds` @@ -113,10 +112,11 @@ Aufbewahrungen für eine Angelegenheit auflisten #### Output -| Parameter | Type | Beschreibung | +| Parameter | Typ | Beschreibung | | --------- | ---- | ----------- | -| `output` | json | Vault API-Antwortdaten | -| `file` | json | Heruntergeladene Exportdatei \(UserFile\) aus Ausführungsdateien | +| `holds` | json | Array von Hold-Objekten | +| `hold` | json | Einzelnes Hold-Objekt \(wenn holdId angegeben ist\) | +| `nextPageToken` | string | Token zum Abrufen der nächsten Ergebnisseite | ### `google_vault_create_matters` @@ -131,10 +131,9 @@ Einen neuen Fall in Google Vault erstellen #### Output -| Parameter | Type | Beschreibung | +| Parameter | Typ | Beschreibung | | --------- | ---- | ----------- | -| `output` | json | Vault API-Antwortdaten | -| `file` | json | Heruntergeladene Exportdatei \(UserFile\) aus Ausführungsdateien | +| `matter` | json | Erstelltes Matter-Objekt | ### `google_vault_list_matters` @@ -150,10 +149,11 @@ Fälle auflisten oder einen bestimmten Fall abrufen, wenn matterId angegeben ist #### Output -| Parameter | Type | Beschreibung | +| Parameter | Typ | Beschreibung | | --------- | ---- | ----------- | -| `output` | json | Vault API-Antwortdaten | -| `file` | json | Heruntergeladene Exportdatei \(UserFile\) aus Ausführungsdateien | +| `matters` | json | Array von Matter-Objekten | +| `matter` | json | Einzelnes Matter-Objekt \(wenn matterId angegeben ist\) | +| `nextPageToken` | string | Token zum Abrufen der nächsten Ergebnisseite | ## Hinweise diff --git a/apps/docs/content/docs/de/tools/grafana.mdx b/apps/docs/content/docs/de/tools/grafana.mdx index 8e694f5c9..1747ea5c5 100644 --- a/apps/docs/content/docs/de/tools/grafana.mdx +++ b/apps/docs/content/docs/de/tools/grafana.mdx @@ -321,7 +321,7 @@ Eine Anmerkung auf einem Dashboard oder als globale Anmerkung erstellen | `organizationId` | string | Nein | Organisations-ID für Multi-Org-Grafana-Instanzen | | `text` | string | Ja | Der Textinhalt der Anmerkung | | `tags` | string | Nein | Kommagetrennte Liste von Tags | -| `dashboardUid` | string | Nein | UID des Dashboards, zu dem die Anmerkung hinzugefügt werden soll \(optional für globale Anmerkungen\) | +| `dashboardUid` | string | Ja | UID des Dashboards, zu dem die Anmerkung hinzugefügt werden soll | | `panelId` | number | Nein | ID des Panels, zu dem die Anmerkung hinzugefügt werden soll | | `time` | number | Nein | Startzeit in Epochenmillisekunden \(standardmäßig jetzt\) | | `timeEnd` | number | Nein | Endzeit in Epochenmillisekunden \(für Bereichsanmerkungen\) | @@ -346,11 +346,11 @@ Anmerkungen nach Zeitraum, Dashboard oder Tags abfragen | `organizationId` | string | Nein | Organisations-ID für Multi-Org-Grafana-Instanzen | | `from` | number | Nein | Startzeit in Epochenmillisekunden | | `to` | number | Nein | Endzeit in Epochenmillisekunden | -| `dashboardUid` | string | Nein | Nach Dashboard-UID filtern | +| `dashboardUid` | string | Ja | Dashboard-UID, von der Anmerkungen abgefragt werden sollen | | `panelId` | number | Nein | Nach Panel-ID filtern | -| `tags` | string | Nein | Kommagetrennte Liste von Tags, nach denen gefiltert werden soll | +| `tags` | string | Nein | Kommagetrennte Liste von Tags zum Filtern | | `type` | string | Nein | Nach Typ filtern \(alert oder annotation\) | -| `limit` | number | Nein | Maximale Anzahl von zurückzugebenden Anmerkungen | +| `limit` | number | Nein | Maximale Anzahl der zurückzugebenden Anmerkungen | #### Ausgabe @@ -481,12 +481,22 @@ Einen neuen Ordner in Grafana erstellen #### Ausgabe -| Parameter | Typ | Beschreibung | +| Parameter | Type | Beschreibung | | --------- | ---- | ----------- | | `id` | number | Die numerische ID des erstellten Ordners | | `uid` | string | Die UID des erstellten Ordners | | `title` | string | Der Titel des erstellten Ordners | | `url` | string | Der URL-Pfad zum Ordner | +| `hasAcl` | boolean | Ob der Ordner benutzerdefinierte ACL-Berechtigungen hat | +| `canSave` | boolean | Ob der aktuelle Benutzer den Ordner speichern kann | +| `canEdit` | boolean | Ob der aktuelle Benutzer den Ordner bearbeiten kann | +| `canAdmin` | boolean | Ob der aktuelle Benutzer Administratorrechte für den Ordner hat | +| `canDelete` | boolean | Ob der aktuelle Benutzer den Ordner löschen kann | +| `createdBy` | string | Benutzername desjenigen, der den Ordner erstellt hat | +| `created` | string | Zeitstempel, wann der Ordner erstellt wurde | +| `updatedBy` | string | Benutzername desjenigen, der den Ordner zuletzt aktualisiert hat | +| `updated` | string | Zeitstempel, wann der Ordner zuletzt aktualisiert wurde | +| `version` | number | Versionsnummer des Ordners | ## Notizen diff --git a/apps/docs/content/docs/de/tools/hubspot.mdx b/apps/docs/content/docs/de/tools/hubspot.mdx index 76ac4d98e..a076a01d2 100644 --- a/apps/docs/content/docs/de/tools/hubspot.mdx +++ b/apps/docs/content/docs/de/tools/hubspot.mdx @@ -46,10 +46,11 @@ Alle Benutzer vom HubSpot-Konto abrufen #### Output -| Parameter | Type | Description | +| Parameter | Typ | Beschreibung | | --------- | ---- | ----------- | -| `success` | boolean | Status des Operationserfolgs | -| `output` | object | Benutzerdaten | +| `users` | array | Array von HubSpot-Benutzerobjekten | +| `metadata` | object | Operationsmetadaten | +| `success` | boolean | Erfolgsstatus der Operation | ### `hubspot_list_contacts` @@ -68,8 +69,10 @@ Alle Kontakte vom HubSpot-Konto mit Paginierungsunterstützung abrufen | Parameter | Typ | Beschreibung | | --------- | ---- | ----------- | +| `contacts` | array | Array von HubSpot-Kontaktobjekten | +| `paging` | object | Paginierungsinformationen | +| `metadata` | object | Operationsmetadaten | | `success` | boolean | Erfolgsstatus der Operation | -| `output` | object | Kontaktdaten | ### `hubspot_get_contact` @@ -88,8 +91,9 @@ Einen einzelnen Kontakt anhand von ID oder E-Mail aus HubSpot abrufen | Parameter | Typ | Beschreibung | | --------- | ---- | ----------- | +| `contact` | object | HubSpot-Kontaktobjekt mit Eigenschaften | +| `metadata` | object | Operationsmetadaten | | `success` | boolean | Erfolgsstatus der Operation | -| `output` | object | Kontaktdaten | ### `hubspot_create_contact` @@ -106,8 +110,9 @@ Erstellt einen neuen Kontakt in HubSpot. Erfordert mindestens eines der folgende | Parameter | Typ | Beschreibung | | --------- | ---- | ----------- | +| `contact` | object | Erstelltes HubSpot-Kontaktobjekt | +| `metadata` | object | Operationsmetadaten | | `success` | boolean | Erfolgsstatus der Operation | -| `output` | object | Daten des erstellten Kontakts | ### `hubspot_update_contact` @@ -125,8 +130,9 @@ Aktualisiert einen bestehenden Kontakt in HubSpot anhand von ID oder E-Mail | Parameter | Typ | Beschreibung | | --------- | ---- | ----------- | +| `contact` | object | Aktualisiertes HubSpot-Kontaktobjekt | +| `metadata` | object | Operationsmetadaten | | `success` | boolean | Erfolgsstatus der Operation | -| `output` | object | Daten des aktualisierten Kontakts | ### `hubspot_search_contacts` @@ -147,8 +153,11 @@ Suche nach Kontakten in HubSpot mit Filtern, Sortierung und Abfragen | Parameter | Typ | Beschreibung | | --------- | ---- | ----------- | +| `contacts` | array | Array übereinstimmender HubSpot-Kontaktobjekte | +| `total` | number | Gesamtanzahl übereinstimmender Kontakte | +| `paging` | object | Paginierungsinformationen | +| `metadata` | object | Operationsmetadaten | | `success` | boolean | Erfolgsstatus der Operation | -| `output` | object | Suchergebnisse | ### `hubspot_list_companies` @@ -167,8 +176,10 @@ Alle Unternehmen aus dem HubSpot-Konto mit Paginierungsunterstützung abrufen | Parameter | Typ | Beschreibung | | --------- | ---- | ----------- | +| `companies` | array | Array von HubSpot-Unternehmensobjekten | +| `paging` | object | Paginierungsinformationen | +| `metadata` | object | Operationsmetadaten | | `success` | boolean | Erfolgsstatus der Operation | -| `output` | object | Unternehmensdaten | ### `hubspot_get_company` @@ -187,8 +198,9 @@ Ruft ein einzelnes Unternehmen anhand der ID oder Domain von HubSpot ab | Parameter | Typ | Beschreibung | | --------- | ---- | ----------- | +| `company` | object | HubSpot-Unternehmensobjekt mit Eigenschaften | +| `metadata` | object | Operationsmetadaten | | `success` | boolean | Erfolgsstatus der Operation | -| `output` | object | Unternehmensdaten | ### `hubspot_create_company` @@ -205,8 +217,9 @@ Erstellt ein neues Unternehmen in HubSpot | Parameter | Typ | Beschreibung | | --------- | ---- | ----------- | +| `company` | object | Erstelltes HubSpot-Unternehmensobjekt | +| `metadata` | object | Operationsmetadaten | | `success` | boolean | Erfolgsstatus der Operation | -| `output` | object | Daten des erstellten Unternehmens | ### `hubspot_update_company` @@ -224,8 +237,9 @@ Aktualisiert ein bestehendes Unternehmen in HubSpot anhand der ID oder Domain | Parameter | Typ | Beschreibung | | --------- | ---- | ----------- | +| `company` | object | Aktualisiertes HubSpot-Unternehmensobjekt | +| `metadata` | object | Operationsmetadaten | | `success` | boolean | Erfolgsstatus der Operation | -| `output` | object | Aktualisierte Unternehmensdaten | ### `hubspot_search_companies` @@ -246,8 +260,11 @@ Suche nach Unternehmen in HubSpot mit Filtern, Sortierung und Abfragen | Parameter | Typ | Beschreibung | | --------- | ---- | ----------- | +| `companies` | array | Array übereinstimmender HubSpot-Unternehmensobjekte | +| `total` | number | Gesamtzahl übereinstimmender Unternehmen | +| `paging` | object | Paginierungsinformationen | +| `metadata` | object | Operationsmetadaten | | `success` | boolean | Erfolgsstatus der Operation | -| `output` | object | Suchergebnisse | ### `hubspot_list_deals` @@ -266,8 +283,10 @@ Alle Deals vom HubSpot-Konto mit Paginierungsunterstützung abrufen | Parameter | Typ | Beschreibung | | --------- | ---- | ----------- | +| `deals` | array | Array von HubSpot-Deal-Objekten | +| `paging` | object | Paginierungsinformationen | +| `metadata` | object | Operationsmetadaten | | `success` | boolean | Erfolgsstatus der Operation | -| `output` | object | Deals-Daten | ## Hinweise diff --git a/apps/docs/content/docs/de/tools/pipedrive.mdx b/apps/docs/content/docs/de/tools/pipedrive.mdx index 479d79bd4..bfa2cd949 100644 --- a/apps/docs/content/docs/de/tools/pipedrive.mdx +++ b/apps/docs/content/docs/de/tools/pipedrive.mdx @@ -49,10 +49,11 @@ Alle Deals von Pipedrive mit optionalen Filtern abrufen #### Output -| Parameter | Type | Beschreibung | +| Parameter | Typ | Beschreibung | | --------- | ---- | ----------- | +| `deals` | array | Array von Deal-Objekten aus Pipedrive | +| `metadata` | object | Operationsmetadaten | | `success` | boolean | Erfolgsstatus der Operation | -| `output` | object | Deals-Daten und Metadaten | ### `pipedrive_get_deal` @@ -66,10 +67,11 @@ Detaillierte Informationen über einen bestimmten Deal abrufen #### Output -| Parameter | Type | Beschreibung | +| Parameter | Typ | Beschreibung | | --------- | ---- | ----------- | +| `deal` | object | Deal-Objekt mit vollständigen Details | +| `metadata` | object | Operationsmetadaten | | `success` | boolean | Erfolgsstatus der Operation | -| `output` | object | Deal-Details | ### `pipedrive_create_deal` @@ -93,8 +95,9 @@ Einen neuen Deal in Pipedrive erstellen | Parameter | Typ | Beschreibung | | --------- | ---- | ----------- | +| `deal` | object | Das erstellte Deal-Objekt | +| `metadata` | object | Operationsmetadaten | | `success` | boolean | Erfolgsstatus der Operation | -| `output` | object | Details des erstellten Deals | ### `pipedrive_update_deal` @@ -115,8 +118,9 @@ Aktualisieren eines bestehenden Deals in Pipedrive | Parameter | Typ | Beschreibung | | --------- | ---- | ----------- | +| `deal` | object | Das aktualisierte Deal-Objekt | +| `metadata` | object | Operationsmetadaten | | `success` | boolean | Erfolgsstatus der Operation | -| `output` | object | Details des aktualisierten Deals | ### `pipedrive_get_files` @@ -133,10 +137,11 @@ Dateien von Pipedrive mit optionalen Filtern abrufen #### Output -| Parameter | Type | Beschreibung | +| Parameter | Typ | Beschreibung | | --------- | ---- | ----------- | -| `success` | boolean | Status des Operationserfolgs | -| `output` | object | Dateidaten | +| `files` | array | Array von Datei-Objekten aus Pipedrive | +| `metadata` | object | Operationsmetadaten | +| `success` | boolean | Erfolgsstatus der Operation | ### `pipedrive_get_mail_messages` @@ -151,10 +156,11 @@ E-Mail-Threads aus dem Pipedrive-Postfach abrufen #### Output -| Parameter | Type | Beschreibung | +| Parameter | Typ | Beschreibung | | --------- | ---- | ----------- | -| `success` | boolean | Status des Operationserfolgs | -| `output` | object | E-Mail-Thread-Daten | +| `messages` | array | Array von E-Mail-Thread-Objekten aus der Pipedrive-Mailbox | +| `metadata` | object | Operationsmetadaten | +| `success` | boolean | Erfolgsstatus der Operation | ### `pipedrive_get_mail_thread` @@ -168,10 +174,11 @@ Alle Nachrichten aus einem bestimmten E-Mail-Thread abrufen #### Output -| Parameter | Type | Beschreibung | +| Parameter | Typ | Beschreibung | | --------- | ---- | ----------- | +| `messages` | array | Array von E-Mail-Nachrichtenobjekten aus dem Thread | +| `metadata` | object | Operationsmetadaten einschließlich Thread-ID | | `success` | boolean | Status des Operationserfolgs | -| `output` | object | Nachrichtendaten des E-Mail-Threads | ### `pipedrive_get_pipelines` @@ -190,8 +197,9 @@ Alle Pipelines aus Pipedrive abrufen | Parameter | Typ | Beschreibung | | --------- | ---- | ----------- | -| `success` | boolean | Erfolgsstatus der Operation | -| `output` | object | Pipeline-Daten | +| `pipelines` | array | Array von Pipeline-Objekten aus Pipedrive | +| `metadata` | object | Operationsmetadaten | +| `success` | boolean | Status des Operationserfolgs | ### `pipedrive_get_pipeline_deals` @@ -210,8 +218,9 @@ Alle Deals in einer bestimmten Pipeline abrufen | Parameter | Typ | Beschreibung | | --------- | ---- | ----------- | -| `success` | boolean | Erfolgsstatus der Operation | -| `output` | object | Pipeline-Deals-Daten | +| `deals` | array | Array von Deal-Objekten aus der Pipeline | +| `metadata` | object | Operationsmetadaten einschließlich Pipeline-ID | +| `success` | boolean | Status des Operationserfolgs | ### `pipedrive_get_projects` @@ -229,8 +238,10 @@ Alle Projekte oder ein bestimmtes Projekt von Pipedrive abrufen | Parameter | Typ | Beschreibung | | --------- | ---- | ----------- | -| `success` | boolean | Erfolgsstatus der Operation | -| `output` | object | Projektdaten oder Details eines einzelnen Projekts | +| `projects` | array | Array von Projektobjekten (bei Auflistung aller) | +| `project` | object | Einzelnes Projektobjekt (wenn project_id angegeben ist) | +| `metadata` | object | Operationsmetadaten | +| `success` | boolean | Status des Operationserfolgs | ### `pipedrive_create_project` @@ -249,8 +260,9 @@ Erstelle ein neues Projekt in Pipedrive | Parameter | Typ | Beschreibung | | --------- | ---- | ----------- | +| `project` | object | Das erstellte Projektobjekt | +| `metadata` | object | Operationsmetadaten | | `success` | boolean | Status des Operationserfolgs | -| `output` | object | Details des erstellten Projekts | ### `pipedrive_get_activities` @@ -271,8 +283,9 @@ Aktivitäten (Aufgaben) von Pipedrive mit optionalen Filtern abrufen | Parameter | Typ | Beschreibung | | --------- | ---- | ----------- | +| `activities` | array | Array von Aktivitätsobjekten aus Pipedrive | +| `metadata` | object | Operationsmetadaten | | `success` | boolean | Status des Operationserfolgs | -| `output` | object | Aktivitätsdaten | ### `pipedrive_create_activity` @@ -296,8 +309,9 @@ Eine neue Aktivität (Aufgabe) in Pipedrive erstellen | Parameter | Typ | Beschreibung | | --------- | ---- | ----------- | +| `activity` | object | Das erstellte Aktivitätsobjekt | +| `metadata` | object | Operationsmetadaten | | `success` | boolean | Status des Operationserfolgs | -| `output` | object | Details der erstellten Aktivität | ### `pipedrive_update_activity` @@ -317,10 +331,11 @@ Eine bestehende Aktivität (Aufgabe) in Pipedrive aktualisieren #### Output -| Parameter | Type | Beschreibung | +| Parameter | Typ | Beschreibung | | --------- | ---- | ----------- | -| `success` | boolean | Erfolgsstatus der Operation | -| `output` | object | Aktualisierte Aktivitätsdetails | +| `activity` | object | Das aktualisierte Aktivitätsobjekt | +| `metadata` | object | Operationsmetadaten | +| `success` | boolean | Status des Operationserfolgs | ### `pipedrive_get_leads` @@ -339,10 +354,12 @@ Alle Leads oder einen bestimmten Lead von Pipedrive abrufen #### Output -| Parameter | Type | Beschreibung | +| Parameter | Typ | Beschreibung | | --------- | ---- | ----------- | -| `success` | boolean | Erfolgsstatus der Operation | -| `output` | object | Lead-Daten oder Details eines einzelnen Leads | +| `leads` | array | Array von Lead-Objekten (bei Auflistung aller) | +| `lead` | object | Einzelnes Lead-Objekt (wenn lead_id angegeben ist) | +| `metadata` | object | Operationsmetadaten | +| `success` | boolean | Status des Operationserfolgs | ### `pipedrive_create_lead` @@ -363,10 +380,11 @@ Einen neuen Lead in Pipedrive erstellen #### Output -| Parameter | Type | Beschreibung | +| Parameter | Typ | Beschreibung | | --------- | ---- | ----------- | -| `success` | boolean | Erfolgsstatus der Operation | -| `output` | object | Details des erstellten Leads | +| `lead` | object | Das erstellte Lead-Objekt | +| `metadata` | object | Operationsmetadaten | +| `success` | boolean | Status des Operationserfolgs | ### `pipedrive_update_lead` @@ -388,10 +406,11 @@ Einen vorhandenen Lead in Pipedrive aktualisieren #### Output -| Parameter | Type | Beschreibung | +| Parameter | Typ | Beschreibung | | --------- | ---- | ----------- | -| `success` | boolean | Erfolgsstatus der Operation | -| `output` | object | Details des aktualisierten Leads | +| `lead` | object | Das aktualisierte Lead-Objekt | +| `metadata` | object | Operationsmetadaten | +| `success` | boolean | Status des Operationserfolgs | ### `pipedrive_delete_lead` @@ -407,8 +426,9 @@ Einen bestimmten Lead aus Pipedrive löschen | Parameter | Typ | Beschreibung | | --------- | ---- | ----------- | -| `success` | boolean | Erfolgsstatus der Operation | -| `output` | object | Löschergebnis | +| `data` | object | Löschbestätigungsdaten | +| `metadata` | object | Operationsmetadaten | +| `success` | boolean | Status des Operationserfolgs | ## Hinweise diff --git a/apps/docs/content/docs/de/tools/pylon.mdx b/apps/docs/content/docs/de/tools/pylon.mdx deleted file mode 100644 index 987cd526d..000000000 --- a/apps/docs/content/docs/de/tools/pylon.mdx +++ /dev/null @@ -1,807 +0,0 @@ ---- -title: Pylon -description: Verwalten Sie Kundensupport-Anfragen, Konten, Kontakte, Benutzer, - Teams und Tags in Pylon ---- - -import { BlockInfoCard } from "@/components/ui/block-info-card" - - - -{/* MANUAL-CONTENT-START:intro */} -[Pylon](https://usepylon.com/) ist eine fortschrittliche Kundensupport- und Erfolgsplattform, die entwickelt wurde, um Ihnen bei der Verwaltung aller Aspekte Ihrer Kundenbeziehungen zu helfen – von Support-Anfragen bis hin zu Konten, Kontakten, Benutzern, Teams und darüber hinaus. Pylon ermöglicht Support- und Erfolgsteams, effizient und programmatisch mit einer umfangreichen API und umfassenden Werkzeugen zu arbeiten. - -Mit Pylon in Sim können Sie: - -- **Support-Anfragen verwalten:** - - Support-Anfragen auflisten, erstellen, abrufen, aktualisieren und löschen für effizientes Falltracking. - - Anfragen durchsuchen und zurückstellen, um Agenten zu helfen, fokussiert und organisiert zu bleiben. - - Verwalten von Anfrage-Followern und externen Anfragen für nahtlose Zusammenarbeit mit internen und externen Stakeholdern. - -- **Vollständige Kontoverwaltung:** - - Kundenkonten auflisten, erstellen, abrufen, aktualisieren und löschen. - - Massenaktualisierung von Konten programmatisch durchführen. - - Konten durchsuchen, um schnell kundenrelevante Informationen für Support oder Outreach zu finden. - -- **Kontaktverwaltung:** - - Kontakte auflisten, erstellen, abrufen, aktualisieren, löschen und durchsuchen – verwalten Sie alle Personen, die mit Ihren Konten verbunden sind. - -- **Benutzer- und Team-Operationen:** - - Benutzer in Ihrem Pylon-Workspace auflisten, abrufen, aktualisieren und durchsuchen. - - Teams auflisten, erstellen, abrufen und aktualisieren, um Ihre Support-Organisation und Arbeitsabläufe zu strukturieren. - -- **Tagging und Organisation:** - - Tags auflisten, abrufen, erstellen, aktualisieren und löschen zur Kategorisierung von Anfragen, Konten oder Kontakten. - -- **Nachrichtenbearbeitung:** - - Sensible Nachrichteninhalte direkt aus Ihren Workflows redigieren für Datenschutz und Compliance. - -Durch die Integration von Pylon-Tools in Sim können Ihre Agenten jeden Aspekt der Support-Operationen automatisieren: -- Automatisches Öffnen, Aktualisieren oder Priorisieren neuer Anfragen bei Kundenereignissen. -- Synchronisierte Konto- und Kontaktdaten über Ihren gesamten Tech-Stack hinweg pflegen. -- Gespräche weiterleiten, Eskalationen bearbeiten und Ihre Support-Daten mithilfe von Tags und Teams organisieren. -- Sicherstellen, dass sensible Daten ordnungsgemäß verwaltet werden, indem Nachrichten bei Bedarf redigiert werden. - -Die Endpunkte von Pylon bieten granulare Kontrolle für das vollständige Lifecycle-Management von Kundenanliegen und -beziehungen. Ob beim Skalieren eines Support-Desks, bei der Unterstützung proaktiver Kundenbetreuung oder bei der Integration mit anderen Systemen – Pylon in Sim ermöglicht erstklassige CRM-Automatisierung – sicher, flexibel und skalierbar. -{/* MANUAL-CONTENT-END */} - -## Nutzungsanleitung - -Integrieren Sie Pylon in den Workflow. Verwalten Sie Anliegen (auflisten, erstellen, abrufen, aktualisieren, löschen, suchen, zurückstellen, Follower, externe Anliegen), Konten (auflisten, erstellen, abrufen, aktualisieren, löschen, Massenaktualisierung, suchen), Kontakte (auflisten, erstellen, abrufen, aktualisieren, löschen, suchen), Benutzer (auflisten, abrufen, aktualisieren, suchen), Teams (auflisten, abrufen, erstellen, aktualisieren), Tags (auflisten, abrufen, erstellen, aktualisieren, löschen) und Nachrichten (redigieren). - -## Tools - -### `pylon_list_issues` - -Eine Liste von Anliegen innerhalb eines bestimmten Zeitraums abrufen - -#### Eingabe - -| Parameter | Typ | Erforderlich | Beschreibung | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | Ja | Pylon API-Token | -| `startTime` | string | Ja | Startzeit im RFC3339-Format \(z.B. 2024-01-01T00:00:00Z\) | -| `endTime` | string | Ja | Endzeit im RFC3339-Format \(z.B. 2024-01-31T23:59:59Z\) | -| `cursor` | string | Nein | Paginierungscursor für die nächste Ergebnisseite | - -#### Ausgabe - -| Parameter | Typ | Beschreibung | -| --------- | ---- | ----------- | -| `success` | boolean | Status des Operationserfolgs | -| `output` | object | Liste der Anliegen | - -### `pylon_create_issue` - -Ein neues Anliegen mit bestimmten Eigenschaften erstellen - -#### Eingabe - -| Parameter | Typ | Erforderlich | Beschreibung | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | Ja | Pylon API-Token | -| `title` | string | Ja | Titel des Problems | -| `bodyHtml` | string | Ja | Inhalt des Problems im HTML-Format | -| `accountId` | string | Nein | Konto-ID, die mit dem Problem verknüpft werden soll | -| `assigneeId` | string | Nein | Benutzer-ID, der das Problem zugewiesen werden soll | -| `teamId` | string | Nein | Team-ID, dem das Problem zugewiesen werden soll | -| `requesterId` | string | Nein | Anforderer-Benutzer-ID \(Alternative zu requester_email\) | -| `requesterEmail` | string | Nein | E-Mail-Adresse des Anforderers \(Alternative zu requester_id\) | -| `priority` | string | Nein | Priorität des Problems | -| `tags` | string | Nein | Durch Komma getrennte Tag-IDs | -| `customFields` | string | Nein | Benutzerdefinierte Felder als JSON-Objekt | -| `attachmentUrls` | string | Nein | Durch Komma getrennte Anhang-URLs | - -#### Output - -| Parameter | Type | Beschreibung | -| --------- | ---- | ----------- | -| `success` | boolean | Status des Operationserfolgs | -| `output` | object | Daten des erstellten Issues | - -### `pylon_get_issue` - -Ruft ein bestimmtes Issue anhand der ID ab - -#### Input - -| Parameter | Type | Erforderlich | Beschreibung | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | Ja | Pylon API-Token | -| `issueId` | string | Ja | Die ID des abzurufenden Issues | - -#### Output - -| Parameter | Type | Beschreibung | -| --------- | ---- | ----------- | -| `success` | boolean | Status des Operationserfolgs | -| `output` | object | Issue-Daten | - -### `pylon_update_issue` - -Aktualisiert ein bestehendes Issue - -#### Input - -| Parameter | Typ | Erforderlich | Beschreibung | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | Ja | Pylon API-Token | -| `issueId` | string | Ja | Die ID des zu aktualisierenden Problems | -| `state` | string | Nein | Status des Problems | -| `assigneeId` | string | Nein | Benutzer-ID, der das Problem zugewiesen werden soll | -| `teamId` | string | Nein | Team-ID, dem das Problem zugewiesen werden soll | -| `tags` | string | Nein | Durch Komma getrennte Tag-IDs | -| `customFields` | string | Nein | Benutzerdefinierte Felder als JSON-Objekt | -| `customerPortalVisible` | boolean | Nein | Ob das Problem im Kundenportal sichtbar ist | -| `requesterId` | string | Nein | Anforderer-Benutzer-ID | -| `accountId` | string | Nein | Konto-ID, die mit dem Problem verknüpft werden soll | - -#### Output - -| Parameter | Type | Beschreibung | -| --------- | ---- | ----------- | -| `success` | boolean | Status des Operationserfolgs | -| `output` | object | Daten des aktualisierten Issues | - -### `pylon_delete_issue` - -Problem nach ID entfernen - -#### Eingabe - -| Parameter | Typ | Erforderlich | Beschreibung | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | Ja | Pylon API-Token | -| `issueId` | string | Ja | Die ID des zu löschenden Problems | - -#### Ausgabe - -| Parameter | Typ | Beschreibung | -| --------- | ---- | ----------- | -| `success` | boolean | Status des Operationserfolgs | -| `output` | object | Löschergebnis | - -### `pylon_search_issues` - -Probleme mit Filtern abfragen - -#### Eingabe - -| Parameter | Typ | Erforderlich | Beschreibung | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | Ja | Pylon API-Token | -| `filter` | string | Ja | Filterkriterien als JSON-String | -| `cursor` | string | Nein | Paginierungscursor für die nächste Ergebnisseite | -| `limit` | number | Nein | Maximale Anzahl der zurückzugebenden Ergebnisse | - -#### Ausgabe - -| Parameter | Typ | Beschreibung | -| --------- | ---- | ----------- | -| `success` | boolean | Status des Operationserfolgs | -| `output` | object | Suchergebnisse | - -### `pylon_snooze_issue` - -Problemsichtbarkeit bis zu einem bestimmten Zeitpunkt verschieben - -#### Eingabe - -| Parameter | Typ | Erforderlich | Beschreibung | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | Ja | Pylon API-Token | -| `issueId` | string | Ja | Die ID des zu schlummernden Problems | -| `snoozeUntil` | string | Ja | RFC3339-Zeitstempel, wann das Problem wieder erscheinen soll \(z.B. 2024-01-01T00:00:00Z\) | - -#### Ausgabe - -| Parameter | Typ | Beschreibung | -| --------- | ---- | ----------- | -| `success` | boolean | Erfolgsstatus der Operation | -| `output` | object | Daten des zurückgestellten Problems | - -### `pylon_list_issue_followers` - -Liste der Follower für ein bestimmtes Problem abrufen - -#### Eingabe - -| Parameter | Typ | Erforderlich | Beschreibung | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | Ja | Pylon API-Token | -| `issueId` | string | Ja | Die ID des Problems | - -#### Ausgabe - -| Parameter | Typ | Beschreibung | -| --------- | ---- | ----------- | -| `success` | boolean | Erfolgsstatus der Operation | -| `output` | object | Liste der Follower | - -### `pylon_manage_issue_followers` - -Follower zu einem Problem hinzufügen oder entfernen - -#### Eingabe - -| Parameter | Typ | Erforderlich | Beschreibung | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | Ja | Pylon API-Token | -| `issueId` | string | Ja | Die ID des Problems | -| `userIds` | string | Nein | Durch Komma getrennte Benutzer-IDs zum Hinzufügen/Entfernen | -| `contactIds` | string | Nein | Durch Komma getrennte Kontakt-IDs zum Hinzufügen/Entfernen | -| `operation` | string | Nein | Auszuführende Operation: "add" oder "remove" \(Standard: "add"\) | - -#### Ausgabe - -| Parameter | Typ | Beschreibung | -| --------- | ---- | ----------- | -| `success` | boolean | Erfolgsstatus der Operation | -| `output` | object | Aktualisierte Liste der Follower | - -### `pylon_link_external_issue` - -Issue mit einem externen System-Issue verknüpfen - -#### Eingabe - -| Parameter | Typ | Erforderlich | Beschreibung | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | Ja | Pylon API-Token | -| `issueId` | string | Ja | Die ID des Pylon-Issues | -| `externalIssueId` | string | Ja | Die ID des externen Issues | -| `source` | string | Ja | Das Quellsystem \(z.B. "jira", "linear", "github"\) | - -#### Ausgabe - -| Parameter | Typ | Beschreibung | -| --------- | ---- | ----------- | -| `success` | boolean | Status des Operationserfolgs | -| `output` | object | Daten des verknüpften externen Issues | - -### `pylon_list_accounts` - -Eine paginierte Liste von Konten abrufen - -#### Eingabe - -| Parameter | Typ | Erforderlich | Beschreibung | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | Ja | Pylon API-Token | -| `limit` | string | Nein | Anzahl der zurückzugebenden Konten \(1-1000, Standard 100\) | -| `cursor` | string | Nein | Paginierungscursor für die nächste Ergebnisseite | - -#### Ausgabe - -| Parameter | Typ | Beschreibung | -| --------- | ---- | ----------- | -| `success` | boolean | Status des Operationserfolgs | -| `output` | object | Liste der Konten | - -### `pylon_create_account` - -Ein neues Konto mit bestimmten Eigenschaften erstellen - -#### Eingabe - -| Parameter | Typ | Erforderlich | Beschreibung | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | Ja | Pylon API-Token | -| `name` | string | Ja | Kontoname | -| `domains` | string | Nein | Kommagetrennte Liste von Domains | -| `primaryDomain` | string | Nein | Primäre Domain für das Konto | -| `customFields` | string | Nein | Benutzerdefinierte Felder als JSON-Objekt | -| `tags` | string | Nein | Kommagetrennte Tag-IDs | -| `channels` | string | Nein | Kommagetrennte Kanal-IDs | -| `externalIds` | string | Nein | Kommagetrennte externe IDs | -| `ownerId` | string | Nein | Besitzer-Benutzer-ID | -| `logoUrl` | string | Nein | URL zum Konto-Logo | -| `subaccountIds` | string | Nein | Kommagetrennte Unterkonto-IDs | - -#### Output - -| Parameter | Type | Beschreibung | -| --------- | ---- | ----------- | -| `success` | boolean | Erfolgsstatus der Operation | -| `output` | object | Erstellte Kontodaten | - -### `pylon_get_account` - -Ein einzelnes Konto anhand der ID abrufen - -#### Input - -| Parameter | Type | Erforderlich | Beschreibung | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | Ja | Pylon API-Token | -| `accountId` | string | Ja | Konto-ID zum Abrufen | - -#### Output - -| Parameter | Type | Beschreibung | -| --------- | ---- | ----------- | -| `success` | boolean | Erfolgsstatus der Operation | -| `output` | object | Kontodaten | - -### `pylon_update_account` - -Ein bestehendes Konto mit neuen Eigenschaften aktualisieren - -#### Input - -| Parameter | Type | Erforderlich | Beschreibung | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | Ja | Pylon API-Token | -| `accountId` | string | Ja | Konto-ID zum Aktualisieren | -| `name` | string | Nein | Kontoname | -| `domains` | string | Nein | Kommagetrennte Liste von Domains | -| `primaryDomain` | string | Nein | Primäre Domain für das Konto | -| `customFields` | string | Nein | Benutzerdefinierte Felder als JSON-Objekt | -| `tags` | string | Nein | Kommagetrennte Tag-IDs | -| `channels` | string | Nein | Kommagetrennte Kanal-IDs | -| `externalIds` | string | Nein | Kommagetrennte externe IDs | -| `ownerId` | string | Nein | Besitzer-Benutzer-ID | -| `logoUrl` | string | Nein | URL zum Konto-Logo | -| `subaccountIds` | string | Nein | Kommagetrennte Unterkonto-IDs | - -#### Ausgabe - -| Parameter | Typ | Beschreibung | -| --------- | ---- | ----------- | -| `success` | boolean | Erfolgsstatus der Operation | -| `output` | object | Aktualisierte Kontodaten | - -### `pylon_delete_account` - -Ein Konto anhand der ID entfernen - -#### Eingabe - -| Parameter | Typ | Erforderlich | Beschreibung | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | Ja | Pylon API-Token | -| `accountId` | string | Ja | Konto-ID, die gelöscht werden soll | - -#### Ausgabe - -| Parameter | Typ | Beschreibung | -| --------- | ---- | ----------- | -| `success` | boolean | Erfolgsstatus der Operation | -| `output` | object | Löschbestätigung | - -### `pylon_bulk_update_accounts` - -Mehrere Konten auf einmal aktualisieren - -#### Eingabe - -| Parameter | Typ | Erforderlich | Beschreibung | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | Ja | Pylon API-Token | -| `accountIds` | string | Ja | Durch Komma getrennte Konto-IDs, die aktualisiert werden sollen | -| `customFields` | string | Nein | Benutzerdefinierte Felder als JSON-Objekt | -| `tags` | string | Nein | Durch Komma getrennte Tag-IDs | -| `ownerId` | string | Nein | Besitzer-Benutzer-ID | -| `tagsApplyMode` | string | Nein | Tag-Anwendungsmodus: append_only, remove_only oder replace | - -#### Ausgabe - -| Parameter | Typ | Beschreibung | -| --------- | ---- | ----------- | -| `success` | boolean | Erfolgsstatus der Operation | -| `output` | object | Massenhaft aktualisierte Kontodaten | - -### `pylon_search_accounts` - -Konten mit benutzerdefinierten Filtern durchsuchen - -#### Eingabe - -| Parameter | Typ | Erforderlich | Beschreibung | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | Ja | Pylon API-Token | -| `filter` | string | Ja | Filter als JSON-String mit Feld/Operator/Wert-Struktur | -| `limit` | string | Nein | Anzahl der zurückzugebenden Konten \(1-1000, Standard 100\) | -| `cursor` | string | Nein | Paginierungscursor für die nächste Ergebnisseite | - -#### Ausgabe - -| Parameter | Typ | Beschreibung | -| --------- | ---- | ----------- | -| `success` | boolean | Status des Operationserfolgs | -| `output` | object | Suchergebnisse | - -### `pylon_list_contacts` - -Eine Liste von Kontakten abrufen - -#### Eingabe - -| Parameter | Typ | Erforderlich | Beschreibung | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | Ja | Pylon API-Token | -| `cursor` | string | Nein | Paginierungscursor für die nächste Ergebnisseite | -| `limit` | string | Nein | Maximale Anzahl der zurückzugebenden Kontakte | - -#### Ausgabe - -| Parameter | Typ | Beschreibung | -| --------- | ---- | ----------- | -| `success` | boolean | Status des Operationserfolgs | -| `output` | object | Liste der Kontakte | - -### `pylon_create_contact` - -Einen neuen Kontakt mit bestimmten Eigenschaften erstellen - -#### Eingabe - -| Parameter | Typ | Erforderlich | Beschreibung | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | Ja | Pylon API-Token | -| `name` | string | Ja | Kontaktname | -| `email` | string | Nein | E-Mail-Adresse des Kontakts | -| `accountId` | string | Nein | Konto-ID, die mit dem Kontakt verknüpft werden soll | -| `accountExternalId` | string | Nein | Externe Konto-ID, die mit dem Kontakt verknüpft werden soll | -| `avatarUrl` | string | Nein | URL für das Kontakt-Avatarbild | -| `customFields` | string | Nein | Benutzerdefinierte Felder als JSON-Objekt | -| `portalRole` | string | Nein | Portal-Rolle für den Kontakt | - -#### Output - -| Parameter | Type | Beschreibung | -| --------- | ---- | ----------- | -| `success` | boolean | Status des Operationserfolgs | -| `output` | object | Erstellte Kontaktdaten | - -### `pylon_get_contact` - -Einen bestimmten Kontakt anhand der ID abrufen - -#### Input - -| Parameter | Type | Erforderlich | Beschreibung | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | Ja | Pylon API-Token | -| `contactId` | string | Ja | Kontakt-ID zum Abrufen | -| `cursor` | string | Nein | Paginierungscursor für die nächste Ergebnisseite | -| `limit` | string | Nein | Maximale Anzahl der zurückzugebenden Elemente | - -#### Output - -| Parameter | Type | Beschreibung | -| --------- | ---- | ----------- | -| `success` | boolean | Status des Operationserfolgs | -| `output` | object | Kontaktdaten | - -### `pylon_update_contact` - -Einen vorhandenen Kontakt mit angegebenen Eigenschaften aktualisieren - -#### Input - -| Parameter | Type | Erforderlich | Beschreibung | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | Ja | Pylon API-Token | -| `contactId` | string | Ja | Kontakt-ID zum Aktualisieren | -| `name` | string | Nein | Kontaktname | -| `email` | string | Nein | E-Mail-Adresse des Kontakts | -| `accountId` | string | Nein | Konto-ID, die mit dem Kontakt verknüpft werden soll | -| `accountExternalId` | string | Nein | Externe Konto-ID, die mit dem Kontakt verknüpft werden soll | -| `avatarUrl` | string | Nein | URL für das Kontakt-Avatarbild | -| `customFields` | string | Nein | Benutzerdefinierte Felder als JSON-Objekt | -| `portalRole` | string | Nein | Portalrolle für den Kontakt | - -#### Ausgabe - -| Parameter | Typ | Beschreibung | -| --------- | ---- | ----------- | -| `success` | boolean | Status des Operationserfolgs | -| `output` | object | Aktualisierte Kontaktdaten | - -### `pylon_delete_contact` - -Einen bestimmten Kontakt anhand der ID löschen - -#### Eingabe - -| Parameter | Typ | Erforderlich | Beschreibung | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | Ja | Pylon API-Token | -| `contactId` | string | Ja | Zu löschende Kontakt-ID | - -#### Ausgabe - -| Parameter | Typ | Beschreibung | -| --------- | ---- | ----------- | -| `success` | boolean | Status des Operationserfolgs | -| `output` | object | Ergebnis des Löschvorgangs | - -### `pylon_search_contacts` - -Nach Kontakten mit einem Filter suchen - -#### Eingabe - -| Parameter | Typ | Erforderlich | Beschreibung | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | Ja | Pylon API-Token | -| `filter` | string | Ja | Filter als JSON-Objekt | -| `limit` | string | Nein | Maximale Anzahl der zurückzugebenden Kontakte | -| `cursor` | string | Nein | Paginierungscursor für die nächste Ergebnisseite | - -#### Ausgabe - -| Parameter | Typ | Beschreibung | -| --------- | ---- | ----------- | -| `success` | boolean | Status des Operationserfolgs | -| `output` | object | Suchergebnisse | - -### `pylon_list_users` - -Eine Liste von Benutzern abrufen - -#### Eingabe - -| Parameter | Typ | Erforderlich | Beschreibung | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | Ja | Pylon API-Token | - -#### Output - -| Parameter | Type | Beschreibung | -| --------- | ---- | ----------- | -| `success` | boolean | Erfolgsstatus der Operation | -| `output` | object | Liste der Benutzer | - -### `pylon_get_user` - -Einen bestimmten Benutzer anhand der ID abrufen - -#### Input - -| Parameter | Type | Erforderlich | Beschreibung | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | Ja | Pylon API-Token | -| `userId` | string | Ja | Benutzer-ID zum Abrufen | - -#### Output - -| Parameter | Type | Beschreibung | -| --------- | ---- | ----------- | -| `success` | boolean | Erfolgsstatus der Operation | -| `output` | object | Benutzerdaten | - -### `pylon_update_user` - -Einen vorhandenen Benutzer mit angegebenen Eigenschaften aktualisieren - -#### Input - -| Parameter | Type | Erforderlich | Beschreibung | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | Ja | Pylon API-Token | -| `userId` | string | Ja | Benutzer-ID zum Aktualisieren | -| `roleId` | string | Nein | Rollen-ID, die dem Benutzer zugewiesen werden soll | -| `status` | string | Nein | Benutzerstatus | - -#### Output - -| Parameter | Type | Beschreibung | -| --------- | ---- | ----------- | -| `success` | boolean | Erfolgsstatus der Operation | -| `output` | object | Aktualisierte Benutzerdaten | - -### `pylon_search_users` - -Nach Benutzern mit einem Filter für das E-Mail-Feld suchen - -#### Input - -| Parameter | Type | Erforderlich | Beschreibung | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | Ja | Pylon API-Token | -| `filter` | string | Ja | Filter als JSON-Objekt mit E-Mail-Feld | -| `cursor` | string | Nein | Paginierungscursor für die nächste Ergebnisseite | -| `limit` | string | Nein | Maximale Anzahl der zurückzugebenden Benutzer | - -#### Output - -| Parameter | Type | Beschreibung | -| --------- | ---- | ----------- | -| `success` | boolean | Erfolgsstatus der Operation | -| `output` | object | Suchergebnisse | - -### `pylon_list_teams` - -Eine Liste von Teams abrufen - -#### Input - -| Parameter | Type | Erforderlich | Beschreibung | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | Ja | Pylon API-Token | - -#### Output - -| Parameter | Type | Beschreibung | -| --------- | ---- | ----------- | -| `success` | boolean | Erfolgsstatus der Operation | -| `output` | object | Liste der Teams | - -### `pylon_get_team` - -Ein bestimmtes Team anhand der ID abrufen - -#### Input - -| Parameter | Type | Erforderlich | Beschreibung | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | Ja | Pylon API-Token | -| `teamId` | string | Ja | Team-ID zum Abrufen | - -#### Output - -| Parameter | Type | Beschreibung | -| --------- | ---- | ----------- | -| `success` | boolean | Erfolgsstatus der Operation | -| `output` | object | Team-Daten | - -### `pylon_create_team` - -Ein neues Team mit bestimmten Eigenschaften erstellen - -#### Input - -| Parameter | Type | Erforderlich | Beschreibung | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | Ja | Pylon API-Token | -| `name` | string | Nein | Team-Name | -| `userIds` | string | Nein | Durch Kommas getrennte Benutzer-IDs, die als Teammitglieder hinzugefügt werden sollen | - -#### Ausgabe - -| Parameter | Typ | Beschreibung | -| --------- | ---- | ----------- | -| `success` | boolean | Status des Operationserfolgs | -| `output` | object | Erstellte Team-Daten | - -### `pylon_update_team` - -Aktualisieren eines vorhandenen Teams mit angegebenen Eigenschaften (userIds ersetzt die gesamte Mitgliedschaft) - -#### Eingabe - -| Parameter | Typ | Erforderlich | Beschreibung | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | Ja | Pylon API-Token | -| `teamId` | string | Ja | Team-ID zum Aktualisieren | -| `name` | string | Nein | Team-Name | -| `userIds` | string | Nein | Kommagetrennte Benutzer-IDs \(ersetzt die gesamte Team-Mitgliedschaft\) | - -#### Ausgabe - -| Parameter | Typ | Beschreibung | -| --------- | ---- | ----------- | -| `success` | boolean | Status des Operationserfolgs | -| `output` | object | Aktualisierte Team-Daten | - -### `pylon_list_tags` - -Abrufen einer Liste von Tags - -#### Eingabe - -| Parameter | Typ | Erforderlich | Beschreibung | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | Ja | Pylon API-Token | - -#### Ausgabe - -| Parameter | Typ | Beschreibung | -| --------- | ---- | ----------- | -| `success` | boolean | Status des Operationserfolgs | -| `output` | object | Liste der Tags | - -### `pylon_get_tag` - -Abrufen eines bestimmten Tags anhand der ID - -#### Eingabe - -| Parameter | Typ | Erforderlich | Beschreibung | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | Ja | Pylon API-Token | -| `tagId` | string | Ja | Tag-ID zum Abrufen | - -#### Ausgabe - -| Parameter | Typ | Beschreibung | -| --------- | ---- | ----------- | -| `success` | boolean | Erfolgsstatus der Operation | -| `output` | object | Tag-Daten | - -### `pylon_create_tag` - -Erstellt einen neuen Tag mit angegebenen Eigenschaften (objectType: account/issue/contact) - -#### Eingabe - -| Parameter | Typ | Erforderlich | Beschreibung | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | Ja | Pylon API-Token | -| `objectType` | string | Ja | Objekttyp für Tag \(account, issue oder contact\) | -| `value` | string | Ja | Tag-Wert/Name | -| `hexColor` | string | Nein | Hex-Farbcode für Tag \(z.B. #FF5733\) | - -#### Ausgabe - -| Parameter | Typ | Beschreibung | -| --------- | ---- | ----------- | -| `success` | boolean | Erfolgsstatus der Operation | -| `output` | object | Daten des erstellten Tags | - -### `pylon_update_tag` - -Aktualisiert einen vorhandenen Tag mit angegebenen Eigenschaften - -#### Eingabe - -| Parameter | Typ | Erforderlich | Beschreibung | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | Ja | Pylon API-Token | -| `tagId` | string | Ja | Zu aktualisierende Tag-ID | -| `hexColor` | string | Nein | Hex-Farbcode für Tag \(z.B. #FF5733\) | -| `value` | string | Nein | Tag-Wert/Name | - -#### Ausgabe - -| Parameter | Typ | Beschreibung | -| --------- | ---- | ----------- | -| `success` | boolean | Erfolgsstatus der Operation | -| `output` | object | Daten des aktualisierten Tags | - -### `pylon_delete_tag` - -Löschen eines bestimmten Tags anhand der ID - -#### Eingabe - -| Parameter | Typ | Erforderlich | Beschreibung | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | Ja | Pylon API-Token | -| `tagId` | string | Ja | Tag-ID zum Löschen | - -#### Ausgabe - -| Parameter | Typ | Beschreibung | -| --------- | ---- | ----------- | -| `success` | boolean | Erfolgsstatus der Operation | -| `output` | object | Ergebnis der Löschoperation | - -### `pylon_redact_message` - -Redigieren einer bestimmten Nachricht innerhalb eines Issues - -#### Eingabe - -| Parameter | Typ | Erforderlich | Beschreibung | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | Ja | Pylon API-Token | -| `issueId` | string | Ja | Issue-ID, die die Nachricht enthält | -| `messageId` | string | Ja | Nachrichten-ID zum Redigieren | - -#### Ausgabe - -| Parameter | Typ | Beschreibung | -| --------- | ---- | ----------- | -| `success` | boolean | Erfolgsstatus der Operation | -| `output` | object | Ergebnis der Redigieroperation | - -## Hinweise - -- Kategorie: `tools` -- Typ: `pylon` diff --git a/apps/docs/content/docs/de/tools/spotify.mdx b/apps/docs/content/docs/de/tools/spotify.mdx new file mode 100644 index 000000000..0be411435 --- /dev/null +++ b/apps/docs/content/docs/de/tools/spotify.mdx @@ -0,0 +1,1453 @@ +--- +title: Spotify +description: Musik suchen, Playlists verwalten, Wiedergabe steuern und auf deine + Bibliothek zugreifen +--- + +import { BlockInfoCard } from "@/components/ui/block-info-card" + + + +## Nutzungsanleitung + +Integriere Spotify in deinen Workflow. Suche nach Titeln, Alben, Künstlern und Playlists. Verwalte Playlists, greife auf deine Bibliothek zu, steuere die Wiedergabe, durchsuche Podcasts und Hörbücher. + +## Tools + +### `spotify_search` + +Suche nach Titeln, Alben, Künstlern oder Playlists auf Spotify. Liefert passende Ergebnisse basierend auf der Anfrage. + +#### Eingabe + +| Parameter | Typ | Erforderlich | Beschreibung | +| --------- | ---- | -------- | ----------- | +| `query` | string | Ja | Suchanfrage \(z.B. "Bohemian Rhapsody", "artist:Queen", "genre:rock"\) | +| `type` | string | Nein | Art der Ergebnisse: track, album, artist, playlist oder durch Komma getrennt \(z.B. "track,artist"\) | +| `limit` | number | Nein | Maximale Anzahl der zurückzugebenden Ergebnisse \(1-50\) | +| `offset` | number | Nein | Index des ersten Ergebnisses für die Paginierung | +| `market` | string | Nein | ISO 3166-1 alpha-2 Ländercode zur Filterung der Ergebnisse \(z.B. "US", "GB"\) | + +#### Ausgabe + +| Parameter | Typ | Beschreibung | +| --------- | ---- | ----------- | +| `tracks` | array | Liste der passenden Titel | + +### `spotify_get_track` + +Erhalte detaillierte Informationen über einen bestimmten Titel auf Spotify anhand seiner ID. + +#### Eingabe + +| Parameter | Typ | Erforderlich | Beschreibung | +| --------- | ---- | -------- | ----------- | +| `trackId` | string | Ja | Die Spotify-ID des Titels | +| `market` | string | Nein | ISO 3166-1 alpha-2 Ländercode für die Verfügbarkeit des Titels | + +#### Output + +| Parameter | Type | Beschreibung | +| --------- | ---- | ----------- | +| `id` | string | Spotify-Track-ID | +| `name` | string | Trackname | +| `artists` | array | Liste der Künstler | +| `album` | object | Album-Informationen | +| `duration_ms` | number | Trackdauer in Millisekunden | +| `explicit` | boolean | Ob der Track explizite Inhalte enthält | +| `popularity` | number | Popularitätswert (0-100) | +| `preview_url` | string | URL zur 30-Sekunden-Vorschau | +| `external_url` | string | Spotify-URL | +| `uri` | string | Spotify-URI für den Track | + +### `spotify_get_tracks` + +Erhalte detaillierte Informationen über mehrere Tracks auf Spotify anhand ihrer IDs (bis zu 50). + +#### Input + +| Parameter | Type | Erforderlich | Beschreibung | +| --------- | ---- | -------- | ----------- | +| `trackIds` | string | Ja | Kommagetrennte Liste von Spotify-Track-IDs (max. 50) | +| `market` | string | Nein | ISO 3166-1 Alpha-2-Ländercode für Track-Verfügbarkeit | + +#### Output + +| Parameter | Type | Beschreibung | +| --------- | ---- | ----------- | +| `tracks` | array | Liste der Tracks | + +### `spotify_get_album` + +Erhalte detaillierte Informationen über ein Album auf Spotify anhand seiner ID, einschließlich der Trackliste. + +#### Input + +| Parameter | Type | Erforderlich | Beschreibung | +| --------- | ---- | -------- | ----------- | +| `albumId` | string | Ja | Die Spotify-ID des Albums | +| `market` | string | Nein | ISO 3166-1 Alpha-2-Ländercode für Track-Verfügbarkeit | + +#### Output + +| Parameter | Type | Beschreibung | +| --------- | ---- | ----------- | +| `id` | string | Spotify-Album-ID | +| `name` | string | Albumname | +| `artists` | array | Liste der Künstler | +| `album_type` | string | Art des Albums \(album, single, compilation\) | +| `total_tracks` | number | Gesamtanzahl der Tracks | +| `release_date` | string | Veröffentlichungsdatum | +| `label` | string | Plattenlabel | +| `popularity` | number | Popularitätswert \(0-100\) | +| `genres` | array | Liste der Genres | +| `image_url` | string | URL des Albumcovers | +| `tracks` | array | Liste der Tracks auf dem Album | +| `external_url` | string | Spotify-URL | + +### `spotify_get_albums` + +Ruft Details für mehrere Alben anhand ihrer IDs ab. + +#### Input + +| Parameter | Type | Required | Beschreibung | +| --------- | ---- | -------- | ----------- | +| `albumIds` | string | Yes | Durch Kommas getrennte Album-IDs \(max. 20\) | +| `market` | string | No | ISO-Ländercode für den Markt | + +#### Output + +| Parameter | Type | Beschreibung | +| --------- | ---- | ----------- | +| `albums` | json | Liste der Alben | + +### `spotify_get_album_tracks` + +Ruft die Tracks eines Albums ab. + +#### Input + +| Parameter | Type | Required | Beschreibung | +| --------- | ---- | -------- | ----------- | +| `albumId` | string | Yes | Die Spotify-Album-ID | +| `limit` | number | No | Anzahl der zurückzugebenden Tracks \(1-50\) | +| `offset` | number | No | Index des ersten zurückzugebenden Tracks | + +#### Ausgabe + +| Parameter | Typ | Beschreibung | +| --------- | ---- | ----------- | +| `tracks` | json | Liste der Tracks | +| `total` | number | Gesamtanzahl der Tracks | +| `next` | string | URL für die nächste Seite | + +### `spotify_get_saved_albums` + +Benutzer abrufen + +#### Eingabe + +| Parameter | Typ | Erforderlich | Beschreibung | +| --------- | ---- | -------- | ----------- | +| `limit` | number | Nein | Anzahl der zurückzugebenden Alben (1-50) | +| `offset` | number | Nein | Index des ersten zurückzugebenden Albums | +| `market` | string | Nein | ISO-Ländercode für den Markt | + +#### Ausgabe + +| Parameter | Typ | Beschreibung | +| --------- | ---- | ----------- | +| `albums` | json | Liste der gespeicherten Alben | +| `total` | number | Gesamtzahl der gespeicherten Alben | +| `next` | string | URL für die nächste Seite | + +### `spotify_save_albums` + +Alben für den Benutzer speichern + +#### Eingabe + +| Parameter | Typ | Erforderlich | Beschreibung | +| --------- | ---- | -------- | ----------- | +| `albumIds` | string | Ja | Durch Kommas getrennte Album-IDs (max. 20) | + +#### Ausgabe + +| Parameter | Typ | Beschreibung | +| --------- | ---- | ----------- | +| `success` | boolean | Ob Alben gespeichert wurden | + +### `spotify_remove_saved_albums` + +Alben vom Benutzer entfernen + +#### Eingabe + +| Parameter | Typ | Erforderlich | Beschreibung | +| --------- | ---- | -------- | ----------- | +| `albumIds` | string | Ja | Durch Kommas getrennte Album-IDs (max. 20) | + +#### Ausgabe + +| Parameter | Typ | Beschreibung | +| --------- | ---- | ----------- | +| `success` | boolean | Ob Alben entfernt wurden | + +### `spotify_check_saved_albums` + +Prüfen, ob Alben in der Bibliothek gespeichert sind. + +#### Eingabe + +| Parameter | Typ | Erforderlich | Beschreibung | +| --------- | ---- | -------- | ----------- | +| `albumIds` | string | Ja | Durch Kommas getrennte Album-IDs (max. 20) | + +#### Ausgabe + +| Parameter | Typ | Beschreibung | +| --------- | ---- | ----------- | +| `results` | json | Array von Booleschen Werten für jedes Album | + +### `spotify_get_artist` + +Detaillierte Informationen über einen Künstler auf Spotify anhand seiner ID abrufen. + +#### Eingabe + +| Parameter | Typ | Erforderlich | Beschreibung | +| --------- | ---- | -------- | ----------- | +| `artistId` | string | Ja | Die Spotify-ID des Künstlers | + +#### Ausgabe + +| Parameter | Typ | Beschreibung | +| --------- | ---- | ----------- | +| `id` | string | Spotify-Künstler-ID | +| `name` | string | Künstlername | +| `genres` | array | Liste der mit dem Künstler verbundenen Genres | +| `popularity` | number | Popularitätswert (0-100) | +| `followers` | number | Anzahl der Follower | +| `image_url` | string | Künstler-Bild-URL | +| `external_url` | string | Spotify-URL | + +### `spotify_get_artists` + +Details für mehrere Künstler anhand ihrer IDs abrufen. + +#### Eingabe + +| Parameter | Typ | Erforderlich | Beschreibung | +| --------- | ---- | -------- | ----------- | +| `artistIds` | string | Ja | Durch Kommas getrennte Künstler-IDs (max. 50) | + +#### Ausgabe + +| Parameter | Typ | Beschreibung | +| --------- | ---- | ----------- | +| `artists` | json | Liste der Künstler | + +### `spotify_get_artist_albums` + +Alben eines Künstlers auf Spotify abrufen. Kann nach Albumtyp gefiltert werden. + +#### Eingabe + +| Parameter | Typ | Erforderlich | Beschreibung | +| --------- | ---- | -------- | ----------- | +| `artistId` | string | Ja | Die Spotify-ID des Künstlers | +| `include_groups` | string | Nein | Nach Albumtyp filtern: album, single, appears_on, compilation \(durch Komma getrennt\) | +| `limit` | number | Nein | Maximale Anzahl der zurückzugebenden Alben \(1-50\) | +| `offset` | number | Nein | Index des ersten zurückzugebenden Albums | +| `market` | string | Nein | ISO 3166-1 alpha-2 Ländercode | + +#### Ausgabe + +| Parameter | Typ | Beschreibung | +| --------- | ---- | ----------- | +| `albums` | array | Künstler | + +### `spotify_get_artist_top_tracks` + +Die 10 beliebtesten Tracks eines Künstlers auf Spotify abrufen. + +#### Eingabe + +| Parameter | Typ | Erforderlich | Beschreibung | +| --------- | ---- | -------- | ----------- | +| `artistId` | string | Ja | Die Spotify-ID des Künstlers | +| `market` | string | Nein | ISO 3166-1 alpha-2 Ländercode \(für diesen Endpunkt erforderlich\) | + +#### Ausgabe + +| Parameter | Typ | Beschreibung | +| --------- | ---- | ----------- | +| `tracks` | array | Künstler | + +### `spotify_follow_artists` + +Einem oder mehreren Künstlern folgen. + +#### Eingabe + +| Parameter | Typ | Erforderlich | Beschreibung | +| --------- | ---- | -------- | ----------- | +| `artistIds` | string | Ja | Durch Komma getrennte Künstler-IDs zum Folgen (max. 50) | + +#### Ausgabe + +| Parameter | Typ | Beschreibung | +| --------- | ---- | ----------- | +| `success` | boolean | Ob Künstlern erfolgreich gefolgt wurde | + +### `spotify_unfollow_artists` + +Einem oder mehreren Künstlern entfolgen. + +#### Eingabe + +| Parameter | Typ | Erforderlich | Beschreibung | +| --------- | ---- | -------- | ----------- | +| `artistIds` | string | Ja | Durch Komma getrennte Künstler-IDs zum Entfolgen (max. 50) | + +#### Ausgabe + +| Parameter | Typ | Beschreibung | +| --------- | ---- | ----------- | +| `success` | boolean | Ob Künstlern erfolgreich entfolgt wurde | + +### `spotify_get_followed_artists` + +Den Benutzer abrufen + +#### Eingabe + +| Parameter | Typ | Erforderlich | Beschreibung | +| --------- | ---- | -------- | ----------- | +| `limit` | number | Nein | Anzahl der zurückzugebenden Künstler (1-50) | +| `after` | string | Nein | Cursor für Paginierung (letzte Künstler-ID aus vorheriger Anfrage) | + +#### Ausgabe + +| Parameter | Typ | Beschreibung | +| --------- | ---- | ----------- | +| `artists` | json | Liste der gefolgten Künstler | +| `total` | number | Gesamtanzahl der gefolgten Künstler | +| `next` | string | Cursor für die nächste Seite | + +### `spotify_check_following` + +Prüfen, ob der Benutzer Künstlern oder anderen Benutzern folgt. + +#### Eingabe + +| Parameter | Typ | Erforderlich | Beschreibung | +| --------- | ---- | -------- | ----------- | +| `type` | string | Ja | Zu prüfender Typ: "artist" oder "user" | +| `ids` | string | Ja | Durch Komma getrennte Künstler- oder Benutzer-IDs (max. 50) | + +#### Output + +| Parameter | Typ | Beschreibung | +| --------- | ---- | ----------- | +| `results` | json | Array von Booleschen Werten für jede ID | + +### `spotify_get_show` + +Details zu einer Podcast-Show abrufen. + +#### Input + +| Parameter | Typ | Erforderlich | Beschreibung | +| --------- | ---- | -------- | ----------- | +| `showId` | string | Ja | Die Spotify-Show-ID | +| `market` | string | Nein | ISO-Ländercode für den Markt | + +#### Output + +| Parameter | Typ | Beschreibung | +| --------- | ---- | ----------- | +| `id` | string | Show-ID | +| `name` | string | Show-Name | +| `description` | string | Show-Beschreibung | +| `publisher` | string | Publisher-Name | +| `total_episodes` | number | Gesamtzahl der Episoden | +| `explicit` | boolean | Enthält explizite Inhalte | +| `languages` | json | Sprachen | +| `image_url` | string | Cover-Bild-URL | +| `external_url` | string | Spotify-URL | + +### `spotify_get_shows` + +Details für mehrere Podcast-Shows abrufen. + +#### Input + +| Parameter | Typ | Erforderlich | Beschreibung | +| --------- | ---- | -------- | ----------- | +| `showIds` | string | Ja | Kommagetrennte Show-IDs \(max. 50\) | +| `market` | string | Nein | ISO-Ländercode für den Markt | + +#### Output + +| Parameter | Typ | Beschreibung | +| --------- | ---- | ----------- | +| `shows` | json | Liste der Shows | + +### `spotify_get_show_episodes` + +Episoden einer Podcast-Show abrufen. + +#### Input + +| Parameter | Typ | Erforderlich | Beschreibung | +| --------- | ---- | -------- | ----------- | +| `showId` | string | Ja | Die Spotify-Show-ID | +| `limit` | number | Nein | Anzahl der zurückzugebenden Episoden (1-50) | +| `offset` | number | Nein | Index der ersten zurückzugebenden Episode | +| `market` | string | Nein | ISO-Ländercode für den Markt | + +#### Output + +| Parameter | Typ | Beschreibung | +| --------- | ---- | ----------- | +| `episodes` | json | Liste der Episoden | +| `total` | number | Gesamtzahl der Episoden | +| `next` | string | URL für die nächste Seite | + +### `spotify_get_saved_shows` + +Benutzer abrufen + +#### Input + +| Parameter | Typ | Erforderlich | Beschreibung | +| --------- | ---- | -------- | ----------- | +| `limit` | number | Nein | Anzahl der zurückzugebenden Shows (1-50) | +| `offset` | number | Nein | Index der ersten zurückzugebenden Show | + +#### Output + +| Parameter | Typ | Beschreibung | +| --------- | ---- | ----------- | +| `shows` | json | Liste der gespeicherten Shows | +| `total` | number | Gesamtzahl der gespeicherten Shows | +| `next` | string | URL für die nächste Seite | + +### `spotify_save_shows` + +Podcast-Shows für den Benutzer speichern + +#### Input + +| Parameter | Typ | Erforderlich | Beschreibung | +| --------- | ---- | -------- | ----------- | +| `showIds` | string | Ja | Durch Kommas getrennte Show-IDs (max. 50) | + +#### Output + +| Parameter | Type | Beschreibung | +| --------- | ---- | ----------- | +| `success` | boolean | Ob Shows gespeichert wurden | + +### `spotify_remove_saved_shows` + +Podcast-Shows vom Benutzer entfernen + +#### Input + +| Parameter | Type | Required | Beschreibung | +| --------- | ---- | -------- | ----------- | +| `showIds` | string | Yes | Durch Komma getrennte Show-IDs (max. 50) | + +#### Output + +| Parameter | Type | Beschreibung | +| --------- | ---- | ----------- | +| `success` | boolean | Ob Shows entfernt wurden | + +### `spotify_check_saved_shows` + +Prüfen, ob Shows in der Bibliothek gespeichert sind. + +#### Input + +| Parameter | Type | Required | Beschreibung | +| --------- | ---- | -------- | ----------- | +| `showIds` | string | Yes | Durch Komma getrennte Show-IDs (max. 50) | + +#### Output + +| Parameter | Type | Beschreibung | +| --------- | ---- | ----------- | +| `results` | json | Array von Booleschen Werten für jede Show | + +### `spotify_get_episode` + +Details für eine Podcast-Episode abrufen. + +#### Input + +| Parameter | Type | Required | Beschreibung | +| --------- | ---- | -------- | ----------- | +| `episodeId` | string | Yes | Die Spotify-Episode-ID | +| `market` | string | No | ISO-Ländercode für den Markt | + +#### Output + +| Parameter | Type | Beschreibung | +| --------- | ---- | ----------- | +| `id` | string | Episode-ID | +| `name` | string | Name der Episode | +| `description` | string | Beschreibung der Episode | +| `duration_ms` | number | Dauer in ms | +| `release_date` | string | Veröffentlichungsdatum | +| `explicit` | boolean | Enthält explizite Inhalte | +| `show` | json | Informationen zur übergeordneten Show | +| `image_url` | string | URL des Coverbildes | +| `external_url` | string | Spotify-URL | + +### `spotify_get_episodes` + +Details für mehrere Podcast-Episoden abrufen. + +#### Eingabe + +| Parameter | Typ | Erforderlich | Beschreibung | +| --------- | ---- | -------- | ----------- | +| `episodeIds` | string | Ja | Durch Komma getrennte Episoden-IDs (max. 50) | +| `market` | string | Nein | ISO-Ländercode für den Markt | + +#### Ausgabe + +| Parameter | Typ | Beschreibung | +| --------- | ---- | ----------- | +| `episodes` | json | Liste der Episoden | + +### `spotify_get_saved_episodes` + +Benutzer abrufen + +#### Eingabe + +| Parameter | Typ | Erforderlich | Beschreibung | +| --------- | ---- | -------- | ----------- | +| `limit` | number | Nein | Anzahl der zurückzugebenden Episoden (1-50) | +| `offset` | number | Nein | Index der ersten zurückzugebenden Episode | +| `market` | string | Nein | ISO-Ländercode für den Markt | + +#### Ausgabe + +| Parameter | Typ | Beschreibung | +| --------- | ---- | ----------- | +| `episodes` | json | Liste der gespeicherten Episoden | +| `total` | number | Gesamtzahl der gespeicherten Episoden | +| `next` | string | URL für die nächste Seite | + +### `spotify_save_episodes` + +Podcast-Episoden für den Benutzer speichern + +#### Eingabe + +| Parameter | Typ | Erforderlich | Beschreibung | +| --------- | ---- | -------- | ----------- | +| `episodeIds` | string | Ja | Durch Komma getrennte Episoden-IDs (max. 50) | + +#### Ausgabe + +| Parameter | Typ | Beschreibung | +| --------- | ---- | ----------- | +| `success` | boolean | Ob Episoden gespeichert wurden | + +### `spotify_remove_saved_episodes` + +Podcast-Episoden vom Benutzer entfernen + +#### Eingabe + +| Parameter | Typ | Erforderlich | Beschreibung | +| --------- | ---- | -------- | ----------- | +| `episodeIds` | string | Ja | Kommagetrennte Episoden-IDs \(max. 50\) | + +#### Ausgabe + +| Parameter | Typ | Beschreibung | +| --------- | ---- | ----------- | +| `success` | boolean | Ob Episoden entfernt wurden | + +### `spotify_check_saved_episodes` + +Prüfen, ob Episoden in der Bibliothek gespeichert sind. + +#### Eingabe + +| Parameter | Typ | Erforderlich | Beschreibung | +| --------- | ---- | -------- | ----------- | +| `episodeIds` | string | Ja | Kommagetrennte Episoden-IDs \(max. 50\) | + +#### Ausgabe + +| Parameter | Typ | Beschreibung | +| --------- | ---- | ----------- | +| `results` | json | Array von Booleschen Werten für jede Episode | + +### `spotify_get_audiobook` + +Details für ein Hörbuch abrufen. + +#### Eingabe + +| Parameter | Typ | Erforderlich | Beschreibung | +| --------- | ---- | -------- | ----------- | +| `audiobookId` | string | Ja | Die Spotify-Hörbuch-ID | +| `market` | string | Nein | ISO-Ländercode für den Markt | + +#### Ausgabe + +| Parameter | Typ | Beschreibung | +| --------- | ---- | ----------- | +| `id` | string | Hörbuch-ID | +| `name` | string | Hörbuchname | +| `authors` | json | Autoren | +| `narrators` | json | Sprecher | +| `publisher` | string | Verlag | +| `description` | string | Beschreibung | +| `total_chapters` | number | Gesamtzahl der Kapitel | +| `languages` | json | Sprachen | +| `image_url` | string | Cover-Bild-URL | +| `external_url` | string | Spotify-URL | + +### `spotify_get_audiobooks` + +Erhalte details für mehrere hörbücher. + +#### Eingabe + +| Parameter | Typ | Erforderlich | Beschreibung | +| --------- | ---- | -------- | ----------- | +| `audiobookIds` | string | Ja | Kommagetrennte hörbuch-IDs \(max. 50\) | +| `market` | string | Nein | ISO-Ländercode für den Markt | + +#### Ausgabe + +| Parameter | Typ | Beschreibung | +| --------- | ---- | ----------- | +| `audiobooks` | json | Liste der hörbücher | + +### `spotify_get_audiobook_chapters` + +Erhalte kapitel eines hörbuchs. + +#### Eingabe + +| Parameter | Typ | Erforderlich | Beschreibung | +| --------- | ---- | -------- | ----------- | +| `audiobookId` | string | Ja | Die Spotify hörbuch-ID | +| `limit` | number | Nein | Anzahl der zurückzugebenden kapitel \(1-50\) | +| `offset` | number | Nein | Index des ersten zurückzugebenden kapitels | +| `market` | string | Nein | ISO-Ländercode für den Markt | + +#### Ausgabe + +| Parameter | Typ | Beschreibung | +| --------- | ---- | ----------- | +| `chapters` | json | Liste der kapitel | +| `total` | number | Gesamtzahl der kapitel | +| `next` | string | URL für die nächste seite | + +### `spotify_get_saved_audiobooks` + +Benutzer abrufen + +#### Eingabe + +| Parameter | Typ | Erforderlich | Beschreibung | +| --------- | ---- | -------- | ----------- | +| `limit` | number | Nein | Anzahl der zurückzugebenden hörbücher \(1-50\) | +| `offset` | number | Nein | Index des ersten zurückzugebenden hörbuchs | + +#### Ausgabe + +| Parameter | Typ | Beschreibung | +| --------- | ---- | ----------- | +| `audiobooks` | json | Liste der gespeicherten Hörbücher | +| `total` | number | Gesamtzahl der gespeicherten Hörbücher | +| `next` | string | URL für die nächste Seite | + +### `spotify_save_audiobooks` + +Hörbücher für den Benutzer speichern + +#### Eingabe + +| Parameter | Typ | Erforderlich | Beschreibung | +| --------- | ---- | -------- | ----------- | +| `audiobookIds` | string | Ja | Durch Kommas getrennte Hörbuch-IDs \(max. 50\) | + +#### Ausgabe + +| Parameter | Typ | Beschreibung | +| --------- | ---- | ----------- | +| `success` | boolean | Ob Hörbücher gespeichert wurden | + +### `spotify_remove_saved_audiobooks` + +Hörbücher vom Benutzer entfernen + +#### Eingabe + +| Parameter | Typ | Erforderlich | Beschreibung | +| --------- | ---- | -------- | ----------- | +| `audiobookIds` | string | Ja | Durch Kommas getrennte Hörbuch-IDs \(max. 50\) | + +#### Ausgabe + +| Parameter | Typ | Beschreibung | +| --------- | ---- | ----------- | +| `success` | boolean | Ob Hörbücher entfernt wurden | + +### `spotify_check_saved_audiobooks` + +Prüfen, ob Hörbücher in der Bibliothek gespeichert sind. + +#### Eingabe + +| Parameter | Typ | Erforderlich | Beschreibung | +| --------- | ---- | -------- | ----------- | +| `audiobookIds` | string | Ja | Durch Kommas getrennte Hörbuch-IDs \(max. 50\) | + +#### Ausgabe + +| Parameter | Typ | Beschreibung | +| --------- | ---- | ----------- | +| `results` | json | Array von Booleschen Werten für jedes Hörbuch | + +### `spotify_get_playlist` + +Detaillierte Informationen über eine Playlist auf Spotify anhand ihrer ID abrufen. + +#### Eingabe + +| Parameter | Typ | Erforderlich | Beschreibung | +| --------- | ---- | -------- | ----------- | +| `playlistId` | string | Ja | Die Spotify-ID der Playlist | +| `market` | string | Nein | ISO 3166-1 alpha-2 Ländercode für die Verfügbarkeit des Tracks | + +#### Ausgabe + +| Parameter | Typ | Beschreibung | +| --------- | ---- | ----------- | +| `id` | string | Spotify-Playlist-ID | +| `name` | string | Playlist-Name | +| `description` | string | Playlist-Beschreibung | +| `public` | boolean | Ob die Playlist öffentlich ist | +| `collaborative` | boolean | Ob die Playlist kollaborativ ist | +| `owner` | object | Informationen zum Playlist-Besitzer | +| `image_url` | string | URL des Playlist-Coverbildes | +| `total_tracks` | number | Gesamtanzahl der Tracks | +| `snapshot_id` | string | Playlist-Snapshot-ID für Versionierung | +| `external_url` | string | Spotify-URL | + +### `spotify_get_playlist_tracks` + +Ruft die Tracks in einer Spotify-Playlist ab. + +#### Eingabe + +| Parameter | Typ | Erforderlich | Beschreibung | +| --------- | ---- | -------- | ----------- | +| `playlistId` | string | Ja | Die Spotify-ID der Playlist | +| `limit` | number | Nein | Maximale Anzahl der zurückzugebenden Tracks (1-100) | +| `offset` | number | Nein | Index des ersten zurückzugebenden Tracks | +| `market` | string | Nein | ISO 3166-1 alpha-2 Ländercode für die Verfügbarkeit des Tracks | + +#### Ausgabe + +| Parameter | Type | Beschreibung | +| --------- | ---- | ----------- | +| `tracks` | array | Liste der Titel in der Playlist | + +### `spotify_get_playlist_cover` + +Eine Playlist abrufen + +#### Eingabe + +| Parameter | Type | Erforderlich | Beschreibung | +| --------- | ---- | -------- | ----------- | +| `playlistId` | string | Ja | Die Spotify-Playlist-ID | + +#### Ausgabe + +| Parameter | Type | Beschreibung | +| --------- | ---- | ----------- | +| `images` | json | Liste der Coverbilder | + +### `spotify_get_user_playlists` + +Den aktuellen Benutzer abrufen + +#### Eingabe + +| Parameter | Type | Erforderlich | Beschreibung | +| --------- | ---- | -------- | ----------- | +| `limit` | number | Nein | Maximale Anzahl der zurückzugebenden Playlists (1-50) | +| `offset` | number | Nein | Index der ersten zurückzugebenden Playlist | + +#### Ausgabe + +| Parameter | Type | Beschreibung | +| --------- | ---- | ----------- | +| `playlists` | array | Benutzer | + +### `spotify_create_playlist` + +Eine neue Playlist für den aktuellen Benutzer auf Spotify erstellen. + +#### Eingabe + +| Parameter | Type | Erforderlich | Beschreibung | +| --------- | ---- | -------- | ----------- | +| `name` | string | Ja | Name für die neue Playlist | +| `description` | string | Nein | Beschreibung für die Playlist | +| `public` | boolean | Nein | Ob die Playlist öffentlich sein soll | +| `collaborative` | boolean | Nein | Ob die Playlist kollaborativ sein soll (erfordert, dass öffentlich auf falsch gesetzt ist) | + +#### Output + +| Parameter | Typ | Beschreibung | +| --------- | ---- | ----------- | +| `id` | string | Spotify-Playlist-ID | +| `name` | string | Playlist-Name | +| `description` | string | Playlist-Beschreibung | +| `public` | boolean | Ob die Playlist öffentlich ist | +| `collaborative` | boolean | Ob kollaborativ | +| `snapshot_id` | string | Playlist-Snapshot-ID | +| `external_url` | string | Spotify-URL | + +### `spotify_update_playlist` + +Eine Playlist aktualisieren + +#### Input + +| Parameter | Typ | Erforderlich | Beschreibung | +| --------- | ---- | -------- | ----------- | +| `playlistId` | string | Ja | Die Spotify-Playlist-ID | +| `name` | string | Nein | Neuer Name für die Playlist | +| `description` | string | Nein | Neue Beschreibung für die Playlist | +| `public` | boolean | Nein | Ob die Playlist öffentlich sein soll | + +#### Output + +| Parameter | Typ | Beschreibung | +| --------- | ---- | ----------- | +| `success` | boolean | Ob die Aktualisierung erfolgreich war | + +### `spotify_add_playlist_cover` + +Ein benutzerdefiniertes Coverbild für eine Playlist hochladen. Das Bild muss im JPEG-Format und unter 256 KB sein. + +#### Input + +| Parameter | Typ | Erforderlich | Beschreibung | +| --------- | ---- | -------- | ----------- | +| `playlistId` | string | Ja | Die Spotify-Playlist-ID | +| `imageBase64` | string | Ja | Base64-codiertes JPEG-Bild \(max. 256 KB\) | + +#### Output + +| Parameter | Typ | Beschreibung | +| --------- | ---- | ----------- | +| `success` | boolean | Ob der Upload erfolgreich war | + +### `spotify_add_tracks_to_playlist` + +Füge einen oder mehrere Tracks zu einer Spotify-Playlist hinzu. + +#### Input + +| Parameter | Typ | Erforderlich | Beschreibung | +| --------- | ---- | -------- | ----------- | +| `playlistId` | string | Ja | Die Spotify-ID der Playlist | +| `uris` | string | Ja | Kommagetrennte Spotify-URIs \(z.B. "spotify:track:xxx,spotify:track:yyy"\) | +| `position` | number | Nein | Position zum Einfügen der Tracks \(0-basiert\). Wenn nicht angegeben, werden Tracks angehängt. | + +#### Output + +| Parameter | Typ | Beschreibung | +| --------- | ---- | ----------- | +| `snapshot_id` | string | Neue Playlist-Snapshot-ID nach der Änderung | + +### `spotify_remove_tracks_from_playlist` + +Entferne einen oder mehrere Tracks aus einer Spotify-Playlist. + +#### Input + +| Parameter | Typ | Erforderlich | Beschreibung | +| --------- | ---- | -------- | ----------- | +| `playlistId` | string | Ja | Die Spotify-ID der Playlist | +| `uris` | string | Ja | Kommagetrennte Spotify-URIs zum Entfernen \(z.B. "spotify:track:xxx,spotify:track:yyy"\) | + +#### Output + +| Parameter | Typ | Beschreibung | +| --------- | ---- | ----------- | +| `snapshot_id` | string | Neue Playlist-Snapshot-ID nach der Änderung | + +### `spotify_reorder_playlist_items` + +Verschiebe Tracks an eine andere Position in einer Playlist. + +#### Input + +| Parameter | Typ | Erforderlich | Beschreibung | +| --------- | ---- | -------- | ----------- | +| `playlistId` | string | Ja | Die Spotify-Playlist-ID | +| `range_start` | number | Ja | Startindex der umzusortierenden Elemente | +| `insert_before` | number | Ja | Index, vor dem die Elemente eingefügt werden sollen | +| `range_length` | number | Nein | Anzahl der umzusortierenden Elemente | +| `snapshot_id` | string | Nein | Playlist-Snapshot-ID für Nebenläufigkeitskontrolle | + +#### Ausgabe + +| Parameter | Typ | Beschreibung | +| --------- | ---- | ----------- | +| `snapshot_id` | string | Neue Playlist-Snapshot-ID | + +### `spotify_replace_playlist_items` + +Ersetzt alle Elemente in einer Playlist durch neue Tracks. + +#### Eingabe + +| Parameter | Typ | Erforderlich | Beschreibung | +| --------- | ---- | -------- | ----------- | +| `playlistId` | string | Ja | Die Spotify-Playlist-ID | +| `uris` | string | Ja | Durch Kommas getrennte Spotify-URIs \(max. 100\) | + +#### Ausgabe + +| Parameter | Typ | Beschreibung | +| --------- | ---- | ----------- | +| `snapshot_id` | string | Neue Playlist-Snapshot-ID | + +### `spotify_follow_playlist` + +Einer Playlist folgen (speichern). + +#### Eingabe + +| Parameter | Typ | Erforderlich | Beschreibung | +| --------- | ---- | -------- | ----------- | +| `playlistId` | string | Ja | Die Spotify-Playlist-ID | +| `public` | boolean | Nein | Ob die Playlist in öffentlichen Playlists erscheinen soll | + +#### Ausgabe + +| Parameter | Typ | Beschreibung | +| --------- | ---- | ----------- | +| `success` | boolean | Ob das Folgen erfolgreich war | + +### `spotify_unfollow_playlist` + +Einer Playlist entfolgen (nicht mehr speichern). + +#### Eingabe + +| Parameter | Typ | Erforderlich | Beschreibung | +| --------- | ---- | -------- | ----------- | +| `playlistId` | string | Ja | Die Spotify-Playlist-ID | + +#### Ausgabe + +| Parameter | Typ | Beschreibung | +| --------- | ---- | ----------- | +| `success` | boolean | Ob das Entfolgen erfolgreich war | + +### `spotify_check_playlist_followers` + +Prüfen, ob Benutzer einer Playlist folgen. + +#### Eingabe + +| Parameter | Typ | Erforderlich | Beschreibung | +| --------- | ---- | -------- | ----------- | +| `playlistId` | string | Ja | Die Spotify-Playlist-ID | +| `userIds` | string | Ja | Durch Kommas getrennte Benutzer-IDs zur Überprüfung \(max. 5\) | + +#### Ausgabe + +| Parameter | Typ | Beschreibung | +| --------- | ---- | ----------- | +| `results` | json | Array von Booleschen Werten für jeden Benutzer | + +### `spotify_get_current_user` + +Aktuellen Benutzer abrufen + +#### Eingabe + +| Parameter | Typ | Erforderlich | Beschreibung | +| --------- | ---- | -------- | ----------- | + +#### Ausgabe + +| Parameter | Typ | Beschreibung | +| --------- | ---- | ----------- | +| `id` | string | Spotify-Benutzer-ID | +| `display_name` | string | Anzeigename | +| `email` | string | E-Mail-Adresse | +| `country` | string | Ländercode | +| `product` | string | Abonnement-Stufe \(free, premium\) | +| `followers` | number | Anzahl der Follower | +| `image_url` | string | Profilbild-URL | +| `external_url` | string | Spotify-Profil-URL | + +### `spotify_get_user_profile` + +Einen Benutzer abrufen + +#### Eingabe + +| Parameter | Typ | Erforderlich | Beschreibung | +| --------- | ---- | -------- | ----------- | +| `userId` | string | Ja | Die Spotify-Benutzer-ID | + +#### Ausgabe + +| Parameter | Typ | Beschreibung | +| --------- | ---- | ----------- | +| `id` | string | Benutzer-ID | +| `display_name` | string | Anzeigename | +| `followers` | number | Anzahl der Follower | +| `image_url` | string | Profilbild-URL | +| `external_url` | string | Spotify-URL | + +### `spotify_get_top_tracks` + +Aktuellen Benutzer abrufen + +#### Eingabe + +| Parameter | Typ | Erforderlich | Beschreibung | +| --------- | ---- | -------- | ----------- | +| `time_range` | string | Nein | Zeitraum: short_term \(~4 Wochen\), medium_term \(~6 Monate\), long_term \(Jahre\) | +| `limit` | number | Nein | Anzahl der zurückzugebenden Tracks \(1-50\) | +| `offset` | number | Nein | Index des ersten zurückzugebenden Tracks | + +#### Ausgabe + +| Parameter | Typ | Beschreibung | +| --------- | ---- | ----------- | +| `tracks` | array | Benutzer | + +### `spotify_get_top_artists` + +Aktuellen Benutzer abrufen + +#### Eingabe + +| Parameter | Typ | Erforderlich | Beschreibung | +| --------- | ---- | -------- | ----------- | +| `time_range` | string | Nein | Zeitraum: short_term \(~4 Wochen\), medium_term \(~6 Monate\), long_term \(Jahre\) | +| `limit` | number | Nein | Anzahl der zurückzugebenden Künstler \(1-50\) | +| `offset` | number | Nein | Index des ersten zurückzugebenden Künstlers | + +#### Ausgabe + +| Parameter | Typ | Beschreibung | +| --------- | ---- | ----------- | +| `artists` | array | Benutzer | + +### `spotify_get_saved_tracks` + +Aktuellen Benutzer abrufen + +#### Eingabe + +| Parameter | Typ | Erforderlich | Beschreibung | +| --------- | ---- | -------- | ----------- | +| `limit` | number | Nein | Anzahl der zurückzugebenden Tracks \(1-50\) | +| `offset` | number | Nein | Index des ersten zurückzugebenden Tracks | +| `market` | string | Nein | ISO 3166-1 alpha-2 Ländercode | + +#### Ausgabe + +| Parameter | Typ | Beschreibung | +| --------- | ---- | ----------- | +| `tracks` | array | Benutzer | + +### `spotify_save_tracks` + +Tracks für den aktuellen Benutzer speichern + +#### Eingabe + +| Parameter | Typ | Erforderlich | Beschreibung | +| --------- | ---- | -------- | ----------- | +| `trackIds` | string | Ja | Durch Kommas getrennte Spotify-Track-IDs zum Speichern \(max. 50\) | + +#### Ausgabe + +| Parameter | Typ | Beschreibung | +| --------- | ---- | ----------- | +| `success` | boolean | Ob die Tracks erfolgreich gespeichert wurden | + +### `spotify_remove_saved_tracks` + +Tracks vom Benutzer entfernen + +#### Eingabe + +| Parameter | Typ | Erforderlich | Beschreibung | +| --------- | ---- | -------- | ----------- | +| `trackIds` | string | Ja | Durch Kommas getrennte Track-IDs zum Entfernen \(max. 50\) | + +#### Ausgabe + +| Parameter | Typ | Beschreibung | +| --------- | ---- | ----------- | +| `success` | boolean | Ob Tracks erfolgreich entfernt wurden | + +### `spotify_check_saved_tracks` + +Prüfen, ob ein oder mehrere Tracks beim Benutzer gespeichert sind + +#### Eingabe + +| Parameter | Typ | Erforderlich | Beschreibung | +| --------- | ---- | -------- | ----------- | +| `trackIds` | string | Ja | Durch Kommas getrennte Track-IDs zur Überprüfung \(max. 50\) | + +#### Ausgabe + +| Parameter | Typ | Beschreibung | +| --------- | ---- | ----------- | +| `results` | json | Array von Track-IDs mit Speicherstatus | +| `all_saved` | boolean | Ob alle Tracks gespeichert sind | +| `none_saved` | boolean | Ob keine Tracks gespeichert sind | + +### `spotify_get_recently_played` + +Benutzer abrufen + +#### Eingabe + +| Parameter | Typ | Erforderlich | Beschreibung | +| --------- | ---- | -------- | ----------- | +| `limit` | number | Nein | Anzahl der zurückzugebenden Tracks (1-50) | +| `after` | number | Nein | Unix-Zeitstempel in Millisekunden. Gibt Elemente nach diesem Cursor zurück. | +| `before` | number | Nein | Unix-Zeitstempel in Millisekunden. Gibt Elemente vor diesem Cursor zurück. | + +#### Ausgabe + +| Parameter | Typ | Beschreibung | +| --------- | ---- | ----------- | +| `items` | array | Kürzlich gespielte Tracks | + +### `spotify_get_new_releases` + +Eine Liste neuer Album-Veröffentlichungen abrufen, die bei Spotify vorgestellt werden. + +#### Eingabe + +| Parameter | Typ | Erforderlich | Beschreibung | +| --------- | ---- | -------- | ----------- | +| `country` | string | Nein | ISO 3166-1 Alpha-2-Ländercode (z.B. "US", "GB") | +| `limit` | number | Nein | Anzahl der zurückzugebenden Veröffentlichungen (1-50) | +| `offset` | number | Nein | Index der ersten zurückzugebenden Veröffentlichung | + +#### Ausgabe + +| Parameter | Typ | Beschreibung | +| --------- | ---- | ----------- | +| `albums` | json | Liste neuer Veröffentlichungen | +| `total` | number | Gesamtzahl neuer Veröffentlichungen | +| `next` | string | URL für die nächste Seite | + +### `spotify_get_categories` + +Eine Liste von Browse-Kategorien abrufen, die zur Kennzeichnung von Elementen in Spotify verwendet werden. + +#### Eingabe + +| Parameter | Typ | Erforderlich | Beschreibung | +| --------- | ---- | -------- | ----------- | +| `country` | string | Nein | ISO 3166-1 Alpha-2-Ländercode (z.B. "US", "GB") | +| `locale` | string | Nein | Locale-Code (z.B. "en_US", "es_MX") | +| `limit` | number | Nein | Anzahl der zurückzugebenden Kategorien (1-50) | + +#### Ausgabe + +| Parameter | Typ | Beschreibung | +| --------- | ---- | ----------- | +| `categories` | json | Liste der Durchsuchkategorien | +| `total` | number | Gesamtanzahl der Kategorien | + +### `spotify_get_markets` + +Ruft die Liste der Märkte ab, in denen Spotify verfügbar ist. + +#### Eingabe + +| Parameter | Typ | Erforderlich | Beschreibung | +| --------- | ---- | -------- | ----------- | + +#### Ausgabe + +| Parameter | Typ | Beschreibung | +| --------- | ---- | ----------- | +| `markets` | json | Liste der ISO-Ländercodes | + +### `spotify_get_playback_state` + +Ruft den aktuellen Wiedergabestatus einschließlich Gerät, Titel und Fortschritt ab. + +#### Eingabe + +| Parameter | Typ | Erforderlich | Beschreibung | +| --------- | ---- | -------- | ----------- | +| `market` | string | Nein | ISO 3166-1 alpha-2 Ländercode | + +#### Ausgabe + +| Parameter | Typ | Beschreibung | +| --------- | ---- | ----------- | +| `is_playing` | boolean | Ob die Wiedergabe aktiv ist | +| `device` | object | Informationen zum aktiven Gerät | +| `progress_ms` | number | Fortschritt in Millisekunden | +| `currently_playing_type` | string | Art des abgespielten Inhalts | +| `shuffle_state` | boolean | Ob Zufallswiedergabe aktiviert ist | +| `repeat_state` | string | Wiederholungsmodus \(off, track, context\) | +| `track` | object | Aktuell abgespielter Titel | + +### `spotify_get_currently_playing` + +Benutzer abrufen + +#### Eingabe + +| Parameter | Typ | Erforderlich | Beschreibung | +| --------- | ---- | -------- | ----------- | +| `market` | string | Nein | ISO-Ländercode für den Markt | + +#### Ausgabe + +| Parameter | Typ | Beschreibung | +| --------- | ---- | ----------- | +| `is_playing` | boolean | Ob die Wiedergabe aktiv ist | +| `progress_ms` | number | Aktuelle Position im Track (ms) | +| `track` | json | Aktuell spielender Track | + +### `spotify_get_devices` + +Benutzer abrufen + +#### Eingabe + +| Parameter | Typ | Erforderlich | Beschreibung | +| --------- | ---- | -------- | ----------- | + +#### Ausgabe + +| Parameter | Typ | Beschreibung | +| --------- | ---- | ----------- | +| `devices` | array | Verfügbare Wiedergabegeräte | + +### `spotify_get_queue` + +Benutzer abrufen + +#### Eingabe + +| Parameter | Typ | Erforderlich | Beschreibung | +| --------- | ---- | -------- | ----------- | + +#### Ausgabe + +| Parameter | Typ | Beschreibung | +| --------- | ---- | ----------- | +| `currently_playing` | json | Aktuell spielender Track | +| `queue` | json | Kommende Tracks in der Warteschlange | + +### `spotify_play` + +Starten oder Fortsetzen der Wiedergabe auf Spotify. Kann bestimmte Tracks, Alben oder Playlists abspielen. + +#### Eingabe + +| Parameter | Typ | Erforderlich | Beschreibung | +| --------- | ---- | -------- | ----------- | +| `device_id` | string | Nein | Geräte-ID, auf dem abgespielt werden soll. Wenn nicht angegeben, wird auf dem aktiven Gerät abgespielt. | +| `context_uri` | string | Nein | Spotify-URI des Albums, Künstlers oder der Playlist, die abgespielt werden soll (z.B. "spotify:album:xxx") | +| `uris` | string | Nein | Kommagetrennte Track-URIs zum Abspielen (z.B. "spotify:track:xxx,spotify:track:yyy") | +| `offset` | number | Nein | Position im Kontext, an der die Wiedergabe beginnen soll (0-basierter Index) | +| `position_ms` | number | Nein | Position im Track, von der aus gestartet werden soll (in Millisekunden) | + +#### Ausgabe + +| Parameter | Typ | Beschreibung | +| --------- | ---- | ----------- | +| `success` | boolean | Ob die Wiedergabe erfolgreich gestartet wurde | + +### `spotify_pause` + +Wiedergabe auf Spotify pausieren. + +#### Eingabe + +| Parameter | Typ | Erforderlich | Beschreibung | +| --------- | ---- | -------- | ----------- | +| `device_id` | string | Nein | Geräte-ID zum Pausieren. Wenn nicht angegeben, wird das aktive Gerät pausiert. | + +#### Ausgabe + +| Parameter | Typ | Beschreibung | +| --------- | ---- | ----------- | +| `success` | boolean | Ob die Wiedergabe pausiert wurde | + +### `spotify_skip_next` + +Zum nächsten Titel auf Spotify springen. + +#### Eingabe + +| Parameter | Typ | Erforderlich | Beschreibung | +| --------- | ---- | -------- | ----------- | +| `device_id` | string | Nein | Geräte-ID. Wenn nicht angegeben, wird das aktive Gerät verwendet. | + +#### Ausgabe + +| Parameter | Typ | Beschreibung | +| --------- | ---- | ----------- | +| `success` | boolean | Ob das Überspringen erfolgreich war | + +### `spotify_skip_previous` + +Zum vorherigen Titel auf Spotify springen. + +#### Eingabe + +| Parameter | Typ | Erforderlich | Beschreibung | +| --------- | ---- | -------- | ----------- | +| `device_id` | string | Nein | Geräte-ID. Wenn nicht angegeben, wird das aktive Gerät verwendet. | + +#### Ausgabe + +| Parameter | Typ | Beschreibung | +| --------- | ---- | ----------- | +| `success` | boolean | Ob das Überspringen erfolgreich war | + +### `spotify_seek` + +Zu einer Position im aktuell spielenden Titel springen. + +#### Eingabe + +| Parameter | Type | Required | Description | +| --------- | ---- | -------- | ----------- | +| `position_ms` | number | Yes | Position in Millisekunden, zu der gesprungen werden soll | +| `device_id` | string | No | Geräte-ID des Zielgeräts | + +#### Output + +| Parameter | Type | Description | +| --------- | ---- | ----------- | +| `success` | boolean | Ob der Sprung erfolgreich war | + +### `spotify_add_to_queue` + +Einen Track zum Benutzer hinzufügen + +#### Input + +| Parameter | Type | Required | Description | +| --------- | ---- | -------- | ----------- | +| `uri` | string | Yes | Spotify URI des hinzuzufügenden Tracks (z.B. "spotify:track:xxx") | +| `device_id` | string | No | Geräte-ID. Wenn nicht angegeben, wird das aktive Gerät verwendet. | + +#### Output + +| Parameter | Type | Description | +| --------- | ---- | ----------- | +| `success` | boolean | Ob der Track zur Warteschlange hinzugefügt wurde | + +### `spotify_set_volume` + +Die Wiedergabelautstärke auf Spotify einstellen. + +#### Input + +| Parameter | Type | Required | Description | +| --------- | ---- | -------- | ----------- | +| `volume_percent` | number | Yes | Lautstärke (0 bis 100) | +| `device_id` | string | No | Geräte-ID. Wenn nicht angegeben, wird das aktive Gerät verwendet. | + +#### Output + +| Parameter | Type | Description | +| --------- | ---- | ----------- | +| `success` | boolean | Ob die Lautstärke eingestellt wurde | + +### `spotify_set_repeat` + +Den Wiederholungsmodus für die Wiedergabe einstellen. + +#### Input + +| Parameter | Type | Required | Description | +| --------- | ---- | -------- | ----------- | +| `state` | string | Yes | Wiederholungsmodus: "off", "track" oder "context" | +| `device_id` | string | No | Ziel-Geräte-ID | + +#### Output + +| Parameter | Type | Description | +| --------- | ---- | ----------- | +| `success` | boolean | Ob der Wiederholungsmodus erfolgreich eingestellt wurde | + +### `spotify_set_shuffle` + +Zufallswiedergabe ein- oder ausschalten. + +#### Input + +| Parameter | Type | Required | Description | +| --------- | ---- | -------- | ----------- | +| `state` | boolean | Yes | true für Zufallswiedergabe ein, false für aus | +| `device_id` | string | No | Ziel-Geräte-ID | + +#### Output + +| Parameter | Type | Description | +| --------- | ---- | ----------- | +| `success` | boolean | Ob die Zufallswiedergabe erfolgreich eingestellt wurde | + +### `spotify_transfer_playback` + +Wiedergabe auf ein anderes Gerät übertragen. + +#### Input + +| Parameter | Type | Required | Description | +| --------- | ---- | -------- | ----------- | +| `device_id` | string | Yes | Geräte-ID, auf die die Wiedergabe übertragen werden soll | +| `play` | boolean | No | Ob die Wiedergabe auf dem neuen Gerät gestartet werden soll | + +#### Output + +| Parameter | Type | Description | +| --------- | ---- | ----------- | +| `success` | boolean | Ob die Übertragung erfolgreich war | + +## Notes + +- Category: `tools` +- Type: `spotify` diff --git a/apps/docs/content/docs/de/tools/sqs.mdx b/apps/docs/content/docs/de/tools/sqs.mdx new file mode 100644 index 000000000..5c2b01782 --- /dev/null +++ b/apps/docs/content/docs/de/tools/sqs.mdx @@ -0,0 +1,63 @@ +--- +title: Amazon SQS +description: Verbindung zu Amazon SQS +--- + +import { BlockInfoCard } from "@/components/ui/block-info-card" + + + +{/* MANUAL-CONTENT-START:intro */} +[Amazon Simple Queue Service (SQS)](https://aws.amazon.com/sqs/) ist ein vollständig verwalteter Message-Queuing-Dienst, der es ermöglicht, Microservices, verteilte Systeme und serverlose Anwendungen zu entkoppeln und zu skalieren. SQS beseitigt die Komplexität und den Aufwand, die mit der Verwaltung und dem Betrieb von nachrichtenorientierter Middleware verbunden sind, und ermöglicht Entwicklern, sich auf differenzierende Arbeit zu konzentrieren. + +Mit Amazon SQS können Sie: + +- **Nachrichten senden**: Veröffentlichen Sie Nachrichten in Warteschlangen für asynchrone Verarbeitung +- **Anwendungen entkoppeln**: Ermöglichen Sie eine lose Kopplung zwischen Komponenten Ihres Systems +- **Workloads skalieren**: Bewältigen Sie variable Arbeitslasten ohne Bereitstellung von Infrastruktur +- **Zuverlässigkeit gewährleisten**: Eingebaute Redundanz und hohe Verfügbarkeit +- **FIFO-Warteschlangen unterstützen**: Strikte Nachrichtenreihenfolge und genau einmalige Verarbeitung beibehalten + +In Sim ermöglicht die SQS-Integration Ihren Agenten, Nachrichten sicher und programmatisch an Amazon SQS-Warteschlangen zu senden. Unterstützte Operationen umfassen: + +- **Nachricht senden**: Senden Sie Nachrichten an SQS-Warteschlangen mit optionaler Nachrichtengruppen-ID und Deduplizierungs-ID für FIFO-Warteschlangen + +Diese Integration ermöglicht es Ihren Agenten, Workflows zum Senden von Nachrichten ohne manuelle Eingriffe zu automatisieren. Durch die Verbindung von Sim mit Amazon SQS können Sie Agenten erstellen, die Nachrichten innerhalb Ihrer Workflows in Warteschlangen veröffentlichen – alles ohne Verwaltung der Warteschlangen-Infrastruktur oder Verbindungen. +{/* MANUAL-CONTENT-END */} + +## Nutzungsanweisungen + +Integrieren Sie Amazon SQS in den Workflow. Kann Nachrichten an SQS-Warteschlangen senden. + +## Tools + +### `sqs_send` + +Eine Nachricht an eine Amazon SQS-Warteschlange senden + +#### Eingabe + +| Parameter | Typ | Erforderlich | Beschreibung | +| --------- | ---- | -------- | ----------- | +| `region` | string | Ja | AWS-Region (z.B. us-east-1) | +| `accessKeyId` | string | Ja | AWS-Zugriffsschlüssel-ID | +| `secretAccessKey` | string | Ja | AWS-Geheimzugriffsschlüssel | +| `queueUrl` | string | Ja | Queue-URL | +| `data` | object | Ja | Zu sendender Nachrichtentext | +| `messageGroupId` | string | Nein | Nachrichtengruppen-ID (optional) | +| `messageDeduplicationId` | string | Nein | Nachrichtendeduplizierungs-ID (optional) | + +#### Ausgabe + +| Parameter | Typ | Beschreibung | +| --------- | ---- | ----------- | +| `message` | string | Statusmeldung der Operation | +| `id` | string | Nachrichten-ID | + +## Hinweise + +- Kategorie: `tools` +- Typ: `sqs` diff --git a/apps/docs/content/docs/de/tools/stagehand.mdx b/apps/docs/content/docs/de/tools/stagehand.mdx index 9e9a1d921..2a1ffd0f3 100644 --- a/apps/docs/content/docs/de/tools/stagehand.mdx +++ b/apps/docs/content/docs/de/tools/stagehand.mdx @@ -1,6 +1,6 @@ --- -title: Stagehand Extract -description: Extract data from websites +title: Stagehand +description: Web-Automatisierung und Datenextraktion --- import { BlockInfoCard } from "@/components/ui/block-info-card" @@ -11,43 +11,73 @@ import { BlockInfoCard } from "@/components/ui/block-info-card" /> {/* MANUAL-CONTENT-START:intro */} -[Stagehand](https://stagehand.com) is a tool that allows you to extract structured data from webpages using Browserbase and OpenAI. +[Stagehand](https://stagehand.com) ist ein Tool, das sowohl die Extraktion strukturierter Daten aus Webseiten als auch autonome Web-Automatisierung mittels Browserbase und modernen LLMs (OpenAI oder Anthropic) ermöglicht. -With Stagehand, you can: +Stagehand bietet zwei Hauptfunktionen in Sim: -- **Extract structured data**: Extract structured data from webpages using Browserbase and OpenAI -- **Save data to a database**: Save the extracted data to a database -- **Automate workflows**: Automate workflows to extract data from webpages +- **stagehand_extract**: Extrahiert strukturierte Daten von einer einzelnen Webseite. Sie geben an, was Sie möchten (ein Schema), und die KI ruft die Daten in dieser Form von der Seite ab und analysiert sie. Dies eignet sich am besten zum Extrahieren von Listen, Feldern oder Objekten, wenn Sie genau wissen, welche Informationen Sie benötigen und woher Sie diese bekommen. -In Sim, the Stagehand integration enables your agents to extract structured data from webpages using Browserbase and OpenAI. This allows for powerful automation scenarios such as data extraction, data analysis, and data integration. Your agents can extract structured data from webpages, save the extracted data to a database, and automate workflows to extract data from webpages. This integration bridges the gap between your AI workflows and your data management system, enabling seamless data extraction and integration. By connecting Sim with Stagehand, you can automate data extraction processes, maintain up-to-date information repositories, generate reports, and organize information intelligently - all through your intelligent agents. +- **stagehand_agent**: Führt einen autonomen Web-Agenten aus, der in der Lage ist, mehrstufige Aufgaben zu erledigen, mit Elementen zu interagieren, zwischen Seiten zu navigieren und strukturierte Ergebnisse zurückzugeben. Dies ist viel flexibler: der Agent kann Dinge wie Anmeldungen, Suchen, Ausfüllen von Formularen, Sammeln von Daten aus verschiedenen Quellen durchführen und ein Endergebnis gemäß einem angeforderten Schema ausgeben. + +**Wesentliche Unterschiede:** + +- *stagehand_extract* ist ein schneller “extrahiere diese Daten von dieser Seite” Vorgang. Es funktioniert am besten für direkte, einstufige Extraktionsaufgaben. +- *stagehand_agent* führt komplexe, mehrstufige autonome Aufgaben im Web aus — wie Navigation, Suche oder sogar Transaktionen — und kann Daten dynamisch gemäß Ihren Anweisungen und einem optionalen Schema extrahieren. + +In der Praxis verwenden Sie **stagehand_extract**, wenn Sie wissen, was Sie wollen und woher, und **stagehand_agent**, wenn Sie einen Bot benötigen, der interaktive Arbeitsabläufe durchdenkt und ausführt. + +Durch die Integration von Stagehand können Sim-Agenten die Datenerfassung, -analyse und Workflow-Ausführung im Web automatisieren: Datenbanken aktualisieren, Informationen organisieren und benutzerdefinierte Berichte erstellen — nahtlos und autonom. {/* MANUAL-CONTENT-END */} -## Usage Instructions +## Gebrauchsanweisung -Integrate Stagehand into the workflow. Can extract structured data from webpages. +Integrieren Sie Stagehand in den Workflow. Kann strukturierte Daten aus Webseiten extrahieren oder einen autonomen Agenten ausführen, um Aufgaben zu erledigen. ## Tools ### `stagehand_extract` -Extract structured data from a webpage using Stagehand +Extrahieren Sie strukturierte Daten von einer Webseite mit Stagehand -#### Input +#### Eingabe -| Parameter | Type | Required | Description | +| Parameter | Typ | Erforderlich | Beschreibung | | --------- | ---- | -------- | ----------- | -| `url` | string | Yes | URL of the webpage to extract data from | -| `instruction` | string | Yes | Instructions for extraction | -| `apiKey` | string | Yes | OpenAI API key for extraction \(required by Stagehand\) | -| `schema` | json | Yes | JSON schema defining the structure of the data to extract | +| `url` | string | Ja | URL der Webseite, aus der Daten extrahiert werden sollen | +| `instruction` | string | Ja | Anweisungen für die Extraktion | +| `provider` | string | Nein | Zu verwendender KI-Anbieter: openai oder anthropic | +| `apiKey` | string | Ja | API-Schlüssel für den ausgewählten Anbieter | +| `schema` | json | Ja | JSON-Schema, das die Struktur der zu extrahierenden Daten definiert | + +#### Ausgabe + +| Parameter | Typ | Beschreibung | +| --------- | ---- | ----------- | +| `data` | object | Extrahierte strukturierte Daten, die dem bereitgestellten Schema entsprechen | + +### `stagehand_agent` + +Führen Sie einen autonomen Web-Agenten aus, um Aufgaben zu erledigen und strukturierte Daten zu extrahieren + +#### Eingabe + +| Parameter | Typ | Erforderlich | Beschreibung | +| --------- | ---- | -------- | ----------- | +| `startUrl` | string | Ja | URL der Webseite, auf der der Agent starten soll | +| `task` | string | Ja | Die zu erledigende Aufgabe oder das zu erreichende Ziel auf der Website | +| `variables` | json | Nein | Optionale Variablen, die in der Aufgabe ersetzt werden sollen (Format: \{key: value\}). Referenzierung in der Aufgabe mit %key% | +| `format` | string | Nein | Keine Beschreibung | +| `provider` | string | Nein | Zu verwendender KI-Anbieter: openai oder anthropic | +| `apiKey` | string | Ja | API-Schlüssel für den ausgewählten Anbieter | +| `outputSchema` | json | Nein | Optionales JSON-Schema, das die Struktur der Daten definiert, die der Agent zurückgeben soll | #### Output -| Parameter | Type | Description | +| Parameter | Typ | Beschreibung | | --------- | ---- | ----------- | -| `data` | object | Extracted structured data matching the provided schema | +| `agentResult` | object | Ergebnis der Stagehand-Agent-Ausführung | -## Notes +## Hinweise -- Category: `tools` -- Type: `stagehand` +- Kategorie: `tools` +- Typ: `stagehand` diff --git a/apps/docs/content/docs/de/tools/stagehand_agent.mdx b/apps/docs/content/docs/de/tools/stagehand_agent.mdx deleted file mode 100644 index 2ca8ffc15..000000000 --- a/apps/docs/content/docs/de/tools/stagehand_agent.mdx +++ /dev/null @@ -1,59 +0,0 @@ ---- -title: Stagehand Agent -description: Autonomous web browsing agent ---- - -import { BlockInfoCard } from "@/components/ui/block-info-card" - - - -{/* MANUAL-CONTENT-START:intro */} -[Stagehand](https://www.stagehand.dev/) is an autonomous web agent platform that enables AI systems to navigate and interact with websites just like a human would. It provides a powerful solution for automating complex web tasks without requiring custom code or browser automation scripts. - -With Stagehand, you can: - -- **Automate web navigation**: Enable AI to browse websites, click links, fill forms, and interact with web elements -- **Extract structured data**: Collect specific information from websites in a structured, usable format -- **Complete complex workflows**: Perform multi-step tasks across different websites and web applications -- **Handle authentication**: Navigate login processes and maintain sessions across websites -- **Process dynamic content**: Interact with JavaScript-heavy sites and single-page applications -- **Maintain context awareness**: Keep track of the current state and history while navigating -- **Generate detailed reports**: Receive comprehensive logs of actions taken and data collected - -In Sim, the Stagehand integration enables your agents to seamlessly interact with web-based systems as part of their workflows. This allows for sophisticated automation scenarios that bridge the gap between your AI agents and the vast information and functionality available on the web. Your agents can search for information, interact with web applications, extract data from websites, and incorporate these capabilities into their decision-making processes. By connecting Sim with Stagehand, you can create agents that extend beyond API-based integrations to navigate the web just as a human would - filling forms, clicking buttons, reading content, and extracting valuable information to complete their tasks more effectively. -{/* MANUAL-CONTENT-END */} - -## Usage Instructions - -Integrate Stagehand Agent into the workflow. Can navigate the web and perform tasks. - -## Tools - -### `stagehand_agent` - -Run an autonomous web agent to complete tasks and extract structured data - -#### Input - -| Parameter | Type | Required | Description | -| --------- | ---- | -------- | ----------- | -| `startUrl` | string | Yes | URL of the webpage to start the agent on | -| `task` | string | Yes | The task to complete or goal to achieve on the website | -| `variables` | json | No | Optional variables to substitute in the task \(format: \{key: value\}\). Reference in task using %key% | -| `format` | string | No | No description | -| `apiKey` | string | Yes | OpenAI API key for agent execution \(required by Stagehand\) | -| `outputSchema` | json | No | Optional JSON schema defining the structure of data the agent should return | - -#### Output - -| Parameter | Type | Description | -| --------- | ---- | ----------- | -| `agentResult` | object | Result from the Stagehand agent execution | - -## Notes - -- Category: `tools` -- Type: `stagehand_agent` diff --git a/apps/docs/content/docs/de/tools/trello.mdx b/apps/docs/content/docs/de/tools/trello.mdx index 1ec02c3fb..79a201b2a 100644 --- a/apps/docs/content/docs/de/tools/trello.mdx +++ b/apps/docs/content/docs/de/tools/trello.mdx @@ -45,10 +45,8 @@ Alle Listen auf einem Trello-Board auflisten | Parameter | Typ | Beschreibung | | --------- | ---- | ----------- | -| `success` | boolean | Ob der Vorgang erfolgreich war | | `lists` | array | Array von Listenobjekten mit id, name, closed, pos und idBoard | | `count` | number | Anzahl der zurückgegebenen Listen | -| `error` | string | Fehlermeldung, wenn der Vorgang fehlgeschlagen ist | ### `trello_list_cards` @@ -65,10 +63,8 @@ Alle Listen eines Trello-Boards auflisten | Parameter | Typ | Beschreibung | | --------- | ---- | ----------- | -| `success` | boolean | Ob der Vorgang erfolgreich war | | `cards` | array | Array von Kartenobjekten mit id, name, desc, url, Board/Listen-IDs, Labels und Fälligkeitsdatum | | `count` | number | Anzahl der zurückgegebenen Karten | -| `error` | string | Fehlermeldung, wenn der Vorgang fehlgeschlagen ist | ### `trello_create_card` @@ -90,9 +86,7 @@ Eine neue Karte auf einem Trello-Board erstellen | Parameter | Typ | Beschreibung | | --------- | ---- | ----------- | -| `success` | boolean | Ob die Karte erfolgreich erstellt wurde | -| `card` | object | Das erstellte Kartenobjekt mit ID, Name, Beschreibung, URL und anderen Eigenschaften | -| `error` | string | Fehlermeldung, falls der Vorgang fehlgeschlagen ist | +| `card` | object | Das erstellte Kartenobjekt mit id, name, desc, url und anderen Eigenschaften | ### `trello_update_card` @@ -114,9 +108,7 @@ Eine bestehende Karte in Trello aktualisieren | Parameter | Typ | Beschreibung | | --------- | ---- | ----------- | -| `success` | boolean | Ob die Karte erfolgreich aktualisiert wurde | -| `card` | object | Das aktualisierte Kartenobjekt mit ID, Name, Beschreibung, URL und anderen Eigenschaften | -| `error` | string | Fehlermeldung, falls der Vorgang fehlgeschlagen ist | +| `card` | object | Das aktualisierte Kartenobjekt mit id, name, desc, url und anderen Eigenschaften | ### `trello_get_actions` @@ -135,10 +127,8 @@ Aktivitäten/Aktionen von einem Board oder einer Karte abrufen | Parameter | Typ | Beschreibung | | --------- | ---- | ----------- | -| `success` | boolean | Ob der Vorgang erfolgreich war | -| `actions` | array | Array von Aktionsobjekten mit Typ, Datum, Mitglied und Daten | +| `actions` | array | Array von Aktionsobjekten mit type, date, member und data | | `count` | number | Anzahl der zurückgegebenen Aktionen | -| `error` | string | Fehlermeldung, falls der Vorgang fehlgeschlagen ist | ### `trello_add_comment` @@ -155,9 +145,7 @@ Einen Kommentar zu einer Trello-Karte hinzufügen | Parameter | Typ | Beschreibung | | --------- | ---- | ----------- | -| `success` | boolean | Ob der Kommentar erfolgreich hinzugefügt wurde | -| `comment` | object | Das erstellte Kommentarobjekt mit ID, Text, Datum und Mitglied-Ersteller | -| `error` | string | Fehlermeldung, falls der Vorgang fehlgeschlagen ist | +| `comment` | object | Das erstellte Kommentarobjekt mit id, text, date und member creator | ## Hinweise diff --git a/apps/docs/content/docs/de/tools/typeform.mdx b/apps/docs/content/docs/de/tools/typeform.mdx index b923c4152..cc0b81877 100644 --- a/apps/docs/content/docs/de/tools/typeform.mdx +++ b/apps/docs/content/docs/de/tools/typeform.mdx @@ -48,25 +48,9 @@ Formularantworten von Typeform abrufen | Parameter | Typ | Beschreibung | | --------- | ---- | ----------- | -| `total_items` | number | Gesamtzahl der Antworten/Formulare | -| `page_count` | number | Gesamtseitenanzahl | -| `items` | json | Array der Antwort-/Formularelemente | -| `id` | string | Eindeutige Formular-ID | -| `title` | string | Formulartitel | -| `type` | string | Formulartyp | -| `created_at` | string | ISO-Zeitstempel der Formularerstellung | -| `last_updated_at` | string | ISO-Zeitstempel der letzten Aktualisierung | -| `settings` | json | Formulareinstellungsobjekt | -| `theme` | json | Theme-Konfigurationsobjekt | -| `workspace` | json | Workspace-Informationen | -| `fields` | json | Array der Formularfelder/Fragen | -| `thankyou_screens` | json | Array der Dankesbildschirme | -| `_links` | json | Links zu verwandten Ressourcen | -| `deleted` | boolean | Ob das Formular erfolgreich gelöscht wurde | -| `message` | string | Löschbestätigungsnachricht | -| `fileUrl` | string | URL der heruntergeladenen Datei | -| `contentType` | string | Datei-Content-Type | -| `filename` | string | Dateiname | +| `total_items` | number | Gesamtanzahl der Antworten | +| `page_count` | number | Gesamtanzahl der verfügbaren Seiten | +| `items` | array | Array von Antwortobjekten mit response_id, submitted_at, answers und metadata | ### `typeform_files` @@ -128,7 +112,7 @@ Eine Liste aller Formulare in Ihrem Typeform-Konto abrufen | --------- | ---- | ----------- | | `total_items` | number | Gesamtanzahl der Formulare im Konto | | `page_count` | number | Gesamtanzahl der verfügbaren Seiten | -| `items` | array | Array von Formularobjekten | +| `items` | array | Array von Formularobjekten mit id, title, created_at, last_updated_at, settings, theme und _links | ### `typeform_get_form` @@ -148,11 +132,13 @@ Vollständige Details und Struktur eines bestimmten Formulars abrufen | `id` | string | Eindeutige Formular-ID | | `title` | string | Formulartitel | | `type` | string | Formulartyp \(form, quiz, etc.\) | -| `created_at` | string | ISO-Zeitstempel der Formularerstellung | -| `last_updated_at` | string | ISO-Zeitstempel der letzten Aktualisierung | | `settings` | object | Formulareinstellungen einschließlich Sprache, Fortschrittsbalken, etc. | -| `theme` | object | Theme-Konfiguration mit Farben, Schriftarten und Design-Einstellungen | -| `workspace` | object | Workspace-Informationen | +| `theme` | object | Theme-Referenz | +| `workspace` | object | Workspace-Referenz | +| `fields` | array | Array von Formularfeldern/Fragen | +| `welcome_screens` | array | Array von Begrüßungsbildschirmen | +| `thankyou_screens` | array | Array von Dankesbildschirmen | +| `_links` | object | Links zu verwandten Ressourcen einschließlich öffentlicher Formular-URL | ### `typeform_create_form` @@ -177,13 +163,8 @@ Ein neues Formular mit Feldern und Einstellungen erstellen | `id` | string | Eindeutige Kennung des erstellten Formulars | | `title` | string | Formulartitel | | `type` | string | Formulartyp | -| `created_at` | string | ISO-Zeitstempel der Formularerstellung | -| `last_updated_at` | string | ISO-Zeitstempel der letzten Aktualisierung | -| `settings` | object | Formulareinstellungen | -| `theme` | object | Angewandte Theme-Konfiguration | -| `workspace` | object | Workspace-Informationen | | `fields` | array | Array der erstellten Formularfelder | -| `_links` | object | Links zu verwandten Ressourcen | +| `_links` | object | Links zu verwandten Ressourcen einschließlich öffentlicher Formular-URL | ### `typeform_update_form` @@ -204,13 +185,12 @@ Ein bestehendes Formular mit JSON Patch-Operationen aktualisieren | `id` | string | Eindeutige Kennung des aktualisierten Formulars | | `title` | string | Formulartitel | | `type` | string | Formulartyp | -| `created_at` | string | ISO-Zeitstempel der Formularerstellung | -| `last_updated_at` | string | ISO-Zeitstempel der letzten Aktualisierung | | `settings` | object | Formulareinstellungen | -| `theme` | object | Theme-Konfiguration | -| `workspace` | object | Workspace-Informationen | -| `fields` | array | Array der Formularfelder | -| `thankyou_screens` | array | Array der Dankesbildschirme | +| `theme` | object | Theme-Referenz | +| `workspace` | object | Workspace-Referenz | +| `fields` | array | Array von Formularfeldern | +| `welcome_screens` | array | Array von Begrüßungsbildschirmen | +| `thankyou_screens` | array | Array von Dankesbildschirmen | | `_links` | object | Links zu verwandten Ressourcen | ### `typeform_delete_form` diff --git a/apps/docs/content/docs/de/tools/zep.mdx b/apps/docs/content/docs/de/tools/zep.mdx index 54d099679..8c35142ba 100644 --- a/apps/docs/content/docs/de/tools/zep.mdx +++ b/apps/docs/content/docs/de/tools/zep.mdx @@ -94,10 +94,7 @@ Benutzerkontext aus einem Thread mit Zusammenfassungs- oder Basismodus abrufen | Parameter | Typ | Beschreibung | | --------- | ---- | ----------- | -| `context` | string | Der Kontextstring \(Zusammenfassung oder Basis\) | -| `facts` | array | Extrahierte Fakten | -| `entities` | array | Extrahierte Entitäten | -| `summary` | string | Konversationszusammenfassung | +| `context` | string | Die Kontext-Zeichenfolge \(Zusammenfassung oder Basismodus\) | ### `zep_get_messages` @@ -137,9 +134,9 @@ Nachrichten zu einem bestehenden Thread hinzufügen | Parameter | Typ | Beschreibung | | --------- | ---- | ----------- | -| `context` | string | Aktualisierter Kontext nach dem Hinzufügen von Nachrichten | -| `messageIds` | array | Array der hinzugefügten Nachrichten-UUIDs | | `threadId` | string | Die Thread-ID | +| `added` | boolean | Ob Nachrichten erfolgreich hinzugefügt wurden | +| `messageIds` | array | Array der hinzugefügten Nachrichten-UUIDs | ### `zep_add_user` @@ -209,7 +206,7 @@ Alle Konversations-Threads für einen bestimmten Benutzer auflisten | Parameter | Typ | Beschreibung | | --------- | ---- | ----------- | | `threads` | array | Array von Thread-Objekten für diesen Benutzer | -| `userId` | string | Die Benutzer-ID | +| `totalCount` | number | Gesamtanzahl der zurückgegebenen Threads | ## Hinweise diff --git a/apps/docs/content/docs/en/tools/apify.mdx b/apps/docs/content/docs/en/tools/apify.mdx index d26a1eb70..2ba9276b1 100644 --- a/apps/docs/content/docs/en/tools/apify.mdx +++ b/apps/docs/content/docs/en/tools/apify.mdx @@ -57,7 +57,6 @@ Run an APIFY actor synchronously and get results (max 5 minutes) | `success` | boolean | Whether the actor run succeeded | | `runId` | string | APIFY run ID | | `status` | string | Run status \(SUCCEEDED, FAILED, etc.\) | -| `datasetId` | string | Dataset ID containing results | | `items` | array | Dataset items \(if completed\) | ### `apify_run_actor_async` diff --git a/apps/docs/content/docs/en/tools/asana.mdx b/apps/docs/content/docs/en/tools/asana.mdx index 1822a1a4d..87686e065 100644 --- a/apps/docs/content/docs/en/tools/asana.mdx +++ b/apps/docs/content/docs/en/tools/asana.mdx @@ -36,7 +36,14 @@ Retrieve a single task by GID or get multiple tasks with filters | Parameter | Type | Description | | --------- | ---- | ----------- | | `success` | boolean | Operation success status | -| `output` | object | Single task details or array of tasks, depending on whether taskGid was provided | +| `ts` | string | Timestamp of the response | +| `gid` | string | Task globally unique identifier | +| `resource_type` | string | Resource type \(task\) | +| `resource_subtype` | string | Resource subtype | +| `name` | string | Task name | +| `notes` | string | Task notes or description | +| `completed` | boolean | Whether the task is completed | +| `assignee` | object | Assignee details | ### `asana_create_task` @@ -57,7 +64,13 @@ Create a new task in Asana | Parameter | Type | Description | | --------- | ---- | ----------- | | `success` | boolean | Operation success status | -| `output` | object | Created task details with timestamp, gid, name, notes, and permalink | +| `ts` | string | Timestamp of the response | +| `gid` | string | Task globally unique identifier | +| `name` | string | Task name | +| `notes` | string | Task notes or description | +| `completed` | boolean | Whether the task is completed | +| `created_at` | string | Task creation timestamp | +| `permalink_url` | string | URL to the task in Asana | ### `asana_update_task` @@ -79,7 +92,12 @@ Update an existing task in Asana | Parameter | Type | Description | | --------- | ---- | ----------- | | `success` | boolean | Operation success status | -| `output` | object | Updated task details with timestamp, gid, name, notes, and modified timestamp | +| `ts` | string | Timestamp of the response | +| `gid` | string | Task globally unique identifier | +| `name` | string | Task name | +| `notes` | string | Task notes or description | +| `completed` | boolean | Whether the task is completed | +| `modified_at` | string | Task last modified timestamp | ### `asana_get_projects` @@ -96,7 +114,8 @@ Retrieve all projects from an Asana workspace | Parameter | Type | Description | | --------- | ---- | ----------- | | `success` | boolean | Operation success status | -| `output` | object | List of projects with their gid, name, and resource type | +| `ts` | string | Timestamp of the response | +| `projects` | array | Array of projects | ### `asana_search_tasks` @@ -117,7 +136,8 @@ Search for tasks in an Asana workspace | Parameter | Type | Description | | --------- | ---- | ----------- | | `success` | boolean | Operation success status | -| `output` | object | List of tasks matching the search criteria | +| `ts` | string | Timestamp of the response | +| `tasks` | array | Array of matching tasks | ### `asana_add_comment` @@ -135,7 +155,11 @@ Add a comment (story) to an Asana task | Parameter | Type | Description | | --------- | ---- | ----------- | | `success` | boolean | Operation success status | -| `output` | object | Comment details including gid, text, created timestamp, and author | +| `ts` | string | Timestamp of the response | +| `gid` | string | Comment globally unique identifier | +| `text` | string | Comment text content | +| `created_at` | string | Comment creation timestamp | +| `created_by` | object | Comment author details | diff --git a/apps/docs/content/docs/en/tools/confluence.mdx b/apps/docs/content/docs/en/tools/confluence.mdx index c40551652..031ef7f90 100644 --- a/apps/docs/content/docs/en/tools/confluence.mdx +++ b/apps/docs/content/docs/en/tools/confluence.mdx @@ -224,6 +224,33 @@ Delete a comment from a Confluence page. | `commentId` | string | Deleted comment ID | | `deleted` | boolean | Deletion status | +### `confluence_upload_attachment` + +Upload a file as an attachment to a Confluence page. + +#### Input + +| Parameter | Type | Required | Description | +| --------- | ---- | -------- | ----------- | +| `domain` | string | Yes | Your Confluence domain \(e.g., yourcompany.atlassian.net\) | +| `pageId` | string | Yes | Confluence page ID to attach the file to | +| `file` | file | Yes | The file to upload as an attachment | +| `fileName` | string | No | Optional custom file name for the attachment | +| `comment` | string | No | Optional comment to add to the attachment | +| `cloudId` | string | No | Confluence Cloud ID for the instance. If not provided, it will be fetched using the domain. | + +#### Output + +| Parameter | Type | Description | +| --------- | ---- | ----------- | +| `ts` | string | Timestamp of upload | +| `attachmentId` | string | Uploaded attachment ID | +| `title` | string | Attachment file name | +| `fileSize` | number | File size in bytes | +| `mediaType` | string | MIME type of the attachment | +| `downloadUrl` | string | Download URL for the attachment | +| `pageId` | string | Page ID the attachment was added to | + ### `confluence_list_attachments` List all attachments on a Confluence page. diff --git a/apps/docs/content/docs/en/tools/firecrawl.mdx b/apps/docs/content/docs/en/tools/firecrawl.mdx index 1341b7d72..7c8dadc11 100644 --- a/apps/docs/content/docs/en/tools/firecrawl.mdx +++ b/apps/docs/content/docs/en/tools/firecrawl.mdx @@ -148,7 +148,6 @@ Extract structured data from entire webpages using natural language prompts and | --------- | ---- | ----------- | | `success` | boolean | Whether the extraction operation was successful | | `data` | object | Extracted structured data according to the schema or prompt | -| `sources` | array | Data sources \(only if showSources is enabled\) | diff --git a/apps/docs/content/docs/en/tools/google_groups.mdx b/apps/docs/content/docs/en/tools/google_groups.mdx index 727ab7271..e6dc141c4 100644 --- a/apps/docs/content/docs/en/tools/google_groups.mdx +++ b/apps/docs/content/docs/en/tools/google_groups.mdx @@ -36,7 +36,8 @@ List all groups in a Google Workspace domain | Parameter | Type | Description | | --------- | ---- | ----------- | -| `output` | json | Google Groups API response data | +| `groups` | json | Array of group objects | +| `nextPageToken` | string | Token for fetching next page of results | ### `google_groups_get_group` @@ -52,7 +53,7 @@ Get details of a specific Google Group by email or group ID | Parameter | Type | Description | | --------- | ---- | ----------- | -| `output` | json | Google Groups API response data | +| `group` | json | Group object | ### `google_groups_create_group` @@ -70,7 +71,7 @@ Create a new Google Group in the domain | Parameter | Type | Description | | --------- | ---- | ----------- | -| `output` | json | Google Groups API response data | +| `group` | json | Created group object | ### `google_groups_update_group` @@ -89,7 +90,7 @@ Update an existing Google Group | Parameter | Type | Description | | --------- | ---- | ----------- | -| `output` | json | Google Groups API response data | +| `group` | json | Updated group object | ### `google_groups_delete_group` @@ -105,7 +106,7 @@ Delete a Google Group | Parameter | Type | Description | | --------- | ---- | ----------- | -| `output` | json | Google Groups API response data | +| `message` | string | Success message | ### `google_groups_list_members` @@ -124,7 +125,8 @@ List all members of a Google Group | Parameter | Type | Description | | --------- | ---- | ----------- | -| `output` | json | Google Groups API response data | +| `members` | json | Array of member objects | +| `nextPageToken` | string | Token for fetching next page of results | ### `google_groups_get_member` @@ -141,7 +143,7 @@ Get details of a specific member in a Google Group | Parameter | Type | Description | | --------- | ---- | ----------- | -| `output` | json | Google Groups API response data | +| `member` | json | Member object | ### `google_groups_add_member` @@ -159,7 +161,7 @@ Add a new member to a Google Group | Parameter | Type | Description | | --------- | ---- | ----------- | -| `output` | json | Google Groups API response data | +| `member` | json | Added member object | ### `google_groups_remove_member` @@ -176,7 +178,7 @@ Remove a member from a Google Group | Parameter | Type | Description | | --------- | ---- | ----------- | -| `output` | json | Google Groups API response data | +| `message` | string | Success message | ### `google_groups_update_member` @@ -194,7 +196,7 @@ Update a member | Parameter | Type | Description | | --------- | ---- | ----------- | -| `output` | json | Google Groups API response data | +| `member` | json | Updated member object | ### `google_groups_has_member` @@ -211,7 +213,7 @@ Check if a user is a member of a Google Group | Parameter | Type | Description | | --------- | ---- | ----------- | -| `output` | json | Google Groups API response data | +| `isMember` | boolean | Whether the user is a member of the group | diff --git a/apps/docs/content/docs/en/tools/google_vault.mdx b/apps/docs/content/docs/en/tools/google_vault.mdx index 34d039458..39714d112 100644 --- a/apps/docs/content/docs/en/tools/google_vault.mdx +++ b/apps/docs/content/docs/en/tools/google_vault.mdx @@ -36,8 +36,7 @@ Create an export in a matter | Parameter | Type | Description | | --------- | ---- | ----------- | -| `output` | json | Vault API response data | -| `file` | json | Downloaded export file \(UserFile\) from execution files | +| `export` | json | Created export object | ### `google_vault_list_matters_export` @@ -56,8 +55,9 @@ List exports for a matter | Parameter | Type | Description | | --------- | ---- | ----------- | -| `output` | json | Vault API response data | -| `file` | json | Downloaded export file \(UserFile\) from execution files | +| `exports` | json | Array of export objects | +| `export` | json | Single export object \(when exportId is provided\) | +| `nextPageToken` | string | Token for fetching next page of results | ### `google_vault_download_export_file` @@ -96,8 +96,7 @@ Create a hold in a matter | Parameter | Type | Description | | --------- | ---- | ----------- | -| `output` | json | Vault API response data | -| `file` | json | Downloaded export file \(UserFile\) from execution files | +| `hold` | json | Created hold object | ### `google_vault_list_matters_holds` @@ -116,8 +115,9 @@ List holds for a matter | Parameter | Type | Description | | --------- | ---- | ----------- | -| `output` | json | Vault API response data | -| `file` | json | Downloaded export file \(UserFile\) from execution files | +| `holds` | json | Array of hold objects | +| `hold` | json | Single hold object \(when holdId is provided\) | +| `nextPageToken` | string | Token for fetching next page of results | ### `google_vault_create_matters` @@ -134,8 +134,7 @@ Create a new matter in Google Vault | Parameter | Type | Description | | --------- | ---- | ----------- | -| `output` | json | Vault API response data | -| `file` | json | Downloaded export file \(UserFile\) from execution files | +| `matter` | json | Created matter object | ### `google_vault_list_matters` @@ -153,8 +152,9 @@ List matters, or get a specific matter if matterId is provided | Parameter | Type | Description | | --------- | ---- | ----------- | -| `output` | json | Vault API response data | -| `file` | json | Downloaded export file \(UserFile\) from execution files | +| `matters` | json | Array of matter objects | +| `matter` | json | Single matter object \(when matterId is provided\) | +| `nextPageToken` | string | Token for fetching next page of results | diff --git a/apps/docs/content/docs/en/tools/grafana.mdx b/apps/docs/content/docs/en/tools/grafana.mdx index c79e5c37c..6654b1c12 100644 --- a/apps/docs/content/docs/en/tools/grafana.mdx +++ b/apps/docs/content/docs/en/tools/grafana.mdx @@ -324,7 +324,7 @@ Create an annotation on a dashboard or as a global annotation | `organizationId` | string | No | Organization ID for multi-org Grafana instances | | `text` | string | Yes | The text content of the annotation | | `tags` | string | No | Comma-separated list of tags | -| `dashboardUid` | string | No | UID of the dashboard to add the annotation to \(optional for global annotations\) | +| `dashboardUid` | string | Yes | UID of the dashboard to add the annotation to | | `panelId` | number | No | ID of the panel to add the annotation to | | `time` | number | No | Start time in epoch milliseconds \(defaults to now\) | | `timeEnd` | number | No | End time in epoch milliseconds \(for range annotations\) | @@ -349,7 +349,7 @@ Query annotations by time range, dashboard, or tags | `organizationId` | string | No | Organization ID for multi-org Grafana instances | | `from` | number | No | Start time in epoch milliseconds | | `to` | number | No | End time in epoch milliseconds | -| `dashboardUid` | string | No | Filter by dashboard UID | +| `dashboardUid` | string | Yes | Dashboard UID to query annotations from | | `panelId` | number | No | Filter by panel ID | | `tags` | string | No | Comma-separated list of tags to filter by | | `type` | string | No | Filter by type \(alert or annotation\) | @@ -490,6 +490,16 @@ Create a new folder in Grafana | `uid` | string | The UID of the created folder | | `title` | string | The title of the created folder | | `url` | string | The URL path to the folder | +| `hasAcl` | boolean | Whether the folder has custom ACL permissions | +| `canSave` | boolean | Whether the current user can save the folder | +| `canEdit` | boolean | Whether the current user can edit the folder | +| `canAdmin` | boolean | Whether the current user has admin rights on the folder | +| `canDelete` | boolean | Whether the current user can delete the folder | +| `createdBy` | string | Username of who created the folder | +| `created` | string | Timestamp when the folder was created | +| `updatedBy` | string | Username of who last updated the folder | +| `updated` | string | Timestamp when the folder was last updated | +| `version` | number | Version number of the folder | diff --git a/apps/docs/content/docs/en/tools/hubspot.mdx b/apps/docs/content/docs/en/tools/hubspot.mdx index cd673afbe..a1e64a9ce 100644 --- a/apps/docs/content/docs/en/tools/hubspot.mdx +++ b/apps/docs/content/docs/en/tools/hubspot.mdx @@ -50,8 +50,9 @@ Retrieve all users from HubSpot account | Parameter | Type | Description | | --------- | ---- | ----------- | +| `users` | array | Array of HubSpot user objects | +| `metadata` | object | Operation metadata | | `success` | boolean | Operation success status | -| `output` | object | Users data | ### `hubspot_list_contacts` @@ -70,8 +71,10 @@ Retrieve all contacts from HubSpot account with pagination support | Parameter | Type | Description | | --------- | ---- | ----------- | +| `contacts` | array | Array of HubSpot contact objects | +| `paging` | object | Pagination information | +| `metadata` | object | Operation metadata | | `success` | boolean | Operation success status | -| `output` | object | Contacts data | ### `hubspot_get_contact` @@ -90,8 +93,9 @@ Retrieve a single contact by ID or email from HubSpot | Parameter | Type | Description | | --------- | ---- | ----------- | +| `contact` | object | HubSpot contact object with properties | +| `metadata` | object | Operation metadata | | `success` | boolean | Operation success status | -| `output` | object | Contact data | ### `hubspot_create_contact` @@ -108,8 +112,9 @@ Create a new contact in HubSpot. Requires at least one of: email, firstname, or | Parameter | Type | Description | | --------- | ---- | ----------- | +| `contact` | object | Created HubSpot contact object | +| `metadata` | object | Operation metadata | | `success` | boolean | Operation success status | -| `output` | object | Created contact data | ### `hubspot_update_contact` @@ -127,8 +132,9 @@ Update an existing contact in HubSpot by ID or email | Parameter | Type | Description | | --------- | ---- | ----------- | +| `contact` | object | Updated HubSpot contact object | +| `metadata` | object | Operation metadata | | `success` | boolean | Operation success status | -| `output` | object | Updated contact data | ### `hubspot_search_contacts` @@ -149,8 +155,11 @@ Search for contacts in HubSpot using filters, sorting, and queries | Parameter | Type | Description | | --------- | ---- | ----------- | +| `contacts` | array | Array of matching HubSpot contact objects | +| `total` | number | Total number of matching contacts | +| `paging` | object | Pagination information | +| `metadata` | object | Operation metadata | | `success` | boolean | Operation success status | -| `output` | object | Search results | ### `hubspot_list_companies` @@ -169,8 +178,10 @@ Retrieve all companies from HubSpot account with pagination support | Parameter | Type | Description | | --------- | ---- | ----------- | +| `companies` | array | Array of HubSpot company objects | +| `paging` | object | Pagination information | +| `metadata` | object | Operation metadata | | `success` | boolean | Operation success status | -| `output` | object | Companies data | ### `hubspot_get_company` @@ -189,8 +200,9 @@ Retrieve a single company by ID or domain from HubSpot | Parameter | Type | Description | | --------- | ---- | ----------- | +| `company` | object | HubSpot company object with properties | +| `metadata` | object | Operation metadata | | `success` | boolean | Operation success status | -| `output` | object | Company data | ### `hubspot_create_company` @@ -207,8 +219,9 @@ Create a new company in HubSpot | Parameter | Type | Description | | --------- | ---- | ----------- | +| `company` | object | Created HubSpot company object | +| `metadata` | object | Operation metadata | | `success` | boolean | Operation success status | -| `output` | object | Created company data | ### `hubspot_update_company` @@ -226,8 +239,9 @@ Update an existing company in HubSpot by ID or domain | Parameter | Type | Description | | --------- | ---- | ----------- | +| `company` | object | Updated HubSpot company object | +| `metadata` | object | Operation metadata | | `success` | boolean | Operation success status | -| `output` | object | Updated company data | ### `hubspot_search_companies` @@ -248,8 +262,11 @@ Search for companies in HubSpot using filters, sorting, and queries | Parameter | Type | Description | | --------- | ---- | ----------- | +| `companies` | array | Array of matching HubSpot company objects | +| `total` | number | Total number of matching companies | +| `paging` | object | Pagination information | +| `metadata` | object | Operation metadata | | `success` | boolean | Operation success status | -| `output` | object | Search results | ### `hubspot_list_deals` @@ -268,8 +285,10 @@ Retrieve all deals from HubSpot account with pagination support | Parameter | Type | Description | | --------- | ---- | ----------- | +| `deals` | array | Array of HubSpot deal objects | +| `paging` | object | Pagination information | +| `metadata` | object | Operation metadata | | `success` | boolean | Operation success status | -| `output` | object | Deals data | diff --git a/apps/docs/content/docs/en/tools/meta.json b/apps/docs/content/docs/en/tools/meta.json index c90365fed..7ca67d7a9 100644 --- a/apps/docs/content/docs/en/tools/meta.json +++ b/apps/docs/content/docs/en/tools/meta.json @@ -70,7 +70,6 @@ "polymarket", "postgresql", "posthog", - "pylon", "qdrant", "rds", "reddit", @@ -86,9 +85,10 @@ "shopify", "slack", "smtp", + "spotify", + "sqs", "ssh", "stagehand", - "stagehand_agent", "stripe", "stt", "supabase", diff --git a/apps/docs/content/docs/en/tools/pipedrive.mdx b/apps/docs/content/docs/en/tools/pipedrive.mdx index 88d05a1c4..3f66973c8 100644 --- a/apps/docs/content/docs/en/tools/pipedrive.mdx +++ b/apps/docs/content/docs/en/tools/pipedrive.mdx @@ -54,8 +54,9 @@ Retrieve all deals from Pipedrive with optional filters | Parameter | Type | Description | | --------- | ---- | ----------- | +| `deals` | array | Array of deal objects from Pipedrive | +| `metadata` | object | Operation metadata | | `success` | boolean | Operation success status | -| `output` | object | Deals data and metadata | ### `pipedrive_get_deal` @@ -71,8 +72,9 @@ Retrieve detailed information about a specific deal | Parameter | Type | Description | | --------- | ---- | ----------- | +| `deal` | object | Deal object with full details | +| `metadata` | object | Operation metadata | | `success` | boolean | Operation success status | -| `output` | object | Deal details | ### `pipedrive_create_deal` @@ -96,8 +98,9 @@ Create a new deal in Pipedrive | Parameter | Type | Description | | --------- | ---- | ----------- | +| `deal` | object | The created deal object | +| `metadata` | object | Operation metadata | | `success` | boolean | Operation success status | -| `output` | object | Created deal details | ### `pipedrive_update_deal` @@ -118,8 +121,9 @@ Update an existing deal in Pipedrive | Parameter | Type | Description | | --------- | ---- | ----------- | +| `deal` | object | The updated deal object | +| `metadata` | object | Operation metadata | | `success` | boolean | Operation success status | -| `output` | object | Updated deal details | ### `pipedrive_get_files` @@ -138,8 +142,9 @@ Retrieve files from Pipedrive with optional filters | Parameter | Type | Description | | --------- | ---- | ----------- | +| `files` | array | Array of file objects from Pipedrive | +| `metadata` | object | Operation metadata | | `success` | boolean | Operation success status | -| `output` | object | Files data | ### `pipedrive_get_mail_messages` @@ -156,8 +161,9 @@ Retrieve mail threads from Pipedrive mailbox | Parameter | Type | Description | | --------- | ---- | ----------- | +| `messages` | array | Array of mail thread objects from Pipedrive mailbox | +| `metadata` | object | Operation metadata | | `success` | boolean | Operation success status | -| `output` | object | Mail threads data | ### `pipedrive_get_mail_thread` @@ -173,8 +179,9 @@ Retrieve all messages from a specific mail thread | Parameter | Type | Description | | --------- | ---- | ----------- | +| `messages` | array | Array of mail message objects from the thread | +| `metadata` | object | Operation metadata including thread ID | | `success` | boolean | Operation success status | -| `output` | object | Mail thread messages data | ### `pipedrive_get_pipelines` @@ -193,8 +200,9 @@ Retrieve all pipelines from Pipedrive | Parameter | Type | Description | | --------- | ---- | ----------- | +| `pipelines` | array | Array of pipeline objects from Pipedrive | +| `metadata` | object | Operation metadata | | `success` | boolean | Operation success status | -| `output` | object | Pipelines data | ### `pipedrive_get_pipeline_deals` @@ -213,8 +221,9 @@ Retrieve all deals in a specific pipeline | Parameter | Type | Description | | --------- | ---- | ----------- | +| `deals` | array | Array of deal objects from the pipeline | +| `metadata` | object | Operation metadata including pipeline ID | | `success` | boolean | Operation success status | -| `output` | object | Pipeline deals data | ### `pipedrive_get_projects` @@ -232,8 +241,10 @@ Retrieve all projects or a specific project from Pipedrive | Parameter | Type | Description | | --------- | ---- | ----------- | +| `projects` | array | Array of project objects \(when listing all\) | +| `project` | object | Single project object \(when project_id is provided\) | +| `metadata` | object | Operation metadata | | `success` | boolean | Operation success status | -| `output` | object | Projects data or single project details | ### `pipedrive_create_project` @@ -252,8 +263,9 @@ Create a new project in Pipedrive | Parameter | Type | Description | | --------- | ---- | ----------- | +| `project` | object | The created project object | +| `metadata` | object | Operation metadata | | `success` | boolean | Operation success status | -| `output` | object | Created project details | ### `pipedrive_get_activities` @@ -274,8 +286,9 @@ Retrieve activities (tasks) from Pipedrive with optional filters | Parameter | Type | Description | | --------- | ---- | ----------- | +| `activities` | array | Array of activity objects from Pipedrive | +| `metadata` | object | Operation metadata | | `success` | boolean | Operation success status | -| `output` | object | Activities data | ### `pipedrive_create_activity` @@ -299,8 +312,9 @@ Create a new activity (task) in Pipedrive | Parameter | Type | Description | | --------- | ---- | ----------- | +| `activity` | object | The created activity object | +| `metadata` | object | Operation metadata | | `success` | boolean | Operation success status | -| `output` | object | Created activity details | ### `pipedrive_update_activity` @@ -322,8 +336,9 @@ Update an existing activity (task) in Pipedrive | Parameter | Type | Description | | --------- | ---- | ----------- | +| `activity` | object | The updated activity object | +| `metadata` | object | Operation metadata | | `success` | boolean | Operation success status | -| `output` | object | Updated activity details | ### `pipedrive_get_leads` @@ -344,8 +359,10 @@ Retrieve all leads or a specific lead from Pipedrive | Parameter | Type | Description | | --------- | ---- | ----------- | +| `leads` | array | Array of lead objects \(when listing all\) | +| `lead` | object | Single lead object \(when lead_id is provided\) | +| `metadata` | object | Operation metadata | | `success` | boolean | Operation success status | -| `output` | object | Leads data or single lead details | ### `pipedrive_create_lead` @@ -368,8 +385,9 @@ Create a new lead in Pipedrive | Parameter | Type | Description | | --------- | ---- | ----------- | +| `lead` | object | The created lead object | +| `metadata` | object | Operation metadata | | `success` | boolean | Operation success status | -| `output` | object | Created lead details | ### `pipedrive_update_lead` @@ -393,8 +411,9 @@ Update an existing lead in Pipedrive | Parameter | Type | Description | | --------- | ---- | ----------- | +| `lead` | object | The updated lead object | +| `metadata` | object | Operation metadata | | `success` | boolean | Operation success status | -| `output` | object | Updated lead details | ### `pipedrive_delete_lead` @@ -410,8 +429,9 @@ Delete a specific lead from Pipedrive | Parameter | Type | Description | | --------- | ---- | ----------- | +| `data` | object | Deletion confirmation data | +| `metadata` | object | Operation metadata | | `success` | boolean | Operation success status | -| `output` | object | Deletion result | diff --git a/apps/docs/content/docs/en/tools/pylon.mdx b/apps/docs/content/docs/en/tools/pylon.mdx deleted file mode 100644 index 4ac96873f..000000000 --- a/apps/docs/content/docs/en/tools/pylon.mdx +++ /dev/null @@ -1,811 +0,0 @@ ---- -title: Pylon -description: Manage customer support issues, accounts, contacts, users, teams, and tags in Pylon ---- - -import { BlockInfoCard } from "@/components/ui/block-info-card" - - - -{/* MANUAL-CONTENT-START:intro */} -[Pylon](https://usepylon.com/) is an advanced customer support and success platform designed to help you manage every aspect of your customer relationships—from support issues to accounts, contacts, users, teams, and beyond. Pylon empowers support and success teams to operate efficiently and programmatically with a rich API and comprehensive toolset. - -With Pylon in Sim, you can: - -- **Manage Support Issues:** - - List, create, get, update, and delete support issues for efficient case tracking. - - Search and snooze issues to help agents stay focused and organized. - - Handle issue followers and external issues for seamless collaboration with internal and external stakeholders. - -- **Full Account Management:** - - List, create, get, update, and delete customer accounts. - - Bulk update accounts programmatically. - - Search accounts to quickly find customer information relevant for support or outreach. - -- **Contact Management:** - - List, create, get, update, delete, and search contacts—manage everyone connected to your accounts. - -- **User and Team Operations:** - - List, get, update, and search users in your Pylon workspace. - - List, create, get, and update teams to structure your support organization and workflows. - -- **Tagging and Organization:** - - List, get, create, update, and delete tags for categorizing issues, accounts, or contacts. - -- **Message Handling:** - - Redact sensitive message content directly from your workflows for privacy and compliance. - -By integrating Pylon tools into Sim, your agents can automate every aspect of support operations: -- Automatically open, update, or triage new issues when customer events occur. -- Maintain synchronized account and contact data across your tech stack. -- Route conversations, handle escalations, and organize your support data using tags and teams. -- Ensure sensitive data is properly managed by redacting messages as needed. - -Pylon's endpoints provide granular control for full-lifecycle management of customer issues and relationships. Whether scaling a support desk, powering proactive customer success, or integrating with other systems, Pylon in Sim enables best-in-class CRM automation—securely, flexibly, and at scale. -{/* MANUAL-CONTENT-END */} - - -## Usage Instructions - -Integrate Pylon into the workflow. Manage issues (list, create, get, update, delete, search, snooze, followers, external issues), accounts (list, create, get, update, delete, bulk update, search), contacts (list, create, get, update, delete, search), users (list, get, update, search), teams (list, get, create, update), tags (list, get, create, update, delete), and messages (redact). - - - -## Tools - -### `pylon_list_issues` - -Retrieve a list of issues within a specified time range - -#### Input - -| Parameter | Type | Required | Description | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | Yes | Pylon API token | -| `startTime` | string | Yes | Start time in RFC3339 format \(e.g., 2024-01-01T00:00:00Z\) | -| `endTime` | string | Yes | End time in RFC3339 format \(e.g., 2024-01-31T23:59:59Z\) | -| `cursor` | string | No | Pagination cursor for next page of results | - -#### Output - -| Parameter | Type | Description | -| --------- | ---- | ----------- | -| `success` | boolean | Operation success status | -| `output` | object | List of issues | - -### `pylon_create_issue` - -Create a new issue with specified properties - -#### Input - -| Parameter | Type | Required | Description | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | Yes | Pylon API token | -| `title` | string | Yes | Issue title | -| `bodyHtml` | string | Yes | Issue body in HTML format | -| `accountId` | string | No | Account ID to associate with issue | -| `assigneeId` | string | No | User ID to assign issue to | -| `teamId` | string | No | Team ID to assign issue to | -| `requesterId` | string | No | Requester user ID \(alternative to requester_email\) | -| `requesterEmail` | string | No | Requester email address \(alternative to requester_id\) | -| `priority` | string | No | Issue priority | -| `tags` | string | No | Comma-separated tag IDs | -| `customFields` | string | No | Custom fields as JSON object | -| `attachmentUrls` | string | No | Comma-separated attachment URLs | - -#### Output - -| Parameter | Type | Description | -| --------- | ---- | ----------- | -| `success` | boolean | Operation success status | -| `output` | object | Created issue data | - -### `pylon_get_issue` - -Fetch a specific issue by ID - -#### Input - -| Parameter | Type | Required | Description | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | Yes | Pylon API token | -| `issueId` | string | Yes | The ID of the issue to retrieve | - -#### Output - -| Parameter | Type | Description | -| --------- | ---- | ----------- | -| `success` | boolean | Operation success status | -| `output` | object | Issue data | - -### `pylon_update_issue` - -Update an existing issue - -#### Input - -| Parameter | Type | Required | Description | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | Yes | Pylon API token | -| `issueId` | string | Yes | The ID of the issue to update | -| `state` | string | No | Issue state | -| `assigneeId` | string | No | User ID to assign issue to | -| `teamId` | string | No | Team ID to assign issue to | -| `tags` | string | No | Comma-separated tag IDs | -| `customFields` | string | No | Custom fields as JSON object | -| `customerPortalVisible` | boolean | No | Whether issue is visible in customer portal | -| `requesterId` | string | No | Requester user ID | -| `accountId` | string | No | Account ID to associate with issue | - -#### Output - -| Parameter | Type | Description | -| --------- | ---- | ----------- | -| `success` | boolean | Operation success status | -| `output` | object | Updated issue data | - -### `pylon_delete_issue` - -Remove an issue by ID - -#### Input - -| Parameter | Type | Required | Description | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | Yes | Pylon API token | -| `issueId` | string | Yes | The ID of the issue to delete | - -#### Output - -| Parameter | Type | Description | -| --------- | ---- | ----------- | -| `success` | boolean | Operation success status | -| `output` | object | Deletion result | - -### `pylon_search_issues` - -Query issues using filters - -#### Input - -| Parameter | Type | Required | Description | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | Yes | Pylon API token | -| `filter` | string | Yes | Filter criteria as JSON string | -| `cursor` | string | No | Pagination cursor for next page of results | -| `limit` | number | No | Maximum number of results to return | - -#### Output - -| Parameter | Type | Description | -| --------- | ---- | ----------- | -| `success` | boolean | Operation success status | -| `output` | object | Search results | - -### `pylon_snooze_issue` - -Postpone issue visibility until specified time - -#### Input - -| Parameter | Type | Required | Description | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | Yes | Pylon API token | -| `issueId` | string | Yes | The ID of the issue to snooze | -| `snoozeUntil` | string | Yes | RFC3339 timestamp when issue should reappear \(e.g., 2024-01-01T00:00:00Z\) | - -#### Output - -| Parameter | Type | Description | -| --------- | ---- | ----------- | -| `success` | boolean | Operation success status | -| `output` | object | Snoozed issue data | - -### `pylon_list_issue_followers` - -Get list of followers for a specific issue - -#### Input - -| Parameter | Type | Required | Description | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | Yes | Pylon API token | -| `issueId` | string | Yes | The ID of the issue | - -#### Output - -| Parameter | Type | Description | -| --------- | ---- | ----------- | -| `success` | boolean | Operation success status | -| `output` | object | Followers list | - -### `pylon_manage_issue_followers` - -Add or remove followers from an issue - -#### Input - -| Parameter | Type | Required | Description | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | Yes | Pylon API token | -| `issueId` | string | Yes | The ID of the issue | -| `userIds` | string | No | Comma-separated user IDs to add/remove | -| `contactIds` | string | No | Comma-separated contact IDs to add/remove | -| `operation` | string | No | Operation to perform: "add" or "remove" \(default: "add"\) | - -#### Output - -| Parameter | Type | Description | -| --------- | ---- | ----------- | -| `success` | boolean | Operation success status | -| `output` | object | Updated followers list | - -### `pylon_link_external_issue` - -Link an issue to an external system issue - -#### Input - -| Parameter | Type | Required | Description | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | Yes | Pylon API token | -| `issueId` | string | Yes | The ID of the Pylon issue | -| `externalIssueId` | string | Yes | The ID of the external issue | -| `source` | string | Yes | The source system \(e.g., "jira", "linear", "github"\) | - -#### Output - -| Parameter | Type | Description | -| --------- | ---- | ----------- | -| `success` | boolean | Operation success status | -| `output` | object | Linked external issue data | - -### `pylon_list_accounts` - -Retrieve a paginated list of accounts - -#### Input - -| Parameter | Type | Required | Description | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | Yes | Pylon API token | -| `limit` | string | No | Number of accounts to return \(1-1000, default 100\) | -| `cursor` | string | No | Pagination cursor for next page of results | - -#### Output - -| Parameter | Type | Description | -| --------- | ---- | ----------- | -| `success` | boolean | Operation success status | -| `output` | object | List of accounts | - -### `pylon_create_account` - -Create a new account with specified properties - -#### Input - -| Parameter | Type | Required | Description | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | Yes | Pylon API token | -| `name` | string | Yes | Account name | -| `domains` | string | No | Comma-separated list of domains | -| `primaryDomain` | string | No | Primary domain for the account | -| `customFields` | string | No | Custom fields as JSON object | -| `tags` | string | No | Comma-separated tag IDs | -| `channels` | string | No | Comma-separated channel IDs | -| `externalIds` | string | No | Comma-separated external IDs | -| `ownerId` | string | No | Owner user ID | -| `logoUrl` | string | No | URL to account logo | -| `subaccountIds` | string | No | Comma-separated subaccount IDs | - -#### Output - -| Parameter | Type | Description | -| --------- | ---- | ----------- | -| `success` | boolean | Operation success status | -| `output` | object | Created account data | - -### `pylon_get_account` - -Retrieve a single account by ID - -#### Input - -| Parameter | Type | Required | Description | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | Yes | Pylon API token | -| `accountId` | string | Yes | Account ID to retrieve | - -#### Output - -| Parameter | Type | Description | -| --------- | ---- | ----------- | -| `success` | boolean | Operation success status | -| `output` | object | Account data | - -### `pylon_update_account` - -Update an existing account with new properties - -#### Input - -| Parameter | Type | Required | Description | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | Yes | Pylon API token | -| `accountId` | string | Yes | Account ID to update | -| `name` | string | No | Account name | -| `domains` | string | No | Comma-separated list of domains | -| `primaryDomain` | string | No | Primary domain for the account | -| `customFields` | string | No | Custom fields as JSON object | -| `tags` | string | No | Comma-separated tag IDs | -| `channels` | string | No | Comma-separated channel IDs | -| `externalIds` | string | No | Comma-separated external IDs | -| `ownerId` | string | No | Owner user ID | -| `logoUrl` | string | No | URL to account logo | -| `subaccountIds` | string | No | Comma-separated subaccount IDs | - -#### Output - -| Parameter | Type | Description | -| --------- | ---- | ----------- | -| `success` | boolean | Operation success status | -| `output` | object | Updated account data | - -### `pylon_delete_account` - -Remove an account by ID - -#### Input - -| Parameter | Type | Required | Description | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | Yes | Pylon API token | -| `accountId` | string | Yes | Account ID to delete | - -#### Output - -| Parameter | Type | Description | -| --------- | ---- | ----------- | -| `success` | boolean | Operation success status | -| `output` | object | Deletion confirmation | - -### `pylon_bulk_update_accounts` - -Update multiple accounts at once - -#### Input - -| Parameter | Type | Required | Description | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | Yes | Pylon API token | -| `accountIds` | string | Yes | Comma-separated account IDs to update | -| `customFields` | string | No | Custom fields as JSON object | -| `tags` | string | No | Comma-separated tag IDs | -| `ownerId` | string | No | Owner user ID | -| `tagsApplyMode` | string | No | Tag application mode: append_only, remove_only, or replace | - -#### Output - -| Parameter | Type | Description | -| --------- | ---- | ----------- | -| `success` | boolean | Operation success status | -| `output` | object | Bulk updated accounts data | - -### `pylon_search_accounts` - -Search accounts with custom filters - -#### Input - -| Parameter | Type | Required | Description | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | Yes | Pylon API token | -| `filter` | string | Yes | Filter as JSON string with field/operator/value structure | -| `limit` | string | No | Number of accounts to return \(1-1000, default 100\) | -| `cursor` | string | No | Pagination cursor for next page of results | - -#### Output - -| Parameter | Type | Description | -| --------- | ---- | ----------- | -| `success` | boolean | Operation success status | -| `output` | object | Search results | - -### `pylon_list_contacts` - -Retrieve a list of contacts - -#### Input - -| Parameter | Type | Required | Description | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | Yes | Pylon API token | -| `cursor` | string | No | Pagination cursor for next page of results | -| `limit` | string | No | Maximum number of contacts to return | - -#### Output - -| Parameter | Type | Description | -| --------- | ---- | ----------- | -| `success` | boolean | Operation success status | -| `output` | object | List of contacts | - -### `pylon_create_contact` - -Create a new contact with specified properties - -#### Input - -| Parameter | Type | Required | Description | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | Yes | Pylon API token | -| `name` | string | Yes | Contact name | -| `email` | string | No | Contact email address | -| `accountId` | string | No | Account ID to associate with contact | -| `accountExternalId` | string | No | External account ID to associate with contact | -| `avatarUrl` | string | No | URL for contact avatar image | -| `customFields` | string | No | Custom fields as JSON object | -| `portalRole` | string | No | Portal role for the contact | - -#### Output - -| Parameter | Type | Description | -| --------- | ---- | ----------- | -| `success` | boolean | Operation success status | -| `output` | object | Created contact data | - -### `pylon_get_contact` - -Retrieve a specific contact by ID - -#### Input - -| Parameter | Type | Required | Description | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | Yes | Pylon API token | -| `contactId` | string | Yes | Contact ID to retrieve | -| `cursor` | string | No | Pagination cursor for next page of results | -| `limit` | string | No | Maximum number of items to return | - -#### Output - -| Parameter | Type | Description | -| --------- | ---- | ----------- | -| `success` | boolean | Operation success status | -| `output` | object | Contact data | - -### `pylon_update_contact` - -Update an existing contact with specified properties - -#### Input - -| Parameter | Type | Required | Description | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | Yes | Pylon API token | -| `contactId` | string | Yes | Contact ID to update | -| `name` | string | No | Contact name | -| `email` | string | No | Contact email address | -| `accountId` | string | No | Account ID to associate with contact | -| `accountExternalId` | string | No | External account ID to associate with contact | -| `avatarUrl` | string | No | URL for contact avatar image | -| `customFields` | string | No | Custom fields as JSON object | -| `portalRole` | string | No | Portal role for the contact | - -#### Output - -| Parameter | Type | Description | -| --------- | ---- | ----------- | -| `success` | boolean | Operation success status | -| `output` | object | Updated contact data | - -### `pylon_delete_contact` - -Delete a specific contact by ID - -#### Input - -| Parameter | Type | Required | Description | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | Yes | Pylon API token | -| `contactId` | string | Yes | Contact ID to delete | - -#### Output - -| Parameter | Type | Description | -| --------- | ---- | ----------- | -| `success` | boolean | Operation success status | -| `output` | object | Delete operation result | - -### `pylon_search_contacts` - -Search for contacts using a filter - -#### Input - -| Parameter | Type | Required | Description | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | Yes | Pylon API token | -| `filter` | string | Yes | Filter as JSON object | -| `limit` | string | No | Maximum number of contacts to return | -| `cursor` | string | No | Pagination cursor for next page of results | - -#### Output - -| Parameter | Type | Description | -| --------- | ---- | ----------- | -| `success` | boolean | Operation success status | -| `output` | object | Search results | - -### `pylon_list_users` - -Retrieve a list of users - -#### Input - -| Parameter | Type | Required | Description | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | Yes | Pylon API token | - -#### Output - -| Parameter | Type | Description | -| --------- | ---- | ----------- | -| `success` | boolean | Operation success status | -| `output` | object | List of users | - -### `pylon_get_user` - -Retrieve a specific user by ID - -#### Input - -| Parameter | Type | Required | Description | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | Yes | Pylon API token | -| `userId` | string | Yes | User ID to retrieve | - -#### Output - -| Parameter | Type | Description | -| --------- | ---- | ----------- | -| `success` | boolean | Operation success status | -| `output` | object | User data | - -### `pylon_update_user` - -Update an existing user with specified properties - -#### Input - -| Parameter | Type | Required | Description | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | Yes | Pylon API token | -| `userId` | string | Yes | User ID to update | -| `roleId` | string | No | Role ID to assign to user | -| `status` | string | No | User status | - -#### Output - -| Parameter | Type | Description | -| --------- | ---- | ----------- | -| `success` | boolean | Operation success status | -| `output` | object | Updated user data | - -### `pylon_search_users` - -Search for users using a filter with email field - -#### Input - -| Parameter | Type | Required | Description | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | Yes | Pylon API token | -| `filter` | string | Yes | Filter as JSON object with email field | -| `cursor` | string | No | Pagination cursor for next page of results | -| `limit` | string | No | Maximum number of users to return | - -#### Output - -| Parameter | Type | Description | -| --------- | ---- | ----------- | -| `success` | boolean | Operation success status | -| `output` | object | Search results | - -### `pylon_list_teams` - -Retrieve a list of teams - -#### Input - -| Parameter | Type | Required | Description | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | Yes | Pylon API token | - -#### Output - -| Parameter | Type | Description | -| --------- | ---- | ----------- | -| `success` | boolean | Operation success status | -| `output` | object | List of teams | - -### `pylon_get_team` - -Retrieve a specific team by ID - -#### Input - -| Parameter | Type | Required | Description | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | Yes | Pylon API token | -| `teamId` | string | Yes | Team ID to retrieve | - -#### Output - -| Parameter | Type | Description | -| --------- | ---- | ----------- | -| `success` | boolean | Operation success status | -| `output` | object | Team data | - -### `pylon_create_team` - -Create a new team with specified properties - -#### Input - -| Parameter | Type | Required | Description | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | Yes | Pylon API token | -| `name` | string | No | Team name | -| `userIds` | string | No | Comma-separated user IDs to add as team members | - -#### Output - -| Parameter | Type | Description | -| --------- | ---- | ----------- | -| `success` | boolean | Operation success status | -| `output` | object | Created team data | - -### `pylon_update_team` - -Update an existing team with specified properties (userIds replaces entire membership) - -#### Input - -| Parameter | Type | Required | Description | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | Yes | Pylon API token | -| `teamId` | string | Yes | Team ID to update | -| `name` | string | No | Team name | -| `userIds` | string | No | Comma-separated user IDs \(replaces entire team membership\) | - -#### Output - -| Parameter | Type | Description | -| --------- | ---- | ----------- | -| `success` | boolean | Operation success status | -| `output` | object | Updated team data | - -### `pylon_list_tags` - -Retrieve a list of tags - -#### Input - -| Parameter | Type | Required | Description | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | Yes | Pylon API token | - -#### Output - -| Parameter | Type | Description | -| --------- | ---- | ----------- | -| `success` | boolean | Operation success status | -| `output` | object | List of tags | - -### `pylon_get_tag` - -Retrieve a specific tag by ID - -#### Input - -| Parameter | Type | Required | Description | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | Yes | Pylon API token | -| `tagId` | string | Yes | Tag ID to retrieve | - -#### Output - -| Parameter | Type | Description | -| --------- | ---- | ----------- | -| `success` | boolean | Operation success status | -| `output` | object | Tag data | - -### `pylon_create_tag` - -Create a new tag with specified properties (objectType: account/issue/contact) - -#### Input - -| Parameter | Type | Required | Description | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | Yes | Pylon API token | -| `objectType` | string | Yes | Object type for tag \(account, issue, or contact\) | -| `value` | string | Yes | Tag value/name | -| `hexColor` | string | No | Hex color code for tag \(e.g., #FF5733\) | - -#### Output - -| Parameter | Type | Description | -| --------- | ---- | ----------- | -| `success` | boolean | Operation success status | -| `output` | object | Created tag data | - -### `pylon_update_tag` - -Update an existing tag with specified properties - -#### Input - -| Parameter | Type | Required | Description | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | Yes | Pylon API token | -| `tagId` | string | Yes | Tag ID to update | -| `hexColor` | string | No | Hex color code for tag \(e.g., #FF5733\) | -| `value` | string | No | Tag value/name | - -#### Output - -| Parameter | Type | Description | -| --------- | ---- | ----------- | -| `success` | boolean | Operation success status | -| `output` | object | Updated tag data | - -### `pylon_delete_tag` - -Delete a specific tag by ID - -#### Input - -| Parameter | Type | Required | Description | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | Yes | Pylon API token | -| `tagId` | string | Yes | Tag ID to delete | - -#### Output - -| Parameter | Type | Description | -| --------- | ---- | ----------- | -| `success` | boolean | Operation success status | -| `output` | object | Delete operation result | - -### `pylon_redact_message` - -Redact a specific message within an issue - -#### Input - -| Parameter | Type | Required | Description | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | Yes | Pylon API token | -| `issueId` | string | Yes | Issue ID containing the message | -| `messageId` | string | Yes | Message ID to redact | - -#### Output - -| Parameter | Type | Description | -| --------- | ---- | ----------- | -| `success` | boolean | Operation success status | -| `output` | object | Redact operation result | - - - -## Notes - -- Category: `tools` -- Type: `pylon` diff --git a/apps/docs/content/docs/en/tools/spotify.mdx b/apps/docs/content/docs/en/tools/spotify.mdx new file mode 100644 index 000000000..1b8cd3b0c --- /dev/null +++ b/apps/docs/content/docs/en/tools/spotify.mdx @@ -0,0 +1,1456 @@ +--- +title: Spotify +description: Search music, manage playlists, control playback, and access your library +--- + +import { BlockInfoCard } from "@/components/ui/block-info-card" + + + +## Usage Instructions + +Integrate Spotify into your workflow. Search for tracks, albums, artists, and playlists. Manage playlists, access your library, control playback, browse podcasts and audiobooks. + + + +## Tools + +### `spotify_search` + +Search for tracks, albums, artists, or playlists on Spotify. Returns matching results based on the query. + +#### Input + +| Parameter | Type | Required | Description | +| --------- | ---- | -------- | ----------- | +| `query` | string | Yes | Search query \(e.g., "Bohemian Rhapsody", "artist:Queen", "genre:rock"\) | +| `type` | string | No | Type of results: track, album, artist, playlist, or comma-separated \(e.g., "track,artist"\) | +| `limit` | number | No | Maximum number of results to return \(1-50\) | +| `offset` | number | No | Index of the first result to return for pagination | +| `market` | string | No | ISO 3166-1 alpha-2 country code to filter results \(e.g., "US", "GB"\) | + +#### Output + +| Parameter | Type | Description | +| --------- | ---- | ----------- | +| `tracks` | array | List of matching tracks | + +### `spotify_get_track` + +Get detailed information about a specific track on Spotify by its ID. + +#### Input + +| Parameter | Type | Required | Description | +| --------- | ---- | -------- | ----------- | +| `trackId` | string | Yes | The Spotify ID of the track | +| `market` | string | No | ISO 3166-1 alpha-2 country code for track availability | + +#### Output + +| Parameter | Type | Description | +| --------- | ---- | ----------- | +| `id` | string | Spotify track ID | +| `name` | string | Track name | +| `artists` | array | List of artists | +| `album` | object | Album information | +| `duration_ms` | number | Track duration in milliseconds | +| `explicit` | boolean | Whether the track has explicit content | +| `popularity` | number | Popularity score \(0-100\) | +| `preview_url` | string | URL to 30-second preview | +| `external_url` | string | Spotify URL | +| `uri` | string | Spotify URI for the track | + +### `spotify_get_tracks` + +Get detailed information about multiple tracks on Spotify by their IDs (up to 50). + +#### Input + +| Parameter | Type | Required | Description | +| --------- | ---- | -------- | ----------- | +| `trackIds` | string | Yes | Comma-separated list of Spotify track IDs \(max 50\) | +| `market` | string | No | ISO 3166-1 alpha-2 country code for track availability | + +#### Output + +| Parameter | Type | Description | +| --------- | ---- | ----------- | +| `tracks` | array | List of tracks | + +### `spotify_get_album` + +Get detailed information about an album on Spotify by its ID, including track listing. + +#### Input + +| Parameter | Type | Required | Description | +| --------- | ---- | -------- | ----------- | +| `albumId` | string | Yes | The Spotify ID of the album | +| `market` | string | No | ISO 3166-1 alpha-2 country code for track availability | + +#### Output + +| Parameter | Type | Description | +| --------- | ---- | ----------- | +| `id` | string | Spotify album ID | +| `name` | string | Album name | +| `artists` | array | List of artists | +| `album_type` | string | Type of album \(album, single, compilation\) | +| `total_tracks` | number | Total number of tracks | +| `release_date` | string | Release date | +| `label` | string | Record label | +| `popularity` | number | Popularity score \(0-100\) | +| `genres` | array | List of genres | +| `image_url` | string | Album cover image URL | +| `tracks` | array | List of tracks on the album | +| `external_url` | string | Spotify URL | + +### `spotify_get_albums` + +Get details for multiple albums by their IDs. + +#### Input + +| Parameter | Type | Required | Description | +| --------- | ---- | -------- | ----------- | +| `albumIds` | string | Yes | Comma-separated album IDs \(max 20\) | +| `market` | string | No | ISO country code for market | + +#### Output + +| Parameter | Type | Description | +| --------- | ---- | ----------- | +| `albums` | json | List of albums | + +### `spotify_get_album_tracks` + +Get the tracks from an album. + +#### Input + +| Parameter | Type | Required | Description | +| --------- | ---- | -------- | ----------- | +| `albumId` | string | Yes | The Spotify album ID | +| `limit` | number | No | Number of tracks to return \(1-50\) | +| `offset` | number | No | Index of first track to return | + +#### Output + +| Parameter | Type | Description | +| --------- | ---- | ----------- | +| `tracks` | json | List of tracks | +| `total` | number | Total number of tracks | +| `next` | string | URL for next page | + +### `spotify_get_saved_albums` + +Get the user + +#### Input + +| Parameter | Type | Required | Description | +| --------- | ---- | -------- | ----------- | +| `limit` | number | No | Number of albums to return \(1-50\) | +| `offset` | number | No | Index of first album to return | +| `market` | string | No | ISO country code for market | + +#### Output + +| Parameter | Type | Description | +| --------- | ---- | ----------- | +| `albums` | json | List of saved albums | +| `total` | number | Total saved albums | +| `next` | string | URL for next page | + +### `spotify_save_albums` + +Save albums to the user + +#### Input + +| Parameter | Type | Required | Description | +| --------- | ---- | -------- | ----------- | +| `albumIds` | string | Yes | Comma-separated album IDs \(max 20\) | + +#### Output + +| Parameter | Type | Description | +| --------- | ---- | ----------- | +| `success` | boolean | Whether albums were saved | + +### `spotify_remove_saved_albums` + +Remove albums from the user + +#### Input + +| Parameter | Type | Required | Description | +| --------- | ---- | -------- | ----------- | +| `albumIds` | string | Yes | Comma-separated album IDs \(max 20\) | + +#### Output + +| Parameter | Type | Description | +| --------- | ---- | ----------- | +| `success` | boolean | Whether albums were removed | + +### `spotify_check_saved_albums` + +Check if albums are saved in library. + +#### Input + +| Parameter | Type | Required | Description | +| --------- | ---- | -------- | ----------- | +| `albumIds` | string | Yes | Comma-separated album IDs \(max 20\) | + +#### Output + +| Parameter | Type | Description | +| --------- | ---- | ----------- | +| `results` | json | Array of booleans for each album | + +### `spotify_get_artist` + +Get detailed information about an artist on Spotify by their ID. + +#### Input + +| Parameter | Type | Required | Description | +| --------- | ---- | -------- | ----------- | +| `artistId` | string | Yes | The Spotify ID of the artist | + +#### Output + +| Parameter | Type | Description | +| --------- | ---- | ----------- | +| `id` | string | Spotify artist ID | +| `name` | string | Artist name | +| `genres` | array | List of genres associated with the artist | +| `popularity` | number | Popularity score \(0-100\) | +| `followers` | number | Number of followers | +| `image_url` | string | Artist image URL | +| `external_url` | string | Spotify URL | + +### `spotify_get_artists` + +Get details for multiple artists by their IDs. + +#### Input + +| Parameter | Type | Required | Description | +| --------- | ---- | -------- | ----------- | +| `artistIds` | string | Yes | Comma-separated artist IDs \(max 50\) | + +#### Output + +| Parameter | Type | Description | +| --------- | ---- | ----------- | +| `artists` | json | List of artists | + +### `spotify_get_artist_albums` + +Get albums by an artist on Spotify. Can filter by album type. + +#### Input + +| Parameter | Type | Required | Description | +| --------- | ---- | -------- | ----------- | +| `artistId` | string | Yes | The Spotify ID of the artist | +| `include_groups` | string | No | Filter by album type: album, single, appears_on, compilation \(comma-separated\) | +| `limit` | number | No | Maximum number of albums to return \(1-50\) | +| `offset` | number | No | Index of the first album to return | +| `market` | string | No | ISO 3166-1 alpha-2 country code | + +#### Output + +| Parameter | Type | Description | +| --------- | ---- | ----------- | +| `albums` | array | Artist | + +### `spotify_get_artist_top_tracks` + +Get the top 10 most popular tracks by an artist on Spotify. + +#### Input + +| Parameter | Type | Required | Description | +| --------- | ---- | -------- | ----------- | +| `artistId` | string | Yes | The Spotify ID of the artist | +| `market` | string | No | ISO 3166-1 alpha-2 country code \(required for this endpoint\) | + +#### Output + +| Parameter | Type | Description | +| --------- | ---- | ----------- | +| `tracks` | array | Artist | + +### `spotify_follow_artists` + +Follow one or more artists. + +#### Input + +| Parameter | Type | Required | Description | +| --------- | ---- | -------- | ----------- | +| `artistIds` | string | Yes | Comma-separated artist IDs to follow \(max 50\) | + +#### Output + +| Parameter | Type | Description | +| --------- | ---- | ----------- | +| `success` | boolean | Whether artists were followed successfully | + +### `spotify_unfollow_artists` + +Unfollow one or more artists. + +#### Input + +| Parameter | Type | Required | Description | +| --------- | ---- | -------- | ----------- | +| `artistIds` | string | Yes | Comma-separated artist IDs to unfollow \(max 50\) | + +#### Output + +| Parameter | Type | Description | +| --------- | ---- | ----------- | +| `success` | boolean | Whether artists were unfollowed successfully | + +### `spotify_get_followed_artists` + +Get the user + +#### Input + +| Parameter | Type | Required | Description | +| --------- | ---- | -------- | ----------- | +| `limit` | number | No | Number of artists to return \(1-50\) | +| `after` | string | No | Cursor for pagination \(last artist ID from previous request\) | + +#### Output + +| Parameter | Type | Description | +| --------- | ---- | ----------- | +| `artists` | json | List of followed artists | +| `total` | number | Total number of followed artists | +| `next` | string | Cursor for next page | + +### `spotify_check_following` + +Check if the user follows artists or users. + +#### Input + +| Parameter | Type | Required | Description | +| --------- | ---- | -------- | ----------- | +| `type` | string | Yes | Type to check: "artist" or "user" | +| `ids` | string | Yes | Comma-separated artist or user IDs \(max 50\) | + +#### Output + +| Parameter | Type | Description | +| --------- | ---- | ----------- | +| `results` | json | Array of booleans for each ID | + +### `spotify_get_show` + +Get details for a podcast show. + +#### Input + +| Parameter | Type | Required | Description | +| --------- | ---- | -------- | ----------- | +| `showId` | string | Yes | The Spotify show ID | +| `market` | string | No | ISO country code for market | + +#### Output + +| Parameter | Type | Description | +| --------- | ---- | ----------- | +| `id` | string | Show ID | +| `name` | string | Show name | +| `description` | string | Show description | +| `publisher` | string | Publisher name | +| `total_episodes` | number | Total episodes | +| `explicit` | boolean | Contains explicit content | +| `languages` | json | Languages | +| `image_url` | string | Cover image URL | +| `external_url` | string | Spotify URL | + +### `spotify_get_shows` + +Get details for multiple podcast shows. + +#### Input + +| Parameter | Type | Required | Description | +| --------- | ---- | -------- | ----------- | +| `showIds` | string | Yes | Comma-separated show IDs \(max 50\) | +| `market` | string | No | ISO country code for market | + +#### Output + +| Parameter | Type | Description | +| --------- | ---- | ----------- | +| `shows` | json | List of shows | + +### `spotify_get_show_episodes` + +Get episodes from a podcast show. + +#### Input + +| Parameter | Type | Required | Description | +| --------- | ---- | -------- | ----------- | +| `showId` | string | Yes | The Spotify show ID | +| `limit` | number | No | Number of episodes to return \(1-50\) | +| `offset` | number | No | Index of first episode to return | +| `market` | string | No | ISO country code for market | + +#### Output + +| Parameter | Type | Description | +| --------- | ---- | ----------- | +| `episodes` | json | List of episodes | +| `total` | number | Total episodes | +| `next` | string | URL for next page | + +### `spotify_get_saved_shows` + +Get the user + +#### Input + +| Parameter | Type | Required | Description | +| --------- | ---- | -------- | ----------- | +| `limit` | number | No | Number of shows to return \(1-50\) | +| `offset` | number | No | Index of first show to return | + +#### Output + +| Parameter | Type | Description | +| --------- | ---- | ----------- | +| `shows` | json | List of saved shows | +| `total` | number | Total saved shows | +| `next` | string | URL for next page | + +### `spotify_save_shows` + +Save podcast shows to the user + +#### Input + +| Parameter | Type | Required | Description | +| --------- | ---- | -------- | ----------- | +| `showIds` | string | Yes | Comma-separated show IDs \(max 50\) | + +#### Output + +| Parameter | Type | Description | +| --------- | ---- | ----------- | +| `success` | boolean | Whether shows were saved | + +### `spotify_remove_saved_shows` + +Remove podcast shows from the user + +#### Input + +| Parameter | Type | Required | Description | +| --------- | ---- | -------- | ----------- | +| `showIds` | string | Yes | Comma-separated show IDs \(max 50\) | + +#### Output + +| Parameter | Type | Description | +| --------- | ---- | ----------- | +| `success` | boolean | Whether shows were removed | + +### `spotify_check_saved_shows` + +Check if shows are saved in library. + +#### Input + +| Parameter | Type | Required | Description | +| --------- | ---- | -------- | ----------- | +| `showIds` | string | Yes | Comma-separated show IDs \(max 50\) | + +#### Output + +| Parameter | Type | Description | +| --------- | ---- | ----------- | +| `results` | json | Array of booleans for each show | + +### `spotify_get_episode` + +Get details for a podcast episode. + +#### Input + +| Parameter | Type | Required | Description | +| --------- | ---- | -------- | ----------- | +| `episodeId` | string | Yes | The Spotify episode ID | +| `market` | string | No | ISO country code for market | + +#### Output + +| Parameter | Type | Description | +| --------- | ---- | ----------- | +| `id` | string | Episode ID | +| `name` | string | Episode name | +| `description` | string | Episode description | +| `duration_ms` | number | Duration in ms | +| `release_date` | string | Release date | +| `explicit` | boolean | Contains explicit content | +| `show` | json | Parent show info | +| `image_url` | string | Cover image URL | +| `external_url` | string | Spotify URL | + +### `spotify_get_episodes` + +Get details for multiple podcast episodes. + +#### Input + +| Parameter | Type | Required | Description | +| --------- | ---- | -------- | ----------- | +| `episodeIds` | string | Yes | Comma-separated episode IDs \(max 50\) | +| `market` | string | No | ISO country code for market | + +#### Output + +| Parameter | Type | Description | +| --------- | ---- | ----------- | +| `episodes` | json | List of episodes | + +### `spotify_get_saved_episodes` + +Get the user + +#### Input + +| Parameter | Type | Required | Description | +| --------- | ---- | -------- | ----------- | +| `limit` | number | No | Number of episodes to return \(1-50\) | +| `offset` | number | No | Index of first episode to return | +| `market` | string | No | ISO country code for market | + +#### Output + +| Parameter | Type | Description | +| --------- | ---- | ----------- | +| `episodes` | json | List of saved episodes | +| `total` | number | Total saved episodes | +| `next` | string | URL for next page | + +### `spotify_save_episodes` + +Save podcast episodes to the user + +#### Input + +| Parameter | Type | Required | Description | +| --------- | ---- | -------- | ----------- | +| `episodeIds` | string | Yes | Comma-separated episode IDs \(max 50\) | + +#### Output + +| Parameter | Type | Description | +| --------- | ---- | ----------- | +| `success` | boolean | Whether episodes were saved | + +### `spotify_remove_saved_episodes` + +Remove podcast episodes from the user + +#### Input + +| Parameter | Type | Required | Description | +| --------- | ---- | -------- | ----------- | +| `episodeIds` | string | Yes | Comma-separated episode IDs \(max 50\) | + +#### Output + +| Parameter | Type | Description | +| --------- | ---- | ----------- | +| `success` | boolean | Whether episodes were removed | + +### `spotify_check_saved_episodes` + +Check if episodes are saved in library. + +#### Input + +| Parameter | Type | Required | Description | +| --------- | ---- | -------- | ----------- | +| `episodeIds` | string | Yes | Comma-separated episode IDs \(max 50\) | + +#### Output + +| Parameter | Type | Description | +| --------- | ---- | ----------- | +| `results` | json | Array of booleans for each episode | + +### `spotify_get_audiobook` + +Get details for an audiobook. + +#### Input + +| Parameter | Type | Required | Description | +| --------- | ---- | -------- | ----------- | +| `audiobookId` | string | Yes | The Spotify audiobook ID | +| `market` | string | No | ISO country code for market | + +#### Output + +| Parameter | Type | Description | +| --------- | ---- | ----------- | +| `id` | string | Audiobook ID | +| `name` | string | Audiobook name | +| `authors` | json | Authors | +| `narrators` | json | Narrators | +| `publisher` | string | Publisher | +| `description` | string | Description | +| `total_chapters` | number | Total chapters | +| `languages` | json | Languages | +| `image_url` | string | Cover image URL | +| `external_url` | string | Spotify URL | + +### `spotify_get_audiobooks` + +Get details for multiple audiobooks. + +#### Input + +| Parameter | Type | Required | Description | +| --------- | ---- | -------- | ----------- | +| `audiobookIds` | string | Yes | Comma-separated audiobook IDs \(max 50\) | +| `market` | string | No | ISO country code for market | + +#### Output + +| Parameter | Type | Description | +| --------- | ---- | ----------- | +| `audiobooks` | json | List of audiobooks | + +### `spotify_get_audiobook_chapters` + +Get chapters from an audiobook. + +#### Input + +| Parameter | Type | Required | Description | +| --------- | ---- | -------- | ----------- | +| `audiobookId` | string | Yes | The Spotify audiobook ID | +| `limit` | number | No | Number of chapters to return \(1-50\) | +| `offset` | number | No | Index of first chapter to return | +| `market` | string | No | ISO country code for market | + +#### Output + +| Parameter | Type | Description | +| --------- | ---- | ----------- | +| `chapters` | json | List of chapters | +| `total` | number | Total chapters | +| `next` | string | URL for next page | + +### `spotify_get_saved_audiobooks` + +Get the user + +#### Input + +| Parameter | Type | Required | Description | +| --------- | ---- | -------- | ----------- | +| `limit` | number | No | Number of audiobooks to return \(1-50\) | +| `offset` | number | No | Index of first audiobook to return | + +#### Output + +| Parameter | Type | Description | +| --------- | ---- | ----------- | +| `audiobooks` | json | List of saved audiobooks | +| `total` | number | Total saved audiobooks | +| `next` | string | URL for next page | + +### `spotify_save_audiobooks` + +Save audiobooks to the user + +#### Input + +| Parameter | Type | Required | Description | +| --------- | ---- | -------- | ----------- | +| `audiobookIds` | string | Yes | Comma-separated audiobook IDs \(max 50\) | + +#### Output + +| Parameter | Type | Description | +| --------- | ---- | ----------- | +| `success` | boolean | Whether audiobooks were saved | + +### `spotify_remove_saved_audiobooks` + +Remove audiobooks from the user + +#### Input + +| Parameter | Type | Required | Description | +| --------- | ---- | -------- | ----------- | +| `audiobookIds` | string | Yes | Comma-separated audiobook IDs \(max 50\) | + +#### Output + +| Parameter | Type | Description | +| --------- | ---- | ----------- | +| `success` | boolean | Whether audiobooks were removed | + +### `spotify_check_saved_audiobooks` + +Check if audiobooks are saved in library. + +#### Input + +| Parameter | Type | Required | Description | +| --------- | ---- | -------- | ----------- | +| `audiobookIds` | string | Yes | Comma-separated audiobook IDs \(max 50\) | + +#### Output + +| Parameter | Type | Description | +| --------- | ---- | ----------- | +| `results` | json | Array of booleans for each audiobook | + +### `spotify_get_playlist` + +Get detailed information about a playlist on Spotify by its ID. + +#### Input + +| Parameter | Type | Required | Description | +| --------- | ---- | -------- | ----------- | +| `playlistId` | string | Yes | The Spotify ID of the playlist | +| `market` | string | No | ISO 3166-1 alpha-2 country code for track availability | + +#### Output + +| Parameter | Type | Description | +| --------- | ---- | ----------- | +| `id` | string | Spotify playlist ID | +| `name` | string | Playlist name | +| `description` | string | Playlist description | +| `public` | boolean | Whether the playlist is public | +| `collaborative` | boolean | Whether the playlist is collaborative | +| `owner` | object | Playlist owner information | +| `image_url` | string | Playlist cover image URL | +| `total_tracks` | number | Total number of tracks | +| `snapshot_id` | string | Playlist snapshot ID for versioning | +| `external_url` | string | Spotify URL | + +### `spotify_get_playlist_tracks` + +Get the tracks in a Spotify playlist. + +#### Input + +| Parameter | Type | Required | Description | +| --------- | ---- | -------- | ----------- | +| `playlistId` | string | Yes | The Spotify ID of the playlist | +| `limit` | number | No | Maximum number of tracks to return \(1-100\) | +| `offset` | number | No | Index of the first track to return | +| `market` | string | No | ISO 3166-1 alpha-2 country code for track availability | + +#### Output + +| Parameter | Type | Description | +| --------- | ---- | ----------- | +| `tracks` | array | List of tracks in the playlist | + +### `spotify_get_playlist_cover` + +Get a playlist + +#### Input + +| Parameter | Type | Required | Description | +| --------- | ---- | -------- | ----------- | +| `playlistId` | string | Yes | The Spotify playlist ID | + +#### Output + +| Parameter | Type | Description | +| --------- | ---- | ----------- | +| `images` | json | List of cover images | + +### `spotify_get_user_playlists` + +Get the current user + +#### Input + +| Parameter | Type | Required | Description | +| --------- | ---- | -------- | ----------- | +| `limit` | number | No | Maximum number of playlists to return \(1-50\) | +| `offset` | number | No | Index of the first playlist to return | + +#### Output + +| Parameter | Type | Description | +| --------- | ---- | ----------- | +| `playlists` | array | User | + +### `spotify_create_playlist` + +Create a new playlist for the current user on Spotify. + +#### Input + +| Parameter | Type | Required | Description | +| --------- | ---- | -------- | ----------- | +| `name` | string | Yes | Name for the new playlist | +| `description` | string | No | Description for the playlist | +| `public` | boolean | No | Whether the playlist should be public | +| `collaborative` | boolean | No | Whether the playlist should be collaborative \(requires public to be false\) | + +#### Output + +| Parameter | Type | Description | +| --------- | ---- | ----------- | +| `id` | string | Spotify playlist ID | +| `name` | string | Playlist name | +| `description` | string | Playlist description | +| `public` | boolean | Whether the playlist is public | +| `collaborative` | boolean | Whether collaborative | +| `snapshot_id` | string | Playlist snapshot ID | +| `external_url` | string | Spotify URL | + +### `spotify_update_playlist` + +Update a playlist + +#### Input + +| Parameter | Type | Required | Description | +| --------- | ---- | -------- | ----------- | +| `playlistId` | string | Yes | The Spotify playlist ID | +| `name` | string | No | New name for the playlist | +| `description` | string | No | New description for the playlist | +| `public` | boolean | No | Whether the playlist should be public | + +#### Output + +| Parameter | Type | Description | +| --------- | ---- | ----------- | +| `success` | boolean | Whether update succeeded | + +### `spotify_add_playlist_cover` + +Upload a custom cover image for a playlist. Image must be JPEG and under 256KB. + +#### Input + +| Parameter | Type | Required | Description | +| --------- | ---- | -------- | ----------- | +| `playlistId` | string | Yes | The Spotify playlist ID | +| `imageBase64` | string | Yes | Base64-encoded JPEG image \(max 256KB\) | + +#### Output + +| Parameter | Type | Description | +| --------- | ---- | ----------- | +| `success` | boolean | Whether upload succeeded | + +### `spotify_add_tracks_to_playlist` + +Add one or more tracks to a Spotify playlist. + +#### Input + +| Parameter | Type | Required | Description | +| --------- | ---- | -------- | ----------- | +| `playlistId` | string | Yes | The Spotify ID of the playlist | +| `uris` | string | Yes | Comma-separated Spotify URIs \(e.g., "spotify:track:xxx,spotify:track:yyy"\) | +| `position` | number | No | Position to insert tracks \(0-based\). If omitted, tracks are appended. | + +#### Output + +| Parameter | Type | Description | +| --------- | ---- | ----------- | +| `snapshot_id` | string | New playlist snapshot ID after modification | + +### `spotify_remove_tracks_from_playlist` + +Remove one or more tracks from a Spotify playlist. + +#### Input + +| Parameter | Type | Required | Description | +| --------- | ---- | -------- | ----------- | +| `playlistId` | string | Yes | The Spotify ID of the playlist | +| `uris` | string | Yes | Comma-separated Spotify URIs to remove \(e.g., "spotify:track:xxx,spotify:track:yyy"\) | + +#### Output + +| Parameter | Type | Description | +| --------- | ---- | ----------- | +| `snapshot_id` | string | New playlist snapshot ID after modification | + +### `spotify_reorder_playlist_items` + +Move tracks to a different position in a playlist. + +#### Input + +| Parameter | Type | Required | Description | +| --------- | ---- | -------- | ----------- | +| `playlistId` | string | Yes | The Spotify playlist ID | +| `range_start` | number | Yes | Start index of items to reorder | +| `insert_before` | number | Yes | Index to insert items before | +| `range_length` | number | No | Number of items to reorder | +| `snapshot_id` | string | No | Playlist snapshot ID for concurrency control | + +#### Output + +| Parameter | Type | Description | +| --------- | ---- | ----------- | +| `snapshot_id` | string | New playlist snapshot ID | + +### `spotify_replace_playlist_items` + +Replace all items in a playlist with new tracks. + +#### Input + +| Parameter | Type | Required | Description | +| --------- | ---- | -------- | ----------- | +| `playlistId` | string | Yes | The Spotify playlist ID | +| `uris` | string | Yes | Comma-separated Spotify URIs \(max 100\) | + +#### Output + +| Parameter | Type | Description | +| --------- | ---- | ----------- | +| `snapshot_id` | string | New playlist snapshot ID | + +### `spotify_follow_playlist` + +Follow (save) a playlist. + +#### Input + +| Parameter | Type | Required | Description | +| --------- | ---- | -------- | ----------- | +| `playlistId` | string | Yes | The Spotify playlist ID | +| `public` | boolean | No | Whether the playlist will be in public playlists | + +#### Output + +| Parameter | Type | Description | +| --------- | ---- | ----------- | +| `success` | boolean | Whether follow succeeded | + +### `spotify_unfollow_playlist` + +Unfollow (unsave) a playlist. + +#### Input + +| Parameter | Type | Required | Description | +| --------- | ---- | -------- | ----------- | +| `playlistId` | string | Yes | The Spotify playlist ID | + +#### Output + +| Parameter | Type | Description | +| --------- | ---- | ----------- | +| `success` | boolean | Whether unfollow succeeded | + +### `spotify_check_playlist_followers` + +Check if users follow a playlist. + +#### Input + +| Parameter | Type | Required | Description | +| --------- | ---- | -------- | ----------- | +| `playlistId` | string | Yes | The Spotify playlist ID | +| `userIds` | string | Yes | Comma-separated user IDs to check \(max 5\) | + +#### Output + +| Parameter | Type | Description | +| --------- | ---- | ----------- | +| `results` | json | Array of booleans for each user | + +### `spotify_get_current_user` + +Get the current user + +#### Input + +| Parameter | Type | Required | Description | +| --------- | ---- | -------- | ----------- | + +#### Output + +| Parameter | Type | Description | +| --------- | ---- | ----------- | +| `id` | string | Spotify user ID | +| `display_name` | string | Display name | +| `email` | string | Email address | +| `country` | string | Country code | +| `product` | string | Subscription level \(free, premium\) | +| `followers` | number | Number of followers | +| `image_url` | string | Profile image URL | +| `external_url` | string | Spotify profile URL | + +### `spotify_get_user_profile` + +Get a user + +#### Input + +| Parameter | Type | Required | Description | +| --------- | ---- | -------- | ----------- | +| `userId` | string | Yes | The Spotify user ID | + +#### Output + +| Parameter | Type | Description | +| --------- | ---- | ----------- | +| `id` | string | User ID | +| `display_name` | string | Display name | +| `followers` | number | Number of followers | +| `image_url` | string | Profile image URL | +| `external_url` | string | Spotify URL | + +### `spotify_get_top_tracks` + +Get the current user + +#### Input + +| Parameter | Type | Required | Description | +| --------- | ---- | -------- | ----------- | +| `time_range` | string | No | Time range: short_term \(~4 weeks\), medium_term \(~6 months\), long_term \(years\) | +| `limit` | number | No | Number of tracks to return \(1-50\) | +| `offset` | number | No | Index of the first track to return | + +#### Output + +| Parameter | Type | Description | +| --------- | ---- | ----------- | +| `tracks` | array | User | + +### `spotify_get_top_artists` + +Get the current user + +#### Input + +| Parameter | Type | Required | Description | +| --------- | ---- | -------- | ----------- | +| `time_range` | string | No | Time range: short_term \(~4 weeks\), medium_term \(~6 months\), long_term \(years\) | +| `limit` | number | No | Number of artists to return \(1-50\) | +| `offset` | number | No | Index of the first artist to return | + +#### Output + +| Parameter | Type | Description | +| --------- | ---- | ----------- | +| `artists` | array | User | + +### `spotify_get_saved_tracks` + +Get the current user + +#### Input + +| Parameter | Type | Required | Description | +| --------- | ---- | -------- | ----------- | +| `limit` | number | No | Number of tracks to return \(1-50\) | +| `offset` | number | No | Index of the first track to return | +| `market` | string | No | ISO 3166-1 alpha-2 country code | + +#### Output + +| Parameter | Type | Description | +| --------- | ---- | ----------- | +| `tracks` | array | User | + +### `spotify_save_tracks` + +Save tracks to the current user + +#### Input + +| Parameter | Type | Required | Description | +| --------- | ---- | -------- | ----------- | +| `trackIds` | string | Yes | Comma-separated Spotify track IDs to save \(max 50\) | + +#### Output + +| Parameter | Type | Description | +| --------- | ---- | ----------- | +| `success` | boolean | Whether the tracks were saved successfully | + +### `spotify_remove_saved_tracks` + +Remove tracks from the user + +#### Input + +| Parameter | Type | Required | Description | +| --------- | ---- | -------- | ----------- | +| `trackIds` | string | Yes | Comma-separated track IDs to remove \(max 50\) | + +#### Output + +| Parameter | Type | Description | +| --------- | ---- | ----------- | +| `success` | boolean | Whether tracks were removed successfully | + +### `spotify_check_saved_tracks` + +Check if one or more tracks are saved in the user + +#### Input + +| Parameter | Type | Required | Description | +| --------- | ---- | -------- | ----------- | +| `trackIds` | string | Yes | Comma-separated track IDs to check \(max 50\) | + +#### Output + +| Parameter | Type | Description | +| --------- | ---- | ----------- | +| `results` | json | Array of track IDs with saved status | +| `all_saved` | boolean | Whether all tracks are saved | +| `none_saved` | boolean | Whether no tracks are saved | + +### `spotify_get_recently_played` + +Get the user + +#### Input + +| Parameter | Type | Required | Description | +| --------- | ---- | -------- | ----------- | +| `limit` | number | No | Number of tracks to return \(1-50\) | +| `after` | number | No | Unix timestamp in milliseconds. Returns items after this cursor. | +| `before` | number | No | Unix timestamp in milliseconds. Returns items before this cursor. | + +#### Output + +| Parameter | Type | Description | +| --------- | ---- | ----------- | +| `items` | array | Recently played tracks | + +### `spotify_get_new_releases` + +Get a list of new album releases featured in Spotify. + +#### Input + +| Parameter | Type | Required | Description | +| --------- | ---- | -------- | ----------- | +| `country` | string | No | ISO 3166-1 alpha-2 country code \(e.g., "US", "GB"\) | +| `limit` | number | No | Number of releases to return \(1-50\) | +| `offset` | number | No | Index of first release to return | + +#### Output + +| Parameter | Type | Description | +| --------- | ---- | ----------- | +| `albums` | json | List of new releases | +| `total` | number | Total number of new releases | +| `next` | string | URL for next page | + +### `spotify_get_categories` + +Get a list of browse categories used to tag items in Spotify. + +#### Input + +| Parameter | Type | Required | Description | +| --------- | ---- | -------- | ----------- | +| `country` | string | No | ISO 3166-1 alpha-2 country code \(e.g., "US", "GB"\) | +| `locale` | string | No | Locale code \(e.g., "en_US", "es_MX"\) | +| `limit` | number | No | Number of categories to return \(1-50\) | + +#### Output + +| Parameter | Type | Description | +| --------- | ---- | ----------- | +| `categories` | json | List of browse categories | +| `total` | number | Total number of categories | + +### `spotify_get_markets` + +Get the list of markets where Spotify is available. + +#### Input + +| Parameter | Type | Required | Description | +| --------- | ---- | -------- | ----------- | + +#### Output + +| Parameter | Type | Description | +| --------- | ---- | ----------- | +| `markets` | json | List of ISO country codes | + +### `spotify_get_playback_state` + +Get the current playback state including device, track, and progress. + +#### Input + +| Parameter | Type | Required | Description | +| --------- | ---- | -------- | ----------- | +| `market` | string | No | ISO 3166-1 alpha-2 country code | + +#### Output + +| Parameter | Type | Description | +| --------- | ---- | ----------- | +| `is_playing` | boolean | Whether playback is active | +| `device` | object | Active device information | +| `progress_ms` | number | Progress in milliseconds | +| `currently_playing_type` | string | Type of content playing | +| `shuffle_state` | boolean | Whether shuffle is enabled | +| `repeat_state` | string | Repeat mode \(off, track, context\) | +| `track` | object | Currently playing track | + +### `spotify_get_currently_playing` + +Get the user + +#### Input + +| Parameter | Type | Required | Description | +| --------- | ---- | -------- | ----------- | +| `market` | string | No | ISO country code for market | + +#### Output + +| Parameter | Type | Description | +| --------- | ---- | ----------- | +| `is_playing` | boolean | Whether playback is active | +| `progress_ms` | number | Current position in track \(ms\) | +| `track` | json | Currently playing track | + +### `spotify_get_devices` + +Get the user + +#### Input + +| Parameter | Type | Required | Description | +| --------- | ---- | -------- | ----------- | + +#### Output + +| Parameter | Type | Description | +| --------- | ---- | ----------- | +| `devices` | array | Available playback devices | + +### `spotify_get_queue` + +Get the user + +#### Input + +| Parameter | Type | Required | Description | +| --------- | ---- | -------- | ----------- | + +#### Output + +| Parameter | Type | Description | +| --------- | ---- | ----------- | +| `currently_playing` | json | Currently playing track | +| `queue` | json | Upcoming tracks in queue | + +### `spotify_play` + +Start or resume playback on Spotify. Can play specific tracks, albums, or playlists. + +#### Input + +| Parameter | Type | Required | Description | +| --------- | ---- | -------- | ----------- | +| `device_id` | string | No | Device ID to play on. If not provided, plays on active device. | +| `context_uri` | string | No | Spotify URI of album, artist, or playlist to play \(e.g., "spotify:album:xxx"\) | +| `uris` | string | No | Comma-separated track URIs to play \(e.g., "spotify:track:xxx,spotify:track:yyy"\) | +| `offset` | number | No | Position in context to start playing \(0-based index\) | +| `position_ms` | number | No | Position in track to start from \(in milliseconds\) | + +#### Output + +| Parameter | Type | Description | +| --------- | ---- | ----------- | +| `success` | boolean | Whether playback started successfully | + +### `spotify_pause` + +Pause playback on Spotify. + +#### Input + +| Parameter | Type | Required | Description | +| --------- | ---- | -------- | ----------- | +| `device_id` | string | No | Device ID to pause. If not provided, pauses active device. | + +#### Output + +| Parameter | Type | Description | +| --------- | ---- | ----------- | +| `success` | boolean | Whether playback was paused | + +### `spotify_skip_next` + +Skip to the next track on Spotify. + +#### Input + +| Parameter | Type | Required | Description | +| --------- | ---- | -------- | ----------- | +| `device_id` | string | No | Device ID. If not provided, uses active device. | + +#### Output + +| Parameter | Type | Description | +| --------- | ---- | ----------- | +| `success` | boolean | Whether skip was successful | + +### `spotify_skip_previous` + +Skip to the previous track on Spotify. + +#### Input + +| Parameter | Type | Required | Description | +| --------- | ---- | -------- | ----------- | +| `device_id` | string | No | Device ID. If not provided, uses active device. | + +#### Output + +| Parameter | Type | Description | +| --------- | ---- | ----------- | +| `success` | boolean | Whether skip was successful | + +### `spotify_seek` + +Seek to a position in the currently playing track. + +#### Input + +| Parameter | Type | Required | Description | +| --------- | ---- | -------- | ----------- | +| `position_ms` | number | Yes | Position in milliseconds to seek to | +| `device_id` | string | No | Device ID to target | + +#### Output + +| Parameter | Type | Description | +| --------- | ---- | ----------- | +| `success` | boolean | Whether seek was successful | + +### `spotify_add_to_queue` + +Add a track to the user + +#### Input + +| Parameter | Type | Required | Description | +| --------- | ---- | -------- | ----------- | +| `uri` | string | Yes | Spotify URI of the track to add \(e.g., "spotify:track:xxx"\) | +| `device_id` | string | No | Device ID. If not provided, uses active device. | + +#### Output + +| Parameter | Type | Description | +| --------- | ---- | ----------- | +| `success` | boolean | Whether track was added to queue | + +### `spotify_set_volume` + +Set the playback volume on Spotify. + +#### Input + +| Parameter | Type | Required | Description | +| --------- | ---- | -------- | ----------- | +| `volume_percent` | number | Yes | Volume level \(0 to 100\) | +| `device_id` | string | No | Device ID. If not provided, uses active device. | + +#### Output + +| Parameter | Type | Description | +| --------- | ---- | ----------- | +| `success` | boolean | Whether volume was set | + +### `spotify_set_repeat` + +Set the repeat mode for playback. + +#### Input + +| Parameter | Type | Required | Description | +| --------- | ---- | -------- | ----------- | +| `state` | string | Yes | Repeat mode: "off", "track", or "context" | +| `device_id` | string | No | Device ID to target | + +#### Output + +| Parameter | Type | Description | +| --------- | ---- | ----------- | +| `success` | boolean | Whether repeat mode was set successfully | + +### `spotify_set_shuffle` + +Turn shuffle on or off. + +#### Input + +| Parameter | Type | Required | Description | +| --------- | ---- | -------- | ----------- | +| `state` | boolean | Yes | true for shuffle on, false for off | +| `device_id` | string | No | Device ID to target | + +#### Output + +| Parameter | Type | Description | +| --------- | ---- | ----------- | +| `success` | boolean | Whether shuffle was set successfully | + +### `spotify_transfer_playback` + +Transfer playback to a different device. + +#### Input + +| Parameter | Type | Required | Description | +| --------- | ---- | -------- | ----------- | +| `device_id` | string | Yes | Device ID to transfer playback to | +| `play` | boolean | No | Whether to start playing on the new device | + +#### Output + +| Parameter | Type | Description | +| --------- | ---- | ----------- | +| `success` | boolean | Whether transfer was successful | + + + +## Notes + +- Category: `tools` +- Type: `spotify` diff --git a/apps/docs/content/docs/en/tools/sqs.mdx b/apps/docs/content/docs/en/tools/sqs.mdx new file mode 100644 index 000000000..0fe60e542 --- /dev/null +++ b/apps/docs/content/docs/en/tools/sqs.mdx @@ -0,0 +1,68 @@ +--- +title: Amazon SQS +description: Connect to Amazon SQS +--- + +import { BlockInfoCard } from "@/components/ui/block-info-card" + + + +{/* MANUAL-CONTENT-START:intro */} +[Amazon Simple Queue Service (SQS)](https://aws.amazon.com/sqs/) is a fully managed message queuing service that enables you to decouple and scale microservices, distributed systems, and serverless applications. SQS eliminates the complexity and overhead associated with managing and operating message-oriented middleware, and empowers developers to focus on differentiating work. + +With Amazon SQS, you can: + +- **Send messages**: Publish messages to queues for asynchronous processing +- **Decouple applications**: Enable loose coupling between components of your system +- **Scale workloads**: Handle variable workloads without provisioning infrastructure +- **Ensure reliability**: Built-in redundancy and high availability +- **Support FIFO queues**: Maintain strict message ordering and exactly-once processing + +In Sim, the SQS integration enables your agents to send messages to Amazon SQS queues securely and programmatically. Supported operations include: + +- **Send Message**: Send messages to SQS queues with optional message group ID and deduplication ID for FIFO queues + +This integration allows your agents to automate message sending workflows without manual intervention. By connecting Sim with Amazon SQS, you can build agents that publish messages to queues within your workflows—all without handling queue infrastructure or connections. +{/* MANUAL-CONTENT-END */} + + +## Usage Instructions + +Integrate Amazon SQS into the workflow. Can send messages to SQS queues. + + + +## Tools + +### `sqs_send` + +Send a message to an Amazon SQS queue + +#### Input + +| Parameter | Type | Required | Description | +| --------- | ---- | -------- | ----------- | +| `region` | string | Yes | AWS region \(e.g., us-east-1\) | +| `accessKeyId` | string | Yes | AWS access key ID | +| `secretAccessKey` | string | Yes | AWS secret access key | +| `queueUrl` | string | Yes | Queue URL | +| `data` | object | Yes | Message body to send | +| `messageGroupId` | string | No | Message group ID \(optional\) | +| `messageDeduplicationId` | string | No | Message deduplication ID \(optional\) | + +#### Output + +| Parameter | Type | Description | +| --------- | ---- | ----------- | +| `message` | string | Operation status message | +| `id` | string | Message ID | + + + +## Notes + +- Category: `tools` +- Type: `sqs` diff --git a/apps/docs/content/docs/en/tools/stagehand.mdx b/apps/docs/content/docs/en/tools/stagehand.mdx index 2bec4173a..448a73b6c 100644 --- a/apps/docs/content/docs/en/tools/stagehand.mdx +++ b/apps/docs/content/docs/en/tools/stagehand.mdx @@ -1,6 +1,6 @@ --- -title: Stagehand Extract -description: Extract data from websites +title: Stagehand +description: Web automation and data extraction --- import { BlockInfoCard } from "@/components/ui/block-info-card" @@ -11,21 +11,28 @@ import { BlockInfoCard } from "@/components/ui/block-info-card" /> {/* MANUAL-CONTENT-START:intro */} -[Stagehand](https://stagehand.com) is a tool that allows you to extract structured data from webpages using Browserbase and OpenAI. +[Stagehand](https://stagehand.com) is a tool that enables both extraction of structured data from webpages and autonomous web automation using Browserbase and modern LLMs (OpenAI or Anthropic). -With Stagehand, you can: +Stagehand offers two main capabilities in Sim: -- **Extract structured data**: Extract structured data from webpages using Browserbase and OpenAI -- **Save data to a database**: Save the extracted data to a database -- **Automate workflows**: Automate workflows to extract data from webpages +- **stagehand_extract**: Extract structured data from a single webpage. You specify what you want (a schema), and the AI retrieves and parses the data in that shape from the page. This is best for extracting lists, fields, or objects when you know exactly what information you need and where to get it. -In Sim, the Stagehand integration enables your agents to extract structured data from webpages using Browserbase and OpenAI. This allows for powerful automation scenarios such as data extraction, data analysis, and data integration. Your agents can extract structured data from webpages, save the extracted data to a database, and automate workflows to extract data from webpages. This integration bridges the gap between your AI workflows and your data management system, enabling seamless data extraction and integration. By connecting Sim with Stagehand, you can automate data extraction processes, maintain up-to-date information repositories, generate reports, and organize information intelligently - all through your intelligent agents. +- **stagehand_agent**: Run an autonomous web agent capable of completing multi-step tasks, interacting with elements, navigating between pages, and returning structured results. This is much more flexible: the agent can do things like log in, search, fill forms, gather data from multiple places, and output a final result according to a requested schema. + +**Key Differences:** + +- *stagehand_extract* is a rapid “extract this data from this page” operation. It works best for direct, one-step extraction tasks. +- *stagehand_agent* performs complex, multi-step autonomous tasks on the web — such as navigation, searching, or even transactions — and can dynamically extract data according to your instructions and an optional schema. + +In practice, use **stagehand_extract** when you know what you want and where, and use **stagehand_agent** when you need a bot to think through and execute interactive workflows. + +By integrating Stagehand, Sim agents can automate data gathering, analysis, and workflow execution on the web: updating databases, organizing information, and generating custom reports—seamlessly and autonomously. {/* MANUAL-CONTENT-END */} ## Usage Instructions -Integrate Stagehand into the workflow. Can extract structured data from webpages. +Integrate Stagehand into the workflow. Can extract structured data from webpages or run an autonomous agent to perform tasks. @@ -41,7 +48,8 @@ Extract structured data from a webpage using Stagehand | --------- | ---- | -------- | ----------- | | `url` | string | Yes | URL of the webpage to extract data from | | `instruction` | string | Yes | Instructions for extraction | -| `apiKey` | string | Yes | OpenAI API key for extraction \(required by Stagehand\) | +| `provider` | string | No | AI provider to use: openai or anthropic | +| `apiKey` | string | Yes | API key for the selected provider | | `schema` | json | Yes | JSON schema defining the structure of the data to extract | #### Output @@ -50,6 +58,28 @@ Extract structured data from a webpage using Stagehand | --------- | ---- | ----------- | | `data` | object | Extracted structured data matching the provided schema | +### `stagehand_agent` + +Run an autonomous web agent to complete tasks and extract structured data + +#### Input + +| Parameter | Type | Required | Description | +| --------- | ---- | -------- | ----------- | +| `startUrl` | string | Yes | URL of the webpage to start the agent on | +| `task` | string | Yes | The task to complete or goal to achieve on the website | +| `variables` | json | No | Optional variables to substitute in the task \(format: \{key: value\}\). Reference in task using %key% | +| `format` | string | No | No description | +| `provider` | string | No | AI provider to use: openai or anthropic | +| `apiKey` | string | Yes | API key for the selected provider | +| `outputSchema` | json | No | Optional JSON schema defining the structure of data the agent should return | + +#### Output + +| Parameter | Type | Description | +| --------- | ---- | ----------- | +| `agentResult` | object | Result from the Stagehand agent execution | + ## Notes diff --git a/apps/docs/content/docs/en/tools/stagehand_agent.mdx b/apps/docs/content/docs/en/tools/stagehand_agent.mdx deleted file mode 100644 index ca9b84d18..000000000 --- a/apps/docs/content/docs/en/tools/stagehand_agent.mdx +++ /dev/null @@ -1,64 +0,0 @@ ---- -title: Stagehand Agent -description: Autonomous web browsing agent ---- - -import { BlockInfoCard } from "@/components/ui/block-info-card" - - - -{/* MANUAL-CONTENT-START:intro */} -[Stagehand](https://www.stagehand.dev/) is an autonomous web agent platform that enables AI systems to navigate and interact with websites just like a human would. It provides a powerful solution for automating complex web tasks without requiring custom code or browser automation scripts. - -With Stagehand, you can: - -- **Automate web navigation**: Enable AI to browse websites, click links, fill forms, and interact with web elements -- **Extract structured data**: Collect specific information from websites in a structured, usable format -- **Complete complex workflows**: Perform multi-step tasks across different websites and web applications -- **Handle authentication**: Navigate login processes and maintain sessions across websites -- **Process dynamic content**: Interact with JavaScript-heavy sites and single-page applications -- **Maintain context awareness**: Keep track of the current state and history while navigating -- **Generate detailed reports**: Receive comprehensive logs of actions taken and data collected - -In Sim, the Stagehand integration enables your agents to seamlessly interact with web-based systems as part of their workflows. This allows for sophisticated automation scenarios that bridge the gap between your AI agents and the vast information and functionality available on the web. Your agents can search for information, interact with web applications, extract data from websites, and incorporate these capabilities into their decision-making processes. By connecting Sim with Stagehand, you can create agents that extend beyond API-based integrations to navigate the web just as a human would - filling forms, clicking buttons, reading content, and extracting valuable information to complete their tasks more effectively. -{/* MANUAL-CONTENT-END */} - - -## Usage Instructions - -Integrate Stagehand Agent into the workflow. Can navigate the web and perform tasks. - - - -## Tools - -### `stagehand_agent` - -Run an autonomous web agent to complete tasks and extract structured data - -#### Input - -| Parameter | Type | Required | Description | -| --------- | ---- | -------- | ----------- | -| `startUrl` | string | Yes | URL of the webpage to start the agent on | -| `task` | string | Yes | The task to complete or goal to achieve on the website | -| `variables` | json | No | Optional variables to substitute in the task \(format: \{key: value\}\). Reference in task using %key% | -| `format` | string | No | No description | -| `apiKey` | string | Yes | OpenAI API key for agent execution \(required by Stagehand\) | -| `outputSchema` | json | No | Optional JSON schema defining the structure of data the agent should return | - -#### Output - -| Parameter | Type | Description | -| --------- | ---- | ----------- | -| `agentResult` | object | Result from the Stagehand agent execution | - - - -## Notes - -- Category: `tools` -- Type: `stagehand_agent` diff --git a/apps/docs/content/docs/en/tools/trello.mdx b/apps/docs/content/docs/en/tools/trello.mdx index 30142ba13..ac924c5f0 100644 --- a/apps/docs/content/docs/en/tools/trello.mdx +++ b/apps/docs/content/docs/en/tools/trello.mdx @@ -48,10 +48,8 @@ List all lists on a Trello board | Parameter | Type | Description | | --------- | ---- | ----------- | -| `success` | boolean | Whether the operation was successful | | `lists` | array | Array of list objects with id, name, closed, pos, and idBoard | | `count` | number | Number of lists returned | -| `error` | string | Error message if operation failed | ### `trello_list_cards` @@ -68,10 +66,8 @@ List all cards on a Trello board | Parameter | Type | Description | | --------- | ---- | ----------- | -| `success` | boolean | Whether the operation was successful | | `cards` | array | Array of card objects with id, name, desc, url, board/list IDs, labels, and due date | | `count` | number | Number of cards returned | -| `error` | string | Error message if operation failed | ### `trello_create_card` @@ -93,9 +89,7 @@ Create a new card on a Trello board | Parameter | Type | Description | | --------- | ---- | ----------- | -| `success` | boolean | Whether the card was created successfully | | `card` | object | The created card object with id, name, desc, url, and other properties | -| `error` | string | Error message if operation failed | ### `trello_update_card` @@ -117,9 +111,7 @@ Update an existing card on Trello | Parameter | Type | Description | | --------- | ---- | ----------- | -| `success` | boolean | Whether the card was updated successfully | | `card` | object | The updated card object with id, name, desc, url, and other properties | -| `error` | string | Error message if operation failed | ### `trello_get_actions` @@ -138,10 +130,8 @@ Get activity/actions from a board or card | Parameter | Type | Description | | --------- | ---- | ----------- | -| `success` | boolean | Whether the operation was successful | | `actions` | array | Array of action objects with type, date, member, and data | | `count` | number | Number of actions returned | -| `error` | string | Error message if operation failed | ### `trello_add_comment` @@ -158,9 +148,7 @@ Add a comment to a Trello card | Parameter | Type | Description | | --------- | ---- | ----------- | -| `success` | boolean | Whether the comment was added successfully | | `comment` | object | The created comment object with id, text, date, and member creator | -| `error` | string | Error message if operation failed | diff --git a/apps/docs/content/docs/en/tools/typeform.mdx b/apps/docs/content/docs/en/tools/typeform.mdx index 7aa4f4ca3..829fc6461 100644 --- a/apps/docs/content/docs/en/tools/typeform.mdx +++ b/apps/docs/content/docs/en/tools/typeform.mdx @@ -51,25 +51,9 @@ Retrieve form responses from Typeform | Parameter | Type | Description | | --------- | ---- | ----------- | -| `total_items` | number | Total response/form count | -| `page_count` | number | Total page count | -| `items` | json | Response/form items array | -| `id` | string | Form unique identifier | -| `title` | string | Form title | -| `type` | string | Form type | -| `created_at` | string | ISO timestamp of form creation | -| `last_updated_at` | string | ISO timestamp of last update | -| `settings` | json | Form settings object | -| `theme` | json | Theme configuration object | -| `workspace` | json | Workspace information | -| `fields` | json | Form fields/questions array | -| `thankyou_screens` | json | Thank you screens array | -| `_links` | json | Related resource links | -| `deleted` | boolean | Whether the form was successfully deleted | -| `message` | string | Deletion confirmation message | -| `fileUrl` | string | Downloaded file URL | -| `contentType` | string | File content type | -| `filename` | string | File name | +| `total_items` | number | Total number of responses | +| `page_count` | number | Total number of pages available | +| `items` | array | Array of response objects with response_id, submitted_at, answers, and metadata | ### `typeform_files` @@ -131,7 +115,7 @@ Retrieve a list of all forms in your Typeform account | --------- | ---- | ----------- | | `total_items` | number | Total number of forms in the account | | `page_count` | number | Total number of pages available | -| `items` | array | Array of form objects | +| `items` | array | Array of form objects with id, title, created_at, last_updated_at, settings, theme, and _links | ### `typeform_get_form` @@ -151,11 +135,13 @@ Retrieve complete details and structure of a specific form | `id` | string | Form unique identifier | | `title` | string | Form title | | `type` | string | Form type \(form, quiz, etc.\) | -| `created_at` | string | ISO timestamp of form creation | -| `last_updated_at` | string | ISO timestamp of last update | | `settings` | object | Form settings including language, progress bar, etc. | -| `theme` | object | Theme configuration with colors, fonts, and design settings | -| `workspace` | object | Workspace information | +| `theme` | object | Theme reference | +| `workspace` | object | Workspace reference | +| `fields` | array | Array of form fields/questions | +| `welcome_screens` | array | Array of welcome screens | +| `thankyou_screens` | array | Array of thank you screens | +| `_links` | object | Related resource links including public form URL | ### `typeform_create_form` @@ -180,13 +166,8 @@ Create a new form with fields and settings | `id` | string | Created form unique identifier | | `title` | string | Form title | | `type` | string | Form type | -| `created_at` | string | ISO timestamp of form creation | -| `last_updated_at` | string | ISO timestamp of last update | -| `settings` | object | Form settings | -| `theme` | object | Applied theme configuration | -| `workspace` | object | Workspace information | | `fields` | array | Array of created form fields | -| `_links` | object | Related resource links | +| `_links` | object | Related resource links including public form URL | ### `typeform_update_form` @@ -207,12 +188,11 @@ Update an existing form using JSON Patch operations | `id` | string | Updated form unique identifier | | `title` | string | Form title | | `type` | string | Form type | -| `created_at` | string | ISO timestamp of form creation | -| `last_updated_at` | string | ISO timestamp of last update | | `settings` | object | Form settings | -| `theme` | object | Theme configuration | -| `workspace` | object | Workspace information | +| `theme` | object | Theme reference | +| `workspace` | object | Workspace reference | | `fields` | array | Array of form fields | +| `welcome_screens` | array | Array of welcome screens | | `thankyou_screens` | array | Array of thank you screens | | `_links` | object | Related resource links | diff --git a/apps/docs/content/docs/en/tools/zep.mdx b/apps/docs/content/docs/en/tools/zep.mdx index 12b924a71..4b53ed8f4 100644 --- a/apps/docs/content/docs/en/tools/zep.mdx +++ b/apps/docs/content/docs/en/tools/zep.mdx @@ -96,10 +96,7 @@ Retrieve user context from a thread with summary or basic mode | Parameter | Type | Description | | --------- | ---- | ----------- | -| `context` | string | The context string \(summary or basic\) | -| `facts` | array | Extracted facts | -| `entities` | array | Extracted entities | -| `summary` | string | Conversation summary | +| `context` | string | The context string \(summary or basic mode\) | ### `zep_get_messages` @@ -139,9 +136,9 @@ Add messages to an existing thread | Parameter | Type | Description | | --------- | ---- | ----------- | -| `context` | string | Updated context after adding messages | -| `messageIds` | array | Array of added message UUIDs | | `threadId` | string | The thread ID | +| `added` | boolean | Whether messages were added successfully | +| `messageIds` | array | Array of added message UUIDs | ### `zep_add_user` @@ -211,7 +208,7 @@ List all conversation threads for a specific user | Parameter | Type | Description | | --------- | ---- | ----------- | | `threads` | array | Array of thread objects for this user | -| `userId` | string | The user ID | +| `totalCount` | number | Total number of threads returned | diff --git a/apps/docs/content/docs/es/tools/apify.mdx b/apps/docs/content/docs/es/tools/apify.mdx index 5a712eee1..0e925d41c 100644 --- a/apps/docs/content/docs/es/tools/apify.mdx +++ b/apps/docs/content/docs/es/tools/apify.mdx @@ -54,7 +54,6 @@ Ejecuta un actor de APIFY de forma sincrónica y obtén resultados (máximo 5 mi | `success` | boolean | Si la ejecución del actor tuvo éxito | | `runId` | string | ID de ejecución de APIFY | | `status` | string | Estado de la ejecución \(SUCCEEDED, FAILED, etc.\) | -| `datasetId` | string | ID del conjunto de datos que contiene los resultados | | `items` | array | Elementos del conjunto de datos \(si se completó\) | ### `apify_run_actor_async` diff --git a/apps/docs/content/docs/es/tools/asana.mdx b/apps/docs/content/docs/es/tools/asana.mdx index ce12a8ea9..908d4c2d4 100644 --- a/apps/docs/content/docs/es/tools/asana.mdx +++ b/apps/docs/content/docs/es/tools/asana.mdx @@ -34,7 +34,14 @@ Recupera una tarea individual por GID u obtén múltiples tareas con filtros | Parámetro | Tipo | Descripción | | --------- | ---- | ----------- | | `success` | boolean | Estado de éxito de la operación | -| `output` | object | Detalles de una tarea individual o matriz de tareas, dependiendo de si se proporcionó taskGid | +| `ts` | string | Marca de tiempo de la respuesta | +| `gid` | string | Identificador único global de la tarea | +| `resource_type` | string | Tipo de recurso \(tarea\) | +| `resource_subtype` | string | Subtipo de recurso | +| `name` | string | Nombre de la tarea | +| `notes` | string | Notas o descripción de la tarea | +| `completed` | boolean | Si la tarea está completada | +| `assignee` | object | Detalles del asignado | ### `asana_create_task` @@ -55,7 +62,13 @@ Crear una nueva tarea en Asana | Parámetro | Tipo | Descripción | | --------- | ---- | ----------- | | `success` | boolean | Estado de éxito de la operación | -| `output` | object | Detalles de la tarea creada con marca de tiempo, gid, nombre, notas y enlace permanente | +| `ts` | string | Marca de tiempo de la respuesta | +| `gid` | string | Identificador único global de la tarea | +| `name` | string | Nombre de la tarea | +| `notes` | string | Notas o descripción de la tarea | +| `completed` | boolean | Si la tarea está completada | +| `created_at` | string | Marca de tiempo de creación de la tarea | +| `permalink_url` | string | URL a la tarea en Asana | ### `asana_update_task` @@ -77,7 +90,12 @@ Actualizar una tarea existente en Asana | Parámetro | Tipo | Descripción | | --------- | ---- | ----------- | | `success` | boolean | Estado de éxito de la operación | -| `output` | object | Detalles actualizados de la tarea con marca de tiempo, gid, nombre, notas y marca de tiempo de modificación | +| `ts` | string | Marca de tiempo de la respuesta | +| `gid` | string | Identificador único global de la tarea | +| `name` | string | Nombre de la tarea | +| `notes` | string | Notas o descripción de la tarea | +| `completed` | boolean | Si la tarea está completada | +| `modified_at` | string | Marca de tiempo de última modificación de la tarea | ### `asana_get_projects` @@ -94,7 +112,8 @@ Recuperar todos los proyectos de un espacio de trabajo de Asana | Parámetro | Tipo | Descripción | | --------- | ---- | ----------- | | `success` | boolean | Estado de éxito de la operación | -| `output` | object | Lista de proyectos con su gid, nombre y tipo de recurso | +| `ts` | string | Marca de tiempo de la respuesta | +| `projects` | array | Array de proyectos | ### `asana_search_tasks` @@ -115,7 +134,8 @@ Buscar tareas en un espacio de trabajo de Asana | Parámetro | Tipo | Descripción | | --------- | ---- | ----------- | | `success` | boolean | Estado de éxito de la operación | -| `output` | object | Lista de tareas que coinciden con los criterios de búsqueda | +| `ts` | string | Marca de tiempo de la respuesta | +| `tasks` | array | Array de tareas coincidentes | ### `asana_add_comment` @@ -133,7 +153,11 @@ Añadir un comentario (historia) a una tarea de Asana | Parámetro | Tipo | Descripción | | --------- | ---- | ----------- | | `success` | boolean | Estado de éxito de la operación | -| `output` | object | Detalles del comentario incluyendo gid, texto, marca de tiempo de creación y autor | +| `ts` | string | Marca de tiempo de la respuesta | +| `gid` | string | Identificador único global del comentario | +| `text` | string | Contenido de texto del comentario | +| `created_at` | string | Marca de tiempo de creación del comentario | +| `created_by` | object | Detalles del autor del comentario | ## Notas diff --git a/apps/docs/content/docs/es/tools/confluence.mdx b/apps/docs/content/docs/es/tools/confluence.mdx index f1d1cd6e4..6af60fdd6 100644 --- a/apps/docs/content/docs/es/tools/confluence.mdx +++ b/apps/docs/content/docs/es/tools/confluence.mdx @@ -221,17 +221,44 @@ Eliminar un comentario de una página de Confluence. | `commentId` | string | ID del comentario eliminado | | `deleted` | boolean | Estado de eliminación | -### `confluence_list_attachments` +### `confluence_upload_attachment` -Listar todos los archivos adjuntos en una página de Confluence. +Sube un archivo como adjunto a una página de Confluence. #### Entrada | Parámetro | Tipo | Obligatorio | Descripción | | --------- | ---- | -------- | ----------- | | `domain` | string | Sí | Tu dominio de Confluence \(p. ej., tuempresa.atlassian.net\) | -| `pageId` | string | Sí | ID de la página de Confluence de la que listar los archivos adjuntos | -| `limit` | number | No | Número máximo de archivos adjuntos a devolver \(predeterminado: 25\) | +| `pageId` | string | Sí | ID de la página de Confluence a la que adjuntar el archivo | +| `file` | file | Sí | El archivo a subir como adjunto | +| `fileName` | string | No | Nombre de archivo personalizado opcional para el adjunto | +| `comment` | string | No | Comentario opcional para añadir al adjunto | +| `cloudId` | string | No | ID de Confluence Cloud para la instancia. Si no se proporciona, se obtendrá utilizando el dominio. | + +#### Salida + +| Parámetro | Tipo | Descripción | +| --------- | ---- | ----------- | +| `ts` | string | Marca de tiempo de la subida | +| `attachmentId` | string | ID del adjunto subido | +| `title` | string | Nombre del archivo adjunto | +| `fileSize` | number | Tamaño del archivo en bytes | +| `mediaType` | string | Tipo MIME del adjunto | +| `downloadUrl` | string | URL de descarga del adjunto | +| `pageId` | string | ID de la página a la que se añadió el adjunto | + +### `confluence_list_attachments` + +Lista todos los adjuntos en una página de Confluence. + +#### Entrada + +| Parámetro | Tipo | Obligatorio | Descripción | +| --------- | ---- | -------- | ----------- | +| `domain` | string | Sí | Tu dominio de Confluence \(p. ej., tuempresa.atlassian.net\) | +| `pageId` | string | Sí | ID de la página de Confluence de la que listar adjuntos | +| `limit` | number | No | Número máximo de adjuntos a devolver \(predeterminado: 25\) | | `cloudId` | string | No | ID de Confluence Cloud para la instancia. Si no se proporciona, se obtendrá utilizando el dominio. | #### Salida @@ -239,31 +266,31 @@ Listar todos los archivos adjuntos en una página de Confluence. | Parámetro | Tipo | Descripción | | --------- | ---- | ----------- | | `ts` | string | Marca de tiempo de la recuperación | -| `attachments` | array | Lista de adjuntos | +| `attachments` | array | Lista de archivos adjuntos | ### `confluence_delete_attachment` -Eliminar un adjunto de una página de Confluence (se mueve a la papelera). +Eliminar un archivo adjunto de una página de Confluence (lo mueve a la papelera). #### Entrada | Parámetro | Tipo | Obligatorio | Descripción | | --------- | ---- | -------- | ----------- | | `domain` | string | Sí | Tu dominio de Confluence \(p. ej., tuempresa.atlassian.net\) | -| `attachmentId` | string | Sí | ID del adjunto de Confluence a eliminar | +| `attachmentId` | string | Sí | ID del archivo adjunto de Confluence a eliminar | | `cloudId` | string | No | ID de Confluence Cloud para la instancia. Si no se proporciona, se obtendrá utilizando el dominio. | #### Salida | Parámetro | Tipo | Descripción | | --------- | ---- | ----------- | -| `ts` | string | Marca de tiempo de la eliminación | -| `attachmentId` | string | ID del adjunto eliminado | -| `deleted` | boolean | Estado de la eliminación | +| `ts` | string | Marca de tiempo de eliminación | +| `attachmentId` | string | ID del archivo adjunto eliminado | +| `deleted` | boolean | Estado de eliminación | ### `confluence_list_labels` -Listar todas las etiquetas en una página de Confluence. +Listar todas las etiquetas de una página de Confluence. #### Entrada diff --git a/apps/docs/content/docs/es/tools/firecrawl.mdx b/apps/docs/content/docs/es/tools/firecrawl.mdx index 38500db4f..486d73d9e 100644 --- a/apps/docs/content/docs/es/tools/firecrawl.mdx +++ b/apps/docs/content/docs/es/tools/firecrawl.mdx @@ -144,8 +144,7 @@ Extrae datos estructurados de páginas web completas utilizando instrucciones en | Parámetro | Tipo | Descripción | | --------- | ---- | ----------- | | `success` | boolean | Si la operación de extracción fue exitosa | -| `data` | object | Datos estructurados extraídos según el esquema o prompt | -| `sources` | array | Fuentes de datos \(solo si showSources está habilitado\) | +| `data` | object | Datos estructurados extraídos según el esquema o indicación | ## Notas diff --git a/apps/docs/content/docs/es/tools/google_groups.mdx b/apps/docs/content/docs/es/tools/google_groups.mdx index 174b05701..3b8cce974 100644 --- a/apps/docs/content/docs/es/tools/google_groups.mdx +++ b/apps/docs/content/docs/es/tools/google_groups.mdx @@ -34,7 +34,8 @@ Listar todos los grupos en un dominio de Google Workspace | Parámetro | Tipo | Descripción | | --------- | ---- | ----------- | -| `output` | json | Datos de respuesta de la API de Google Groups | +| `groups` | json | Array de objetos de grupo | +| `nextPageToken` | string | Token para obtener la siguiente página de resultados | ### `google_groups_get_group` @@ -50,7 +51,7 @@ Obtener detalles de un Grupo de Google específico por correo electrónico o ID | Parámetro | Tipo | Descripción | | --------- | ---- | ----------- | -| `output` | json | Datos de respuesta de la API de Google Groups | +| `group` | json | Objeto de grupo | ### `google_groups_create_group` @@ -68,7 +69,7 @@ Crear un nuevo Grupo de Google en el dominio | Parámetro | Tipo | Descripción | | --------- | ---- | ----------- | -| `output` | json | Datos de respuesta de la API de Google Groups | +| `group` | json | Objeto de grupo creado | ### `google_groups_update_group` @@ -87,7 +88,7 @@ Actualizar un grupo de Google existente | Parámetro | Tipo | Descripción | | --------- | ---- | ----------- | -| `output` | json | Datos de respuesta de la API de Google Groups | +| `group` | json | Objeto de grupo actualizado | ### `google_groups_delete_group` @@ -103,7 +104,7 @@ Eliminar un grupo de Google | Parámetro | Tipo | Descripción | | --------- | ---- | ----------- | -| `output` | json | Datos de respuesta de la API de Google Groups | +| `message` | string | Mensaje de éxito | ### `google_groups_list_members` @@ -122,7 +123,8 @@ Listar todos los miembros de un Grupo de Google | Parámetro | Tipo | Descripción | | --------- | ---- | ----------- | -| `output` | json | Datos de respuesta de la API de Grupos de Google | +| `members` | json | Array de objetos de miembro | +| `nextPageToken` | string | Token para obtener la siguiente página de resultados | ### `google_groups_get_member` @@ -139,7 +141,7 @@ Obtener detalles de un miembro específico en un Grupo de Google | Parámetro | Tipo | Descripción | | --------- | ---- | ----------- | -| `output` | json | Datos de respuesta de la API de Grupos de Google | +| `member` | json | Objeto de miembro | ### `google_groups_add_member` @@ -157,7 +159,7 @@ Añadir un nuevo miembro a un Grupo de Google | Parámetro | Tipo | Descripción | | --------- | ---- | ----------- | -| `output` | json | Datos de respuesta de la API de Google Groups | +| `member` | json | Objeto de miembro añadido | ### `google_groups_remove_member` @@ -174,7 +176,7 @@ Eliminar un miembro de un grupo de Google | Parámetro | Tipo | Descripción | | --------- | ---- | ----------- | -| `output` | json | Datos de respuesta de la API de Google Groups | +| `message` | string | Mensaje de éxito | ### `google_groups_update_member` @@ -192,7 +194,7 @@ Actualizar un miembro | Parámetro | Tipo | Descripción | | --------- | ---- | ----------- | -| `output` | json | Datos de respuesta de la API de Google Groups | +| `member` | json | Objeto de miembro actualizado | ### `google_groups_has_member` @@ -209,7 +211,7 @@ Comprobar si un usuario es miembro de un grupo de Google | Parámetro | Tipo | Descripción | | --------- | ---- | ----------- | -| `output` | json | Datos de respuesta de la API de Google Groups | +| `isMember` | boolean | Indica si el usuario es miembro del grupo | ## Notas diff --git a/apps/docs/content/docs/es/tools/google_vault.mdx b/apps/docs/content/docs/es/tools/google_vault.mdx index f5fccbca7..69d0068fe 100644 --- a/apps/docs/content/docs/es/tools/google_vault.mdx +++ b/apps/docs/content/docs/es/tools/google_vault.mdx @@ -34,8 +34,7 @@ Crear una exportación en un asunto | Parámetro | Tipo | Descripción | | --------- | ---- | ----------- | -| `output` | json | Datos de respuesta de la API de Vault | -| `file` | json | Archivo de exportación descargado \(UserFile\) de los archivos de ejecución | +| `export` | json | Objeto de exportación creado | ### `google_vault_list_matters_export` @@ -54,8 +53,9 @@ Listar exportaciones para un asunto | Parámetro | Tipo | Descripción | | --------- | ---- | ----------- | -| `output` | json | Datos de respuesta de la API de Vault | -| `file` | json | Archivo de exportación descargado \(UserFile\) de los archivos de ejecución | +| `exports` | json | Array de objetos de exportación | +| `export` | json | Objeto de exportación único \(cuando se proporciona exportId\) | +| `nextPageToken` | string | Token para obtener la siguiente página de resultados | ### `google_vault_download_export_file` @@ -94,8 +94,7 @@ Crear una retención en un asunto | Parámetro | Tipo | Descripción | | --------- | ---- | ----------- | -| `output` | json | Datos de respuesta de la API de Vault | -| `file` | json | Archivo de exportación descargado \(UserFile\) de los archivos de ejecución | +| `hold` | json | Objeto de retención creado | ### `google_vault_list_matters_holds` @@ -114,8 +113,9 @@ Listar retenciones para un asunto | Parámetro | Tipo | Descripción | | --------- | ---- | ----------- | -| `output` | json | Datos de respuesta de la API de Vault | -| `file` | json | Archivo de exportación descargado (UserFile) de los archivos de ejecución | +| `holds` | json | Array de objetos de retención | +| `hold` | json | Objeto de retención único \(cuando se proporciona holdId\) | +| `nextPageToken` | string | Token para obtener la siguiente página de resultados | ### `google_vault_create_matters` @@ -132,8 +132,7 @@ Crear un nuevo asunto en Google Vault | Parámetro | Tipo | Descripción | | --------- | ---- | ----------- | -| `output` | json | Datos de respuesta de la API de Vault | -| `file` | json | Archivo de exportación descargado (UserFile) de los archivos de ejecución | +| `matter` | json | Objeto de asunto creado | ### `google_vault_list_matters` @@ -151,8 +150,9 @@ Listar asuntos, o obtener un asunto específico si se proporciona matterId | Parámetro | Tipo | Descripción | | --------- | ---- | ----------- | -| `output` | json | Datos de respuesta de la API de Vault | -| `file` | json | Archivo de exportación descargado (UserFile) de los archivos de ejecución | +| `matters` | json | Array de objetos de asunto | +| `matter` | json | Objeto de asunto único \(cuando se proporciona matterId\) | +| `nextPageToken` | string | Token para obtener la siguiente página de resultados | ## Notas diff --git a/apps/docs/content/docs/es/tools/grafana.mdx b/apps/docs/content/docs/es/tools/grafana.mdx index 8b2d0cd5f..dec6c4544 100644 --- a/apps/docs/content/docs/es/tools/grafana.mdx +++ b/apps/docs/content/docs/es/tools/grafana.mdx @@ -318,10 +318,10 @@ Crear una anotación en un panel o como una anotación global | --------- | ---- | -------- | ----------- | | `apiKey` | string | Sí | Token de cuenta de servicio de Grafana | | `baseUrl` | string | Sí | URL de la instancia de Grafana \(p. ej., https://your-grafana.com\) | -| `organizationId` | string | No | ID de la organización para instancias de Grafana multi-organización | +| `organizationId` | string | No | ID de organización para instancias Grafana multi-organización | | `text` | string | Sí | El contenido de texto de la anotación | | `tags` | string | No | Lista de etiquetas separadas por comas | -| `dashboardUid` | string | No | UID del panel donde añadir la anotación \(opcional para anotaciones globales\) | +| `dashboardUid` | string | Sí | UID del panel de control donde añadir la anotación | | `panelId` | number | No | ID del panel donde añadir la anotación | | `time` | number | No | Hora de inicio en milisegundos de época \(por defecto es ahora\) | | `timeEnd` | number | No | Hora de finalización en milisegundos de época \(para anotaciones de rango\) | @@ -343,11 +343,11 @@ Consultar anotaciones por rango de tiempo, panel o etiquetas | --------- | ---- | -------- | ----------- | | `apiKey` | string | Sí | Token de cuenta de servicio de Grafana | | `baseUrl` | string | Sí | URL de la instancia de Grafana \(p. ej., https://your-grafana.com\) | -| `organizationId` | string | No | ID de la organización para instancias de Grafana multi-organización | +| `organizationId` | string | No | ID de organización para instancias Grafana multi-organización | | `from` | number | No | Hora de inicio en milisegundos de época | | `to` | number | No | Hora de finalización en milisegundos de época | -| `dashboardUid` | string | No | Filtrar por UID del panel | -| `panelId` | number | No | Filtrar por ID del panel | +| `dashboardUid` | string | Sí | UID del panel de control para consultar anotaciones | +| `panelId` | number | No | Filtrar por ID de panel | | `tags` | string | No | Lista de etiquetas separadas por comas para filtrar | | `type` | string | No | Filtrar por tipo \(alerta o anotación\) | | `limit` | number | No | Número máximo de anotaciones a devolver | @@ -487,6 +487,16 @@ Crear una nueva carpeta en Grafana | `uid` | string | El UID de la carpeta creada | | `title` | string | El título de la carpeta creada | | `url` | string | La ruta URL a la carpeta | +| `hasAcl` | boolean | Si la carpeta tiene permisos ACL personalizados | +| `canSave` | boolean | Si el usuario actual puede guardar la carpeta | +| `canEdit` | boolean | Si el usuario actual puede editar la carpeta | +| `canAdmin` | boolean | Si el usuario actual tiene derechos de administrador en la carpeta | +| `canDelete` | boolean | Si el usuario actual puede eliminar la carpeta | +| `createdBy` | string | Nombre de usuario de quien creó la carpeta | +| `created` | string | Marca de tiempo cuando se creó la carpeta | +| `updatedBy` | string | Nombre de usuario de quien actualizó por última vez la carpeta | +| `updated` | string | Marca de tiempo cuando se actualizó por última vez la carpeta | +| `version` | number | Número de versión de la carpeta | ## Notas diff --git a/apps/docs/content/docs/es/tools/hubspot.mdx b/apps/docs/content/docs/es/tools/hubspot.mdx index 59823cd34..eb74136eb 100644 --- a/apps/docs/content/docs/es/tools/hubspot.mdx +++ b/apps/docs/content/docs/es/tools/hubspot.mdx @@ -47,8 +47,9 @@ Recuperar todos los usuarios de la cuenta de HubSpot | Parámetro | Tipo | Descripción | | --------- | ---- | ----------- | +| `users` | array | Array de objetos de usuario de HubSpot | +| `metadata` | object | Metadatos de la operación | | `success` | boolean | Estado de éxito de la operación | -| `output` | object | Datos de usuarios | ### `hubspot_list_contacts` @@ -67,8 +68,10 @@ Recuperar todos los contactos de la cuenta de HubSpot con soporte de paginación | Parámetro | Tipo | Descripción | | --------- | ---- | ----------- | +| `contacts` | array | Array de objetos de contacto de HubSpot | +| `paging` | object | Información de paginación | +| `metadata` | object | Metadatos de la operación | | `success` | boolean | Estado de éxito de la operación | -| `output` | object | Datos de contactos | ### `hubspot_get_contact` @@ -87,8 +90,9 @@ Recuperar un solo contacto por ID o email desde HubSpot | Parámetro | Tipo | Descripción | | --------- | ---- | ----------- | +| `contact` | object | Objeto de contacto de HubSpot con propiedades | +| `metadata` | object | Metadatos de la operación | | `success` | boolean | Estado de éxito de la operación | -| `output` | object | Datos del contacto | ### `hubspot_create_contact` @@ -105,8 +109,9 @@ Crear un nuevo contacto en HubSpot. Requiere al menos uno de: email, firstname o | Parámetro | Tipo | Descripción | | --------- | ---- | ----------- | +| `contact` | object | Objeto de contacto de HubSpot creado | +| `metadata` | object | Metadatos de la operación | | `success` | boolean | Estado de éxito de la operación | -| `output` | objeto | Datos del contacto creado | ### `hubspot_update_contact` @@ -124,8 +129,9 @@ Actualizar un contacto existente en HubSpot por ID o email | Parámetro | Tipo | Descripción | | --------- | ---- | ----------- | +| `contact` | object | Objeto de contacto de HubSpot actualizado | +| `metadata` | object | Metadatos de la operación | | `success` | boolean | Estado de éxito de la operación | -| `output` | objeto | Datos del contacto actualizado | ### `hubspot_search_contacts` @@ -146,8 +152,11 @@ Buscar contactos en HubSpot usando filtros, ordenación y consultas | Parámetro | Tipo | Descripción | | --------- | ---- | ----------- | +| `contacts` | array | Array de objetos de contacto de HubSpot coincidentes | +| `total` | number | Número total de contactos coincidentes | +| `paging` | object | Información de paginación | +| `metadata` | object | Metadatos de la operación | | `success` | boolean | Estado de éxito de la operación | -| `output` | object | Resultados de la búsqueda | ### `hubspot_list_companies` @@ -166,8 +175,10 @@ Recuperar todas las empresas de la cuenta de HubSpot con soporte de paginación | Parámetro | Tipo | Descripción | | --------- | ---- | ----------- | +| `companies` | array | Array de objetos de empresa de HubSpot | +| `paging` | object | Información de paginación | +| `metadata` | object | Metadatos de la operación | | `success` | boolean | Estado de éxito de la operación | -| `output` | object | Datos de las empresas | ### `hubspot_get_company` @@ -186,8 +197,9 @@ Recuperar una sola empresa por ID o dominio desde HubSpot | Parámetro | Tipo | Descripción | | --------- | ---- | ----------- | +| `company` | object | Objeto de empresa de HubSpot con propiedades | +| `metadata` | object | Metadatos de la operación | | `success` | boolean | Estado de éxito de la operación | -| `output` | object | Datos de la empresa | ### `hubspot_create_company` @@ -204,8 +216,9 @@ Crear una nueva empresa en HubSpot | Parámetro | Tipo | Descripción | | --------- | ---- | ----------- | +| `company` | object | Objeto de empresa de HubSpot creado | +| `metadata` | object | Metadatos de la operación | | `success` | boolean | Estado de éxito de la operación | -| `output` | object | Datos de la empresa creada | ### `hubspot_update_company` @@ -223,8 +236,9 @@ Actualizar una empresa existente en HubSpot por ID o dominio | Parámetro | Tipo | Descripción | | --------- | ---- | ----------- | +| `company` | object | Objeto de empresa de HubSpot actualizado | +| `metadata` | object | Metadatos de la operación | | `success` | boolean | Estado de éxito de la operación | -| `output` | object | Datos actualizados de la empresa | ### `hubspot_search_companies` @@ -245,8 +259,11 @@ Buscar empresas en HubSpot usando filtros, ordenación y consultas | Parámetro | Tipo | Descripción | | --------- | ---- | ----------- | +| `companies` | array | Array de objetos de empresa de HubSpot coincidentes | +| `total` | number | Número total de empresas coincidentes | +| `paging` | object | Información de paginación | +| `metadata` | object | Metadatos de la operación | | `success` | boolean | Estado de éxito de la operación | -| `output` | object | Resultados de la búsqueda | ### `hubspot_list_deals` @@ -265,8 +282,10 @@ Recuperar todos los acuerdos de la cuenta de HubSpot con soporte de paginación | Parámetro | Tipo | Descripción | | --------- | ---- | ----------- | +| `deals` | array | Array de objetos de negocio de HubSpot | +| `paging` | object | Información de paginación | +| `metadata` | object | Metadatos de la operación | | `success` | boolean | Estado de éxito de la operación | -| `output` | object | Datos de ofertas | ## Notas diff --git a/apps/docs/content/docs/es/tools/pipedrive.mdx b/apps/docs/content/docs/es/tools/pipedrive.mdx index 2bf2798f9..1a20d1969 100644 --- a/apps/docs/content/docs/es/tools/pipedrive.mdx +++ b/apps/docs/content/docs/es/tools/pipedrive.mdx @@ -51,8 +51,9 @@ Recupera todos los acuerdos de Pipedrive con filtros opcionales | Parámetro | Tipo | Descripción | | --------- | ---- | ----------- | +| `deals` | array | Array de objetos de acuerdos de Pipedrive | +| `metadata` | object | Metadatos de la operación | | `success` | boolean | Estado de éxito de la operación | -| `output` | object | Datos y metadatos de los acuerdos | ### `pipedrive_get_deal` @@ -68,8 +69,9 @@ Recuperar información detallada sobre un acuerdo específico | Parámetro | Tipo | Descripción | | --------- | ---- | ----------- | +| `deal` | object | Objeto de acuerdo con detalles completos | +| `metadata` | object | Metadatos de la operación | | `success` | boolean | Estado de éxito de la operación | -| `output` | object | Detalles del acuerdo | ### `pipedrive_create_deal` @@ -93,8 +95,9 @@ Crear un nuevo acuerdo en Pipedrive | Parámetro | Tipo | Descripción | | --------- | ---- | ----------- | +| `deal` | object | El objeto de acuerdo creado | +| `metadata` | object | Metadatos de la operación | | `success` | boolean | Estado de éxito de la operación | -| `output` | object | Detalles del acuerdo creado | ### `pipedrive_update_deal` @@ -115,8 +118,9 @@ Actualizar un acuerdo existente en Pipedrive | Parámetro | Tipo | Descripción | | --------- | ---- | ----------- | +| `deal` | object | El objeto de acuerdo actualizado | +| `metadata` | object | Metadatos de la operación | | `success` | boolean | Estado de éxito de la operación | -| `output` | object | Detalles del acuerdo actualizado | ### `pipedrive_get_files` @@ -135,8 +139,9 @@ Recuperar archivos de Pipedrive con filtros opcionales | Parámetro | Tipo | Descripción | | --------- | ---- | ----------- | +| `files` | array | Array de objetos de archivo de Pipedrive | +| `metadata` | object | Metadatos de la operación | | `success` | boolean | Estado de éxito de la operación | -| `output` | object | Datos de archivos | ### `pipedrive_get_mail_messages` @@ -153,8 +158,9 @@ Recuperar hilos de correo del buzón de Pipedrive | Parámetro | Tipo | Descripción | | --------- | ---- | ----------- | +| `messages` | array | Array de objetos de hilos de correo del buzón de Pipedrive | +| `metadata` | object | Metadatos de la operación | | `success` | boolean | Estado de éxito de la operación | -| `output` | object | Datos de hilos de correo | ### `pipedrive_get_mail_thread` @@ -170,8 +176,9 @@ Recuperar todos los mensajes de un hilo de correo específico | Parámetro | Tipo | Descripción | | --------- | ---- | ----------- | +| `messages` | array | Array de objetos de mensajes de correo del hilo | +| `metadata` | object | Metadatos de la operación incluyendo ID del hilo | | `success` | boolean | Estado de éxito de la operación | -| `output` | object | Datos de mensajes del hilo de correo | ### `pipedrive_get_pipelines` @@ -190,8 +197,9 @@ Recuperar todos los pipelines de Pipedrive | Parámetro | Tipo | Descripción | | --------- | ---- | ----------- | +| `pipelines` | array | Array de objetos de pipeline de Pipedrive | +| `metadata` | object | Metadatos de la operación | | `success` | boolean | Estado de éxito de la operación | -| `output` | object | Datos de los pipelines | ### `pipedrive_get_pipeline_deals` @@ -210,8 +218,9 @@ Recuperar todos los acuerdos en un pipeline específico | Parámetro | Tipo | Descripción | | --------- | ---- | ----------- | +| `deals` | array | Array de objetos de acuerdos del pipeline | +| `metadata` | object | Metadatos de la operación incluyendo ID del pipeline | | `success` | boolean | Estado de éxito de la operación | -| `output` | object | Datos de acuerdos del pipeline | ### `pipedrive_get_projects` @@ -229,8 +238,10 @@ Recuperar todos los proyectos o un proyecto específico de Pipedrive | Parámetro | Tipo | Descripción | | --------- | ---- | ----------- | +| `projects` | array | Array de objetos de proyectos \(al listar todos\) | +| `project` | object | Objeto de un solo proyecto \(cuando se proporciona project_id\) | +| `metadata` | object | Metadatos de la operación | | `success` | boolean | Estado de éxito de la operación | -| `output` | object | Datos de proyectos o detalles de un solo proyecto | ### `pipedrive_create_project` @@ -249,8 +260,9 @@ Crear un nuevo proyecto en Pipedrive | Parámetro | Tipo | Descripción | | --------- | ---- | ----------- | +| `project` | object | El objeto del proyecto creado | +| `metadata` | object | Metadatos de la operación | | `success` | boolean | Estado de éxito de la operación | -| `output` | object | Detalles del proyecto creado | ### `pipedrive_get_activities` @@ -271,8 +283,9 @@ Recuperar actividades (tareas) de Pipedrive con filtros opcionales | Parámetro | Tipo | Descripción | | --------- | ---- | ----------- | +| `activities` | array | Array de objetos de actividades de Pipedrive | +| `metadata` | object | Metadatos de la operación | | `success` | boolean | Estado de éxito de la operación | -| `output` | object | Datos de actividades | ### `pipedrive_create_activity` @@ -296,8 +309,9 @@ Crear una nueva actividad (tarea) en Pipedrive | Parámetro | Tipo | Descripción | | --------- | ---- | ----------- | +| `activity` | object | El objeto de actividad creado | +| `metadata` | object | Metadatos de la operación | | `success` | boolean | Estado de éxito de la operación | -| `output` | object | Detalles de la actividad creada | ### `pipedrive_update_activity` @@ -319,8 +333,9 @@ Actualizar una actividad existente (tarea) en Pipedrive | Parámetro | Tipo | Descripción | | --------- | ---- | ----------- | +| `activity` | object | El objeto de actividad actualizado | +| `metadata` | object | Metadatos de la operación | | `success` | boolean | Estado de éxito de la operación | -| `output` | object | Detalles de la actividad actualizada | ### `pipedrive_get_leads` @@ -341,8 +356,10 @@ Recuperar todos los leads o un lead específico de Pipedrive | Parámetro | Tipo | Descripción | | --------- | ---- | ----------- | +| `leads` | array | Array de objetos de leads \(al listar todos\) | +| `lead` | object | Objeto de lead individual \(cuando se proporciona lead_id\) | +| `metadata` | object | Metadatos de la operación | | `success` | boolean | Estado de éxito de la operación | -| `output` | object | Datos de leads o detalles de un solo lead | ### `pipedrive_create_lead` @@ -365,8 +382,9 @@ Crear un nuevo lead en Pipedrive | Parámetro | Tipo | Descripción | | --------- | ---- | ----------- | +| `lead` | object | El objeto de lead creado | +| `metadata` | object | Metadatos de la operación | | `success` | boolean | Estado de éxito de la operación | -| `output` | object | Detalles del lead creado | ### `pipedrive_update_lead` @@ -390,8 +408,9 @@ Actualizar un lead existente en Pipedrive | Parámetro | Tipo | Descripción | | --------- | ---- | ----------- | +| `lead` | object | El objeto de lead actualizado | +| `metadata` | object | Metadatos de la operación | | `success` | boolean | Estado de éxito de la operación | -| `output` | object | Detalles del lead actualizado | ### `pipedrive_delete_lead` @@ -407,8 +426,9 @@ Eliminar un lead específico de Pipedrive | Parámetro | Tipo | Descripción | | --------- | ---- | ----------- | +| `data` | object | Datos de confirmación de eliminación | +| `metadata` | object | Metadatos de la operación | | `success` | boolean | Estado de éxito de la operación | -| `output` | object | Resultado de la eliminación | ## Notas diff --git a/apps/docs/content/docs/es/tools/pylon.mdx b/apps/docs/content/docs/es/tools/pylon.mdx deleted file mode 100644 index 1689af5bb..000000000 --- a/apps/docs/content/docs/es/tools/pylon.mdx +++ /dev/null @@ -1,807 +0,0 @@ ---- -title: Pylon -description: Gestiona problemas de atención al cliente, cuentas, contactos, - usuarios, equipos y etiquetas en Pylon ---- - -import { BlockInfoCard } from "@/components/ui/block-info-card" - - - -{/* MANUAL-CONTENT-START:intro */} -[Pylon](https://usepylon.com/) es una plataforma avanzada de soporte y éxito del cliente diseñada para ayudarte a gestionar todos los aspectos de tus relaciones con los clientes—desde problemas de soporte hasta cuentas, contactos, usuarios, equipos y más. Pylon permite a los equipos de soporte y éxito operar de manera eficiente y programática con una API rica y un conjunto completo de herramientas. - -Con Pylon en Sim, puedes: - -- **Gestionar problemas de soporte:** - - Listar, crear, obtener, actualizar y eliminar problemas de soporte para un seguimiento eficiente de casos. - - Buscar y posponer problemas para ayudar a los agentes a mantenerse enfocados y organizados. - - Manejar seguidores de problemas y problemas externos para una colaboración fluida con partes interesadas internas y externas. - -- **Gestión completa de cuentas:** - - Listar, crear, obtener, actualizar y eliminar cuentas de clientes. - - Actualizar cuentas en masa de forma programática. - - Buscar cuentas para encontrar rápidamente información de clientes relevante para soporte o contacto. - -- **Gestión de contactos:** - - Listar, crear, obtener, actualizar, eliminar y buscar contactos—gestiona a todas las personas conectadas a tus cuentas. - -- **Operaciones de usuarios y equipos:** - - Listar, obtener, actualizar y buscar usuarios en tu espacio de trabajo de Pylon. - - Listar, crear, obtener y actualizar equipos para estructurar tu organización de soporte y flujos de trabajo. - -- **Etiquetado y organización:** - - Listar, obtener, crear, actualizar y eliminar etiquetas para categorizar problemas, cuentas o contactos. - -- **Gestión de mensajes:** - - Redactar contenido sensible de mensajes directamente desde tus flujos de trabajo para privacidad y cumplimiento. - -Al integrar las herramientas de Pylon en Sim, tus agentes pueden automatizar todos los aspectos de las operaciones de soporte: -- Abrir, actualizar o clasificar automáticamente nuevos problemas cuando ocurren eventos de clientes. -- Mantener datos de cuentas y contactos sincronizados en toda tu infraestructura tecnológica. -- Dirigir conversaciones, manejar escalaciones y organizar tus datos de soporte usando etiquetas y equipos. -- Asegurar que los datos sensibles se gestionen adecuadamente redactando mensajes según sea necesario. - -Los endpoints de Pylon proporcionan un control granular para la gestión completa del ciclo de vida de los problemas y relaciones con los clientes. Ya sea escalando un servicio de soporte, impulsando el éxito proactivo del cliente o integrándose con otros sistemas, Pylon en Sim permite la mejor automatización de CRM de su clase, de manera segura, flexible y a escala. -{/* MANUAL-CONTENT-END */} - -## Instrucciones de uso - -Integra Pylon en el flujo de trabajo. Gestiona problemas (listar, crear, obtener, actualizar, eliminar, buscar, posponer, seguidores, problemas externos), cuentas (listar, crear, obtener, actualizar, eliminar, actualización masiva, buscar), contactos (listar, crear, obtener, actualizar, eliminar, buscar), usuarios (listar, obtener, actualizar, buscar), equipos (listar, obtener, crear, actualizar), etiquetas (listar, obtener, crear, actualizar, eliminar) y mensajes (redactar). - -## Herramientas - -### `pylon_list_issues` - -Recuperar una lista de problemas dentro de un rango de tiempo específico - -#### Entrada - -| Parámetro | Tipo | Obligatorio | Descripción | -| --------- | ---- | ----------- | ----------- | -| `apiToken` | string | Sí | Token de API de Pylon | -| `startTime` | string | Sí | Hora de inicio en formato RFC3339 \(p. ej., 2024-01-01T00:00:00Z\) | -| `endTime` | string | Sí | Hora de fin en formato RFC3339 \(p. ej., 2024-01-31T23:59:59Z\) | -| `cursor` | string | No | Cursor de paginación para la siguiente página de resultados | - -#### Salida - -| Parámetro | Tipo | Descripción | -| --------- | ---- | ----------- | -| `success` | boolean | Estado de éxito de la operación | -| `output` | object | Lista de problemas | - -### `pylon_create_issue` - -Crear un nuevo problema con propiedades específicas - -#### Entrada - -| Parámetro | Tipo | Obligatorio | Descripción | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | Sí | Token de API de Pylon | -| `title` | string | Sí | Título del problema | -| `bodyHtml` | string | Sí | Cuerpo del problema en formato HTML | -| `accountId` | string | No | ID de la cuenta a asociar con el problema | -| `assigneeId` | string | No | ID del usuario al que asignar el problema | -| `teamId` | string | No | ID del equipo al que asignar el problema | -| `requesterId` | string | No | ID del usuario solicitante \(alternativa a requester_email\) | -| `requesterEmail` | string | No | Dirección de correo electrónico del solicitante \(alternativa a requester_id\) | -| `priority` | string | No | Prioridad del problema | -| `tags` | string | No | IDs de etiquetas separados por comas | -| `customFields` | string | No | Campos personalizados como objeto JSON | -| `attachmentUrls` | string | No | URLs de archivos adjuntos separados por comas | - -#### Salida - -| Parámetro | Tipo | Descripción | -| --------- | ---- | ----------- | -| `success` | boolean | Estado de éxito de la operación | -| `output` | object | Datos del problema creado | - -### `pylon_get_issue` - -Obtener un problema específico por ID - -#### Entrada - -| Parámetro | Tipo | Obligatorio | Descripción | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | Sí | Token de API de Pylon | -| `issueId` | string | Sí | El ID del problema a recuperar | - -#### Salida - -| Parámetro | Tipo | Descripción | -| --------- | ---- | ----------- | -| `success` | boolean | Estado de éxito de la operación | -| `output` | object | Datos del problema | - -### `pylon_update_issue` - -Actualizar un problema existente - -#### Entrada - -| Parámetro | Tipo | Obligatorio | Descripción | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | Sí | Token de API de Pylon | -| `issueId` | string | Sí | El ID del problema a actualizar | -| `state` | string | No | Estado del problema | -| `assigneeId` | string | No | ID del usuario al que asignar el problema | -| `teamId` | string | No | ID del equipo al que asignar el problema | -| `tags` | string | No | IDs de etiquetas separados por comas | -| `customFields` | string | No | Campos personalizados como objeto JSON | -| `customerPortalVisible` | boolean | No | Si el problema es visible en el portal del cliente | -| `requesterId` | string | No | ID del usuario solicitante | -| `accountId` | string | No | ID de la cuenta a asociar con el problema | - -#### Salida - -| Parámetro | Tipo | Descripción | -| --------- | ---- | ----------- | -| `success` | boolean | Estado de éxito de la operación | -| `output` | object | Datos del problema actualizado | - -### `pylon_delete_issue` - -Eliminar un problema por ID - -#### Entrada - -| Parámetro | Tipo | Obligatorio | Descripción | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | Sí | Token de API de Pylon | -| `issueId` | string | Sí | El ID del problema a eliminar | - -#### Salida - -| Parámetro | Tipo | Descripción | -| --------- | ---- | ----------- | -| `success` | boolean | Estado de éxito de la operación | -| `output` | object | Resultado de la eliminación | - -### `pylon_search_issues` - -Consultar problemas usando filtros - -#### Entrada - -| Parámetro | Tipo | Obligatorio | Descripción | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | Sí | Token de API de Pylon | -| `filter` | string | Sí | Criterios de filtro como cadena JSON | -| `cursor` | string | No | Cursor de paginación para la siguiente página de resultados | -| `limit` | number | No | Número máximo de resultados a devolver | - -#### Salida - -| Parámetro | Tipo | Descripción | -| --------- | ---- | ----------- | -| `success` | boolean | Estado de éxito de la operación | -| `output` | object | Resultados de la búsqueda | - -### `pylon_snooze_issue` - -Posponer la visibilidad del problema hasta un momento específico - -#### Entrada - -| Parámetro | Tipo | Obligatorio | Descripción | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | Sí | Token de API de Pylon | -| `issueId` | string | Sí | El ID del problema a posponer | -| `snoozeUntil` | string | Sí | Marca de tiempo RFC3339 cuando el problema debe reaparecer \(p. ej., 2024-01-01T00:00:00Z\) | - -#### Salida - -| Parámetro | Tipo | Descripción | -| --------- | ---- | ----------- | -| `success` | boolean | Estado de éxito de la operación | -| `output` | object | Datos del problema pospuesto | - -### `pylon_list_issue_followers` - -Obtener lista de seguidores para un problema específico - -#### Entrada - -| Parámetro | Tipo | Obligatorio | Descripción | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | Sí | Token de API de Pylon | -| `issueId` | string | Sí | El ID del problema | - -#### Salida - -| Parámetro | Tipo | Descripción | -| --------- | ---- | ----------- | -| `success` | boolean | Estado de éxito de la operación | -| `output` | object | Lista de seguidores | - -### `pylon_manage_issue_followers` - -Añadir o eliminar seguidores de un problema - -#### Entrada - -| Parámetro | Tipo | Obligatorio | Descripción | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | Sí | Token de API de Pylon | -| `issueId` | string | Sí | El ID del problema | -| `userIds` | string | No | IDs de usuarios separados por comas para añadir/eliminar | -| `contactIds` | string | No | IDs de contactos separados por comas para añadir/eliminar | -| `operation` | string | No | Operación a realizar: "add" o "remove" \(predeterminado: "add"\) | - -#### Salida - -| Parámetro | Tipo | Descripción | -| --------- | ---- | ----------- | -| `success` | boolean | Estado de éxito de la operación | -| `output` | object | Lista actualizada de seguidores | - -### `pylon_link_external_issue` - -Vincular un problema a un problema de sistema externo - -#### Entrada - -| Parámetro | Tipo | Obligatorio | Descripción | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | Sí | Token de API de Pylon | -| `issueId` | string | Sí | El ID del problema de Pylon | -| `externalIssueId` | string | Sí | El ID del problema externo | -| `source` | string | Sí | El sistema de origen \(p. ej., "jira", "linear", "github"\) | - -#### Salida - -| Parámetro | Tipo | Descripción | -| --------- | ---- | ----------- | -| `success` | boolean | Estado de éxito de la operación | -| `output` | object | Datos del problema externo vinculado | - -### `pylon_list_accounts` - -Obtener una lista paginada de cuentas - -#### Entrada - -| Parámetro | Tipo | Obligatorio | Descripción | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | Sí | Token de API de Pylon | -| `limit` | string | No | Número de cuentas a devolver \(1-1000, predeterminado 100\) | -| `cursor` | string | No | Cursor de paginación para la siguiente página de resultados | - -#### Salida - -| Parámetro | Tipo | Descripción | -| --------- | ---- | ----------- | -| `success` | boolean | Estado de éxito de la operación | -| `output` | object | Lista de cuentas | - -### `pylon_create_account` - -Crear una nueva cuenta con propiedades específicas - -#### Entrada - -| Parámetro | Tipo | Obligatorio | Descripción | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | Sí | Token de API de Pylon | -| `name` | string | Sí | Nombre de la cuenta | -| `domains` | string | No | Lista de dominios separados por comas | -| `primaryDomain` | string | No | Dominio principal para la cuenta | -| `customFields` | string | No | Campos personalizados como objeto JSON | -| `tags` | string | No | IDs de etiquetas separados por comas | -| `channels` | string | No | IDs de canales separados por comas | -| `externalIds` | string | No | IDs externos separados por comas | -| `ownerId` | string | No | ID de usuario propietario | -| `logoUrl` | string | No | URL del logotipo de la cuenta | -| `subaccountIds` | string | No | IDs de subcuentas separados por comas | - -#### Salida - -| Parámetro | Tipo | Descripción | -| --------- | ---- | ----------- | -| `success` | boolean | Estado de éxito de la operación | -| `output` | object | Datos de la cuenta creada | - -### `pylon_get_account` - -Recuperar una sola cuenta por ID - -#### Entrada - -| Parámetro | Tipo | Obligatorio | Descripción | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | Sí | Token de API de Pylon | -| `accountId` | string | Sí | ID de la cuenta a recuperar | - -#### Salida - -| Parámetro | Tipo | Descripción | -| --------- | ---- | ----------- | -| `success` | boolean | Estado de éxito de la operación | -| `output` | object | Datos de la cuenta | - -### `pylon_update_account` - -Actualizar una cuenta existente con nuevas propiedades - -#### Entrada - -| Parámetro | Tipo | Obligatorio | Descripción | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | Sí | Token de API de Pylon | -| `accountId` | string | Sí | ID de la cuenta a actualizar | -| `name` | string | No | Nombre de la cuenta | -| `domains` | string | No | Lista de dominios separados por comas | -| `primaryDomain` | string | No | Dominio principal para la cuenta | -| `customFields` | string | No | Campos personalizados como objeto JSON | -| `tags` | string | No | IDs de etiquetas separados por comas | -| `channels` | string | No | IDs de canales separados por comas | -| `externalIds` | string | No | IDs externos separados por comas | -| `ownerId` | string | No | ID de usuario propietario | -| `logoUrl` | string | No | URL del logotipo de la cuenta | -| `subaccountIds` | string | No | IDs de subcuentas separados por comas | - -#### Salida - -| Parámetro | Tipo | Descripción | -| --------- | ---- | ----------- | -| `success` | boolean | Estado de éxito de la operación | -| `output` | object | Datos de la cuenta actualizados | - -### `pylon_delete_account` - -Eliminar una cuenta por ID - -#### Entrada - -| Parámetro | Tipo | Obligatorio | Descripción | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | Sí | Token de API de Pylon | -| `accountId` | string | Sí | ID de la cuenta a eliminar | - -#### Salida - -| Parámetro | Tipo | Descripción | -| --------- | ---- | ----------- | -| `success` | boolean | Estado de éxito de la operación | -| `output` | object | Confirmación de eliminación | - -### `pylon_bulk_update_accounts` - -Actualizar múltiples cuentas a la vez - -#### Entrada - -| Parámetro | Tipo | Obligatorio | Descripción | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | Sí | Token de API de Pylon | -| `accountIds` | string | Sí | IDs de cuentas separados por comas para actualizar | -| `customFields` | string | No | Campos personalizados como objeto JSON | -| `tags` | string | No | IDs de etiquetas separados por comas | -| `ownerId` | string | No | ID de usuario propietario | -| `tagsApplyMode` | string | No | Modo de aplicación de etiquetas: append_only, remove_only, o replace | - -#### Salida - -| Parámetro | Tipo | Descripción | -| --------- | ---- | ----------- | -| `success` | boolean | Estado de éxito de la operación | -| `output` | object | Datos de las cuentas actualizadas en masa | - -### `pylon_search_accounts` - -Buscar cuentas con filtros personalizados - -#### Entrada - -| Parámetro | Tipo | Obligatorio | Descripción | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | Sí | Token de API de Pylon | -| `filter` | string | Sí | Filtro como cadena JSON con estructura de campo/operador/valor | -| `limit` | string | No | Número de cuentas a devolver \(1-1000, predeterminado 100\) | -| `cursor` | string | No | Cursor de paginación para la siguiente página de resultados | - -#### Salida - -| Parámetro | Tipo | Descripción | -| --------- | ---- | ----------- | -| `success` | boolean | Estado de éxito de la operación | -| `output` | object | Resultados de la búsqueda | - -### `pylon_list_contacts` - -Obtener una lista de contactos - -#### Entrada - -| Parámetro | Tipo | Obligatorio | Descripción | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | Sí | Token de API de Pylon | -| `cursor` | string | No | Cursor de paginación para la siguiente página de resultados | -| `limit` | string | No | Número máximo de contactos a devolver | - -#### Salida - -| Parámetro | Tipo | Descripción | -| --------- | ---- | ----------- | -| `success` | boolean | Estado de éxito de la operación | -| `output` | object | Lista de contactos | - -### `pylon_create_contact` - -Crear un nuevo contacto con propiedades específicas - -#### Entrada - -| Parámetro | Tipo | Obligatorio | Descripción | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | Sí | Token de API de Pylon | -| `name` | string | Sí | Nombre del contacto | -| `email` | string | No | Dirección de correo electrónico del contacto | -| `accountId` | string | No | ID de cuenta para asociar con el contacto | -| `accountExternalId` | string | No | ID de cuenta externa para asociar con el contacto | -| `avatarUrl` | string | No | URL para la imagen de avatar del contacto | -| `customFields` | string | No | Campos personalizados como objeto JSON | -| `portalRole` | string | No | Rol del portal para el contacto | - -#### Salida - -| Parámetro | Tipo | Descripción | -| --------- | ---- | ----------- | -| `success` | boolean | Estado de éxito de la operación | -| `output` | object | Datos del contacto creado | - -### `pylon_get_contact` - -Recuperar un contacto específico por ID - -#### Entrada - -| Parámetro | Tipo | Obligatorio | Descripción | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | Sí | Token de API de Pylon | -| `contactId` | string | Sí | ID del contacto a recuperar | -| `cursor` | string | No | Cursor de paginación para la siguiente página de resultados | -| `limit` | string | No | Número máximo de elementos a devolver | - -#### Salida - -| Parámetro | Tipo | Descripción | -| --------- | ---- | ----------- | -| `success` | boolean | Estado de éxito de la operación | -| `output` | object | Datos del contacto | - -### `pylon_update_contact` - -Actualizar un contacto existente con propiedades específicas - -#### Entrada - -| Parámetro | Tipo | Obligatorio | Descripción | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | Sí | Token de API de Pylon | -| `contactId` | string | Sí | ID del contacto a actualizar | -| `name` | string | No | Nombre del contacto | -| `email` | string | No | Dirección de correo electrónico del contacto | -| `accountId` | string | No | ID de cuenta para asociar con el contacto | -| `accountExternalId` | string | No | ID de cuenta externa para asociar con el contacto | -| `avatarUrl` | string | No | URL para la imagen de avatar del contacto | -| `customFields` | string | No | Campos personalizados como objeto JSON | -| `portalRole` | string | No | Rol del portal para el contacto | - -#### Salida - -| Parámetro | Tipo | Descripción | -| --------- | ---- | ----------- | -| `success` | boolean | Estado de éxito de la operación | -| `output` | object | Datos de contacto actualizados | - -### `pylon_delete_contact` - -Eliminar un contacto específico por ID - -#### Entrada - -| Parámetro | Tipo | Obligatorio | Descripción | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | Sí | Token de API de Pylon | -| `contactId` | string | Sí | ID del contacto a eliminar | - -#### Salida - -| Parámetro | Tipo | Descripción | -| --------- | ---- | ----------- | -| `success` | boolean | Estado de éxito de la operación | -| `output` | object | Resultado de la operación de eliminación | - -### `pylon_search_contacts` - -Buscar contactos utilizando un filtro - -#### Entrada - -| Parámetro | Tipo | Obligatorio | Descripción | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | Sí | Token de API de Pylon | -| `filter` | string | Sí | Filtro como objeto JSON | -| `limit` | string | No | Número máximo de contactos a devolver | -| `cursor` | string | No | Cursor de paginación para la siguiente página de resultados | - -#### Salida - -| Parámetro | Tipo | Descripción | -| --------- | ---- | ----------- | -| `success` | boolean | Estado de éxito de la operación | -| `output` | object | Resultados de la búsqueda | - -### `pylon_list_users` - -Obtener una lista de usuarios - -#### Entrada - -| Parámetro | Tipo | Obligatorio | Descripción | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | Sí | Token de API de Pylon | - -#### Salida - -| Parámetro | Tipo | Descripción | -| --------- | ---- | ----------- | -| `success` | boolean | Estado de éxito de la operación | -| `output` | object | Lista de usuarios | - -### `pylon_get_user` - -Recuperar un usuario específico por ID - -#### Entrada - -| Parámetro | Tipo | Obligatorio | Descripción | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | Sí | Token de API de Pylon | -| `userId` | string | Sí | ID del usuario a recuperar | - -#### Salida - -| Parámetro | Tipo | Descripción | -| --------- | ---- | ----------- | -| `success` | boolean | Estado de éxito de la operación | -| `output` | object | Datos del usuario | - -### `pylon_update_user` - -Actualizar un usuario existente con propiedades específicas - -#### Entrada - -| Parámetro | Tipo | Obligatorio | Descripción | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | Sí | Token de API de Pylon | -| `userId` | string | Sí | ID del usuario a actualizar | -| `roleId` | string | No | ID del rol a asignar al usuario | -| `status` | string | No | Estado del usuario | - -#### Salida - -| Parámetro | Tipo | Descripción | -| --------- | ---- | ----------- | -| `success` | boolean | Estado de éxito de la operación | -| `output` | object | Datos actualizados del usuario | - -### `pylon_search_users` - -Buscar usuarios utilizando un filtro con campo de correo electrónico - -#### Entrada - -| Parámetro | Tipo | Obligatorio | Descripción | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | Sí | Token de API de Pylon | -| `filter` | string | Sí | Filtro como objeto JSON con campo de correo electrónico | -| `cursor` | string | No | Cursor de paginación para la siguiente página de resultados | -| `limit` | string | No | Número máximo de usuarios a devolver | - -#### Salida - -| Parámetro | Tipo | Descripción | -| --------- | ---- | ----------- | -| `success` | boolean | Estado de éxito de la operación | -| `output` | object | Resultados de búsqueda | - -### `pylon_list_teams` - -Obtener una lista de equipos - -#### Entrada - -| Parámetro | Tipo | Obligatorio | Descripción | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | Sí | Token de API de Pylon | - -#### Salida - -| Parámetro | Tipo | Descripción | -| --------- | ---- | ----------- | -| `success` | boolean | Estado de éxito de la operación | -| `output` | object | Lista de equipos | - -### `pylon_get_team` - -Obtener un equipo específico por ID - -#### Entrada - -| Parámetro | Tipo | Obligatorio | Descripción | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | Sí | Token de API de Pylon | -| `teamId` | string | Sí | ID del equipo a recuperar | - -#### Salida - -| Parámetro | Tipo | Descripción | -| --------- | ---- | ----------- | -| `success` | boolean | Estado de éxito de la operación | -| `output` | object | Datos del equipo | - -### `pylon_create_team` - -Crear un nuevo equipo con propiedades específicas - -#### Entrada - -| Parámetro | Tipo | Obligatorio | Descripción | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | Sí | Token de API de Pylon | -| `name` | string | No | Nombre del equipo | -| `userIds` | string | No | IDs de usuarios separados por comas para añadir como miembros del equipo | - -#### Salida - -| Parámetro | Tipo | Descripción | -| --------- | ---- | ----------- | -| `success` | boolean | Estado de éxito de la operación | -| `output` | object | Datos del equipo creado | - -### `pylon_update_team` - -Actualizar un equipo existente con propiedades específicas (userIds reemplaza toda la membresía) - -#### Entrada - -| Parámetro | Tipo | Obligatorio | Descripción | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | Sí | Token de API de Pylon | -| `teamId` | string | Sí | ID del equipo a actualizar | -| `name` | string | No | Nombre del equipo | -| `userIds` | string | No | IDs de usuario separados por comas \(reemplaza toda la membresía del equipo\) | - -#### Salida - -| Parámetro | Tipo | Descripción | -| --------- | ---- | ----------- | -| `success` | boolean | Estado de éxito de la operación | -| `output` | object | Datos del equipo actualizado | - -### `pylon_list_tags` - -Obtener una lista de etiquetas - -#### Entrada - -| Parámetro | Tipo | Obligatorio | Descripción | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | Sí | Token de API de Pylon | - -#### Salida - -| Parámetro | Tipo | Descripción | -| --------- | ---- | ----------- | -| `success` | boolean | Estado de éxito de la operación | -| `output` | object | Lista de etiquetas | - -### `pylon_get_tag` - -Obtener una etiqueta específica por ID - -#### Entrada - -| Parámetro | Tipo | Obligatorio | Descripción | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | Sí | Token de API de Pylon | -| `tagId` | string | Sí | ID de la etiqueta a obtener | - -#### Salida - -| Parámetro | Tipo | Descripción | -| --------- | ---- | ----------- | -| `success` | boolean | Estado de éxito de la operación | -| `output` | object | Datos de la etiqueta | - -### `pylon_create_tag` - -Crear una nueva etiqueta con propiedades específicas (objectType: account/issue/contact) - -#### Entrada - -| Parámetro | Tipo | Obligatorio | Descripción | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | Sí | Token de API de Pylon | -| `objectType` | string | Sí | Tipo de objeto para la etiqueta \(account, issue, o contact\) | -| `value` | string | Sí | Valor/nombre de la etiqueta | -| `hexColor` | string | No | Código de color hexadecimal para la etiqueta \(p. ej., #FF5733\) | - -#### Salida - -| Parámetro | Tipo | Descripción | -| --------- | ---- | ----------- | -| `success` | boolean | Estado de éxito de la operación | -| `output` | object | Datos de la etiqueta creada | - -### `pylon_update_tag` - -Actualizar una etiqueta existente con propiedades específicas - -#### Entrada - -| Parámetro | Tipo | Obligatorio | Descripción | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | Sí | Token de API de Pylon | -| `tagId` | string | Sí | ID de la etiqueta a actualizar | -| `hexColor` | string | No | Código de color hexadecimal para la etiqueta \(p. ej., #FF5733\) | -| `value` | string | No | Valor/nombre de la etiqueta | - -#### Salida - -| Parámetro | Tipo | Descripción | -| --------- | ---- | ----------- | -| `success` | boolean | Estado de éxito de la operación | -| `output` | object | Datos de la etiqueta actualizada | - -### `pylon_delete_tag` - -Eliminar una etiqueta específica por ID - -#### Entrada - -| Parámetro | Tipo | Obligatorio | Descripción | -| --------- | ---- | ----------- | ----------- | -| `apiToken` | string | Sí | Token de API de Pylon | -| `tagId` | string | Sí | ID de la etiqueta a eliminar | - -#### Salida - -| Parámetro | Tipo | Descripción | -| --------- | ---- | ----------- | -| `success` | boolean | Estado de éxito de la operación | -| `output` | object | Resultado de la operación de eliminación | - -### `pylon_redact_message` - -Redactar un mensaje específico dentro de un problema - -#### Entrada - -| Parámetro | Tipo | Obligatorio | Descripción | -| --------- | ---- | ----------- | ----------- | -| `apiToken` | string | Sí | Token de API de Pylon | -| `issueId` | string | Sí | ID del problema que contiene el mensaje | -| `messageId` | string | Sí | ID del mensaje a redactar | - -#### Salida - -| Parámetro | Tipo | Descripción | -| --------- | ---- | ----------- | -| `success` | boolean | Estado de éxito de la operación | -| `output` | object | Resultado de la operación de redacción | - -## Notas - -- Categoría: `tools` -- Tipo: `pylon` diff --git a/apps/docs/content/docs/es/tools/spotify.mdx b/apps/docs/content/docs/es/tools/spotify.mdx new file mode 100644 index 000000000..ab1d0693f --- /dev/null +++ b/apps/docs/content/docs/es/tools/spotify.mdx @@ -0,0 +1,1453 @@ +--- +title: Spotify +description: Busca música, gestiona listas de reproducción, controla la + reproducción y accede a tu biblioteca +--- + +import { BlockInfoCard } from "@/components/ui/block-info-card" + + + +## Instrucciones de uso + +Integra Spotify en tu flujo de trabajo. Busca canciones, álbumes, artistas y listas de reproducción. Gestiona listas de reproducción, accede a tu biblioteca, controla la reproducción, explora podcasts y audiolibros. + +## Herramientas + +### `spotify_search` + +Busca canciones, álbumes, artistas o listas de reproducción en Spotify. Devuelve resultados coincidentes basados en la consulta. + +#### Entrada + +| Parámetro | Tipo | Obligatorio | Descripción | +| --------- | ---- | -------- | ----------- | +| `query` | string | Sí | Consulta de búsqueda \(p. ej., "Bohemian Rhapsody", "artist:Queen", "genre:rock"\) | +| `type` | string | No | Tipo de resultados: track, album, artist, playlist, o separados por comas \(p. ej., "track,artist"\) | +| `limit` | number | No | Número máximo de resultados a devolver \(1-50\) | +| `offset` | number | No | Índice del primer resultado a devolver para paginación | +| `market` | string | No | Código de país ISO 3166-1 alpha-2 para filtrar resultados \(p. ej., "US", "GB"\) | + +#### Salida + +| Parámetro | Tipo | Descripción | +| --------- | ---- | ----------- | +| `tracks` | array | Lista de canciones coincidentes | + +### `spotify_get_track` + +Obtén información detallada sobre una canción específica en Spotify mediante su ID. + +#### Entrada + +| Parámetro | Tipo | Obligatorio | Descripción | +| --------- | ---- | -------- | ----------- | +| `trackId` | string | Sí | El ID de Spotify de la canción | +| `market` | string | No | Código de país ISO 3166-1 alpha-2 para disponibilidad de la canción | + +#### Salida + +| Parámetro | Tipo | Descripción | +| --------- | ---- | ----------- | +| `id` | string | ID de pista de Spotify | +| `name` | string | Nombre de la pista | +| `artists` | array | Lista de artistas | +| `album` | object | Información del álbum | +| `duration_ms` | number | Duración de la pista en milisegundos | +| `explicit` | boolean | Si la pista tiene contenido explícito | +| `popularity` | number | Puntuación de popularidad \(0-100\) | +| `preview_url` | string | URL para vista previa de 30 segundos | +| `external_url` | string | URL de Spotify | +| `uri` | string | URI de Spotify para la pista | + +### `spotify_get_tracks` + +Obtén información detallada sobre múltiples pistas en Spotify por sus IDs (hasta 50). + +#### Entrada + +| Parámetro | Tipo | Obligatorio | Descripción | +| --------- | ---- | -------- | ----------- | +| `trackIds` | string | Sí | Lista de IDs de pistas de Spotify separadas por comas \(máx. 50\) | +| `market` | string | No | Código de país ISO 3166-1 alpha-2 para disponibilidad de pistas | + +#### Salida + +| Parámetro | Tipo | Descripción | +| --------- | ---- | ----------- | +| `tracks` | array | Lista de pistas | + +### `spotify_get_album` + +Obtén información detallada sobre un álbum en Spotify por su ID, incluyendo el listado de pistas. + +#### Entrada + +| Parámetro | Tipo | Obligatorio | Descripción | +| --------- | ---- | -------- | ----------- | +| `albumId` | string | Sí | El ID de Spotify del álbum | +| `market` | string | No | Código de país ISO 3166-1 alpha-2 para disponibilidad de pistas | + +#### Salida + +| Parámetro | Tipo | Descripción | +| --------- | ---- | ----------- | +| `id` | string | ID del álbum de Spotify | +| `name` | string | Nombre del álbum | +| `artists` | array | Lista de artistas | +| `album_type` | string | Tipo de álbum \(álbum, sencillo, compilación\) | +| `total_tracks` | number | Número total de pistas | +| `release_date` | string | Fecha de lanzamiento | +| `label` | string | Sello discográfico | +| `popularity` | number | Puntuación de popularidad \(0-100\) | +| `genres` | array | Lista de géneros | +| `image_url` | string | URL de la imagen de portada del álbum | +| `tracks` | array | Lista de pistas del álbum | +| `external_url` | string | URL de Spotify | + +### `spotify_get_albums` + +Obtener detalles de múltiples álbumes por sus IDs. + +#### Entrada + +| Parámetro | Tipo | Obligatorio | Descripción | +| --------- | ---- | -------- | ----------- | +| `albumIds` | string | Sí | IDs de álbumes separados por comas \(máx. 20\) | +| `market` | string | No | Código de país ISO para el mercado | + +#### Salida + +| Parámetro | Tipo | Descripción | +| --------- | ---- | ----------- | +| `albums` | json | Lista de álbumes | + +### `spotify_get_album_tracks` + +Obtener las pistas de un álbum. + +#### Entrada + +| Parámetro | Tipo | Obligatorio | Descripción | +| --------- | ---- | -------- | ----------- | +| `albumId` | string | Sí | El ID del álbum de Spotify | +| `limit` | number | No | Número de pistas a devolver \(1-50\) | +| `offset` | number | No | Índice de la primera pista a devolver | + +#### Salida + +| Parámetro | Tipo | Descripción | +| --------- | ---- | ----------- | +| `tracks` | json | Lista de pistas | +| `total` | number | Número total de pistas | +| `next` | string | URL para la siguiente página | + +### `spotify_get_saved_albums` + +Obtener el usuario + +#### Entrada + +| Parámetro | Tipo | Obligatorio | Descripción | +| --------- | ---- | -------- | ----------- | +| `limit` | number | No | Número de álbumes a devolver \(1-50\) | +| `offset` | number | No | Índice del primer álbum a devolver | +| `market` | string | No | Código de país ISO para el mercado | + +#### Salida + +| Parámetro | Tipo | Descripción | +| --------- | ---- | ----------- | +| `albums` | json | Lista de álbumes guardados | +| `total` | number | Total de álbumes guardados | +| `next` | string | URL para la siguiente página | + +### `spotify_save_albums` + +Guardar álbumes para el usuario + +#### Entrada + +| Parámetro | Tipo | Obligatorio | Descripción | +| --------- | ---- | -------- | ----------- | +| `albumIds` | string | Sí | IDs de álbumes separados por comas \(máx. 20\) | + +#### Salida + +| Parámetro | Tipo | Descripción | +| --------- | ---- | ----------- | +| `success` | boolean | Si los álbumes fueron guardados | + +### `spotify_remove_saved_albums` + +Eliminar álbumes del usuario + +#### Entrada + +| Parámetro | Tipo | Obligatorio | Descripción | +| --------- | ---- | -------- | ----------- | +| `albumIds` | string | Sí | IDs de álbumes separados por comas \(máx. 20\) | + +#### Salida + +| Parámetro | Tipo | Descripción | +| --------- | ---- | ----------- | +| `success` | boolean | Indica si los álbumes fueron eliminados | + +### `spotify_check_saved_albums` + +Comprobar si los álbumes están guardados en la biblioteca. + +#### Entrada + +| Parámetro | Tipo | Obligatorio | Descripción | +| --------- | ---- | -------- | ----------- | +| `albumIds` | string | Sí | IDs de álbumes separados por comas \(máximo 20\) | + +#### Salida + +| Parámetro | Tipo | Descripción | +| --------- | ---- | ----------- | +| `results` | json | Array de booleanos para cada álbum | + +### `spotify_get_artist` + +Obtener información detallada sobre un artista en Spotify mediante su ID. + +#### Entrada + +| Parámetro | Tipo | Obligatorio | Descripción | +| --------- | ---- | -------- | ----------- | +| `artistId` | string | Sí | El ID de Spotify del artista | + +#### Salida + +| Parámetro | Tipo | Descripción | +| --------- | ---- | ----------- | +| `id` | string | ID del artista en Spotify | +| `name` | string | Nombre del artista | +| `genres` | array | Lista de géneros asociados con el artista | +| `popularity` | number | Puntuación de popularidad \(0-100\) | +| `followers` | number | Número de seguidores | +| `image_url` | string | URL de la imagen del artista | +| `external_url` | string | URL de Spotify | + +### `spotify_get_artists` + +Obtener detalles de múltiples artistas mediante sus IDs. + +#### Entrada + +| Parámetro | Tipo | Obligatorio | Descripción | +| --------- | ---- | -------- | ----------- | +| `artistIds` | string | Sí | IDs de artistas separados por comas \(máximo 50\) | + +#### Salida + +| Parámetro | Tipo | Descripción | +| --------- | ---- | ----------- | +| `artists` | json | Lista de artistas | + +### `spotify_get_artist_albums` + +Obtener álbumes de un artista en Spotify. Puede filtrar por tipo de álbum. + +#### Entrada + +| Parámetro | Tipo | Obligatorio | Descripción | +| --------- | ---- | -------- | ----------- | +| `artistId` | string | Sí | El ID de Spotify del artista | +| `include_groups` | string | No | Filtrar por tipo de álbum: album, single, appears_on, compilation \(separados por comas\) | +| `limit` | number | No | Número máximo de álbumes a devolver \(1-50\) | +| `offset` | number | No | Índice del primer álbum a devolver | +| `market` | string | No | Código de país ISO 3166-1 alpha-2 | + +#### Salida + +| Parámetro | Tipo | Descripción | +| --------- | ---- | ----------- | +| `albums` | array | Artista | + +### `spotify_get_artist_top_tracks` + +Obtener las 10 canciones más populares de un artista en Spotify. + +#### Entrada + +| Parámetro | Tipo | Obligatorio | Descripción | +| --------- | ---- | -------- | ----------- | +| `artistId` | string | Sí | El ID de Spotify del artista | +| `market` | string | No | Código de país ISO 3166-1 alpha-2 \(obligatorio para este endpoint\) | + +#### Salida + +| Parámetro | Tipo | Descripción | +| --------- | ---- | ----------- | +| `tracks` | array | Artista | + +### `spotify_follow_artists` + +Seguir a uno o más artistas. + +#### Entrada + +| Parámetro | Tipo | Obligatorio | Descripción | +| --------- | ---- | -------- | ----------- | +| `artistIds` | string | Sí | IDs de artistas separados por comas para seguir \(máx. 50\) | + +#### Salida + +| Parámetro | Tipo | Descripción | +| --------- | ---- | ----------- | +| `success` | boolean | Si los artistas fueron seguidos con éxito | + +### `spotify_unfollow_artists` + +Dejar de seguir a uno o más artistas. + +#### Entrada + +| Parámetro | Tipo | Obligatorio | Descripción | +| --------- | ---- | -------- | ----------- | +| `artistIds` | string | Sí | IDs de artistas separados por comas para dejar de seguir \(máx. 50\) | + +#### Salida + +| Parámetro | Tipo | Descripción | +| --------- | ---- | ----------- | +| `success` | boolean | Si se dejó de seguir a los artistas con éxito | + +### `spotify_get_followed_artists` + +Obtener el usuario + +#### Entrada + +| Parámetro | Tipo | Obligatorio | Descripción | +| --------- | ---- | -------- | ----------- | +| `limit` | number | No | Número de artistas a devolver \(1-50\) | +| `after` | string | No | Cursor para paginación \(último ID de artista de la solicitud anterior\) | + +#### Salida + +| Parámetro | Tipo | Descripción | +| --------- | ---- | ----------- | +| `artists` | json | Lista de artistas seguidos | +| `total` | number | Número total de artistas seguidos | +| `next` | string | Cursor para la siguiente página | + +### `spotify_check_following` + +Comprobar si el usuario sigue a artistas o usuarios. + +#### Entrada + +| Parámetro | Tipo | Obligatorio | Descripción | +| --------- | ---- | -------- | ----------- | +| `type` | string | Sí | Tipo a comprobar: "artist" o "user" | +| `ids` | string | Sí | IDs de artistas o usuarios separados por comas \(máx. 50\) | + +#### Salida + +| Parámetro | Tipo | Descripción | +| --------- | ---- | ----------- | +| `results` | json | Array de booleanos para cada ID | + +### `spotify_get_show` + +Obtener detalles de un podcast. + +#### Entrada + +| Parámetro | Tipo | Obligatorio | Descripción | +| --------- | ---- | -------- | ----------- | +| `showId` | string | Sí | El ID del show de Spotify | +| `market` | string | No | Código de país ISO para el mercado | + +#### Salida + +| Parámetro | Tipo | Descripción | +| --------- | ---- | ----------- | +| `id` | string | ID del show | +| `name` | string | Nombre del show | +| `description` | string | Descripción del show | +| `publisher` | string | Nombre del editor | +| `total_episodes` | number | Total de episodios | +| `explicit` | boolean | Contiene contenido explícito | +| `languages` | json | Idiomas | +| `image_url` | string | URL de la imagen de portada | +| `external_url` | string | URL de Spotify | + +### `spotify_get_shows` + +Obtener detalles de múltiples podcasts. + +#### Entrada + +| Parámetro | Tipo | Obligatorio | Descripción | +| --------- | ---- | -------- | ----------- | +| `showIds` | string | Sí | IDs de shows separados por comas \(máx. 50\) | +| `market` | string | No | Código de país ISO para el mercado | + +#### Salida + +| Parámetro | Tipo | Descripción | +| --------- | ---- | ----------- | +| `shows` | json | Lista de shows | + +### `spotify_get_show_episodes` + +Obtener episodios de un programa de podcast. + +#### Entrada + +| Parámetro | Tipo | Obligatorio | Descripción | +| --------- | ---- | -------- | ----------- | +| `showId` | string | Sí | El ID del programa de Spotify | +| `limit` | number | No | Número de episodios a devolver \(1-50\) | +| `offset` | number | No | Índice del primer episodio a devolver | +| `market` | string | No | Código de país ISO para el mercado | + +#### Salida + +| Parámetro | Tipo | Descripción | +| --------- | ---- | ----------- | +| `episodes` | json | Lista de episodios | +| `total` | number | Total de episodios | +| `next` | string | URL para la siguiente página | + +### `spotify_get_saved_shows` + +Obtener el usuario + +#### Entrada + +| Parámetro | Tipo | Obligatorio | Descripción | +| --------- | ---- | -------- | ----------- | +| `limit` | number | No | Número de programas a devolver \(1-50\) | +| `offset` | number | No | Índice del primer programa a devolver | + +#### Salida + +| Parámetro | Tipo | Descripción | +| --------- | ---- | ----------- | +| `shows` | json | Lista de programas guardados | +| `total` | number | Total de programas guardados | +| `next` | string | URL para la siguiente página | + +### `spotify_save_shows` + +Guardar programas de podcast para el usuario + +#### Entrada + +| Parámetro | Tipo | Obligatorio | Descripción | +| --------- | ---- | -------- | ----------- | +| `showIds` | string | Sí | IDs de programas separados por comas \(máx. 50\) | + +#### Salida + +| Parámetro | Tipo | Descripción | +| --------- | ---- | ----------- | +| `success` | boolean | Si los programas fueron guardados | + +### `spotify_remove_saved_shows` + +Eliminar programas de podcast del usuario + +#### Entrada + +| Parámetro | Tipo | Obligatorio | Descripción | +| --------- | ---- | -------- | ----------- | +| `showIds` | string | Sí | IDs de programas separados por comas \(máximo 50\) | + +#### Salida + +| Parámetro | Tipo | Descripción | +| --------- | ---- | ----------- | +| `success` | boolean | Si los programas fueron eliminados | + +### `spotify_check_saved_shows` + +Comprobar si los programas están guardados en la biblioteca. + +#### Entrada + +| Parámetro | Tipo | Obligatorio | Descripción | +| --------- | ---- | -------- | ----------- | +| `showIds` | string | Sí | IDs de programas separados por comas \(máximo 50\) | + +#### Salida + +| Parámetro | Tipo | Descripción | +| --------- | ---- | ----------- | +| `results` | json | Array de booleanos para cada programa | + +### `spotify_get_episode` + +Obtener detalles de un episodio de podcast. + +#### Entrada + +| Parámetro | Tipo | Obligatorio | Descripción | +| --------- | ---- | -------- | ----------- | +| `episodeId` | string | Sí | El ID del episodio de Spotify | +| `market` | string | No | Código de país ISO para el mercado | + +#### Salida + +| Parámetro | Tipo | Descripción | +| --------- | ---- | ----------- | +| `id` | string | ID del episodio | +| `name` | string | Nombre del episodio | +| `description` | string | Descripción del episodio | +| `duration_ms` | number | Duración en ms | +| `release_date` | string | Fecha de lanzamiento | +| `explicit` | boolean | Contiene contenido explícito | +| `show` | json | Información del programa principal | +| `image_url` | string | URL de la imagen de portada | +| `external_url` | string | URL de Spotify | + +### `spotify_get_episodes` + +Obtener detalles de múltiples episodios de podcast. + +#### Entrada + +| Parámetro | Tipo | Obligatorio | Descripción | +| --------- | ---- | -------- | ----------- | +| `episodeIds` | string | Sí | IDs de episodios separados por comas (máx. 50) | +| `market` | string | No | Código de país ISO para el mercado | + +#### Salida + +| Parámetro | Tipo | Descripción | +| --------- | ---- | ----------- | +| `episodes` | json | Lista de episodios | + +### `spotify_get_saved_episodes` + +Obtener el usuario + +#### Entrada + +| Parámetro | Tipo | Obligatorio | Descripción | +| --------- | ---- | -------- | ----------- | +| `limit` | number | No | Número de episodios a devolver (1-50) | +| `offset` | number | No | Índice del primer episodio a devolver | +| `market` | string | No | Código de país ISO para el mercado | + +#### Salida + +| Parámetro | Tipo | Descripción | +| --------- | ---- | ----------- | +| `episodes` | json | Lista de episodios guardados | +| `total` | number | Total de episodios guardados | +| `next` | string | URL para la siguiente página | + +### `spotify_save_episodes` + +Guardar episodios de podcast para el usuario + +#### Entrada + +| Parámetro | Tipo | Obligatorio | Descripción | +| --------- | ---- | -------- | ----------- | +| `episodeIds` | string | Sí | IDs de episodios separados por comas (máx. 50) | + +#### Salida + +| Parámetro | Tipo | Descripción | +| --------- | ---- | ----------- | +| `success` | boolean | Si los episodios fueron guardados | + +### `spotify_remove_saved_episodes` + +Eliminar episodios de podcast del usuario + +#### Entrada + +| Parámetro | Tipo | Obligatorio | Descripción | +| --------- | ---- | -------- | ----------- | +| `episodeIds` | string | Sí | IDs de episodios separados por comas \(máximo 50\) | + +#### Salida + +| Parámetro | Tipo | Descripción | +| --------- | ---- | ----------- | +| `success` | boolean | Indica si los episodios fueron eliminados | + +### `spotify_check_saved_episodes` + +Comprobar si los episodios están guardados en la biblioteca. + +#### Entrada + +| Parámetro | Tipo | Obligatorio | Descripción | +| --------- | ---- | -------- | ----------- | +| `episodeIds` | string | Sí | IDs de episodios separados por comas \(máximo 50\) | + +#### Salida + +| Parámetro | Tipo | Descripción | +| --------- | ---- | ----------- | +| `results` | json | Array de booleanos para cada episodio | + +### `spotify_get_audiobook` + +Obtener detalles de un audiolibro. + +#### Entrada + +| Parámetro | Tipo | Obligatorio | Descripción | +| --------- | ---- | -------- | ----------- | +| `audiobookId` | string | Sí | El ID del audiolibro de Spotify | +| `market` | string | No | Código de país ISO para el mercado | + +#### Salida + +| Parámetro | Tipo | Descripción | +| --------- | ---- | ----------- | +| `id` | string | ID del audiolibro | +| `name` | string | Nombre del audiolibro | +| `authors` | json | Autores | +| `narrators` | json | Narradores | +| `publisher` | string | Editorial | +| `description` | string | Descripción | +| `total_chapters` | number | Total de capítulos | +| `languages` | json | Idiomas | +| `image_url` | string | URL de la imagen de portada | +| `external_url` | string | URL de Spotify | + +### `spotify_get_audiobooks` + +Obtener detalles de múltiples audiolibros. + +#### Entrada + +| Parámetro | Tipo | Obligatorio | Descripción | +| --------- | ---- | -------- | ----------- | +| `audiobookIds` | string | Sí | IDs de audiolibros separados por comas \(máx. 50\) | +| `market` | string | No | Código de país ISO para el mercado | + +#### Salida + +| Parámetro | Tipo | Descripción | +| --------- | ---- | ----------- | +| `audiobooks` | json | Lista de audiolibros | + +### `spotify_get_audiobook_chapters` + +Obtener capítulos de un audiolibro. + +#### Entrada + +| Parámetro | Tipo | Obligatorio | Descripción | +| --------- | ---- | -------- | ----------- | +| `audiobookId` | string | Sí | El ID del audiolibro de Spotify | +| `limit` | number | No | Número de capítulos a devolver \(1-50\) | +| `offset` | number | No | Índice del primer capítulo a devolver | +| `market` | string | No | Código de país ISO para el mercado | + +#### Salida + +| Parámetro | Tipo | Descripción | +| --------- | ---- | ----------- | +| `chapters` | json | Lista de capítulos | +| `total` | number | Total de capítulos | +| `next` | string | URL para la siguiente página | + +### `spotify_get_saved_audiobooks` + +Obtener el usuario + +#### Entrada + +| Parámetro | Tipo | Obligatorio | Descripción | +| --------- | ---- | -------- | ----------- | +| `limit` | number | No | Número de audiolibros a devolver \(1-50\) | +| `offset` | number | No | Índice del primer audiolibro a devolver | + +#### Salida + +| Parámetro | Tipo | Descripción | +| --------- | ---- | ----------- | +| `audiobooks` | json | Lista de audiolibros guardados | +| `total` | number | Total de audiolibros guardados | +| `next` | string | URL para la siguiente página | + +### `spotify_save_audiobooks` + +Guardar audiolibros para el usuario + +#### Entrada + +| Parámetro | Tipo | Obligatorio | Descripción | +| --------- | ---- | -------- | ----------- | +| `audiobookIds` | string | Sí | IDs de audiolibros separados por comas \(máximo 50\) | + +#### Salida + +| Parámetro | Tipo | Descripción | +| --------- | ---- | ----------- | +| `success` | boolean | Si los audiolibros fueron guardados | + +### `spotify_remove_saved_audiobooks` + +Eliminar audiolibros del usuario + +#### Entrada + +| Parámetro | Tipo | Obligatorio | Descripción | +| --------- | ---- | -------- | ----------- | +| `audiobookIds` | string | Sí | IDs de audiolibros separados por comas \(máximo 50\) | + +#### Salida + +| Parámetro | Tipo | Descripción | +| --------- | ---- | ----------- | +| `success` | boolean | Si los audiolibros fueron eliminados | + +### `spotify_check_saved_audiobooks` + +Comprobar si los audiolibros están guardados en la biblioteca. + +#### Entrada + +| Parámetro | Tipo | Obligatorio | Descripción | +| --------- | ---- | -------- | ----------- | +| `audiobookIds` | string | Sí | IDs de audiolibros separados por comas \(máximo 50\) | + +#### Salida + +| Parámetro | Tipo | Descripción | +| --------- | ---- | ----------- | +| `results` | json | Array de booleanos para cada audiolibro | + +### `spotify_get_playlist` + +Obtener información detallada sobre una lista de reproducción en Spotify por su ID. + +#### Entrada + +| Parámetro | Tipo | Obligatorio | Descripción | +| --------- | ---- | -------- | ----------- | +| `playlistId` | string | Sí | El ID de Spotify de la lista de reproducción | +| `market` | string | No | Código de país ISO 3166-1 alpha-2 para la disponibilidad de pistas | + +#### Salida + +| Parámetro | Tipo | Descripción | +| --------- | ---- | ----------- | +| `id` | string | ID de la lista de reproducción de Spotify | +| `name` | string | Nombre de la lista de reproducción | +| `description` | string | Descripción de la lista de reproducción | +| `public` | boolean | Si la lista de reproducción es pública | +| `collaborative` | boolean | Si la lista de reproducción es colaborativa | +| `owner` | object | Información del propietario de la lista de reproducción | +| `image_url` | string | URL de la imagen de portada de la lista de reproducción | +| `total_tracks` | number | Número total de pistas | +| `snapshot_id` | string | ID de instantánea de la lista de reproducción para control de versiones | +| `external_url` | string | URL de Spotify | + +### `spotify_get_playlist_tracks` + +Obtener las pistas de una lista de reproducción de Spotify. + +#### Entrada + +| Parámetro | Tipo | Obligatorio | Descripción | +| --------- | ---- | -------- | ----------- | +| `playlistId` | string | Sí | El ID de Spotify de la lista de reproducción | +| `limit` | number | No | Número máximo de pistas a devolver \(1-100\) | +| `offset` | number | No | Índice de la primera pista a devolver | +| `market` | string | No | Código de país ISO 3166-1 alpha-2 para la disponibilidad de pistas | + +#### Salida + +| Parámetro | Tipo | Descripción | +| --------- | ---- | ----------- | +| `tracks` | array | Lista de pistas en la lista de reproducción | + +### `spotify_get_playlist_cover` + +Obtener una lista de reproducción + +#### Entrada + +| Parámetro | Tipo | Obligatorio | Descripción | +| --------- | ---- | -------- | ----------- | +| `playlistId` | string | Sí | El ID de la lista de reproducción de Spotify | + +#### Salida + +| Parámetro | Tipo | Descripción | +| --------- | ---- | ----------- | +| `images` | json | Lista de imágenes de portada | + +### `spotify_get_user_playlists` + +Obtener el usuario actual + +#### Entrada + +| Parámetro | Tipo | Obligatorio | Descripción | +| --------- | ---- | -------- | ----------- | +| `limit` | number | No | Número máximo de listas de reproducción a devolver \(1-50\) | +| `offset` | number | No | Índice de la primera lista de reproducción a devolver | + +#### Salida + +| Parámetro | Tipo | Descripción | +| --------- | ---- | ----------- | +| `playlists` | array | Usuario | + +### `spotify_create_playlist` + +Crear una nueva lista de reproducción para el usuario actual en Spotify. + +#### Entrada + +| Parámetro | Tipo | Obligatorio | Descripción | +| --------- | ---- | -------- | ----------- | +| `name` | string | Sí | Nombre para la nueva lista de reproducción | +| `description` | string | No | Descripción para la lista de reproducción | +| `public` | boolean | No | Si la lista de reproducción debe ser pública | +| `collaborative` | boolean | No | Si la lista de reproducción debe ser colaborativa \(requiere que public sea false\) | + +#### Salida + +| Parámetro | Tipo | Descripción | +| --------- | ---- | ----------- | +| `id` | string | ID de la lista de reproducción de Spotify | +| `name` | string | Nombre de la lista de reproducción | +| `description` | string | Descripción de la lista de reproducción | +| `public` | boolean | Si la lista de reproducción es pública | +| `collaborative` | boolean | Si es colaborativa | +| `snapshot_id` | string | ID de instantánea de la lista de reproducción | +| `external_url` | string | URL de Spotify | + +### `spotify_update_playlist` + +Actualizar una lista de reproducción + +#### Entrada + +| Parámetro | Tipo | Obligatorio | Descripción | +| --------- | ---- | -------- | ----------- | +| `playlistId` | string | Sí | El ID de la lista de reproducción de Spotify | +| `name` | string | No | Nuevo nombre para la lista de reproducción | +| `description` | string | No | Nueva descripción para la lista de reproducción | +| `public` | boolean | No | Si la lista de reproducción debe ser pública | + +#### Salida + +| Parámetro | Tipo | Descripción | +| --------- | ---- | ----------- | +| `success` | boolean | Si la actualización tuvo éxito | + +### `spotify_add_playlist_cover` + +Subir una imagen de portada personalizada para una lista de reproducción. La imagen debe ser JPEG y pesar menos de 256KB. + +#### Entrada + +| Parámetro | Tipo | Obligatorio | Descripción | +| --------- | ---- | -------- | ----------- | +| `playlistId` | string | Sí | El ID de la lista de reproducción de Spotify | +| `imageBase64` | string | Sí | Imagen JPEG codificada en Base64 \(máx. 256KB\) | + +#### Salida + +| Parámetro | Tipo | Descripción | +| --------- | ---- | ----------- | +| `success` | boolean | Si la subida tuvo éxito | + +### `spotify_add_tracks_to_playlist` + +Añadir una o más pistas a una lista de reproducción de Spotify. + +#### Entrada + +| Parámetro | Tipo | Obligatorio | Descripción | +| --------- | ---- | -------- | ----------- | +| `playlistId` | string | Sí | El ID de Spotify de la lista de reproducción | +| `uris` | string | Sí | URIs de Spotify separadas por comas \(p. ej., "spotify:track:xxx,spotify:track:yyy"\) | +| `position` | number | No | Posición para insertar pistas \(base 0\). Si se omite, las pistas se añaden al final. | + +#### Salida + +| Parámetro | Tipo | Descripción | +| --------- | ---- | ----------- | +| `snapshot_id` | string | Nuevo ID de instantánea de la lista de reproducción después de la modificación | + +### `spotify_remove_tracks_from_playlist` + +Eliminar una o más pistas de una lista de reproducción de Spotify. + +#### Entrada + +| Parámetro | Tipo | Obligatorio | Descripción | +| --------- | ---- | -------- | ----------- | +| `playlistId` | string | Sí | El ID de Spotify de la lista de reproducción | +| `uris` | string | Sí | URIs de Spotify separadas por comas para eliminar \(p. ej., "spotify:track:xxx,spotify:track:yyy"\) | + +#### Salida + +| Parámetro | Tipo | Descripción | +| --------- | ---- | ----------- | +| `snapshot_id` | string | Nuevo ID de instantánea de la lista de reproducción después de la modificación | + +### `spotify_reorder_playlist_items` + +Mover pistas a una posición diferente en una lista de reproducción. + +#### Entrada + +| Parámetro | Tipo | Obligatorio | Descripción | +| --------- | ---- | -------- | ----------- | +| `playlistId` | string | Sí | El ID de la lista de reproducción de Spotify | +| `range_start` | number | Sí | Índice inicial de los elementos a reordenar | +| `insert_before` | number | Sí | Índice donde insertar los elementos | +| `range_length` | number | No | Número de elementos a reordenar | +| `snapshot_id` | string | No | ID de instantánea de la lista de reproducción para control de concurrencia | + +#### Salida + +| Parámetro | Tipo | Descripción | +| --------- | ---- | ----------- | +| `snapshot_id` | string | Nuevo ID de instantánea de la lista de reproducción | + +### `spotify_replace_playlist_items` + +Reemplazar todos los elementos en una lista de reproducción con nuevas pistas. + +#### Entrada + +| Parámetro | Tipo | Obligatorio | Descripción | +| --------- | ---- | -------- | ----------- | +| `playlistId` | string | Sí | El ID de la lista de reproducción de Spotify | +| `uris` | string | Sí | URIs de Spotify separados por comas \(máximo 100\) | + +#### Salida + +| Parámetro | Tipo | Descripción | +| --------- | ---- | ----------- | +| `snapshot_id` | string | Nuevo ID de instantánea de la lista de reproducción | + +### `spotify_follow_playlist` + +Seguir (guardar) una lista de reproducción. + +#### Entrada + +| Parámetro | Tipo | Obligatorio | Descripción | +| --------- | ---- | -------- | ----------- | +| `playlistId` | string | Sí | El ID de la lista de reproducción de Spotify | +| `public` | boolean | No | Si la lista de reproducción estará en listas de reproducción públicas | + +#### Salida + +| Parámetro | Tipo | Descripción | +| --------- | ---- | ----------- | +| `success` | boolean | Si el seguimiento tuvo éxito | + +### `spotify_unfollow_playlist` + +Dejar de seguir (eliminar) una lista de reproducción. + +#### Entrada + +| Parámetro | Tipo | Obligatorio | Descripción | +| --------- | ---- | -------- | ----------- | +| `playlistId` | string | Sí | El ID de la lista de reproducción de Spotify | + +#### Salida + +| Parámetro | Tipo | Descripción | +| --------- | ---- | ----------- | +| `success` | boolean | Si dejar de seguir tuvo éxito | + +### `spotify_check_playlist_followers` + +Comprobar si los usuarios siguen una lista de reproducción. + +#### Entrada + +| Parámetro | Tipo | Obligatorio | Descripción | +| --------- | ---- | -------- | ----------- | +| `playlistId` | string | Sí | El ID de la lista de reproducción de Spotify | +| `userIds` | string | Sí | IDs de usuario separados por comas para verificar \(máximo 5\) | + +#### Salida + +| Parámetro | Tipo | Descripción | +| --------- | ---- | ----------- | +| `results` | json | Array de booleanos para cada usuario | + +### `spotify_get_current_user` + +Obtener el usuario actual + +#### Entrada + +| Parámetro | Tipo | Obligatorio | Descripción | +| --------- | ---- | -------- | ----------- | + +#### Salida + +| Parámetro | Tipo | Descripción | +| --------- | ---- | ----------- | +| `id` | string | ID de usuario de Spotify | +| `display_name` | string | Nombre visible | +| `email` | string | Dirección de correo electrónico | +| `country` | string | Código de país | +| `product` | string | Nivel de suscripción \(gratuito, premium\) | +| `followers` | number | Número de seguidores | +| `image_url` | string | URL de imagen de perfil | +| `external_url` | string | URL del perfil de Spotify | + +### `spotify_get_user_profile` + +Obtener un usuario + +#### Entrada + +| Parámetro | Tipo | Obligatorio | Descripción | +| --------- | ---- | -------- | ----------- | +| `userId` | string | Sí | El ID de usuario de Spotify | + +#### Salida + +| Parámetro | Tipo | Descripción | +| --------- | ---- | ----------- | +| `id` | string | ID de usuario | +| `display_name` | string | Nombre visible | +| `followers` | number | Número de seguidores | +| `image_url` | string | URL de imagen de perfil | +| `external_url` | string | URL de Spotify | + +### `spotify_get_top_tracks` + +Obtener el usuario actual + +#### Entrada + +| Parámetro | Tipo | Obligatorio | Descripción | +| --------- | ---- | -------- | ----------- | +| `time_range` | string | No | Rango de tiempo: short_term \(~4 semanas\), medium_term \(~6 meses\), long_term \(años\) | +| `limit` | number | No | Número de pistas a devolver \(1-50\) | +| `offset` | number | No | Índice de la primera pista a devolver | + +#### Salida + +| Parámetro | Tipo | Descripción | +| --------- | ---- | ----------- | +| `tracks` | array | Usuario | + +### `spotify_get_top_artists` + +Obtener el usuario actual + +#### Entrada + +| Parámetro | Tipo | Obligatorio | Descripción | +| --------- | ---- | -------- | ----------- | +| `time_range` | string | No | Rango de tiempo: short_term \(~4 semanas\), medium_term \(~6 meses\), long_term \(años\) | +| `limit` | number | No | Número de artistas a devolver \(1-50\) | +| `offset` | number | No | Índice del primer artista a devolver | + +#### Salida + +| Parámetro | Tipo | Descripción | +| --------- | ---- | ----------- | +| `artists` | array | Usuario | + +### `spotify_get_saved_tracks` + +Obtener el usuario actual + +#### Entrada + +| Parámetro | Tipo | Obligatorio | Descripción | +| --------- | ---- | -------- | ----------- | +| `limit` | number | No | Número de pistas a devolver \(1-50\) | +| `offset` | number | No | Índice de la primera pista a devolver | +| `market` | string | No | Código de país ISO 3166-1 alpha-2 | + +#### Salida + +| Parámetro | Tipo | Descripción | +| --------- | ---- | ----------- | +| `tracks` | array | Usuario | + +### `spotify_save_tracks` + +Guardar pistas para el usuario actual + +#### Entrada + +| Parámetro | Tipo | Obligatorio | Descripción | +| --------- | ---- | -------- | ----------- | +| `trackIds` | string | Sí | IDs de pistas de Spotify separados por comas para guardar \(máximo 50\) | + +#### Salida + +| Parámetro | Tipo | Descripción | +| --------- | ---- | ----------- | +| `success` | boolean | Si las pistas se guardaron correctamente | + +### `spotify_remove_saved_tracks` + +Eliminar pistas del usuario + +#### Entrada + +| Parámetro | Tipo | Obligatorio | Descripción | +| --------- | ---- | -------- | ----------- | +| `trackIds` | string | Sí | IDs de pistas separados por comas para eliminar \(máximo 50\) | + +#### Salida + +| Parámetro | Tipo | Descripción | +| --------- | ---- | ----------- | +| `success` | boolean | Si las pistas se eliminaron correctamente | + +### `spotify_check_saved_tracks` + +Comprobar si una o más pistas están guardadas en el usuario + +#### Entrada + +| Parámetro | Tipo | Obligatorio | Descripción | +| --------- | ---- | -------- | ----------- | +| `trackIds` | string | Sí | IDs de pistas separados por comas para comprobar \(máximo 50\) | + +#### Salida + +| Parámetro | Tipo | Descripción | +| --------- | ---- | ----------- | +| `results` | json | Array de IDs de pistas con estado de guardado | +| `all_saved` | boolean | Si todas las pistas están guardadas | +| `none_saved` | boolean | Si ninguna pista está guardada | + +### `spotify_get_recently_played` + +Obtener el usuario + +#### Entrada + +| Parámetro | Tipo | Requerido | Descripción | +| --------- | ---- | -------- | ----------- | +| `limit` | number | No | Número de pistas a devolver \(1-50\) | +| `after` | number | No | Marca de tiempo Unix en milisegundos. Devuelve elementos después de este cursor. | +| `before` | number | No | Marca de tiempo Unix en milisegundos. Devuelve elementos antes de este cursor. | + +#### Salida + +| Parámetro | Tipo | Descripción | +| --------- | ---- | ----------- | +| `items` | array | Pistas reproducidas recientemente | + +### `spotify_get_new_releases` + +Obtener una lista de nuevos lanzamientos de álbumes destacados en Spotify. + +#### Entrada + +| Parámetro | Tipo | Requerido | Descripción | +| --------- | ---- | -------- | ----------- | +| `country` | string | No | Código de país ISO 3166-1 alpha-2 \(p. ej., "US", "GB"\) | +| `limit` | number | No | Número de lanzamientos a devolver \(1-50\) | +| `offset` | number | No | Índice del primer lanzamiento a devolver | + +#### Salida + +| Parámetro | Tipo | Descripción | +| --------- | ---- | ----------- | +| `albums` | json | Lista de nuevos lanzamientos | +| `total` | number | Número total de nuevos lanzamientos | +| `next` | string | URL para la siguiente página | + +### `spotify_get_categories` + +Obtener una lista de categorías de navegación utilizadas para etiquetar elementos en Spotify. + +#### Entrada + +| Parámetro | Tipo | Requerido | Descripción | +| --------- | ---- | -------- | ----------- | +| `country` | string | No | Código de país ISO 3166-1 alpha-2 \(p. ej., "US", "GB"\) | +| `locale` | string | No | Código de localización \(p. ej., "en_US", "es_MX"\) | +| `limit` | number | No | Número de categorías a devolver \(1-50\) | + +#### Salida + +| Parámetro | Tipo | Descripción | +| --------- | ---- | ----------- | +| `categories` | json | Lista de categorías de navegación | +| `total` | number | Número total de categorías | + +### `spotify_get_markets` + +Obtener la lista de mercados donde Spotify está disponible. + +#### Entrada + +| Parámetro | Tipo | Obligatorio | Descripción | +| --------- | ---- | -------- | ----------- | + +#### Salida + +| Parámetro | Tipo | Descripción | +| --------- | ---- | ----------- | +| `markets` | json | Lista de códigos de país ISO | + +### `spotify_get_playback_state` + +Obtener el estado actual de reproducción incluyendo dispositivo, pista y progreso. + +#### Entrada + +| Parámetro | Tipo | Obligatorio | Descripción | +| --------- | ---- | -------- | ----------- | +| `market` | string | No | Código de país ISO 3166-1 alpha-2 | + +#### Salida + +| Parámetro | Tipo | Descripción | +| --------- | ---- | ----------- | +| `is_playing` | boolean | Si la reproducción está activa | +| `device` | object | Información del dispositivo activo | +| `progress_ms` | number | Progreso en milisegundos | +| `currently_playing_type` | string | Tipo de contenido en reproducción | +| `shuffle_state` | boolean | Si el modo aleatorio está activado | +| `repeat_state` | string | Modo de repetición (off, track, context) | +| `track` | object | Pista en reproducción actual | + +### `spotify_get_currently_playing` + +Obtener el usuario + +#### Entrada + +| Parámetro | Tipo | Obligatorio | Descripción | +| --------- | ---- | -------- | ----------- | +| `market` | string | No | Código de país ISO para el mercado | + +#### Salida + +| Parámetro | Tipo | Descripción | +| --------- | ---- | ----------- | +| `is_playing` | boolean | Si la reproducción está activa | +| `progress_ms` | number | Posición actual en la pista (ms) | +| `track` | json | Pista reproduciéndose actualmente | + +### `spotify_get_devices` + +Obtener el usuario + +#### Entrada + +| Parámetro | Tipo | Requerido | Descripción | +| --------- | ---- | -------- | ----------- | + +#### Salida + +| Parámetro | Tipo | Descripción | +| --------- | ---- | ----------- | +| `devices` | array | Dispositivos de reproducción disponibles | + +### `spotify_get_queue` + +Obtener el usuario + +#### Entrada + +| Parámetro | Tipo | Requerido | Descripción | +| --------- | ---- | -------- | ----------- | + +#### Salida + +| Parámetro | Tipo | Descripción | +| --------- | ---- | ----------- | +| `currently_playing` | json | Pista reproduciéndose actualmente | +| `queue` | json | Próximas pistas en la cola | + +### `spotify_play` + +Iniciar o reanudar la reproducción en Spotify. Puede reproducir pistas, álbumes o listas de reproducción específicas. + +#### Entrada + +| Parámetro | Tipo | Requerido | Descripción | +| --------- | ---- | -------- | ----------- | +| `device_id` | string | No | ID del dispositivo para reproducir. Si no se proporciona, reproduce en el dispositivo activo. | +| `context_uri` | string | No | URI de Spotify del álbum, artista o lista de reproducción a reproducir (p. ej., "spotify:album:xxx") | +| `uris` | string | No | URIs de pistas separadas por comas para reproducir (p. ej., "spotify:track:xxx,spotify:track:yyy") | +| `offset` | number | No | Posición en el contexto para comenzar a reproducir (índice basado en 0) | +| `position_ms` | number | No | Posición en la pista para comenzar (en milisegundos) | + +#### Salida + +| Parámetro | Tipo | Descripción | +| --------- | ---- | ----------- | +| `success` | boolean | Indica si la reproducción comenzó correctamente | + +### `spotify_pause` + +Pausar la reproducción en Spotify. + +#### Entrada + +| Parámetro | Tipo | Obligatorio | Descripción | +| --------- | ---- | -------- | ----------- | +| `device_id` | string | No | ID del dispositivo para pausar. Si no se proporciona, pausa el dispositivo activo. | + +#### Salida + +| Parámetro | Tipo | Descripción | +| --------- | ---- | ----------- | +| `success` | boolean | Indica si la reproducción fue pausada | + +### `spotify_skip_next` + +Saltar a la siguiente pista en Spotify. + +#### Entrada + +| Parámetro | Tipo | Obligatorio | Descripción | +| --------- | ---- | -------- | ----------- | +| `device_id` | string | No | ID del dispositivo. Si no se proporciona, usa el dispositivo activo. | + +#### Salida + +| Parámetro | Tipo | Descripción | +| --------- | ---- | ----------- | +| `success` | boolean | Indica si el salto fue exitoso | + +### `spotify_skip_previous` + +Saltar a la pista anterior en Spotify. + +#### Entrada + +| Parámetro | Tipo | Obligatorio | Descripción | +| --------- | ---- | -------- | ----------- | +| `device_id` | string | No | ID del dispositivo. Si no se proporciona, usa el dispositivo activo. | + +#### Salida + +| Parámetro | Tipo | Descripción | +| --------- | ---- | ----------- | +| `success` | boolean | Indica si el salto fue exitoso | + +### `spotify_seek` + +Buscar una posición en la pista que se está reproduciendo actualmente. + +#### Entrada + +| Parámetro | Tipo | Obligatorio | Descripción | +| --------- | ---- | -------- | ----------- | +| `position_ms` | number | Sí | Posición en milisegundos a la que desplazarse | +| `device_id` | string | No | ID del dispositivo objetivo | + +#### Salida + +| Parámetro | Tipo | Descripción | +| --------- | ---- | ----------- | +| `success` | boolean | Indica si el desplazamiento fue exitoso | + +### `spotify_add_to_queue` + +Añadir una pista al usuario + +#### Entrada + +| Parámetro | Tipo | Obligatorio | Descripción | +| --------- | ---- | -------- | ----------- | +| `uri` | string | Sí | URI de Spotify de la pista a añadir \(p. ej., "spotify:track:xxx"\) | +| `device_id` | string | No | ID del dispositivo. Si no se proporciona, usa el dispositivo activo. | + +#### Salida + +| Parámetro | Tipo | Descripción | +| --------- | ---- | ----------- | +| `success` | boolean | Indica si la pista fue añadida a la cola | + +### `spotify_set_volume` + +Establecer el volumen de reproducción en Spotify. + +#### Entrada + +| Parámetro | Tipo | Obligatorio | Descripción | +| --------- | ---- | -------- | ----------- | +| `volume_percent` | number | Sí | Nivel de volumen \(0 a 100\) | +| `device_id` | string | No | ID del dispositivo. Si no se proporciona, usa el dispositivo activo. | + +#### Salida + +| Parámetro | Tipo | Descripción | +| --------- | ---- | ----------- | +| `success` | boolean | Indica si el volumen fue establecido | + +### `spotify_set_repeat` + +Establecer el modo de repetición para la reproducción. + +#### Entrada + +| Parámetro | Tipo | Obligatorio | Descripción | +| --------- | ---- | -------- | ----------- | +| `state` | string | Sí | Modo de repetición: "off", "track", o "context" | +| `device_id` | string | No | ID del dispositivo objetivo | + +#### Salida + +| Parámetro | Tipo | Descripción | +| --------- | ---- | ----------- | +| `success` | boolean | Indica si el modo de repetición se estableció correctamente | + +### `spotify_set_shuffle` + +Activar o desactivar la reproducción aleatoria. + +#### Entrada + +| Parámetro | Tipo | Obligatorio | Descripción | +| --------- | ---- | -------- | ----------- | +| `state` | boolean | Sí | true para activar la reproducción aleatoria, false para desactivarla | +| `device_id` | string | No | ID del dispositivo objetivo | + +#### Salida + +| Parámetro | Tipo | Descripción | +| --------- | ---- | ----------- | +| `success` | boolean | Indica si la reproducción aleatoria se estableció correctamente | + +### `spotify_transfer_playback` + +Transferir la reproducción a un dispositivo diferente. + +#### Entrada + +| Parámetro | Tipo | Obligatorio | Descripción | +| --------- | ---- | -------- | ----------- | +| `device_id` | string | Sí | ID del dispositivo al que transferir la reproducción | +| `play` | boolean | No | Indica si se debe iniciar la reproducción en el nuevo dispositivo | + +#### Salida + +| Parámetro | Tipo | Descripción | +| --------- | ---- | ----------- | +| `success` | boolean | Indica si la transferencia fue exitosa | + +## Notas + +- Categoría: `tools` +- Tipo: `spotify` diff --git a/apps/docs/content/docs/es/tools/sqs.mdx b/apps/docs/content/docs/es/tools/sqs.mdx new file mode 100644 index 000000000..d4832cd2f --- /dev/null +++ b/apps/docs/content/docs/es/tools/sqs.mdx @@ -0,0 +1,63 @@ +--- +title: Amazon SQS +description: Conectar a Amazon SQS +--- + +import { BlockInfoCard } from "@/components/ui/block-info-card" + + + +{/* MANUAL-CONTENT-START:intro */} +[Amazon Simple Queue Service (SQS)](https://aws.amazon.com/sqs/) es un servicio de cola de mensajes completamente administrado que permite desacoplar y escalar microservicios, sistemas distribuidos y aplicaciones sin servidor. SQS elimina la complejidad y la sobrecarga asociadas con la gestión y operación de middleware orientado a mensajes, y permite a los desarrolladores centrarse en el trabajo diferenciador. + +Con Amazon SQS, puedes: + +- **Enviar mensajes**: Publicar mensajes en colas para procesamiento asíncrono +- **Desacoplar aplicaciones**: Permitir un acoplamiento flexible entre los componentes de tu sistema +- **Escalar cargas de trabajo**: Manejar cargas de trabajo variables sin aprovisionar infraestructura +- **Garantizar fiabilidad**: Redundancia incorporada y alta disponibilidad +- **Soportar colas FIFO**: Mantener un orden estricto de mensajes y procesamiento exactamente una vez + +En Sim, la integración con SQS permite a tus agentes enviar mensajes a las colas de Amazon SQS de forma segura y programática. Las operaciones compatibles incluyen: + +- **Enviar mensaje**: Enviar mensajes a colas SQS con ID de grupo de mensajes opcional e ID de deduplicación para colas FIFO + +Esta integración permite a tus agentes automatizar flujos de trabajo de envío de mensajes sin intervención manual. Al conectar Sim con Amazon SQS, puedes crear agentes que publiquen mensajes en colas dentro de tus flujos de trabajo, todo sin tener que gestionar la infraestructura o las conexiones de las colas. +{/* MANUAL-CONTENT-END */} + +## Instrucciones de uso + +Integra Amazon SQS en el flujo de trabajo. Puede enviar mensajes a colas SQS. + +## Herramientas + +### `sqs_send` + +Enviar un mensaje a una cola de Amazon SQS + +#### Entrada + +| Parámetro | Tipo | Obligatorio | Descripción | +| --------- | ---- | -------- | ----------- | +| `region` | string | Sí | Región de AWS (p. ej., us-east-1) | +| `accessKeyId` | string | Sí | ID de clave de acceso de AWS | +| `secretAccessKey` | string | Sí | Clave de acceso secreta de AWS | +| `queueUrl` | string | Sí | URL de la cola | +| `data` | object | Sí | Cuerpo del mensaje a enviar | +| `messageGroupId` | string | No | ID del grupo de mensajes (opcional) | +| `messageDeduplicationId` | string | No | ID de deduplicación del mensaje (opcional) | + +#### Salida + +| Parámetro | Tipo | Descripción | +| --------- | ---- | ----------- | +| `message` | string | Mensaje de estado de la operación | +| `id` | string | ID del mensaje | + +## Notas + +- Categoría: `tools` +- Tipo: `sqs` diff --git a/apps/docs/content/docs/es/tools/stagehand.mdx b/apps/docs/content/docs/es/tools/stagehand.mdx index 47bf4efcb..47b63c3db 100644 --- a/apps/docs/content/docs/es/tools/stagehand.mdx +++ b/apps/docs/content/docs/es/tools/stagehand.mdx @@ -1,6 +1,6 @@ --- -title: Stagehand Extract -description: Extrae datos de sitios web +title: Stagehand +description: Automatización web y extracción de datos --- import { BlockInfoCard } from "@/components/ui/block-info-card" @@ -11,34 +11,42 @@ import { BlockInfoCard } from "@/components/ui/block-info-card" /> {/* MANUAL-CONTENT-START:intro */} -[Stagehand](https://stagehand.com) es una herramienta que te permite extraer datos estructurados de páginas web utilizando Browserbase y OpenAI. +[Stagehand](https://stagehand.com) es una herramienta que permite tanto la extracción de datos estructurados de páginas web como la automatización web autónoma utilizando Browserbase y LLMs modernos (OpenAI o Anthropic). -Con Stagehand, puedes: +Stagehand ofrece dos capacidades principales en Sim: -- **Extraer datos estructurados**: Extraer datos estructurados de páginas web utilizando Browserbase y OpenAI -- **Guardar datos en una base de datos**: Guardar los datos extraídos en una base de datos -- **Automatizar flujos de trabajo**: Automatizar flujos de trabajo para extraer datos de páginas web +- **stagehand_extract**: Extrae datos estructurados de una sola página web. Especificas lo que quieres (un esquema), y la IA recupera y analiza los datos en esa forma desde la página. Esto es mejor para extraer listas, campos u objetos cuando sabes exactamente qué información necesitas y dónde obtenerla. -En Sim, la integración de Stagehand permite a tus agentes extraer datos estructurados de páginas web utilizando Browserbase y OpenAI. Esto permite escenarios de automatización potentes como extracción de datos, análisis de datos e integración de datos. Tus agentes pueden extraer datos estructurados de páginas web, guardar los datos extraídos en una base de datos y automatizar flujos de trabajo para extraer datos de páginas web. Esta integración cierra la brecha entre tus flujos de trabajo de IA y tu sistema de gestión de datos, permitiendo una extracción e integración de datos sin problemas. Al conectar Sim con Stagehand, puedes automatizar procesos de extracción de datos, mantener repositorios de información actualizados, generar informes y organizar información de manera inteligente, todo a través de tus agentes inteligentes. +- **stagehand_agent**: Ejecuta un agente web autónomo capaz de completar tareas de múltiples pasos, interactuar con elementos, navegar entre páginas y devolver resultados estructurados. Esto es mucho más flexible: el agente puede hacer cosas como iniciar sesión, buscar, completar formularios, recopilar datos de múltiples lugares y generar un resultado final según un esquema solicitado. + +**Diferencias clave:** + +- *stagehand_extract* es una operación rápida de “extraer estos datos de esta página”. Funciona mejor para tareas de extracción directas, de un solo paso. +- *stagehand_agent* realiza tareas autónomas complejas de múltiples pasos en la web — como navegación, búsqueda o incluso transacciones — y puede extraer datos dinámicamente según tus instrucciones y un esquema opcional. + +En la práctica, usa **stagehand_extract** cuando sabes qué quieres y dónde, y usa **stagehand_agent** cuando necesitas que un bot piense y ejecute flujos de trabajo interactivos. + +Al integrar Stagehand, los agentes de Sim pueden automatizar la recopilación de datos, el análisis y la ejecución de flujos de trabajo en la web: actualizando bases de datos, organizando información y generando informes personalizados, de manera fluida y autónoma. {/* MANUAL-CONTENT-END */} ## Instrucciones de uso -Integra Stagehand en el flujo de trabajo. Puede extraer datos estructurados de páginas web. Requiere clave API. +Integra Stagehand en el flujo de trabajo. Puede extraer datos estructurados de páginas web o ejecutar un agente autónomo para realizar tareas. ## Herramientas ### `stagehand_extract` -Extrae datos estructurados de una página web utilizando Stagehand +Extraer datos estructurados de una página web usando Stagehand #### Entrada -| Parámetro | Tipo | Requerido | Descripción | +| Parámetro | Tipo | Obligatorio | Descripción | | --------- | ---- | -------- | ----------- | | `url` | string | Sí | URL de la página web de la que extraer datos | | `instruction` | string | Sí | Instrucciones para la extracción | -| `apiKey` | string | Sí | Clave API de OpenAI para la extracción \(requerida por Stagehand\) | +| `provider` | string | No | Proveedor de IA a utilizar: openai o anthropic | +| `apiKey` | string | Sí | Clave API para el proveedor seleccionado | | `schema` | json | Sí | Esquema JSON que define la estructura de los datos a extraer | #### Salida @@ -47,6 +55,28 @@ Extrae datos estructurados de una página web utilizando Stagehand | --------- | ---- | ----------- | | `data` | object | Datos estructurados extraídos que coinciden con el esquema proporcionado | +### `stagehand_agent` + +Ejecutar un agente web autónomo para completar tareas y extraer datos estructurados + +#### Entrada + +| Parámetro | Tipo | Obligatorio | Descripción | +| --------- | ---- | -------- | ----------- | +| `startUrl` | string | Sí | URL de la página web donde iniciar el agente | +| `task` | string | Sí | La tarea a completar o el objetivo a lograr en el sitio web | +| `variables` | json | No | Variables opcionales para sustituir en la tarea \(formato: \{key: value\}\). Referencia en la tarea usando %key% | +| `format` | string | No | Sin descripción | +| `provider` | string | No | Proveedor de IA a utilizar: openai o anthropic | +| `apiKey` | string | Sí | Clave API para el proveedor seleccionado | +| `outputSchema` | json | No | Esquema JSON opcional que define la estructura de los datos que el agente debe devolver | + +#### Salida + +| Parámetro | Tipo | Descripción | +| --------- | ---- | ----------- | +| `agentResult` | objeto | Resultado de la ejecución del agente Stagehand | + ## Notas - Categoría: `tools` diff --git a/apps/docs/content/docs/es/tools/stagehand_agent.mdx b/apps/docs/content/docs/es/tools/stagehand_agent.mdx deleted file mode 100644 index 0649159a1..000000000 --- a/apps/docs/content/docs/es/tools/stagehand_agent.mdx +++ /dev/null @@ -1,59 +0,0 @@ ---- -title: Stagehand Agent -description: Agente autónomo de navegación web ---- - -import { BlockInfoCard } from "@/components/ui/block-info-card" - - - -{/* MANUAL-CONTENT-START:intro */} -[Stagehand](https://www.stagehand.dev/) es una plataforma de agentes web autónomos que permite a los sistemas de IA navegar e interactuar con sitios web tal como lo haría un humano. Proporciona una solución potente para automatizar tareas web complejas sin necesidad de código personalizado o scripts de automatización de navegador. - -Con Stagehand, puedes: - -- **Automatizar la navegación web**: Permitir que la IA navegue por sitios web, haga clic en enlaces, complete formularios e interactúe con elementos web -- **Extraer datos estructurados**: Recopilar información específica de sitios web en un formato estructurado y utilizable -- **Completar flujos de trabajo complejos**: Realizar tareas de múltiples pasos en diferentes sitios web y aplicaciones web -- **Gestionar la autenticación**: Navegar por procesos de inicio de sesión y mantener sesiones en sitios web -- **Procesar contenido dinámico**: Interactuar con sitios con uso intensivo de JavaScript y aplicaciones de una sola página -- **Mantener la conciencia del contexto**: Realizar un seguimiento del estado actual y del historial durante la navegación -- **Generar informes detallados**: Recibir registros completos de las acciones realizadas y los datos recopilados - -En Sim, la integración de Stagehand permite que tus agentes interactúen sin problemas con sistemas basados en web como parte de sus flujos de trabajo. Esto permite escenarios de automatización sofisticados que conectan a tus agentes de IA con la amplia información y funcionalidad disponible en la web. Tus agentes pueden buscar información, interactuar con aplicaciones web, extraer datos de sitios web e incorporar estas capacidades en sus procesos de toma de decisiones. Al conectar Sim con Stagehand, puedes crear agentes que van más allá de las integraciones basadas en API para navegar por la web tal como lo haría un humano: completando formularios, haciendo clic en botones, leyendo contenido y extrayendo información valiosa para completar sus tareas de manera más efectiva. -{/* MANUAL-CONTENT-END */} - -## Instrucciones de uso - -Integra el Agente Stagehand en el flujo de trabajo. Puede navegar por la web y realizar tareas. Requiere clave API. - -## Herramientas - -### `stagehand_agent` - -Ejecuta un agente web autónomo para completar tareas y extraer datos estructurados - -#### Entrada - -| Parámetro | Tipo | Obligatorio | Descripción | -| --------- | ---- | ----------- | ----------- | -| `startUrl` | string | Sí | URL de la página web donde iniciará el agente | -| `task` | string | Sí | La tarea a completar o el objetivo a lograr en el sitio web | -| `variables` | json | No | Variables opcionales para sustituir en la tarea \(formato: \{key: value\}\). Referencia en la tarea usando %key% | -| `format` | string | No | Sin descripción | -| `apiKey` | string | Sí | Clave API de OpenAI para la ejecución del agente \(requerida por Stagehand\) | -| `outputSchema` | json | No | Esquema JSON opcional que define la estructura de los datos que el agente debe devolver | - -#### Salida - -| Parámetro | Tipo | Descripción | -| --------- | ---- | ----------- | -| `agentResult` | object | Resultado de la ejecución del agente Stagehand | - -## Notas - -- Categoría: `tools` -- Tipo: `stagehand_agent` diff --git a/apps/docs/content/docs/es/tools/trello.mdx b/apps/docs/content/docs/es/tools/trello.mdx index fabe8e4d2..7399187eb 100644 --- a/apps/docs/content/docs/es/tools/trello.mdx +++ b/apps/docs/content/docs/es/tools/trello.mdx @@ -45,10 +45,8 @@ Listar todas las listas en un tablero de Trello | Parámetro | Tipo | Descripción | | --------- | ---- | ----------- | -| `success` | boolean | Si la operación fue exitosa | -| `lists` | array | Array de objetos de lista con id, nombre, cerrado, posición e idTablero | +| `lists` | array | Array de objetos de lista con id, nombre, closed, pos e idBoard | | `count` | number | Número de listas devueltas | -| `error` | string | Mensaje de error si la operación falló | ### `trello_list_cards` @@ -64,10 +62,8 @@ Listar todas las listas en un tablero de Trello | Parámetro | Tipo | Descripción | | --------- | ---- | ----------- | -| `success` | boolean | Si la operación fue exitosa | | `cards` | array | Array de objetos de tarjeta con id, nombre, desc, url, IDs de tablero/lista, etiquetas y fecha de vencimiento | | `count` | number | Número de tarjetas devueltas | -| `error` | string | Mensaje de error si la operación falló | ### `trello_create_card` @@ -89,9 +85,7 @@ Crear una nueva tarjeta en un tablero de Trello | Parámetro | Tipo | Descripción | | --------- | ---- | ----------- | -| `success` | boolean | Si la tarjeta se creó correctamente | -| `card` | object | El objeto de la tarjeta creada con id, nombre, descripción, url y otras propiedades | -| `error` | string | Mensaje de error si la operación falló | +| `card` | object | El objeto de tarjeta creada con id, nombre, desc, url y otras propiedades | ### `trello_update_card` @@ -113,9 +107,7 @@ Actualizar una tarjeta existente en Trello | Parámetro | Tipo | Descripción | | --------- | ---- | ----------- | -| `success` | boolean | Si la tarjeta se actualizó correctamente | -| `card` | object | El objeto de la tarjeta actualizada con id, nombre, descripción, url y otras propiedades | -| `error` | string | Mensaje de error si la operación falló | +| `card` | object | El objeto de tarjeta actualizada con id, nombre, desc, url y otras propiedades | ### `trello_get_actions` @@ -134,10 +126,8 @@ Obtener actividad/acciones de un tablero o tarjeta | Parámetro | Tipo | Descripción | | --------- | ---- | ----------- | -| `success` | boolean | Si la operación fue exitosa | | `actions` | array | Array de objetos de acción con tipo, fecha, miembro y datos | | `count` | number | Número de acciones devueltas | -| `error` | string | Mensaje de error si la operación falló | ### `trello_add_comment` @@ -154,9 +144,7 @@ Añadir un comentario a una tarjeta de Trello | Parámetro | Tipo | Descripción | | --------- | ---- | ----------- | -| `success` | boolean | Si el comentario se añadió correctamente | | `comment` | object | El objeto de comentario creado con id, texto, fecha y miembro creador | -| `error` | string | Mensaje de error si la operación falló | ## Notas diff --git a/apps/docs/content/docs/es/tools/typeform.mdx b/apps/docs/content/docs/es/tools/typeform.mdx index f6bb609dc..33a925e15 100644 --- a/apps/docs/content/docs/es/tools/typeform.mdx +++ b/apps/docs/content/docs/es/tools/typeform.mdx @@ -48,25 +48,9 @@ Recuperar respuestas de formularios de Typeform | Parámetro | Tipo | Descripción | | --------- | ---- | ----------- | -| `total_items` | number | Recuento total de respuestas/formularios | -| `page_count` | number | Recuento total de páginas | -| `items` | json | Array de elementos de respuesta/formulario | -| `id` | string | Identificador único del formulario | -| `title` | string | Título del formulario | -| `type` | string | Tipo de formulario | -| `created_at` | string | Marca de tiempo ISO de creación del formulario | -| `last_updated_at` | string | Marca de tiempo ISO de última actualización | -| `settings` | json | Objeto de configuración del formulario | -| `theme` | json | Objeto de configuración del tema | -| `workspace` | json | Información del espacio de trabajo | -| `fields` | json | Array de campos/preguntas del formulario | -| `thankyou_screens` | json | Array de pantallas de agradecimiento | -| `_links` | json | Enlaces a recursos relacionados | -| `deleted` | boolean | Si el formulario se eliminó correctamente | -| `message` | string | Mensaje de confirmación de eliminación | -| `fileUrl` | string | URL del archivo descargado | -| `contentType` | string | Tipo de contenido del archivo | -| `filename` | string | Nombre del archivo | +| `total_items` | number | Número total de respuestas | +| `page_count` | number | Número total de páginas disponibles | +| `items` | array | Array de objetos de respuesta con response_id, submitted_at, answers y metadata | ### `typeform_files` @@ -128,7 +112,7 @@ Recupera una lista de todos los formularios en tu cuenta de Typeform | --------- | ---- | ----------- | | `total_items` | number | Número total de formularios en la cuenta | | `page_count` | number | Número total de páginas disponibles | -| `items` | array | Array de objetos de formulario | +| `items` | array | Array de objetos de formulario con id, title, created_at, last_updated_at, settings, theme y _links | ### `typeform_get_form` @@ -148,11 +132,13 @@ Recuperar detalles completos y estructura de un formulario específico | `id` | string | Identificador único del formulario | | `title` | string | Título del formulario | | `type` | string | Tipo de formulario \(form, quiz, etc.\) | -| `created_at` | string | Marca de tiempo ISO de creación del formulario | -| `last_updated_at` | string | Marca de tiempo ISO de última actualización | | `settings` | object | Configuración del formulario incluyendo idioma, barra de progreso, etc. | -| `theme` | object | Configuración del tema con colores, fuentes y ajustes de diseño | -| `workspace` | object | Información del espacio de trabajo | +| `theme` | object | Referencia del tema | +| `workspace` | object | Referencia del espacio de trabajo | +| `fields` | array | Array de campos/preguntas del formulario | +| `welcome_screens` | array | Array de pantallas de bienvenida | +| `thankyou_screens` | array | Array de pantallas de agradecimiento | +| `_links` | object | Enlaces a recursos relacionados incluyendo URL pública del formulario | ### `typeform_create_form` @@ -177,13 +163,8 @@ Crear un nuevo formulario con campos y configuraciones | `id` | string | Identificador único del formulario creado | | `title` | string | Título del formulario | | `type` | string | Tipo de formulario | -| `created_at` | string | Marca de tiempo ISO de creación del formulario | -| `last_updated_at` | string | Marca de tiempo ISO de última actualización | -| `settings` | object | Configuración del formulario | -| `theme` | object | Configuración del tema aplicado | -| `workspace` | object | Información del espacio de trabajo | -| `fields` | array | Array de campos del formulario creados | -| `_links` | object | Enlaces a recursos relacionados | +| `fields` | array | Array de campos del formulario creado | +| `_links` | object | Enlaces a recursos relacionados incluyendo URL pública del formulario | ### `typeform_update_form` @@ -204,12 +185,11 @@ Actualizar un formulario existente usando operaciones JSON Patch | `id` | string | Identificador único del formulario actualizado | | `title` | string | Título del formulario | | `type` | string | Tipo de formulario | -| `created_at` | string | Marca de tiempo ISO de creación del formulario | -| `last_updated_at` | string | Marca de tiempo ISO de última actualización | | `settings` | object | Configuración del formulario | -| `theme` | object | Configuración del tema | -| `workspace` | object | Información del espacio de trabajo | +| `theme` | object | Referencia del tema | +| `workspace` | object | Referencia del espacio de trabajo | | `fields` | array | Array de campos del formulario | +| `welcome_screens` | array | Array de pantallas de bienvenida | | `thankyou_screens` | array | Array de pantallas de agradecimiento | | `_links` | object | Enlaces a recursos relacionados | diff --git a/apps/docs/content/docs/es/tools/zep.mdx b/apps/docs/content/docs/es/tools/zep.mdx index 9b9e20836..e0ea11b2f 100644 --- a/apps/docs/content/docs/es/tools/zep.mdx +++ b/apps/docs/content/docs/es/tools/zep.mdx @@ -94,10 +94,7 @@ Recuperar el contexto del usuario de un hilo con modo resumen o básico | Parámetro | Tipo | Descripción | | --------- | ---- | ----------- | -| `context` | string | La cadena de contexto \(resumen o básico\) | -| `facts` | array | Hechos extraídos | -| `entities` | array | Entidades extraídas | -| `summary` | string | Resumen de la conversación | +| `context` | string | La cadena de contexto \(modo resumen o básico\) | ### `zep_get_messages` @@ -137,9 +134,9 @@ Añadir mensajes a un hilo existente | Parámetro | Tipo | Descripción | | --------- | ---- | ----------- | -| `context` | string | Contexto actualizado después de añadir mensajes | -| `messageIds` | array | Array de UUIDs de mensajes añadidos | | `threadId` | string | El ID del hilo | +| `added` | boolean | Si los mensajes se agregaron correctamente | +| `messageIds` | array | Array de UUIDs de mensajes agregados | ### `zep_add_user` @@ -209,7 +206,7 @@ Listar todos los hilos de conversación para un usuario específico | Parámetro | Tipo | Descripción | | --------- | ---- | ----------- | | `threads` | array | Array de objetos de hilo para este usuario | -| `userId` | string | El ID del usuario | +| `totalCount` | number | Número total de hilos devueltos | ## Notas diff --git a/apps/docs/content/docs/fr/tools/apify.mdx b/apps/docs/content/docs/fr/tools/apify.mdx index 150c967ef..b318d92b3 100644 --- a/apps/docs/content/docs/fr/tools/apify.mdx +++ b/apps/docs/content/docs/fr/tools/apify.mdx @@ -51,11 +51,10 @@ Exécuter un acteur APIFY de manière synchrone et obtenir les résultats (maxim | Paramètre | Type | Description | | --------- | ---- | ----------- | -| `success` | booléen | Indique si l'exécution de l'acteur a réussi | -| `runId` | chaîne | ID d'exécution APIFY | -| `status` | chaîne | Statut d'exécution \(SUCCEEDED, FAILED, etc.\) | -| `datasetId` | chaîne | ID du jeu de données contenant les résultats | -| `items` | tableau | Éléments du jeu de données \(si terminé\) | +| `success` | boolean | Indique si l'exécution de l'acteur a réussi | +| `runId` | string | ID d'exécution APIFY | +| `status` | string | Statut d'exécution \(SUCCEEDED, FAILED, etc.\) | +| `items` | array | Éléments du dataset \(si terminé\) | ### `apify_run_actor_async` diff --git a/apps/docs/content/docs/fr/tools/asana.mdx b/apps/docs/content/docs/fr/tools/asana.mdx index 75b3acbb4..0636be556 100644 --- a/apps/docs/content/docs/fr/tools/asana.mdx +++ b/apps/docs/content/docs/fr/tools/asana.mdx @@ -34,7 +34,14 @@ Récupérer une tâche unique par GID ou obtenir plusieurs tâches avec des filt | Paramètre | Type | Description | | --------- | ---- | ----------- | | `success` | boolean | Statut de réussite de l'opération | -| `output` | object | Détails d'une tâche unique ou tableau de tâches, selon que taskGid a été fourni ou non | +| `ts` | string | Horodatage de la réponse | +| `gid` | string | Identifiant unique global de la tâche | +| `resource_type` | string | Type de ressource \(tâche\) | +| `resource_subtype` | string | Sous-type de ressource | +| `name` | string | Nom de la tâche | +| `notes` | string | Notes ou description de la tâche | +| `completed` | boolean | Si la tâche est terminée | +| `assignee` | object | Détails de l'assigné | ### `asana_create_task` @@ -54,8 +61,14 @@ Créer une nouvelle tâche dans Asana | Paramètre | Type | Description | | --------- | ---- | ----------- | -| `success` | booléen | Statut de réussite de l'opération | -| `output` | objet | Détails de la tâche créée avec horodatage, gid, nom, notes et lien permanent | +| `success` | boolean | Statut de réussite de l'opération | +| `ts` | string | Horodatage de la réponse | +| `gid` | string | Identifiant unique global de la tâche | +| `name` | string | Nom de la tâche | +| `notes` | string | Notes ou description de la tâche | +| `completed` | boolean | Si la tâche est terminée | +| `created_at` | string | Horodatage de création de la tâche | +| `permalink_url` | string | URL vers la tâche dans Asana | ### `asana_update_task` @@ -77,7 +90,12 @@ Mettre à jour une tâche existante dans Asana | Paramètre | Type | Description | | --------- | ---- | ----------- | | `success` | boolean | Statut de réussite de l'opération | -| `output` | object | Détails de la tâche mise à jour avec horodatage, gid, nom, notes et horodatage de modification | +| `ts` | string | Horodatage de la réponse | +| `gid` | string | Identifiant unique global de la tâche | +| `name` | string | Nom de la tâche | +| `notes` | string | Notes ou description de la tâche | +| `completed` | boolean | Si la tâche est terminée | +| `modified_at` | string | Horodatage de dernière modification de la tâche | ### `asana_get_projects` @@ -94,7 +112,8 @@ Récupérer tous les projets d'un espace de travail Asana | Paramètre | Type | Description | | --------- | ---- | ----------- | | `success` | boolean | Statut de réussite de l'opération | -| `output` | object | Liste des projets avec leur gid, nom et type de ressource | +| `ts` | string | Horodatage de la réponse | +| `projects` | array | Tableau de projets | ### `asana_search_tasks` @@ -115,7 +134,8 @@ Rechercher des tâches dans un espace de travail Asana | Paramètre | Type | Description | | --------- | ---- | ----------- | | `success` | boolean | Statut de réussite de l'opération | -| `output` | object | Liste des tâches correspondant aux critères de recherche | +| `ts` | string | Horodatage de la réponse | +| `tasks` | array | Tableau des tâches correspondantes | ### `asana_add_comment` @@ -133,7 +153,11 @@ Ajouter un commentaire (story) à une tâche Asana | Paramètre | Type | Description | | --------- | ---- | ----------- | | `success` | boolean | Statut de réussite de l'opération | -| `output` | object | Détails du commentaire incluant gid, texte, horodatage de création et auteur | +| `ts` | string | Horodatage de la réponse | +| `gid` | string | Identifiant unique global du commentaire | +| `text` | string | Contenu textuel du commentaire | +| `created_at` | string | Horodatage de création du commentaire | +| `created_by` | object | Détails de l'auteur du commentaire | ## Notes diff --git a/apps/docs/content/docs/fr/tools/confluence.mdx b/apps/docs/content/docs/fr/tools/confluence.mdx index cec81c263..822ddceaa 100644 --- a/apps/docs/content/docs/fr/tools/confluence.mdx +++ b/apps/docs/content/docs/fr/tools/confluence.mdx @@ -221,6 +221,33 @@ Supprimer un commentaire d'une page Confluence. | `commentId` | chaîne | ID du commentaire supprimé | | `deleted` | booléen | Statut de la suppression | +### `confluence_upload_attachment` + +Téléverser un fichier en tant que pièce jointe à une page Confluence. + +#### Entrée + +| Paramètre | Type | Obligatoire | Description | +| --------- | ---- | -------- | ----------- | +| `domain` | chaîne | Oui | Votre domaine Confluence \(ex. : votreentreprise.atlassian.net\) | +| `pageId` | chaîne | Oui | ID de la page Confluence à laquelle joindre le fichier | +| `file` | fichier | Oui | Le fichier à téléverser en tant que pièce jointe | +| `fileName` | chaîne | Non | Nom de fichier personnalisé optionnel pour la pièce jointe | +| `comment` | chaîne | Non | Commentaire optionnel à ajouter à la pièce jointe | +| `cloudId` | chaîne | Non | ID Cloud Confluence pour l'instance. S'il n'est pas fourni, il sera récupéré à l'aide du domaine. | + +#### Sortie + +| Paramètre | Type | Description | +| --------- | ---- | ----------- | +| `ts` | chaîne | Horodatage du téléversement | +| `attachmentId` | chaîne | ID de la pièce jointe téléversée | +| `title` | chaîne | Nom du fichier de la pièce jointe | +| `fileSize` | nombre | Taille du fichier en octets | +| `mediaType` | chaîne | Type MIME de la pièce jointe | +| `downloadUrl` | chaîne | URL de téléchargement de la pièce jointe | +| `pageId` | chaîne | ID de la page à laquelle la pièce jointe a été ajoutée | + ### `confluence_list_attachments` Lister toutes les pièces jointes d'une page Confluence. diff --git a/apps/docs/content/docs/fr/tools/firecrawl.mdx b/apps/docs/content/docs/fr/tools/firecrawl.mdx index 12dcb0602..af6424446 100644 --- a/apps/docs/content/docs/fr/tools/firecrawl.mdx +++ b/apps/docs/content/docs/fr/tools/firecrawl.mdx @@ -145,7 +145,6 @@ Extrayez des données structurées de pages web entières à l'aide d'instructio | --------- | ---- | ----------- | | `success` | boolean | Indique si l'opération d'extraction a réussi | | `data` | object | Données structurées extraites selon le schéma ou l'invite | -| `sources` | array | Sources de données \(uniquement si showSources est activé\) | ## Remarques diff --git a/apps/docs/content/docs/fr/tools/google_groups.mdx b/apps/docs/content/docs/fr/tools/google_groups.mdx index 837c11255..705ca67b4 100644 --- a/apps/docs/content/docs/fr/tools/google_groups.mdx +++ b/apps/docs/content/docs/fr/tools/google_groups.mdx @@ -34,7 +34,8 @@ Lister tous les groupes dans un domaine Google Workspace | Paramètre | Type | Description | | --------- | ---- | ----------- | -| `output` | json | Données de réponse de l'API Google Groups | +| `groups` | json | Tableau d'objets de groupe | +| `nextPageToken` | string | Jeton pour récupérer la page suivante de résultats | ### `google_groups_get_group` @@ -50,7 +51,7 @@ Obtenir les détails d'un groupe Google spécifique par email ou ID de groupe | Paramètre | Type | Description | | --------- | ---- | ----------- | -| `output` | json | Données de réponse de l'API Google Groups | +| `group` | json | Objet de groupe | ### `google_groups_create_group` @@ -68,7 +69,7 @@ Créer un nouveau groupe Google dans le domaine | Paramètre | Type | Description | | --------- | ---- | ----------- | -| `output` | json | Données de réponse de l'API Google Groups | +| `group` | json | Objet de groupe créé | ### `google_groups_update_group` @@ -87,7 +88,7 @@ Mettre à jour un groupe Google existant | Paramètre | Type | Description | | --------- | ---- | ----------- | -| `output` | json | Données de réponse de l'API Google Groups | +| `group` | json | Objet de groupe mis à jour | ### `google_groups_delete_group` @@ -103,7 +104,7 @@ Supprimer un groupe Google | Paramètre | Type | Description | | --------- | ---- | ----------- | -| `output` | json | Données de réponse de l'API Google Groups | +| `message` | string | Message de succès | ### `google_groups_list_members` @@ -122,7 +123,8 @@ Lister tous les membres d'un groupe Google | Paramètre | Type | Description | | --------- | ---- | ----------- | -| `output` | json | Données de réponse de l'API Google Groups | +| `members` | json | Tableau d'objets de membre | +| `nextPageToken` | string | Jeton pour récupérer la page suivante de résultats | ### `google_groups_get_member` @@ -139,7 +141,7 @@ Obtenir les détails d'un membre spécifique dans un groupe Google | Paramètre | Type | Description | | --------- | ---- | ----------- | -| `output` | json | Données de réponse de l'API Google Groups | +| `member` | json | Objet de membre | ### `google_groups_add_member` @@ -157,7 +159,7 @@ Ajouter un nouveau membre à un groupe Google | Paramètre | Type | Description | | --------- | ---- | ----------- | -| `output` | json | Données de réponse de l'API Google Groups | +| `member` | json | Objet de membre ajouté | ### `google_groups_remove_member` @@ -174,7 +176,7 @@ Supprimer un membre d'un groupe Google | Paramètre | Type | Description | | --------- | ---- | ----------- | -| `output` | json | Données de réponse de l'API Google Groups | +| `message` | string | Message de succès | ### `google_groups_update_member` @@ -192,7 +194,7 @@ Mettre à jour un membre | Paramètre | Type | Description | | --------- | ---- | ----------- | -| `output` | json | Données de réponse de l'API Google Groups | +| `member` | json | Objet de membre mis à jour | ### `google_groups_has_member` @@ -209,7 +211,7 @@ Vérifier si un utilisateur est membre d'un groupe Google | Paramètre | Type | Description | | --------- | ---- | ----------- | -| `output` | json | Données de réponse de l'API Google Groups | +| `isMember` | boolean | Indique si l'utilisateur est membre du groupe | ## Notes diff --git a/apps/docs/content/docs/fr/tools/google_vault.mdx b/apps/docs/content/docs/fr/tools/google_vault.mdx index 26171eead..f9ee8d4ab 100644 --- a/apps/docs/content/docs/fr/tools/google_vault.mdx +++ b/apps/docs/content/docs/fr/tools/google_vault.mdx @@ -35,8 +35,7 @@ Créer une exportation dans une affaire | Paramètre | Type | Description | | --------- | ---- | ----------- | -| `output` | json | Données de réponse de l'API Vault | -| `file` | json | Fichier d'exportation téléchargé \(UserFile\) depuis les fichiers d'exécution | +| `export` | json | Objet d'exportation créé | ### `google_vault_list_matters_export` @@ -55,8 +54,9 @@ Lister les exportations pour une affaire | Paramètre | Type | Description | | --------- | ---- | ----------- | -| `output` | json | Données de réponse de l'API Vault | -| `file` | json | Fichier d'exportation téléchargé \(UserFile\) depuis les fichiers d'exécution | +| `exports` | json | Tableau d'objets d'exportation | +| `export` | json | Objet d'exportation unique \(lorsque exportId est fourni\) | +| `nextPageToken` | string | Jeton pour récupérer la page suivante de résultats | ### `google_vault_download_export_file` @@ -95,8 +95,7 @@ Créer une suspension dans une affaire | Paramètre | Type | Description | | --------- | ---- | ----------- | -| `output` | json | Données de réponse de l'API Vault | -| `file` | json | Fichier d'exportation téléchargé \(UserFile\) depuis les fichiers d'exécution | +| `hold` | json | Objet de suspension créé | ### `google_vault_list_matters_holds` @@ -115,8 +114,9 @@ Lister les suspensions pour une affaire | Paramètre | Type | Description | | --------- | ---- | ----------- | -| `output` | json | Données de réponse de l'API Vault | -| `file` | json | Fichier d'exportation téléchargé (UserFile) à partir des fichiers d'exécution | +| `holds` | json | Tableau d'objets de suspension | +| `hold` | json | Objet de suspension unique \(lorsque holdId est fourni\) | +| `nextPageToken` | string | Jeton pour récupérer la page suivante de résultats | ### `google_vault_create_matters` @@ -133,8 +133,7 @@ Créer une nouvelle affaire dans Google Vault | Paramètre | Type | Description | | --------- | ---- | ----------- | -| `output` | json | Données de réponse de l'API Vault | -| `file` | json | Fichier d'exportation téléchargé (UserFile) à partir des fichiers d'exécution | +| `matter` | json | Objet d'affaire créé | ### `google_vault_list_matters` @@ -152,8 +151,9 @@ Lister les affaires, ou obtenir une affaire spécifique si matterId est fourni | Paramètre | Type | Description | | --------- | ---- | ----------- | -| `output` | json | Données de réponse de l'API Vault | -| `file` | json | Fichier d'exportation téléchargé (UserFile) à partir des fichiers d'exécution | +| `matters` | json | Tableau d'objets d'affaire | +| `matter` | json | Objet d'affaire unique \(lorsque matterId est fourni\) | +| `nextPageToken` | string | Jeton pour récupérer la page suivante de résultats | ## Notes diff --git a/apps/docs/content/docs/fr/tools/grafana.mdx b/apps/docs/content/docs/fr/tools/grafana.mdx index 04a8bd017..c8e23b451 100644 --- a/apps/docs/content/docs/fr/tools/grafana.mdx +++ b/apps/docs/content/docs/fr/tools/grafana.mdx @@ -315,13 +315,13 @@ Créer une annotation sur un tableau de bord ou comme annotation globale #### Entrée | Paramètre | Type | Obligatoire | Description | -| --------- | ---- | ---------- | ----------- | +| --------- | ---- | -------- | ----------- | | `apiKey` | chaîne | Oui | Jeton de compte de service Grafana | | `baseUrl` | chaîne | Oui | URL de l'instance Grafana \(ex., https://your-grafana.com\) | -| `organizationId` | chaîne | Non | ID d'organisation pour les instances Grafana multi-organisations | +| `organizationId` | chaîne | Non | ID de l'organisation pour les instances Grafana multi-organisations | | `text` | chaîne | Oui | Le contenu textuel de l'annotation | -| `tags` | chaîne | Non | Liste de tags séparés par des virgules | -| `dashboardUid` | chaîne | Non | UID du tableau de bord auquel ajouter l'annotation \(facultatif pour les annotations globales\) | +| `tags` | chaîne | Non | Liste d'étiquettes séparées par des virgules | +| `dashboardUid` | chaîne | Oui | UID du tableau de bord auquel ajouter l'annotation | | `panelId` | nombre | Non | ID du panneau auquel ajouter l'annotation | | `time` | nombre | Non | Heure de début en millisecondes d'époque \(par défaut : maintenant\) | | `timeEnd` | nombre | Non | Heure de fin en millisecondes d'époque \(pour les annotations de plage\) | @@ -340,15 +340,15 @@ Interroger les annotations par plage de temps, tableau de bord ou tags #### Entrée | Paramètre | Type | Obligatoire | Description | -| --------- | ---- | ---------- | ----------- | +| --------- | ---- | -------- | ----------- | | `apiKey` | chaîne | Oui | Jeton de compte de service Grafana | | `baseUrl` | chaîne | Oui | URL de l'instance Grafana \(ex., https://your-grafana.com\) | -| `organizationId` | chaîne | Non | ID d'organisation pour les instances Grafana multi-organisations | +| `organizationId` | chaîne | Non | ID de l'organisation pour les instances Grafana multi-organisations | | `from` | nombre | Non | Heure de début en millisecondes d'époque | | `to` | nombre | Non | Heure de fin en millisecondes d'époque | -| `dashboardUid` | chaîne | Non | Filtrer par UID de tableau de bord | +| `dashboardUid` | chaîne | Oui | UID du tableau de bord pour interroger les annotations | | `panelId` | nombre | Non | Filtrer par ID de panneau | -| `tags` | chaîne | Non | Liste de tags séparés par des virgules pour filtrer | +| `tags` | chaîne | Non | Liste d'étiquettes séparées par des virgules pour filtrer | | `type` | chaîne | Non | Filtrer par type \(alerte ou annotation\) | | `limit` | nombre | Non | Nombre maximum d'annotations à retourner | @@ -483,10 +483,20 @@ Créer un nouveau dossier dans Grafana | Paramètre | Type | Description | | --------- | ---- | ----------- | -| `id` | nombre | L'ID numérique du dossier créé | -| `uid` | chaîne | L'UID du dossier créé | -| `title` | chaîne | Le titre du dossier créé | -| `url` | chaîne | Le chemin URL vers le dossier | +| `id` | number | L'identifiant numérique du dossier créé | +| `uid` | string | L'UID du dossier créé | +| `title` | string | Le titre du dossier créé | +| `url` | string | Le chemin URL vers le dossier | +| `hasAcl` | boolean | Si le dossier possède des permissions ACL personnalisées | +| `canSave` | boolean | Si l'utilisateur actuel peut enregistrer le dossier | +| `canEdit` | boolean | Si l'utilisateur actuel peut modifier le dossier | +| `canAdmin` | boolean | Si l'utilisateur actuel a des droits d'administrateur sur le dossier | +| `canDelete` | boolean | Si l'utilisateur actuel peut supprimer le dossier | +| `createdBy` | string | Nom d'utilisateur de la personne qui a créé le dossier | +| `created` | string | Horodatage de la création du dossier | +| `updatedBy` | string | Nom d'utilisateur de la personne qui a dernièrement mis à jour le dossier | +| `updated` | string | Horodatage de la dernière mise à jour du dossier | +| `version` | number | Numéro de version du dossier | ## Notes diff --git a/apps/docs/content/docs/fr/tools/hubspot.mdx b/apps/docs/content/docs/fr/tools/hubspot.mdx index 4c790615a..c5ccacf83 100644 --- a/apps/docs/content/docs/fr/tools/hubspot.mdx +++ b/apps/docs/content/docs/fr/tools/hubspot.mdx @@ -48,8 +48,9 @@ Récupérer tous les utilisateurs du compte HubSpot | Paramètre | Type | Description | | --------- | ---- | ----------- | +| `users` | array | Tableau d'objets utilisateur HubSpot | +| `metadata` | object | Métadonnées de l'opération | | `success` | boolean | Statut de réussite de l'opération | -| `output` | object | Données des utilisateurs | ### `hubspot_list_contacts` @@ -68,8 +69,10 @@ Récupérer tous les contacts du compte HubSpot avec prise en charge de la pagin | Paramètre | Type | Description | | --------- | ---- | ----------- | -| `success` | booléen | Statut de réussite de l'opération | -| `output` | objet | Données des contacts | +| `contacts` | array | Tableau d'objets contact HubSpot | +| `paging` | object | Informations de pagination | +| `metadata` | object | Métadonnées de l'opération | +| `success` | boolean | Statut de réussite de l'opération | ### `hubspot_get_contact` @@ -88,8 +91,9 @@ Récupérer un seul contact par ID ou email depuis HubSpot | Paramètre | Type | Description | | --------- | ---- | ----------- | -| `success` | booléen | Statut de réussite de l'opération | -| `output` | objet | Données du contact | +| `contact` | object | Objet contact HubSpot avec propriétés | +| `metadata` | object | Métadonnées de l'opération | +| `success` | boolean | Statut de réussite de l'opération | ### `hubspot_create_contact` @@ -106,8 +110,9 @@ Créer un nouveau contact dans HubSpot. Nécessite au moins l'un des éléments | Paramètre | Type | Description | | --------- | ---- | ----------- | -| `success` | booléen | Statut de réussite de l'opération | -| `output` | objet | Données du contact créé | +| `contact` | object | Objet contact HubSpot créé | +| `metadata` | object | Métadonnées de l'opération | +| `success` | boolean | Statut de réussite de l'opération | ### `hubspot_update_contact` @@ -125,8 +130,9 @@ Mettre à jour un contact existant dans HubSpot par ID ou email | Paramètre | Type | Description | | --------- | ---- | ----------- | -| `success` | booléen | Statut de réussite de l'opération | -| `output` | objet | Données du contact mis à jour | +| `contact` | object | Objet contact HubSpot mis à jour | +| `metadata` | object | Métadonnées de l'opération | +| `success` | boolean | Statut de réussite de l'opération | ### `hubspot_search_contacts` @@ -147,8 +153,11 @@ Rechercher des contacts dans HubSpot en utilisant des filtres, des tris et des r | Paramètre | Type | Description | | --------- | ---- | ----------- | +| `contacts` | array | Tableau d'objets contact HubSpot correspondants | +| `total` | number | Nombre total de contacts correspondants | +| `paging` | object | Informations de pagination | +| `metadata` | object | Métadonnées de l'opération | | `success` | boolean | Statut de réussite de l'opération | -| `output` | object | Résultats de la recherche | ### `hubspot_list_companies` @@ -167,8 +176,10 @@ Récupérer toutes les entreprises du compte HubSpot avec prise en charge de la | Paramètre | Type | Description | | --------- | ---- | ----------- | +| `companies` | array | Tableau d'objets entreprise HubSpot | +| `paging` | object | Informations de pagination | +| `metadata` | object | Métadonnées de l'opération | | `success` | boolean | Statut de réussite de l'opération | -| `output` | object | Données des entreprises | ### `hubspot_get_company` @@ -187,8 +198,9 @@ Récupérer une seule entreprise par ID ou domaine depuis HubSpot | Paramètre | Type | Description | | --------- | ---- | ----------- | +| `company` | object | Objet entreprise HubSpot avec propriétés | +| `metadata` | object | Métadonnées de l'opération | | `success` | boolean | Statut de réussite de l'opération | -| `output` | object | Données de l'entreprise | ### `hubspot_create_company` @@ -205,8 +217,9 @@ Créer une nouvelle entreprise dans HubSpot | Paramètre | Type | Description | | --------- | ---- | ----------- | +| `company` | object | Objet entreprise HubSpot créé | +| `metadata` | object | Métadonnées de l'opération | | `success` | boolean | Statut de réussite de l'opération | -| `output` | object | Données de l'entreprise créée | ### `hubspot_update_company` @@ -224,8 +237,9 @@ Mettre à jour une entreprise existante dans HubSpot par ID ou domaine | Paramètre | Type | Description | | --------- | ---- | ----------- | +| `company` | object | Objet entreprise HubSpot mis à jour | +| `metadata` | object | Métadonnées de l'opération | | `success` | boolean | Statut de réussite de l'opération | -| `output` | object | Données de l'entreprise mises à jour | ### `hubspot_search_companies` @@ -246,8 +260,11 @@ Rechercher des entreprises dans HubSpot en utilisant des filtres, des tris et de | Paramètre | Type | Description | | --------- | ---- | ----------- | +| `companies` | array | Tableau d'objets entreprise HubSpot correspondants | +| `total` | number | Nombre total d'entreprises correspondantes | +| `paging` | object | Informations de pagination | +| `metadata` | object | Métadonnées de l'opération | | `success` | boolean | Statut de réussite de l'opération | -| `output` | object | Résultats de la recherche | ### `hubspot_list_deals` @@ -266,8 +283,10 @@ Récupérer toutes les affaires du compte HubSpot avec prise en charge de la pag | Paramètre | Type | Description | | --------- | ---- | ----------- | +| `deals` | array | Tableau d'objets affaire HubSpot | +| `paging` | object | Informations de pagination | +| `metadata` | object | Métadonnées de l'opération | | `success` | boolean | Statut de réussite de l'opération | -| `output` | object | Données des offres | ## Notes diff --git a/apps/docs/content/docs/fr/tools/pipedrive.mdx b/apps/docs/content/docs/fr/tools/pipedrive.mdx index b0c7e0065..170c556ef 100644 --- a/apps/docs/content/docs/fr/tools/pipedrive.mdx +++ b/apps/docs/content/docs/fr/tools/pipedrive.mdx @@ -51,8 +51,9 @@ Récupérer toutes les affaires de Pipedrive avec des filtres optionnels | Paramètre | Type | Description | | --------- | ---- | ----------- | +| `deals` | array | Tableau d'objets d'affaires de Pipedrive | +| `metadata` | object | Métadonnées de l'opération | | `success` | boolean | Statut de réussite de l'opération | -| `output` | object | Données et métadonnées des affaires | ### `pipedrive_get_deal` @@ -68,8 +69,9 @@ Récupérer des informations détaillées sur une affaire spécifique | Paramètre | Type | Description | | --------- | ---- | ----------- | +| `deal` | object | Objet d'affaire avec tous les détails | +| `metadata` | object | Métadonnées de l'opération | | `success` | boolean | Statut de réussite de l'opération | -| `output` | object | Détails de l'affaire | ### `pipedrive_create_deal` @@ -93,8 +95,9 @@ Créer une nouvelle affaire dans Pipedrive | Paramètre | Type | Description | | --------- | ---- | ----------- | +| `deal` | object | L'objet d'affaire créé | +| `metadata` | object | Métadonnées de l'opération | | `success` | boolean | Statut de réussite de l'opération | -| `output` | object | Détails de l'affaire créée | ### `pipedrive_update_deal` @@ -115,8 +118,9 @@ Mettre à jour une affaire existante dans Pipedrive | Paramètre | Type | Description | | --------- | ---- | ----------- | +| `deal` | object | L'objet d'affaire mis à jour | +| `metadata` | object | Métadonnées de l'opération | | `success` | boolean | Statut de réussite de l'opération | -| `output` | object | Détails de l'affaire mise à jour | ### `pipedrive_get_files` @@ -135,8 +139,9 @@ Récupérer des fichiers depuis Pipedrive avec des filtres optionnels | Paramètre | Type | Description | | --------- | ---- | ----------- | +| `files` | array | Tableau d'objets fichiers de Pipedrive | +| `metadata` | object | Métadonnées de l'opération | | `success` | boolean | Statut de réussite de l'opération | -| `output` | object | Données des fichiers | ### `pipedrive_get_mail_messages` @@ -153,8 +158,9 @@ Récupérer les fils de discussion de la boîte mail Pipedrive | Paramètre | Type | Description | | --------- | ---- | ----------- | +| `messages` | array | Tableau d'objets de fils de discussion de la boîte mail Pipedrive | +| `metadata` | object | Métadonnées de l'opération | | `success` | boolean | Statut de réussite de l'opération | -| `output` | object | Données des fils de discussion | ### `pipedrive_get_mail_thread` @@ -170,8 +176,9 @@ Récupérer tous les messages d'un fil de discussion spécifique | Paramètre | Type | Description | | --------- | ---- | ----------- | +| `messages` | array | Tableau d'objets de messages électroniques du fil de discussion | +| `metadata` | object | Métadonnées de l'opération incluant l'ID du fil de discussion | | `success` | boolean | Statut de réussite de l'opération | -| `output` | object | Données des messages du fil de discussion | ### `pipedrive_get_pipelines` @@ -190,8 +197,9 @@ Récupérer tous les pipelines de Pipedrive | Paramètre | Type | Description | | --------- | ---- | ----------- | +| `pipelines` | array | Tableau d'objets de pipeline de Pipedrive | +| `metadata` | object | Métadonnées de l'opération | | `success` | boolean | Statut de réussite de l'opération | -| `output` | object | Données des pipelines | ### `pipedrive_get_pipeline_deals` @@ -210,8 +218,9 @@ Récupérer toutes les affaires dans un pipeline spécifique | Paramètre | Type | Description | | --------- | ---- | ----------- | +| `deals` | array | Tableau d'objets d'affaires du pipeline | +| `metadata` | object | Métadonnées de l'opération incluant l'ID du pipeline | | `success` | boolean | Statut de réussite de l'opération | -| `output` | object | Données des affaires du pipeline | ### `pipedrive_get_projects` @@ -229,8 +238,10 @@ Récupérer tous les projets ou un projet spécifique de Pipedrive | Paramètre | Type | Description | | --------- | ---- | ----------- | +| `projects` | array | Tableau d'objets de projet (lors du listage de tous) | +| `project` | object | Objet de projet unique (lorsque project_id est fourni) | +| `metadata` | object | Métadonnées de l'opération | | `success` | boolean | Statut de réussite de l'opération | -| `output` | object | Données des projets ou détails d'un projet unique | ### `pipedrive_create_project` @@ -249,8 +260,9 @@ Créer un nouveau projet dans Pipedrive | Paramètre | Type | Description | | --------- | ---- | ----------- | +| `project` | object | L'objet du projet créé | +| `metadata` | object | Métadonnées de l'opération | | `success` | boolean | Statut de réussite de l'opération | -| `output` | object | Détails du projet créé | ### `pipedrive_get_activities` @@ -271,8 +283,9 @@ Récupérer les activités (tâches) de Pipedrive avec filtres optionnels | Paramètre | Type | Description | | --------- | ---- | ----------- | +| `activities` | array | Tableau d'objets d'activité de Pipedrive | +| `metadata` | object | Métadonnées de l'opération | | `success` | boolean | Statut de réussite de l'opération | -| `output` | object | Données des activités | ### `pipedrive_create_activity` @@ -296,8 +309,9 @@ Créer une nouvelle activité (tâche) dans Pipedrive | Paramètre | Type | Description | | --------- | ---- | ----------- | -| `success` | booléen | Statut de réussite de l'opération | -| `output` | objet | Détails de l'activité créée | +| `activity` | object | L'objet activité créé | +| `metadata` | object | Métadonnées de l'opération | +| `success` | boolean | Statut de réussite de l'opération | ### `pipedrive_update_activity` @@ -319,8 +333,9 @@ Mettre à jour une activité existante (tâche) dans Pipedrive | Paramètre | Type | Description | | --------- | ---- | ----------- | +| `activity` | object | L'objet activité mis à jour | +| `metadata` | object | Métadonnées de l'opération | | `success` | boolean | Statut de réussite de l'opération | -| `output` | object | Détails de l'activité mise à jour | ### `pipedrive_get_leads` @@ -341,8 +356,10 @@ Récupérer tous les prospects ou un prospect spécifique depuis Pipedrive | Paramètre | Type | Description | | --------- | ---- | ----------- | +| `leads` | array | Tableau d'objets prospect \(lors de la liste complète\) | +| `lead` | object | Objet prospect unique \(lorsque lead_id est fourni\) | +| `metadata` | object | Métadonnées de l'opération | | `success` | boolean | Statut de réussite de l'opération | -| `output` | object | Données des prospects ou détails d'un prospect spécifique | ### `pipedrive_create_lead` @@ -365,8 +382,9 @@ Créer un nouveau prospect dans Pipedrive | Paramètre | Type | Description | | --------- | ---- | ----------- | +| `lead` | object | L'objet prospect créé | +| `metadata` | object | Métadonnées de l'opération | | `success` | boolean | Statut de réussite de l'opération | -| `output` | object | Détails du lead créé | ### `pipedrive_update_lead` @@ -390,8 +408,9 @@ Mettre à jour un lead existant dans Pipedrive | Paramètre | Type | Description | | --------- | ---- | ----------- | +| `lead` | object | L'objet prospect mis à jour | +| `metadata` | object | Métadonnées de l'opération | | `success` | boolean | Statut de réussite de l'opération | -| `output` | object | Détails du lead mis à jour | ### `pipedrive_delete_lead` @@ -407,8 +426,9 @@ Supprimer un lead spécifique de Pipedrive | Paramètre | Type | Description | | --------- | ---- | ----------- | +| `data` | object | Données de confirmation de suppression | +| `metadata` | object | Métadonnées de l'opération | | `success` | boolean | Statut de réussite de l'opération | -| `output` | object | Résultat de la suppression | ## Notes diff --git a/apps/docs/content/docs/fr/tools/pylon.mdx b/apps/docs/content/docs/fr/tools/pylon.mdx deleted file mode 100644 index 994a8b3c7..000000000 --- a/apps/docs/content/docs/fr/tools/pylon.mdx +++ /dev/null @@ -1,807 +0,0 @@ ---- -title: Pylon -description: Gérez les problèmes de support client, les comptes, les contacts, - les utilisateurs, les équipes et les tags dans Pylon ---- - -import { BlockInfoCard } from "@/components/ui/block-info-card" - - - -{/* MANUAL-CONTENT-START:intro */} -[Pylon](https://usepylon.com/) est une plateforme avancée de support et de réussite client conçue pour vous aider à gérer tous les aspects de vos relations client—des problèmes de support aux comptes, contacts, utilisateurs, équipes et au-delà. Pylon permet aux équipes de support et de réussite d'opérer efficacement et de manière programmatique avec une API riche et un ensemble d'outils complet. - -Avec Pylon dans Sim, vous pouvez : - -- **Gérer les problèmes de support :** - - Lister, créer, obtenir, mettre à jour et supprimer des problèmes de support pour un suivi efficace des cas. - - Rechercher et mettre en veille des problèmes pour aider les agents à rester concentrés et organisés. - - Gérer les abonnés aux problèmes et les problèmes externes pour une collaboration fluide avec les parties prenantes internes et externes. - -- **Gestion complète des comptes :** - - Lister, créer, obtenir, mettre à jour et supprimer des comptes clients. - - Mettre à jour en masse des comptes de manière programmatique. - - Rechercher des comptes pour trouver rapidement les informations clients pertinentes pour le support ou la prospection. - -- **Gestion des contacts :** - - Lister, créer, obtenir, mettre à jour, supprimer et rechercher des contacts—gérez toutes les personnes liées à vos comptes. - -- **Opérations utilisateurs et équipes :** - - Lister, obtenir, mettre à jour et rechercher des utilisateurs dans votre espace de travail Pylon. - - Lister, créer, obtenir et mettre à jour des équipes pour structurer votre organisation de support et vos flux de travail. - -- **Étiquetage et organisation :** - - Lister, obtenir, créer, mettre à jour et supprimer des tags pour catégoriser les problèmes, les comptes ou les contacts. - -- **Gestion des messages :** - - Expurger le contenu sensible des messages directement depuis vos flux de travail pour la confidentialité et la conformité. - -En intégrant les outils Pylon dans Sim, vos agents peuvent automatiser tous les aspects des opérations de support : -- Ouvrir, mettre à jour ou trier automatiquement de nouveaux problèmes lorsque des événements clients se produisent. -- Maintenir des données de compte et de contact synchronisées dans l'ensemble de votre stack technologique. -- Acheminer les conversations, gérer les escalades et organiser vos données de support à l'aide de tags et d'équipes. -- Garantir que les données sensibles sont correctement gérées en expurgeant les messages selon les besoins. - -Les points de terminaison de Pylon offrent un contrôle granulaire pour la gestion complète du cycle de vie des problèmes et des relations clients. Que ce soit pour développer un service d'assistance, alimenter un service client proactif ou s'intégrer à d'autres systèmes, Pylon dans Sim permet une automatisation CRM de premier ordre — de manière sécurisée, flexible et à grande échelle. -{/* MANUAL-CONTENT-END */} - -## Instructions d'utilisation - -Intégrez Pylon dans le flux de travail. Gérez les problèmes (lister, créer, obtenir, mettre à jour, supprimer, rechercher, mettre en veille, suiveurs, problèmes externes), les comptes (lister, créer, obtenir, mettre à jour, supprimer, mise à jour en masse, rechercher), les contacts (lister, créer, obtenir, mettre à jour, supprimer, rechercher), les utilisateurs (lister, obtenir, mettre à jour, rechercher), les équipes (lister, obtenir, créer, mettre à jour), les tags (lister, obtenir, créer, mettre à jour, supprimer) et les messages (expurger). - -## Outils - -### `pylon_list_issues` - -Récupérer une liste de problèmes dans une plage de temps spécifiée - -#### Entrée - -| Paramètre | Type | Obligatoire | Description | -| --------- | ---- | ----------- | ----------- | -| `apiToken` | chaîne | Oui | Jeton API Pylon | -| `startTime` | chaîne | Oui | Heure de début au format RFC3339 \(ex., 2024-01-01T00:00:00Z\) | -| `endTime` | chaîne | Oui | Heure de fin au format RFC3339 \(ex., 2024-01-31T23:59:59Z\) | -| `cursor` | chaîne | Non | Curseur de pagination pour la page suivante de résultats | - -#### Sortie - -| Paramètre | Type | Description | -| --------- | ---- | ----------- | -| `success` | booléen | Statut de réussite de l'opération | -| `output` | objet | Liste des problèmes | - -### `pylon_create_issue` - -Créer un nouveau problème avec les propriétés spécifiées - -#### Entrée - -| Paramètre | Type | Obligatoire | Description | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | Oui | Jeton API Pylon | -| `title` | string | Oui | Titre du problème | -| `bodyHtml` | string | Oui | Corps du problème au format HTML | -| `accountId` | string | Non | ID du compte à associer au problème | -| `assigneeId` | string | Non | ID de l'utilisateur à qui assigner le problème | -| `teamId` | string | Non | ID de l'équipe à qui assigner le problème | -| `requesterId` | string | Non | ID de l'utilisateur demandeur \(alternative à requester_email\) | -| `requesterEmail` | string | Non | Adresse e-mail du demandeur \(alternative à requester_id\) | -| `priority` | string | Non | Priorité du problème | -| `tags` | string | Non | IDs de tags séparés par des virgules | -| `customFields` | string | Non | Champs personnalisés sous forme d'objet JSON | -| `attachmentUrls` | string | Non | URLs des pièces jointes séparées par des virgules | - -#### Sortie - -| Paramètre | Type | Description | -| --------- | ---- | ----------- | -| `success` | boolean | Statut de réussite de l'opération | -| `output` | object | Données du problème créé | - -### `pylon_get_issue` - -Récupérer un problème spécifique par ID - -#### Entrée - -| Paramètre | Type | Obligatoire | Description | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | Oui | Jeton API Pylon | -| `issueId` | string | Oui | L'ID du problème à récupérer | - -#### Sortie - -| Paramètre | Type | Description | -| --------- | ---- | ----------- | -| `success` | boolean | Statut de réussite de l'opération | -| `output` | object | Données du problème | - -### `pylon_update_issue` - -Mettre à jour un problème existant - -#### Entrée - -| Paramètre | Type | Obligatoire | Description | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | Oui | Jeton API Pylon | -| `issueId` | string | Oui | L'ID du problème à mettre à jour | -| `state` | string | Non | État du problème | -| `assigneeId` | string | Non | ID de l'utilisateur à qui assigner le problème | -| `teamId` | string | Non | ID de l'équipe à qui assigner le problème | -| `tags` | string | Non | IDs de tags séparés par des virgules | -| `customFields` | string | Non | Champs personnalisés sous forme d'objet JSON | -| `customerPortalVisible` | boolean | Non | Indique si le problème est visible dans le portail client | -| `requesterId` | string | Non | ID de l'utilisateur demandeur | -| `accountId` | string | Non | ID du compte à associer au problème | - -#### Sortie - -| Paramètre | Type | Description | -| --------- | ---- | ----------- | -| `success` | boolean | Statut de réussite de l'opération | -| `output` | object | Données du problème mis à jour | - -### `pylon_delete_issue` - -Supprimer un problème par ID - -#### Entrée - -| Paramètre | Type | Obligatoire | Description | -| --------- | ---- | -------- | ----------- | -| `apiToken` | chaîne | Oui | Jeton API Pylon | -| `issueId` | chaîne | Oui | L'ID du problème à supprimer | - -#### Sortie - -| Paramètre | Type | Description | -| --------- | ---- | ----------- | -| `success` | booléen | Statut de réussite de l'opération | -| `output` | objet | Résultat de la suppression | - -### `pylon_search_issues` - -Interroger les problèmes à l'aide de filtres - -#### Entrée - -| Paramètre | Type | Obligatoire | Description | -| --------- | ---- | -------- | ----------- | -| `apiToken` | chaîne | Oui | Jeton API Pylon | -| `filter` | chaîne | Oui | Critères de filtre sous forme de chaîne JSON | -| `cursor` | chaîne | Non | Curseur de pagination pour la page suivante de résultats | -| `limit` | nombre | Non | Nombre maximum de résultats à retourner | - -#### Sortie - -| Paramètre | Type | Description | -| --------- | ---- | ----------- | -| `success` | booléen | Statut de réussite de l'opération | -| `output` | objet | Résultats de la recherche | - -### `pylon_snooze_issue` - -Reporter la visibilité du problème jusqu'à l'heure spécifiée - -#### Entrée - -| Paramètre | Type | Obligatoire | Description | -| --------- | ---- | -------- | ----------- | -| `apiToken` | chaîne | Oui | Jeton API Pylon | -| `issueId` | chaîne | Oui | L'ID du problème à mettre en veille | -| `snoozeUntil` | chaîne | Oui | Horodatage RFC3339 indiquant quand le problème doit réapparaître \(par exemple, 2024-01-01T00:00:00Z\) | - -#### Sortie - -| Paramètre | Type | Description | -| --------- | ---- | ----------- | -| `success` | boolean | Statut de réussite de l'opération | -| `output` | object | Données du problème mis en veille | - -### `pylon_list_issue_followers` - -Obtenir la liste des abonnés pour un problème spécifique - -#### Entrée - -| Paramètre | Type | Obligatoire | Description | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | Oui | Jeton API Pylon | -| `issueId` | string | Oui | L'ID du problème | - -#### Sortie - -| Paramètre | Type | Description | -| --------- | ---- | ----------- | -| `success` | boolean | Statut de réussite de l'opération | -| `output` | object | Liste des abonnés | - -### `pylon_manage_issue_followers` - -Ajouter ou supprimer des abonnés d'un problème - -#### Entrée - -| Paramètre | Type | Obligatoire | Description | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | Oui | Jeton API Pylon | -| `issueId` | string | Oui | L'ID du problème | -| `userIds` | string | Non | IDs d'utilisateurs séparés par des virgules à ajouter/supprimer | -| `contactIds` | string | Non | IDs de contacts séparés par des virgules à ajouter/supprimer | -| `operation` | string | Non | Opération à effectuer : "add" ou "remove" \(par défaut : "add"\) | - -#### Sortie - -| Paramètre | Type | Description | -| --------- | ---- | ----------- | -| `success` | boolean | Statut de réussite de l'opération | -| `output` | object | Liste mise à jour des abonnés | - -### `pylon_link_external_issue` - -Lier un problème à un problème de système externe - -#### Entrée - -| Paramètre | Type | Obligatoire | Description | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | Oui | Jeton API Pylon | -| `issueId` | string | Oui | L'ID du problème Pylon | -| `externalIssueId` | string | Oui | L'ID du problème externe | -| `source` | string | Oui | Le système source \(par ex., "jira", "linear", "github"\) | - -#### Sortie - -| Paramètre | Type | Description | -| --------- | ---- | ----------- | -| `success` | boolean | Statut de réussite de l'opération | -| `output` | object | Données du problème externe lié | - -### `pylon_list_accounts` - -Récupérer une liste paginée de comptes - -#### Entrée - -| Paramètre | Type | Obligatoire | Description | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | Oui | Jeton API Pylon | -| `limit` | string | Non | Nombre de comptes à retourner \(1-1000, par défaut 100\) | -| `cursor` | string | Non | Curseur de pagination pour la page suivante de résultats | - -#### Sortie - -| Paramètre | Type | Description | -| --------- | ---- | ----------- | -| `success` | boolean | Statut de réussite de l'opération | -| `output` | object | Liste des comptes | - -### `pylon_create_account` - -Créer un nouveau compte avec les propriétés spécifiées - -#### Entrée - -| Paramètre | Type | Obligatoire | Description | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | Oui | Jeton API Pylon | -| `name` | string | Oui | Nom du compte | -| `domains` | string | Non | Liste de domaines séparés par des virgules | -| `primaryDomain` | string | Non | Domaine principal pour le compte | -| `customFields` | string | Non | Champs personnalisés sous forme d'objet JSON | -| `tags` | string | Non | IDs de tags séparés par des virgules | -| `channels` | string | Non | IDs de canaux séparés par des virgules | -| `externalIds` | string | Non | IDs externes séparés par des virgules | -| `ownerId` | string | Non | ID de l'utilisateur propriétaire | -| `logoUrl` | string | Non | URL vers le logo du compte | -| `subaccountIds` | string | Non | IDs de sous-comptes séparés par des virgules | - -#### Sortie - -| Paramètre | Type | Description | -| --------- | ---- | ----------- | -| `success` | boolean | Statut de réussite de l'opération | -| `output` | object | Données du compte créé | - -### `pylon_get_account` - -Récupérer un seul compte par ID - -#### Entrée - -| Paramètre | Type | Obligatoire | Description | -| --------- | ---- | ----------- | ----------- | -| `apiToken` | string | Oui | Jeton API Pylon | -| `accountId` | string | Oui | ID du compte à récupérer | - -#### Sortie - -| Paramètre | Type | Description | -| --------- | ---- | ----------- | -| `success` | boolean | Statut de réussite de l'opération | -| `output` | object | Données du compte | - -### `pylon_update_account` - -Mettre à jour un compte existant avec de nouvelles propriétés - -#### Entrée - -| Paramètre | Type | Obligatoire | Description | -| --------- | ---- | ----------- | ----------- | -| `apiToken` | string | Oui | Jeton API Pylon | -| `accountId` | string | Oui | ID du compte à mettre à jour | -| `name` | string | Non | Nom du compte | -| `domains` | string | Non | Liste de domaines séparés par des virgules | -| `primaryDomain` | string | Non | Domaine principal du compte | -| `customFields` | string | Non | Champs personnalisés sous forme d'objet JSON | -| `tags` | string | Non | IDs de tags séparés par des virgules | -| `channels` | string | Non | IDs de canaux séparés par des virgules | -| `externalIds` | string | Non | IDs externes séparés par des virgules | -| `ownerId` | string | Non | ID de l'utilisateur propriétaire | -| `logoUrl` | string | Non | URL du logo du compte | -| `subaccountIds` | string | Non | IDs de sous-comptes séparés par des virgules | - -#### Sortie - -| Paramètre | Type | Description | -| --------- | ---- | ----------- | -| `success` | boolean | Statut de réussite de l'opération | -| `output` | object | Données du compte mises à jour | - -### `pylon_delete_account` - -Supprimer un compte par ID - -#### Entrée - -| Paramètre | Type | Obligatoire | Description | -| --------- | ---- | ----------- | ----------- | -| `apiToken` | string | Oui | Jeton API Pylon | -| `accountId` | string | Oui | ID du compte à supprimer | - -#### Sortie - -| Paramètre | Type | Description | -| --------- | ---- | ----------- | -| `success` | boolean | Statut de réussite de l'opération | -| `output` | object | Confirmation de suppression | - -### `pylon_bulk_update_accounts` - -Mettre à jour plusieurs comptes à la fois - -#### Entrée - -| Paramètre | Type | Obligatoire | Description | -| --------- | ---- | ----------- | ----------- | -| `apiToken` | string | Oui | Jeton API Pylon | -| `accountIds` | string | Oui | IDs de comptes séparés par des virgules à mettre à jour | -| `customFields` | string | Non | Champs personnalisés sous forme d'objet JSON | -| `tags` | string | Non | IDs de tags séparés par des virgules | -| `ownerId` | string | Non | ID de l'utilisateur propriétaire | -| `tagsApplyMode` | string | Non | Mode d'application des tags : append_only, remove_only, ou replace | - -#### Sortie - -| Paramètre | Type | Description | -| --------- | ---- | ----------- | -| `success` | boolean | Statut de réussite de l'opération | -| `output` | object | Données des comptes mis à jour en masse | - -### `pylon_search_accounts` - -Rechercher des comptes avec des filtres personnalisés - -#### Entrée - -| Paramètre | Type | Obligatoire | Description | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | Oui | Jeton API Pylon | -| `filter` | string | Oui | Filtre sous forme de chaîne JSON avec structure champ/opérateur/valeur | -| `limit` | string | Non | Nombre de comptes à retourner \(1-1000, par défaut 100\) | -| `cursor` | string | Non | Curseur de pagination pour la page suivante de résultats | - -#### Sortie - -| Paramètre | Type | Description | -| --------- | ---- | ----------- | -| `success` | boolean | Statut de réussite de l'opération | -| `output` | object | Résultats de recherche | - -### `pylon_list_contacts` - -Récupérer une liste de contacts - -#### Entrée - -| Paramètre | Type | Obligatoire | Description | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | Oui | Jeton API Pylon | -| `cursor` | string | Non | Curseur de pagination pour la page suivante de résultats | -| `limit` | string | Non | Nombre maximum de contacts à retourner | - -#### Sortie - -| Paramètre | Type | Description | -| --------- | ---- | ----------- | -| `success` | boolean | Statut de réussite de l'opération | -| `output` | object | Liste des contacts | - -### `pylon_create_contact` - -Créer un nouveau contact avec des propriétés spécifiées - -#### Entrée - -| Paramètre | Type | Obligatoire | Description | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | Oui | Jeton API Pylon | -| `name` | string | Oui | Nom du contact | -| `email` | string | Non | Adresse e-mail du contact | -| `accountId` | string | Non | ID du compte à associer au contact | -| `accountExternalId` | string | Non | ID de compte externe à associer au contact | -| `avatarUrl` | string | Non | URL pour l'image d'avatar du contact | -| `customFields` | string | Non | Champs personnalisés sous forme d'objet JSON | -| `portalRole` | string | Non | Rôle du portail pour le contact | - -#### Sortie - -| Paramètre | Type | Description | -| --------- | ---- | ----------- | -| `success` | boolean | Statut de réussite de l'opération | -| `output` | object | Données du contact créé | - -### `pylon_get_contact` - -Récupérer un contact spécifique par ID - -#### Entrée - -| Paramètre | Type | Obligatoire | Description | -| --------- | ---- | ----------- | ----------- | -| `apiToken` | string | Oui | Token API Pylon | -| `contactId` | string | Oui | ID du contact à récupérer | -| `cursor` | string | Non | Curseur de pagination pour la page suivante de résultats | -| `limit` | string | Non | Nombre maximum d'éléments à retourner | - -#### Sortie - -| Paramètre | Type | Description | -| --------- | ---- | ----------- | -| `success` | boolean | Statut de réussite de l'opération | -| `output` | object | Données du contact | - -### `pylon_update_contact` - -Mettre à jour un contact existant avec les propriétés spécifiées - -#### Entrée - -| Paramètre | Type | Obligatoire | Description | -| --------- | ---- | ----------- | ----------- | -| `apiToken` | string | Oui | Token API Pylon | -| `contactId` | string | Oui | ID du contact à mettre à jour | -| `name` | string | Non | Nom du contact | -| `email` | string | Non | Adresse e-mail du contact | -| `accountId` | string | Non | ID du compte à associer au contact | -| `accountExternalId` | string | Non | ID de compte externe à associer au contact | -| `avatarUrl` | string | Non | URL pour l'image d'avatar du contact | -| `customFields` | string | Non | Champs personnalisés sous forme d'objet JSON | -| `portalRole` | string | Non | Rôle du portail pour le contact | - -#### Sortie - -| Paramètre | Type | Description | -| --------- | ---- | ----------- | -| `success` | boolean | Statut de réussite de l'opération | -| `output` | object | Données du contact mises à jour | - -### `pylon_delete_contact` - -Supprimer un contact spécifique par ID - -#### Entrée - -| Paramètre | Type | Obligatoire | Description | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | Oui | Jeton API Pylon | -| `contactId` | string | Oui | ID du contact à supprimer | - -#### Sortie - -| Paramètre | Type | Description | -| --------- | ---- | ----------- | -| `success` | boolean | Statut de réussite de l'opération | -| `output` | object | Résultat de l'opération de suppression | - -### `pylon_search_contacts` - -Rechercher des contacts à l'aide d'un filtre - -#### Entrée - -| Paramètre | Type | Obligatoire | Description | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | Oui | Jeton API Pylon | -| `filter` | string | Oui | Filtre sous forme d'objet JSON | -| `limit` | string | Non | Nombre maximum de contacts à renvoyer | -| `cursor` | string | Non | Curseur de pagination pour la page suivante de résultats | - -#### Sortie - -| Paramètre | Type | Description | -| --------- | ---- | ----------- | -| `success` | boolean | Statut de réussite de l'opération | -| `output` | object | Résultats de la recherche | - -### `pylon_list_users` - -Récupérer une liste d'utilisateurs - -#### Entrée - -| Paramètre | Type | Obligatoire | Description | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | Oui | Jeton API Pylon | - -#### Sortie - -| Paramètre | Type | Description | -| --------- | ---- | ----------- | -| `success` | boolean | Statut de réussite de l'opération | -| `output` | object | Liste des utilisateurs | - -### `pylon_get_user` - -Récupérer un utilisateur spécifique par ID - -#### Entrée - -| Paramètre | Type | Obligatoire | Description | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | Oui | Jeton API Pylon | -| `userId` | string | Oui | ID de l'utilisateur à récupérer | - -#### Sortie - -| Paramètre | Type | Description | -| --------- | ---- | ----------- | -| `success` | boolean | Statut de réussite de l'opération | -| `output` | object | Données de l'utilisateur | - -### `pylon_update_user` - -Mettre à jour un utilisateur existant avec les propriétés spécifiées - -#### Entrée - -| Paramètre | Type | Obligatoire | Description | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | Oui | Jeton API Pylon | -| `userId` | string | Oui | ID de l'utilisateur à mettre à jour | -| `roleId` | string | Non | ID du rôle à attribuer à l'utilisateur | -| `status` | string | Non | Statut de l'utilisateur | - -#### Sortie - -| Paramètre | Type | Description | -| --------- | ---- | ----------- | -| `success` | boolean | Statut de réussite de l'opération | -| `output` | object | Données de l'utilisateur mises à jour | - -### `pylon_search_users` - -Rechercher des utilisateurs à l'aide d'un filtre avec le champ email - -#### Entrée - -| Paramètre | Type | Obligatoire | Description | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | Oui | Jeton API Pylon | -| `filter` | string | Oui | Filtre sous forme d'objet JSON avec champ email | -| `cursor` | string | Non | Curseur de pagination pour la page suivante de résultats | -| `limit` | string | Non | Nombre maximum d'utilisateurs à retourner | - -#### Sortie - -| Paramètre | Type | Description | -| --------- | ---- | ----------- | -| `success` | boolean | Statut de réussite de l'opération | -| `output` | object | Résultats de recherche | - -### `pylon_list_teams` - -Récupérer une liste d'équipes - -#### Entrée - -| Paramètre | Type | Obligatoire | Description | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | Oui | Jeton API Pylon | - -#### Sortie - -| Paramètre | Type | Description | -| --------- | ---- | ----------- | -| `success` | boolean | Statut de réussite de l'opération | -| `output` | object | Liste des équipes | - -### `pylon_get_team` - -Récupérer une équipe spécifique par ID - -#### Entrée - -| Paramètre | Type | Obligatoire | Description | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | Oui | Jeton API Pylon | -| `teamId` | string | Oui | ID de l'équipe à récupérer | - -#### Sortie - -| Paramètre | Type | Description | -| --------- | ---- | ----------- | -| `success` | boolean | Statut de réussite de l'opération | -| `output` | object | Données de l'équipe | - -### `pylon_create_team` - -Créer une nouvelle équipe avec les propriétés spécifiées - -#### Entrée - -| Paramètre | Type | Obligatoire | Description | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | Oui | Jeton API Pylon | -| `name` | string | Non | Nom de l'équipe | -| `userIds` | string | Non | IDs d'utilisateurs séparés par des virgules à ajouter comme membres de l'équipe | - -#### Sortie - -| Paramètre | Type | Description | -| --------- | ---- | ----------- | -| `success` | boolean | Statut de réussite de l'opération | -| `output` | object | Données de l'équipe créée | - -### `pylon_update_team` - -Mettre à jour une équipe existante avec les propriétés spécifiées (userIds remplace l'ensemble des membres) - -#### Entrée - -| Paramètre | Type | Obligatoire | Description | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | Oui | Jeton API Pylon | -| `teamId` | string | Oui | ID de l'équipe à mettre à jour | -| `name` | string | Non | Nom de l'équipe | -| `userIds` | string | Non | IDs d'utilisateurs séparés par des virgules \(remplace tous les membres de l'équipe\) | - -#### Sortie - -| Paramètre | Type | Description | -| --------- | ---- | ----------- | -| `success` | boolean | Statut de réussite de l'opération | -| `output` | object | Données de l'équipe mise à jour | - -### `pylon_list_tags` - -Récupérer une liste de tags - -#### Entrée - -| Paramètre | Type | Obligatoire | Description | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | Oui | Jeton API Pylon | - -#### Sortie - -| Paramètre | Type | Description | -| --------- | ---- | ----------- | -| `success` | boolean | Statut de réussite de l'opération | -| `output` | object | Liste des tags | - -### `pylon_get_tag` - -Récupérer un tag spécifique par ID - -#### Entrée - -| Paramètre | Type | Obligatoire | Description | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | Oui | Jeton API Pylon | -| `tagId` | string | Oui | ID du tag à récupérer | - -#### Sortie - -| Paramètre | Type | Description | -| --------- | ---- | ----------- | -| `success` | boolean | Statut de réussite de l'opération | -| `output` | object | Données du tag | - -### `pylon_create_tag` - -Créer un nouveau tag avec les propriétés spécifiées (objectType : account/issue/contact) - -#### Entrée - -| Paramètre | Type | Obligatoire | Description | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | Oui | Token API Pylon | -| `objectType` | string | Oui | Type d'objet pour le tag \(account, issue, ou contact\) | -| `value` | string | Oui | Valeur/nom du tag | -| `hexColor` | string | Non | Code couleur hexadécimal pour le tag \(ex., #FF5733\) | - -#### Sortie - -| Paramètre | Type | Description | -| --------- | ---- | ----------- | -| `success` | boolean | Statut de réussite de l'opération | -| `output` | object | Données du tag créé | - -### `pylon_update_tag` - -Mettre à jour un tag existant avec les propriétés spécifiées - -#### Entrée - -| Paramètre | Type | Obligatoire | Description | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | Oui | Token API Pylon | -| `tagId` | string | Oui | ID du tag à mettre à jour | -| `hexColor` | string | Non | Code couleur hexadécimal pour le tag \(ex., #FF5733\) | -| `value` | string | Non | Valeur/nom du tag | - -#### Sortie - -| Paramètre | Type | Description | -| --------- | ---- | ----------- | -| `success` | boolean | Statut de réussite de l'opération | -| `output` | object | Données du tag mis à jour | - -### `pylon_delete_tag` - -Supprimer un tag spécifique par ID - -#### Entrée - -| Paramètre | Type | Obligatoire | Description | -| --------- | ---- | ----------- | ----------- | -| `apiToken` | chaîne | Oui | Token API Pylon | -| `tagId` | chaîne | Oui | ID du tag à supprimer | - -#### Sortie - -| Paramètre | Type | Description | -| --------- | ---- | ----------- | -| `success` | booléen | Statut de réussite de l'opération | -| `output` | objet | Résultat de l'opération de suppression | - -### `pylon_redact_message` - -Expurger un message spécifique dans un problème - -#### Entrée - -| Paramètre | Type | Obligatoire | Description | -| --------- | ---- | ----------- | ----------- | -| `apiToken` | chaîne | Oui | Token API Pylon | -| `issueId` | chaîne | Oui | ID du problème contenant le message | -| `messageId` | chaîne | Oui | ID du message à expurger | - -#### Sortie - -| Paramètre | Type | Description | -| --------- | ---- | ----------- | -| `success` | booléen | Statut de réussite de l'opération | -| `output` | objet | Résultat de l'opération d'expurgation | - -## Notes - -- Catégorie : `tools` -- Type : `pylon` diff --git a/apps/docs/content/docs/fr/tools/spotify.mdx b/apps/docs/content/docs/fr/tools/spotify.mdx new file mode 100644 index 000000000..c74a3dba1 --- /dev/null +++ b/apps/docs/content/docs/fr/tools/spotify.mdx @@ -0,0 +1,1453 @@ +--- +title: Spotify +description: Recherchez de la musique, gérez des playlists, contrôlez la lecture + et accédez à votre bibliothèque +--- + +import { BlockInfoCard } from "@/components/ui/block-info-card" + + + +## Instructions d'utilisation + +Intégrez Spotify dans votre flux de travail. Recherchez des morceaux, albums, artistes et playlists. Gérez des playlists, accédez à votre bibliothèque, contrôlez la lecture, parcourez les podcasts et les livres audio. + +## Outils + +### `spotify_search` + +Recherchez des morceaux, albums, artistes ou playlists sur Spotify. Renvoie les résultats correspondants basés sur la requête. + +#### Entrée + +| Paramètre | Type | Obligatoire | Description | +| --------- | ---- | -------- | ----------- | +| `query` | string | Oui | Requête de recherche \(ex. : "Bohemian Rhapsody", "artist:Queen", "genre:rock"\) | +| `type` | string | Non | Type de résultats : track, album, artist, playlist, ou séparés par virgules \(ex. : "track,artist"\) | +| `limit` | number | Non | Nombre maximum de résultats à renvoyer \(1-50\) | +| `offset` | number | Non | Index du premier résultat à renvoyer pour la pagination | +| `market` | string | Non | Code pays ISO 3166-1 alpha-2 pour filtrer les résultats \(ex. : "US", "GB"\) | + +#### Sortie + +| Paramètre | Type | Description | +| --------- | ---- | ----------- | +| `tracks` | array | Liste des morceaux correspondants | + +### `spotify_get_track` + +Obtenez des informations détaillées sur un morceau spécifique sur Spotify par son ID. + +#### Entrée + +| Paramètre | Type | Obligatoire | Description | +| --------- | ---- | -------- | ----------- | +| `trackId` | string | Oui | L'ID Spotify du morceau | +| `market` | string | Non | Code pays ISO 3166-1 alpha-2 pour la disponibilité du morceau | + +#### Sortie + +| Paramètre | Type | Description | +| --------- | ---- | ----------- | +| `id` | string | ID de piste Spotify | +| `name` | string | Nom de la piste | +| `artists` | array | Liste des artistes | +| `album` | object | Informations sur l'album | +| `duration_ms` | number | Durée de la piste en millisecondes | +| `explicit` | boolean | Si la piste contient du contenu explicite | +| `popularity` | number | Score de popularité (0-100) | +| `preview_url` | string | URL vers un aperçu de 30 secondes | +| `external_url` | string | URL Spotify | +| `uri` | string | URI Spotify pour la piste | + +### `spotify_get_tracks` + +Obtenir des informations détaillées sur plusieurs pistes Spotify par leurs identifiants (jusqu'à 50). + +#### Entrée + +| Paramètre | Type | Obligatoire | Description | +| --------- | ---- | -------- | ----------- | +| `trackIds` | string | Oui | Liste d'identifiants de pistes Spotify séparés par des virgules (max 50) | +| `market` | string | Non | Code pays ISO 3166-1 alpha-2 pour la disponibilité des pistes | + +#### Sortie + +| Paramètre | Type | Description | +| --------- | ---- | ----------- | +| `tracks` | array | Liste des pistes | + +### `spotify_get_album` + +Obtenir des informations détaillées sur un album Spotify par son identifiant, y compris la liste des pistes. + +#### Entrée + +| Paramètre | Type | Obligatoire | Description | +| --------- | ---- | -------- | ----------- | +| `albumId` | string | Oui | L'identifiant Spotify de l'album | +| `market` | string | Non | Code pays ISO 3166-1 alpha-2 pour la disponibilité des pistes | + +#### Sortie + +| Paramètre | Type | Description | +| --------- | ---- | ----------- | +| `id` | string | ID d'album Spotify | +| `name` | string | Nom de l'album | +| `artists` | array | Liste des artistes | +| `album_type` | string | Type d'album \(album, single, compilation\) | +| `total_tracks` | number | Nombre total de pistes | +| `release_date` | string | Date de sortie | +| `label` | string | Maison de disques | +| `popularity` | number | Score de popularité \(0-100\) | +| `genres` | array | Liste des genres | +| `image_url` | string | URL de l'image de couverture de l'album | +| `tracks` | array | Liste des pistes de l'album | +| `external_url` | string | URL Spotify | + +### `spotify_get_albums` + +Obtenir les détails de plusieurs albums par leurs identifiants. + +#### Entrée + +| Paramètre | Type | Obligatoire | Description | +| --------- | ---- | ---------- | ----------- | +| `albumIds` | string | Oui | Identifiants d'albums séparés par des virgules \(max 20\) | +| `market` | string | Non | Code pays ISO pour le marché | + +#### Sortie + +| Paramètre | Type | Description | +| --------- | ---- | ----------- | +| `albums` | json | Liste des albums | + +### `spotify_get_album_tracks` + +Obtenir les pistes d'un album. + +#### Entrée + +| Paramètre | Type | Obligatoire | Description | +| --------- | ---- | ---------- | ----------- | +| `albumId` | string | Oui | L'identifiant de l'album Spotify | +| `limit` | number | Non | Nombre de pistes à retourner \(1-50\) | +| `offset` | number | Non | Index de la première piste à retourner | + +#### Sortie + +| Paramètre | Type | Description | +| --------- | ---- | ----------- | +| `tracks` | json | Liste des pistes | +| `total` | number | Nombre total de pistes | +| `next` | string | URL pour la page suivante | + +### `spotify_get_saved_albums` + +Obtenir l'utilisateur + +#### Entrée + +| Paramètre | Type | Obligatoire | Description | +| --------- | ---- | -------- | ----------- | +| `limit` | number | Non | Nombre d'albums à retourner \(1-50\) | +| `offset` | number | Non | Index du premier album à retourner | +| `market` | string | Non | Code pays ISO pour le marché | + +#### Sortie + +| Paramètre | Type | Description | +| --------- | ---- | ----------- | +| `albums` | json | Liste des albums sauvegardés | +| `total` | number | Total des albums sauvegardés | +| `next` | string | URL pour la page suivante | + +### `spotify_save_albums` + +Sauvegarder des albums pour l'utilisateur + +#### Entrée + +| Paramètre | Type | Obligatoire | Description | +| --------- | ---- | -------- | ----------- | +| `albumIds` | string | Oui | IDs d'albums séparés par des virgules \(max 20\) | + +#### Sortie + +| Paramètre | Type | Description | +| --------- | ---- | ----------- | +| `success` | boolean | Si les albums ont été sauvegardés | + +### `spotify_remove_saved_albums` + +Supprimer des albums de l'utilisateur + +#### Entrée + +| Paramètre | Type | Obligatoire | Description | +| --------- | ---- | -------- | ----------- | +| `albumIds` | string | Oui | IDs d'albums séparés par des virgules \(max 20\) | + +#### Sortie + +| Paramètre | Type | Description | +| --------- | ---- | ----------- | +| `success` | boolean | Indique si les albums ont été supprimés | + +### `spotify_check_saved_albums` + +Vérifier si les albums sont enregistrés dans la bibliothèque. + +#### Entrée + +| Paramètre | Type | Obligatoire | Description | +| --------- | ---- | -------- | ----------- | +| `albumIds` | string | Oui | IDs d'albums séparés par des virgules (max 20) | + +#### Sortie + +| Paramètre | Type | Description | +| --------- | ---- | ----------- | +| `results` | json | Tableau de booléens pour chaque album | + +### `spotify_get_artist` + +Obtenir des informations détaillées sur un artiste Spotify à partir de son ID. + +#### Entrée + +| Paramètre | Type | Obligatoire | Description | +| --------- | ---- | -------- | ----------- | +| `artistId` | string | Oui | L'ID Spotify de l'artiste | + +#### Sortie + +| Paramètre | Type | Description | +| --------- | ---- | ----------- | +| `id` | string | ID de l'artiste Spotify | +| `name` | string | Nom de l'artiste | +| `genres` | array | Liste des genres associés à l'artiste | +| `popularity` | number | Score de popularité (0-100) | +| `followers` | number | Nombre d'abonnés | +| `image_url` | string | URL de l'image de l'artiste | +| `external_url` | string | URL Spotify | + +### `spotify_get_artists` + +Obtenir les détails de plusieurs artistes à partir de leurs IDs. + +#### Entrée + +| Paramètre | Type | Obligatoire | Description | +| --------- | ---- | -------- | ----------- | +| `artistIds` | string | Oui | IDs d'artistes séparés par des virgules (max 50) | + +#### Sortie + +| Paramètre | Type | Description | +| --------- | ---- | ----------- | +| `artists` | json | Liste des artistes | + +### `spotify_get_artist_albums` + +Obtenir les albums d'un artiste sur Spotify. Peut filtrer par type d'album. + +#### Entrée + +| Paramètre | Type | Obligatoire | Description | +| --------- | ---- | -------- | ----------- | +| `artistId` | string | Oui | L'identifiant Spotify de l'artiste | +| `include_groups` | string | Non | Filtrer par type d'album : album, single, appears_on, compilation \(séparés par des virgules\) | +| `limit` | number | Non | Nombre maximum d'albums à retourner \(1-50\) | +| `offset` | number | Non | Index du premier album à retourner | +| `market` | string | Non | Code pays ISO 3166-1 alpha-2 | + +#### Sortie + +| Paramètre | Type | Description | +| --------- | ---- | ----------- | +| `albums` | array | Artiste | + +### `spotify_get_artist_top_tracks` + +Obtenir les 10 titres les plus populaires d'un artiste sur Spotify. + +#### Entrée + +| Paramètre | Type | Obligatoire | Description | +| --------- | ---- | -------- | ----------- | +| `artistId` | string | Oui | L'identifiant Spotify de l'artiste | +| `market` | string | Non | Code pays ISO 3166-1 alpha-2 \(requis pour ce point de terminaison\) | + +#### Sortie + +| Paramètre | Type | Description | +| --------- | ---- | ----------- | +| `tracks` | array | Artiste | + +### `spotify_follow_artists` + +Suivre un ou plusieurs artistes. + +#### Entrée + +| Paramètre | Type | Obligatoire | Description | +| --------- | ---- | ---------- | ----------- | +| `artistIds` | string | Oui | IDs d'artistes séparés par des virgules à suivre (max 50) | + +#### Sortie + +| Paramètre | Type | Description | +| --------- | ---- | ----------- | +| `success` | boolean | Indique si les artistes ont été suivis avec succès | + +### `spotify_unfollow_artists` + +Ne plus suivre un ou plusieurs artistes. + +#### Entrée + +| Paramètre | Type | Obligatoire | Description | +| --------- | ---- | ---------- | ----------- | +| `artistIds` | string | Oui | IDs d'artistes séparés par des virgules à ne plus suivre (max 50) | + +#### Sortie + +| Paramètre | Type | Description | +| --------- | ---- | ----------- | +| `success` | boolean | Indique si les artistes ont été retirés des suivis avec succès | + +### `spotify_get_followed_artists` + +Obtenir l'utilisateur + +#### Entrée + +| Paramètre | Type | Obligatoire | Description | +| --------- | ---- | ---------- | ----------- | +| `limit` | number | Non | Nombre d'artistes à retourner (1-50) | +| `after` | string | Non | Curseur pour la pagination (dernier ID d'artiste de la requête précédente) | + +#### Sortie + +| Paramètre | Type | Description | +| --------- | ---- | ----------- | +| `artists` | json | Liste des artistes suivis | +| `total` | number | Nombre total d'artistes suivis | +| `next` | string | Curseur pour la page suivante | + +### `spotify_check_following` + +Vérifier si l'utilisateur suit des artistes ou d'autres utilisateurs. + +#### Entrée + +| Paramètre | Type | Obligatoire | Description | +| --------- | ---- | ---------- | ----------- | +| `type` | string | Oui | Type à vérifier : "artist" ou "user" | +| `ids` | string | Oui | IDs d'artistes ou d'utilisateurs séparés par des virgules (max 50) | + +#### Sortie + +| Paramètre | Type | Description | +| --------- | ---- | ----------- | +| `results` | json | Tableau de booléens pour chaque ID | + +### `spotify_get_show` + +Obtenir les détails d'une émission de podcast. + +#### Entrée + +| Paramètre | Type | Obligatoire | Description | +| --------- | ---- | -------- | ----------- | +| `showId` | string | Oui | L'ID de l'émission Spotify | +| `market` | string | Non | Code pays ISO pour le marché | + +#### Sortie + +| Paramètre | Type | Description | +| --------- | ---- | ----------- | +| `id` | string | ID de l'émission | +| `name` | string | Nom de l'émission | +| `description` | string | Description de l'émission | +| `publisher` | string | Nom de l'éditeur | +| `total_episodes` | number | Nombre total d'épisodes | +| `explicit` | boolean | Contient du contenu explicite | +| `languages` | json | Langues | +| `image_url` | string | URL de l'image de couverture | +| `external_url` | string | URL Spotify | + +### `spotify_get_shows` + +Obtenir les détails de plusieurs émissions de podcast. + +#### Entrée + +| Paramètre | Type | Obligatoire | Description | +| --------- | ---- | -------- | ----------- | +| `showIds` | string | Oui | IDs d'émissions séparés par des virgules \(max 50\) | +| `market` | string | Non | Code pays ISO pour le marché | + +#### Sortie + +| Paramètre | Type | Description | +| --------- | ---- | ----------- | +| `shows` | json | Liste des émissions | + +### `spotify_get_show_episodes` + +Obtenir les épisodes d'une émission de podcast. + +#### Entrée + +| Paramètre | Type | Obligatoire | Description | +| --------- | ---- | ---------- | ----------- | +| `showId` | string | Oui | L'identifiant Spotify de l'émission | +| `limit` | number | Non | Nombre d'épisodes à retourner \(1-50\) | +| `offset` | number | Non | Index du premier épisode à retourner | +| `market` | string | Non | Code pays ISO pour le marché | + +#### Sortie + +| Paramètre | Type | Description | +| --------- | ---- | ----------- | +| `episodes` | json | Liste des épisodes | +| `total` | number | Nombre total d'épisodes | +| `next` | string | URL pour la page suivante | + +### `spotify_get_saved_shows` + +Obtenir l'utilisateur + +#### Entrée + +| Paramètre | Type | Obligatoire | Description | +| --------- | ---- | ---------- | ----------- | +| `limit` | number | Non | Nombre d'émissions à retourner \(1-50\) | +| `offset` | number | Non | Index de la première émission à retourner | + +#### Sortie + +| Paramètre | Type | Description | +| --------- | ---- | ----------- | +| `shows` | json | Liste des émissions enregistrées | +| `total` | number | Nombre total d'émissions enregistrées | +| `next` | string | URL pour la page suivante | + +### `spotify_save_shows` + +Enregistrer des émissions de podcast pour l'utilisateur + +#### Entrée + +| Paramètre | Type | Obligatoire | Description | +| --------- | ---- | ---------- | ----------- | +| `showIds` | string | Oui | Identifiants d'émissions séparés par des virgules \(max 50\) | + +#### Sortie + +| Paramètre | Type | Description | +| --------- | ---- | ----------- | +| `success` | boolean | Indique si les émissions ont été enregistrées | + +### `spotify_remove_saved_shows` + +Supprimer des émissions de podcast de l'utilisateur + +#### Entrée + +| Paramètre | Type | Obligatoire | Description | +| --------- | ---- | -------- | ----------- | +| `showIds` | string | Oui | IDs d'émissions séparés par des virgules \(max 50\) | + +#### Sortie + +| Paramètre | Type | Description | +| --------- | ---- | ----------- | +| `success` | boolean | Indique si les émissions ont été supprimées | + +### `spotify_check_saved_shows` + +Vérifier si les émissions sont enregistrées dans la bibliothèque. + +#### Entrée + +| Paramètre | Type | Obligatoire | Description | +| --------- | ---- | -------- | ----------- | +| `showIds` | string | Oui | IDs d'émissions séparés par des virgules \(max 50\) | + +#### Sortie + +| Paramètre | Type | Description | +| --------- | ---- | ----------- | +| `results` | json | Tableau de booléens pour chaque émission | + +### `spotify_get_episode` + +Obtenir les détails d'un épisode de podcast. + +#### Entrée + +| Paramètre | Type | Obligatoire | Description | +| --------- | ---- | -------- | ----------- | +| `episodeId` | string | Oui | L'ID de l'épisode Spotify | +| `market` | string | Non | Code pays ISO pour le marché | + +#### Sortie + +| Paramètre | Type | Description | +| --------- | ---- | ----------- | +| `id` | string | ID de l'épisode | +| `name` | string | Nom de l'épisode | +| `description` | string | Description de l'épisode | +| `duration_ms` | number | Durée en ms | +| `release_date` | string | Date de sortie | +| `explicit` | boolean | Contient du contenu explicite | +| `show` | json | Informations sur l'émission parente | +| `image_url` | string | URL de l'image de couverture | +| `external_url` | string | URL Spotify | + +### `spotify_get_episodes` + +Obtenir les détails de plusieurs épisodes de podcast. + +#### Entrée + +| Paramètre | Type | Obligatoire | Description | +| --------- | ---- | ----------- | ----------- | +| `episodeIds` | chaîne | Oui | IDs d'épisodes séparés par des virgules \(max 50\) | +| `market` | chaîne | Non | Code pays ISO pour le marché | + +#### Sortie + +| Paramètre | Type | Description | +| --------- | ---- | ----------- | +| `episodes` | json | Liste des épisodes | + +### `spotify_get_saved_episodes` + +Obtenir l'utilisateur + +#### Entrée + +| Paramètre | Type | Obligatoire | Description | +| --------- | ---- | ----------- | ----------- | +| `limit` | nombre | Non | Nombre d'épisodes à retourner \(1-50\) | +| `offset` | nombre | Non | Index du premier épisode à retourner | +| `market` | chaîne | Non | Code pays ISO pour le marché | + +#### Sortie + +| Paramètre | Type | Description | +| --------- | ---- | ----------- | +| `episodes` | json | Liste des épisodes enregistrés | +| `total` | nombre | Total des épisodes enregistrés | +| `next` | chaîne | URL pour la page suivante | + +### `spotify_save_episodes` + +Enregistrer des épisodes de podcast pour l'utilisateur + +#### Entrée + +| Paramètre | Type | Obligatoire | Description | +| --------- | ---- | ----------- | ----------- | +| `episodeIds` | chaîne | Oui | IDs d'épisodes séparés par des virgules \(max 50\) | + +#### Sortie + +| Paramètre | Type | Description | +| --------- | ---- | ----------- | +| `success` | booléen | Si les épisodes ont été enregistrés | + +### `spotify_remove_saved_episodes` + +Supprimer des épisodes de podcast de l'utilisateur + +#### Entrée + +| Paramètre | Type | Obligatoire | Description | +| --------- | ---- | -------- | ----------- | +| `episodeIds` | string | Oui | IDs d'épisodes séparés par des virgules (max 50) | + +#### Sortie + +| Paramètre | Type | Description | +| --------- | ---- | ----------- | +| `success` | boolean | Indique si les épisodes ont été supprimés | + +### `spotify_check_saved_episodes` + +Vérifier si les épisodes sont enregistrés dans la bibliothèque. + +#### Entrée + +| Paramètre | Type | Obligatoire | Description | +| --------- | ---- | -------- | ----------- | +| `episodeIds` | string | Oui | IDs d'épisodes séparés par des virgules (max 50) | + +#### Sortie + +| Paramètre | Type | Description | +| --------- | ---- | ----------- | +| `results` | json | Tableau de booléens pour chaque épisode | + +### `spotify_get_audiobook` + +Obtenir les détails d'un livre audio. + +#### Entrée + +| Paramètre | Type | Obligatoire | Description | +| --------- | ---- | -------- | ----------- | +| `audiobookId` | string | Oui | L'ID du livre audio Spotify | +| `market` | string | Non | Code pays ISO pour le marché | + +#### Sortie + +| Paramètre | Type | Description | +| --------- | ---- | ----------- | +| `id` | string | ID du livre audio | +| `name` | string | Nom du livre audio | +| `authors` | json | Auteurs | +| `narrators` | json | Narrateurs | +| `publisher` | string | Éditeur | +| `description` | string | Description | +| `total_chapters` | number | Nombre total de chapitres | +| `languages` | json | Langues | +| `image_url` | string | URL de l'image de couverture | +| `external_url` | string | URL Spotify | + +### `spotify_get_audiobooks` + +Obtenir les détails de plusieurs livres audio. + +#### Entrée + +| Paramètre | Type | Obligatoire | Description | +| --------- | ---- | ----------- | ----------- | +| `audiobookIds` | chaîne | Oui | IDs de livres audio séparés par des virgules \(max 50\) | +| `market` | chaîne | Non | Code pays ISO pour le marché | + +#### Sortie + +| Paramètre | Type | Description | +| --------- | ---- | ----------- | +| `audiobooks` | json | Liste des livres audio | + +### `spotify_get_audiobook_chapters` + +Obtenir les chapitres d'un livre audio. + +#### Entrée + +| Paramètre | Type | Obligatoire | Description | +| --------- | ---- | ----------- | ----------- | +| `audiobookId` | chaîne | Oui | L'ID Spotify du livre audio | +| `limit` | nombre | Non | Nombre de chapitres à retourner \(1-50\) | +| `offset` | nombre | Non | Index du premier chapitre à retourner | +| `market` | chaîne | Non | Code pays ISO pour le marché | + +#### Sortie + +| Paramètre | Type | Description | +| --------- | ---- | ----------- | +| `chapters` | json | Liste des chapitres | +| `total` | nombre | Total des chapitres | +| `next` | chaîne | URL pour la page suivante | + +### `spotify_get_saved_audiobooks` + +Obtenir l'utilisateur + +#### Entrée + +| Paramètre | Type | Obligatoire | Description | +| --------- | ---- | ----------- | ----------- | +| `limit` | nombre | Non | Nombre de livres audio à retourner \(1-50\) | +| `offset` | nombre | Non | Index du premier livre audio à retourner | + +#### Sortie + +| Paramètre | Type | Description | +| --------- | ---- | ----------- | +| `audiobooks` | json | Liste des livres audio enregistrés | +| `total` | number | Nombre total de livres audio enregistrés | +| `next` | string | URL pour la page suivante | + +### `spotify_save_audiobooks` + +Enregistrer des livres audio pour l'utilisateur + +#### Entrée + +| Paramètre | Type | Obligatoire | Description | +| --------- | ---- | -------- | ----------- | +| `audiobookIds` | string | Oui | IDs de livres audio séparés par des virgules (max 50) | + +#### Sortie + +| Paramètre | Type | Description | +| --------- | ---- | ----------- | +| `success` | boolean | Indique si les livres audio ont été enregistrés | + +### `spotify_remove_saved_audiobooks` + +Supprimer des livres audio de l'utilisateur + +#### Entrée + +| Paramètre | Type | Obligatoire | Description | +| --------- | ---- | -------- | ----------- | +| `audiobookIds` | string | Oui | IDs de livres audio séparés par des virgules (max 50) | + +#### Sortie + +| Paramètre | Type | Description | +| --------- | ---- | ----------- | +| `success` | boolean | Indique si les livres audio ont été supprimés | + +### `spotify_check_saved_audiobooks` + +Vérifier si les livres audio sont enregistrés dans la bibliothèque. + +#### Entrée + +| Paramètre | Type | Obligatoire | Description | +| --------- | ---- | -------- | ----------- | +| `audiobookIds` | string | Oui | IDs de livres audio séparés par des virgules (max 50) | + +#### Sortie + +| Paramètre | Type | Description | +| --------- | ---- | ----------- | +| `results` | json | Tableau de booléens pour chaque livre audio | + +### `spotify_get_playlist` + +Obtenir des informations détaillées sur une playlist Spotify par son ID. + +#### Entrée + +| Paramètre | Type | Obligatoire | Description | +| --------- | ---- | ---------- | ----------- | +| `playlistId` | chaîne | Oui | L'identifiant Spotify de la playlist | +| `market` | chaîne | Non | Code pays ISO 3166-1 alpha-2 pour la disponibilité des pistes | + +#### Sortie + +| Paramètre | Type | Description | +| --------- | ---- | ----------- | +| `id` | chaîne | Identifiant de la playlist Spotify | +| `name` | chaîne | Nom de la playlist | +| `description` | chaîne | Description de la playlist | +| `public` | booléen | Si la playlist est publique | +| `collaborative` | booléen | Si la playlist est collaborative | +| `owner` | objet | Informations sur le propriétaire de la playlist | +| `image_url` | chaîne | URL de l'image de couverture de la playlist | +| `total_tracks` | nombre | Nombre total de pistes | +| `snapshot_id` | chaîne | ID d'instantané de la playlist pour le versionnement | +| `external_url` | chaîne | URL Spotify | + +### `spotify_get_playlist_tracks` + +Obtenir les pistes d'une playlist Spotify. + +#### Entrée + +| Paramètre | Type | Obligatoire | Description | +| --------- | ---- | ---------- | ----------- | +| `playlistId` | chaîne | Oui | L'identifiant Spotify de la playlist | +| `limit` | nombre | Non | Nombre maximum de pistes à retourner \(1-100\) | +| `offset` | nombre | Non | Index de la première piste à retourner | +| `market` | chaîne | Non | Code pays ISO 3166-1 alpha-2 pour la disponibilité des pistes | + +#### Sortie + +| Paramètre | Type | Description | +| --------- | ---- | ----------- | +| `tracks` | array | Liste des pistes dans la playlist | + +### `spotify_get_playlist_cover` + +Obtenir une playlist + +#### Entrée + +| Paramètre | Type | Obligatoire | Description | +| --------- | ---- | ---------- | ----------- | +| `playlistId` | string | Oui | L'identifiant Spotify de la playlist | + +#### Sortie + +| Paramètre | Type | Description | +| --------- | ---- | ----------- | +| `images` | json | Liste des images de couverture | + +### `spotify_get_user_playlists` + +Obtenir l'utilisateur actuel + +#### Entrée + +| Paramètre | Type | Obligatoire | Description | +| --------- | ---- | ---------- | ----------- | +| `limit` | number | Non | Nombre maximum de playlists à retourner \(1-50\) | +| `offset` | number | Non | Index de la première playlist à retourner | + +#### Sortie + +| Paramètre | Type | Description | +| --------- | ---- | ----------- | +| `playlists` | array | Utilisateur | + +### `spotify_create_playlist` + +Créer une nouvelle playlist pour l'utilisateur actuel sur Spotify. + +#### Entrée + +| Paramètre | Type | Obligatoire | Description | +| --------- | ---- | ---------- | ----------- | +| `name` | string | Oui | Nom de la nouvelle playlist | +| `description` | string | Non | Description de la playlist | +| `public` | boolean | Non | Si la playlist doit être publique | +| `collaborative` | boolean | Non | Si la playlist doit être collaborative \(nécessite que public soit défini sur false\) | + +#### Sortie + +| Paramètre | Type | Description | +| --------- | ---- | ----------- | +| `id` | string | ID de la playlist Spotify | +| `name` | string | Nom de la playlist | +| `description` | string | Description de la playlist | +| `public` | boolean | Si la playlist est publique | +| `collaborative` | boolean | Si collaborative | +| `snapshot_id` | string | ID d'instantané de la playlist | +| `external_url` | string | URL Spotify | + +### `spotify_update_playlist` + +Mettre à jour une playlist + +#### Entrée + +| Paramètre | Type | Obligatoire | Description | +| --------- | ---- | -------- | ----------- | +| `playlistId` | string | Oui | L'ID de la playlist Spotify | +| `name` | string | Non | Nouveau nom pour la playlist | +| `description` | string | Non | Nouvelle description pour la playlist | +| `public` | boolean | Non | Si la playlist doit être publique | + +#### Sortie + +| Paramètre | Type | Description | +| --------- | ---- | ----------- | +| `success` | boolean | Si la mise à jour a réussi | + +### `spotify_add_playlist_cover` + +Télécharger une image de couverture personnalisée pour une playlist. L'image doit être au format JPEG et inférieure à 256 Ko. + +#### Entrée + +| Paramètre | Type | Obligatoire | Description | +| --------- | ---- | -------- | ----------- | +| `playlistId` | string | Oui | L'ID de la playlist Spotify | +| `imageBase64` | string | Oui | Image JPEG encodée en Base64 \(max 256 Ko\) | + +#### Sortie + +| Paramètre | Type | Description | +| --------- | ---- | ----------- | +| `success` | boolean | Si le téléchargement a réussi | + +### `spotify_add_tracks_to_playlist` + +Ajouter une ou plusieurs pistes à une playlist Spotify. + +#### Entrée + +| Paramètre | Type | Obligatoire | Description | +| --------- | ---- | ----------- | ----------- | +| `playlistId` | string | Oui | L'identifiant Spotify de la playlist | +| `uris` | string | Oui | URIs Spotify séparées par des virgules \(ex., "spotify:track:xxx,spotify:track:yyy"\) | +| `position` | number | Non | Position pour insérer les pistes \(à partir de 0\). Si omis, les pistes sont ajoutées à la fin. | + +#### Sortie + +| Paramètre | Type | Description | +| --------- | ---- | ----------- | +| `snapshot_id` | string | Nouvel identifiant d'instantané de playlist après modification | + +### `spotify_remove_tracks_from_playlist` + +Supprimer une ou plusieurs pistes d'une playlist Spotify. + +#### Entrée + +| Paramètre | Type | Obligatoire | Description | +| --------- | ---- | ----------- | ----------- | +| `playlistId` | string | Oui | L'identifiant Spotify de la playlist | +| `uris` | string | Oui | URIs Spotify séparées par des virgules à supprimer \(ex., "spotify:track:xxx,spotify:track:yyy"\) | + +#### Sortie + +| Paramètre | Type | Description | +| --------- | ---- | ----------- | +| `snapshot_id` | string | Nouvel identifiant d'instantané de playlist après modification | + +### `spotify_reorder_playlist_items` + +Déplacer des pistes vers une position différente dans une playlist. + +#### Entrée + +| Paramètre | Type | Obligatoire | Description | +| --------- | ---- | ----------- | ----------- | +| `playlistId` | string | Oui | L'identifiant de la playlist Spotify | +| `range_start` | number | Oui | Index de départ des éléments à réorganiser | +| `insert_before` | number | Oui | Index avant lequel insérer les éléments | +| `range_length` | number | Non | Nombre d'éléments à réorganiser | +| `snapshot_id` | string | Non | Identifiant d'instantané de playlist pour le contrôle de concurrence | + +#### Sortie + +| Paramètre | Type | Description | +| --------- | ---- | ----------- | +| `snapshot_id` | string | Nouvel ID d'instantané de playlist | + +### `spotify_replace_playlist_items` + +Remplacer tous les éléments d'une playlist par de nouvelles pistes. + +#### Entrée + +| Paramètre | Type | Obligatoire | Description | +| --------- | ---- | -------- | ----------- | +| `playlistId` | string | Oui | L'ID de playlist Spotify | +| `uris` | string | Oui | URIs Spotify séparées par des virgules \(max 100\) | + +#### Sortie + +| Paramètre | Type | Description | +| --------- | ---- | ----------- | +| `snapshot_id` | string | Nouvel ID d'instantané de playlist | + +### `spotify_follow_playlist` + +Suivre (sauvegarder) une playlist. + +#### Entrée + +| Paramètre | Type | Obligatoire | Description | +| --------- | ---- | -------- | ----------- | +| `playlistId` | string | Oui | L'ID de playlist Spotify | +| `public` | boolean | Non | Si la playlist sera dans les playlists publiques | + +#### Sortie + +| Paramètre | Type | Description | +| --------- | ---- | ----------- | +| `success` | boolean | Si le suivi a réussi | + +### `spotify_unfollow_playlist` + +Ne plus suivre (désauvegarder) une playlist. + +#### Entrée + +| Paramètre | Type | Obligatoire | Description | +| --------- | ---- | -------- | ----------- | +| `playlistId` | string | Oui | L'ID de playlist Spotify | + +#### Sortie + +| Paramètre | Type | Description | +| --------- | ---- | ----------- | +| `success` | boolean | Si le désabonnement a réussi | + +### `spotify_check_playlist_followers` + +Vérifier si les utilisateurs suivent une playlist. + +#### Entrée + +| Paramètre | Type | Obligatoire | Description | +| --------- | ---- | -------- | ----------- | +| `playlistId` | string | Oui | L'identifiant de la playlist Spotify | +| `userIds` | string | Oui | Identifiants d'utilisateurs séparés par des virgules à vérifier \(max 5\) | + +#### Sortie + +| Paramètre | Type | Description | +| --------- | ---- | ----------- | +| `results` | json | Tableau de booléens pour chaque utilisateur | + +### `spotify_get_current_user` + +Obtenir l'utilisateur actuel + +#### Entrée + +| Paramètre | Type | Obligatoire | Description | +| --------- | ---- | -------- | ----------- | + +#### Sortie + +| Paramètre | Type | Description | +| --------- | ---- | ----------- | +| `id` | string | Identifiant d'utilisateur Spotify | +| `display_name` | string | Nom d'affichage | +| `email` | string | Adresse e-mail | +| `country` | string | Code pays | +| `product` | string | Niveau d'abonnement \(gratuit, premium\) | +| `followers` | number | Nombre d'abonnés | +| `image_url` | string | URL de l'image de profil | +| `external_url` | string | URL du profil Spotify | + +### `spotify_get_user_profile` + +Obtenir un utilisateur + +#### Entrée + +| Paramètre | Type | Obligatoire | Description | +| --------- | ---- | -------- | ----------- | +| `userId` | string | Oui | L'identifiant d'utilisateur Spotify | + +#### Sortie + +| Paramètre | Type | Description | +| --------- | ---- | ----------- | +| `id` | string | Identifiant d'utilisateur | +| `display_name` | string | Nom d'affichage | +| `followers` | number | Nombre d'abonnés | +| `image_url` | string | URL de l'image de profil | +| `external_url` | string | URL Spotify | + +### `spotify_get_top_tracks` + +Obtenir l'utilisateur actuel + +#### Entrée + +| Paramètre | Type | Obligatoire | Description | +| --------- | ---- | -------- | ----------- | +| `time_range` | string | Non | Période : short_term \(~4 semaines\), medium_term \(~6 mois\), long_term \(années\) | +| `limit` | number | Non | Nombre de pistes à retourner \(1-50\) | +| `offset` | number | Non | Index de la première piste à retourner | + +#### Sortie + +| Paramètre | Type | Description | +| --------- | ---- | ----------- | +| `tracks` | array | Utilisateur | + +### `spotify_get_top_artists` + +Obtenir l'utilisateur actuel + +#### Entrée + +| Paramètre | Type | Obligatoire | Description | +| --------- | ---- | -------- | ----------- | +| `time_range` | string | Non | Période : short_term \(~4 semaines\), medium_term \(~6 mois\), long_term \(années\) | +| `limit` | number | Non | Nombre d'artistes à retourner \(1-50\) | +| `offset` | number | Non | Index du premier artiste à retourner | + +#### Sortie + +| Paramètre | Type | Description | +| --------- | ---- | ----------- | +| `artists` | array | Utilisateur | + +### `spotify_get_saved_tracks` + +Obtenir l'utilisateur actuel + +#### Entrée + +| Paramètre | Type | Obligatoire | Description | +| --------- | ---- | -------- | ----------- | +| `limit` | number | Non | Nombre de pistes à retourner \(1-50\) | +| `offset` | number | Non | Index de la première piste à retourner | +| `market` | string | Non | Code pays ISO 3166-1 alpha-2 | + +#### Sortie + +| Paramètre | Type | Description | +| --------- | ---- | ----------- | +| `tracks` | array | Utilisateur | + +### `spotify_save_tracks` + +Enregistrer des pistes pour l'utilisateur actuel + +#### Entrée + +| Paramètre | Type | Obligatoire | Description | +| --------- | ---- | -------- | ----------- | +| `trackIds` | string | Oui | IDs de pistes Spotify séparés par des virgules à enregistrer \(max 50\) | + +#### Sortie + +| Paramètre | Type | Description | +| --------- | ---- | ----------- | +| `success` | boolean | Si les pistes ont été enregistrées avec succès | + +### `spotify_remove_saved_tracks` + +Supprimer des pistes de l'utilisateur + +#### Entrée + +| Paramètre | Type | Obligatoire | Description | +| --------- | ---- | -------- | ----------- | +| `trackIds` | string | Oui | IDs de pistes séparés par des virgules à supprimer \(max 50\) | + +#### Sortie + +| Paramètre | Type | Description | +| --------- | ---- | ----------- | +| `success` | boolean | Si les pistes ont été supprimées avec succès | + +### `spotify_check_saved_tracks` + +Vérifier si une ou plusieurs pistes sont enregistrées chez l'utilisateur + +#### Entrée + +| Paramètre | Type | Obligatoire | Description | +| --------- | ---- | -------- | ----------- | +| `trackIds` | string | Oui | IDs de pistes séparés par des virgules à vérifier \(max 50\) | + +#### Sortie + +| Paramètre | Type | Description | +| --------- | ---- | ----------- | +| `results` | json | Tableau d'IDs de pistes avec leur statut d'enregistrement | +| `all_saved` | boolean | Si toutes les pistes sont enregistrées | +| `none_saved` | boolean | Si aucune piste n'est enregistrée | + +### `spotify_get_recently_played` + +Obtenir l'utilisateur + +#### Entrée + +| Paramètre | Type | Obligatoire | Description | +| --------- | ---- | -------- | ----------- | +| `limit` | number | Non | Nombre de pistes à retourner \(1-50\) | +| `after` | number | Non | Timestamp Unix en millisecondes. Renvoie les éléments après ce curseur. | +| `before` | number | Non | Timestamp Unix en millisecondes. Renvoie les éléments avant ce curseur. | + +#### Sortie + +| Paramètre | Type | Description | +| --------- | ---- | ----------- | +| `items` | array | Pistes écoutées récemment | + +### `spotify_get_new_releases` + +Obtenir une liste des nouvelles sorties d'albums mises en avant sur Spotify. + +#### Entrée + +| Paramètre | Type | Obligatoire | Description | +| --------- | ---- | -------- | ----------- | +| `country` | string | Non | Code pays ISO 3166-1 alpha-2 \(ex., "US", "GB"\) | +| `limit` | number | Non | Nombre de sorties à retourner \(1-50\) | +| `offset` | number | Non | Index de la première sortie à retourner | + +#### Sortie + +| Paramètre | Type | Description | +| --------- | ---- | ----------- | +| `albums` | json | Liste des nouvelles sorties | +| `total` | number | Nombre total de nouvelles sorties | +| `next` | string | URL pour la page suivante | + +### `spotify_get_categories` + +Obtenir une liste des catégories de navigation utilisées pour étiqueter les éléments dans Spotify. + +#### Entrée + +| Paramètre | Type | Obligatoire | Description | +| --------- | ---- | -------- | ----------- | +| `country` | string | Non | Code pays ISO 3166-1 alpha-2 \(ex., "US", "GB"\) | +| `locale` | string | Non | Code de langue \(ex., "en_US", "es_MX"\) | +| `limit` | number | Non | Nombre de catégories à retourner \(1-50\) | + +#### Sortie + +| Paramètre | Type | Description | +| --------- | ---- | ----------- | +| `categories` | json | Liste des catégories de navigation | +| `total` | number | Nombre total de catégories | + +### `spotify_get_markets` + +Obtenir la liste des marchés où Spotify est disponible. + +#### Entrée + +| Paramètre | Type | Obligatoire | Description | +| --------- | ---- | ----------- | ----------- | + +#### Sortie + +| Paramètre | Type | Description | +| --------- | ---- | ----------- | +| `markets` | json | Liste des codes pays ISO | + +### `spotify_get_playback_state` + +Obtenir l'état de lecture actuel, y compris l'appareil, la piste et la progression. + +#### Entrée + +| Paramètre | Type | Obligatoire | Description | +| --------- | ---- | ----------- | ----------- | +| `market` | string | Non | Code pays ISO 3166-1 alpha-2 | + +#### Sortie + +| Paramètre | Type | Description | +| --------- | ---- | ----------- | +| `is_playing` | boolean | Si la lecture est active | +| `device` | object | Informations sur l'appareil actif | +| `progress_ms` | number | Progression en millisecondes | +| `currently_playing_type` | string | Type de contenu en lecture | +| `shuffle_state` | boolean | Si la lecture aléatoire est activée | +| `repeat_state` | string | Mode de répétition (off, track, context) | +| `track` | object | Piste en cours de lecture | + +### `spotify_get_currently_playing` + +Obtenir l'utilisateur + +#### Entrée + +| Paramètre | Type | Obligatoire | Description | +| --------- | ---- | ----------- | ----------- | +| `market` | string | Non | Code pays ISO pour le marché | + +#### Sortie + +| Paramètre | Type | Description | +| --------- | ---- | ----------- | +| `is_playing` | boolean | Indique si la lecture est active | +| `progress_ms` | number | Position actuelle dans la piste (ms) | +| `track` | json | Piste en cours de lecture | + +### `spotify_get_devices` + +Obtenir l'utilisateur + +#### Entrée + +| Paramètre | Type | Obligatoire | Description | +| --------- | ---- | ----------- | ----------- | + +#### Sortie + +| Paramètre | Type | Description | +| --------- | ---- | ----------- | +| `devices` | array | Appareils de lecture disponibles | + +### `spotify_get_queue` + +Obtenir l'utilisateur + +#### Entrée + +| Paramètre | Type | Obligatoire | Description | +| --------- | ---- | ----------- | ----------- | + +#### Sortie + +| Paramètre | Type | Description | +| --------- | ---- | ----------- | +| `currently_playing` | json | Piste en cours de lecture | +| `queue` | json | Pistes à venir dans la file d'attente | + +### `spotify_play` + +Démarrer ou reprendre la lecture sur Spotify. Peut lire des pistes, albums ou playlists spécifiques. + +#### Entrée + +| Paramètre | Type | Obligatoire | Description | +| --------- | ---- | ----------- | ----------- | +| `device_id` | string | Non | ID de l'appareil sur lequel lancer la lecture. Si non fourni, la lecture se fait sur l'appareil actif. | +| `context_uri` | string | Non | URI Spotify de l'album, artiste ou playlist à lire (ex. : "spotify:album:xxx") | +| `uris` | string | Non | URIs des pistes séparées par des virgules à lire (ex. : "spotify:track:xxx,spotify:track:yyy") | +| `offset` | number | Non | Position dans le contexte pour commencer la lecture (index basé sur 0) | +| `position_ms` | number | Non | Position dans la piste pour commencer (en millisecondes) | + +#### Sortie + +| Paramètre | Type | Description | +| --------- | ---- | ----------- | +| `success` | boolean | Indique si la lecture a démarré avec succès | + +### `spotify_pause` + +Mettre en pause la lecture sur Spotify. + +#### Entrée + +| Paramètre | Type | Obligatoire | Description | +| --------- | ---- | -------- | ----------- | +| `device_id` | string | Non | ID de l'appareil à mettre en pause. Si non fourni, met en pause l'appareil actif. | + +#### Sortie + +| Paramètre | Type | Description | +| --------- | ---- | ----------- | +| `success` | boolean | Indique si la lecture a été mise en pause | + +### `spotify_skip_next` + +Passer à la piste suivante sur Spotify. + +#### Entrée + +| Paramètre | Type | Obligatoire | Description | +| --------- | ---- | -------- | ----------- | +| `device_id` | string | Non | ID de l'appareil. Si non fourni, utilise l'appareil actif. | + +#### Sortie + +| Paramètre | Type | Description | +| --------- | ---- | ----------- | +| `success` | boolean | Indique si le passage à la piste suivante a réussi | + +### `spotify_skip_previous` + +Revenir à la piste précédente sur Spotify. + +#### Entrée + +| Paramètre | Type | Obligatoire | Description | +| --------- | ---- | -------- | ----------- | +| `device_id` | string | Non | ID de l'appareil. Si non fourni, utilise l'appareil actif. | + +#### Sortie + +| Paramètre | Type | Description | +| --------- | ---- | ----------- | +| `success` | boolean | Indique si le retour à la piste précédente a réussi | + +### `spotify_seek` + +Se positionner à un moment précis dans la piste en cours de lecture. + +#### Entrée + +| Paramètre | Type | Obligatoire | Description | +| --------- | ---- | ---------- | ----------- | +| `position_ms` | number | Oui | Position en millisecondes vers laquelle se déplacer | +| `device_id` | string | Non | ID de l'appareil ciblé | + +#### Sortie + +| Paramètre | Type | Description | +| --------- | ---- | ----------- | +| `success` | boolean | Indique si le déplacement a réussi | + +### `spotify_add_to_queue` + +Ajouter une piste à l'utilisateur + +#### Entrée + +| Paramètre | Type | Obligatoire | Description | +| --------- | ---- | ---------- | ----------- | +| `uri` | string | Oui | URI Spotify de la piste à ajouter \(ex. : "spotify:track:xxx"\) | +| `device_id` | string | Non | ID de l'appareil. Si non fourni, utilise l'appareil actif. | + +#### Sortie + +| Paramètre | Type | Description | +| --------- | ---- | ----------- | +| `success` | boolean | Indique si la piste a été ajoutée à la file d'attente | + +### `spotify_set_volume` + +Régler le volume de lecture sur Spotify. + +#### Entrée + +| Paramètre | Type | Obligatoire | Description | +| --------- | ---- | ---------- | ----------- | +| `volume_percent` | number | Oui | Niveau de volume \(0 à 100\) | +| `device_id` | string | Non | ID de l'appareil. Si non fourni, utilise l'appareil actif. | + +#### Sortie + +| Paramètre | Type | Description | +| --------- | ---- | ----------- | +| `success` | boolean | Indique si le volume a été réglé | + +### `spotify_set_repeat` + +Définir le mode de répétition pour la lecture. + +#### Entrée + +| Paramètre | Type | Obligatoire | Description | +| --------- | ---- | ---------- | ----------- | +| `state` | string | Oui | Mode répétition : "off", "track" ou "context" | +| `device_id` | string | Non | ID de l'appareil ciblé | + +#### Sortie + +| Paramètre | Type | Description | +| --------- | ---- | ----------- | +| `success` | boolean | Indique si le mode répétition a été défini avec succès | + +### `spotify_set_shuffle` + +Activer ou désactiver la lecture aléatoire. + +#### Entrée + +| Paramètre | Type | Obligatoire | Description | +| --------- | ---- | ---------- | ----------- | +| `state` | boolean | Oui | true pour activer la lecture aléatoire, false pour la désactiver | +| `device_id` | string | Non | ID de l'appareil ciblé | + +#### Sortie + +| Paramètre | Type | Description | +| --------- | ---- | ----------- | +| `success` | boolean | Indique si la lecture aléatoire a été définie avec succès | + +### `spotify_transfer_playback` + +Transférer la lecture vers un autre appareil. + +#### Entrée + +| Paramètre | Type | Obligatoire | Description | +| --------- | ---- | ---------- | ----------- | +| `device_id` | string | Oui | ID de l'appareil vers lequel transférer la lecture | +| `play` | boolean | Non | Indique s'il faut démarrer la lecture sur le nouvel appareil | + +#### Sortie + +| Paramètre | Type | Description | +| --------- | ---- | ----------- | +| `success` | boolean | Indique si le transfert a réussi | + +## Notes + +- Catégorie : `tools` +- Type : `spotify` diff --git a/apps/docs/content/docs/fr/tools/sqs.mdx b/apps/docs/content/docs/fr/tools/sqs.mdx new file mode 100644 index 000000000..2321131ce --- /dev/null +++ b/apps/docs/content/docs/fr/tools/sqs.mdx @@ -0,0 +1,63 @@ +--- +title: Amazon SQS +description: Se connecter à Amazon SQS +--- + +import { BlockInfoCard } from "@/components/ui/block-info-card" + + + +{/* MANUAL-CONTENT-START:intro */} +[Amazon Simple Queue Service (SQS)](https://aws.amazon.com/sqs/) est un service de file d'attente de messages entièrement géré qui permet de découpler et de mettre à l'échelle des microservices, des systèmes distribués et des applications sans serveur. SQS élimine la complexité et les frais généraux associés à la gestion et à l'exploitation d'un middleware orienté messages, et permet aux développeurs de se concentrer sur un travail différenciant. + +Avec Amazon SQS, vous pouvez : + +- **Envoyer des messages** : publier des messages dans des files d'attente pour un traitement asynchrone +- **Découpler des applications** : permettre un couplage souple entre les composants de votre système +- **Mettre à l'échelle les charges de travail** : gérer des charges de travail variables sans provisionner d'infrastructure +- **Assurer la fiabilité** : redondance intégrée et haute disponibilité +- **Prendre en charge les files d'attente FIFO** : maintenir un ordre strict des messages et un traitement exactement une fois + +Dans Sim, l'intégration SQS permet à vos agents d'envoyer des messages aux files d'attente Amazon SQS de manière sécurisée et programmatique. Les opérations prises en charge comprennent : + +- **Envoi de message** : envoyer des messages aux files d'attente SQS avec un ID de groupe de messages facultatif et un ID de déduplication pour les files d'attente FIFO + +Cette intégration permet à vos agents d'automatiser les flux de travail d'envoi de messages sans intervention manuelle. En connectant Sim à Amazon SQS, vous pouvez créer des agents qui publient des messages dans des files d'attente au sein de vos flux de travail, le tout sans avoir à gérer l'infrastructure ou les connexions des files d'attente. +{/* MANUAL-CONTENT-END */} + +## Instructions d'utilisation + +Intégrez Amazon SQS dans le flux de travail. Peut envoyer des messages aux files d'attente SQS. + +## Outils + +### `sqs_send` + +Envoyer un message à une file d'attente Amazon SQS + +#### Entrée + +| Paramètre | Type | Obligatoire | Description | +| --------- | ---- | ----------- | ----------- | +| `region` | string | Oui | Région AWS (par ex., us-east-1) | +| `accessKeyId` | string | Oui | ID de clé d'accès AWS | +| `secretAccessKey` | string | Oui | Clé d'accès secrète AWS | +| `queueUrl` | string | Oui | URL de la file d'attente | +| `data` | object | Oui | Corps du message à envoyer | +| `messageGroupId` | string | Non | ID de groupe de messages (facultatif) | +| `messageDeduplicationId` | string | Non | ID de déduplication de message (facultatif) | + +#### Sortie + +| Paramètre | Type | Description | +| --------- | ---- | ----------- | +| `message` | string | Message d'état de l'opération | +| `id` | string | ID du message | + +## Notes + +- Catégorie : `tools` +- Type : `sqs` diff --git a/apps/docs/content/docs/fr/tools/stagehand.mdx b/apps/docs/content/docs/fr/tools/stagehand.mdx index 4dc5a7e06..905c35f75 100644 --- a/apps/docs/content/docs/fr/tools/stagehand.mdx +++ b/apps/docs/content/docs/fr/tools/stagehand.mdx @@ -1,6 +1,6 @@ --- -title: Stagehand Extract -description: Extraire des données de sites web +title: Stagehand +description: Automatisation web et extraction de données --- import { BlockInfoCard } from "@/components/ui/block-info-card" @@ -11,20 +11,27 @@ import { BlockInfoCard } from "@/components/ui/block-info-card" /> {/* MANUAL-CONTENT-START:intro */} -[Stagehand](https://stagehand.com) est un outil qui vous permet d'extraire des données structurées de pages web en utilisant Browserbase et OpenAI. +[Stagehand](https://stagehand.com) est un outil qui permet à la fois l'extraction de données structurées à partir de pages web et l'automatisation web autonome en utilisant Browserbase et les LLM modernes (OpenAI ou Anthropic). -Avec Stagehand, vous pouvez : +Stagehand offre deux capacités principales dans Sim : -- **Extraire des données structurées** : Extraire des données structurées de pages web en utilisant Browserbase et OpenAI -- **Enregistrer des données dans une base de données** : Sauvegarder les données extraites dans une base de données -- **Automatiser des flux de travail** : Automatiser des flux de travail pour extraire des données de pages web +- **stagehand_extract** : Extrait des données structurées d'une seule page web. Vous spécifiez ce que vous voulez (un schéma), et l'IA récupère et analyse les données dans cette forme à partir de la page. C'est idéal pour extraire des listes, des champs ou des objets lorsque vous savez exactement quelles informations vous avez besoin et où les obtenir. -Dans Sim, l'intégration Stagehand permet à vos agents d'extraire des données structurées de pages web en utilisant Browserbase et OpenAI. Cela permet des scénarios d'automatisation puissants tels que l'extraction de données, l'analyse de données et l'intégration de données. Vos agents peuvent extraire des données structurées de pages web, sauvegarder les données extraites dans une base de données et automatiser des flux de travail pour extraire des données de pages web. Cette intégration comble le fossé entre vos flux de travail IA et votre système de gestion de données, permettant une extraction et une intégration de données transparentes. En connectant Sim avec Stagehand, vous pouvez automatiser les processus d'extraction de données, maintenir des référentiels d'informations à jour, générer des rapports et organiser intelligemment les informations - le tout grâce à vos agents intelligents. +- **stagehand_agent** : Exécute un agent web autonome capable d'accomplir des tâches en plusieurs étapes, d'interagir avec des éléments, de naviguer entre les pages et de renvoyer des résultats structurés. C'est beaucoup plus flexible : l'agent peut faire des choses comme se connecter, rechercher, remplir des formulaires, recueillir des données de plusieurs endroits et produire un résultat final selon un schéma demandé. + +**Différences clés :** + +- *stagehand_extract* est une opération rapide “extraire ces données de cette page”. Il fonctionne mieux pour les tâches d'extraction directes en une seule étape. +- *stagehand_agent* effectue des tâches autonomes complexes en plusieurs étapes sur le web — comme la navigation, la recherche, ou même des transactions — et peut extraire dynamiquement des données selon vos instructions et un schéma optionnel. + +En pratique, utilisez **stagehand_extract** lorsque vous savez ce que vous voulez et où, et utilisez **stagehand_agent** lorsque vous avez besoin d'un bot pour réfléchir et exécuter des flux de travail interactifs. + +En intégrant Stagehand, les agents Sim peuvent automatiser la collecte de données, l'analyse et l'exécution de flux de travail sur le web : mise à jour de bases de données, organisation d'informations et génération de rapports personnalisés — de manière transparente et autonome. {/* MANUAL-CONTENT-END */} ## Instructions d'utilisation -Intégrez Stagehand dans le flux de travail. Peut extraire des données structurées à partir de pages web. Nécessite une clé API. +Intégrez Stagehand dans le flux de travail. Peut extraire des données structurées à partir de pages web ou exécuter un agent autonome pour effectuer des tâches. ## Outils @@ -35,17 +42,40 @@ Extraire des données structurées d'une page web en utilisant Stagehand #### Entrée | Paramètre | Type | Obligatoire | Description | -| --------- | ---- | ---------- | ----------- | -| `url` | string | Oui | URL de la page web à partir de laquelle extraire des données | -| `instruction` | string | Oui | Instructions pour l'extraction | -| `apiKey` | string | Oui | Clé API OpenAI pour l'extraction \(requise par Stagehand\) | +| --------- | ---- | -------- | ----------- | +| `url` | chaîne | Oui | URL de la page web à partir de laquelle extraire les données | +| `instruction` | chaîne | Oui | Instructions pour l'extraction | +| `provider` | chaîne | Non | Fournisseur d'IA à utiliser : openai ou anthropic | +| `apiKey` | chaîne | Oui | Clé API pour le fournisseur sélectionné | | `schema` | json | Oui | Schéma JSON définissant la structure des données à extraire | #### Sortie | Paramètre | Type | Description | | --------- | ---- | ----------- | -| `data` | object | Données structurées extraites correspondant au schéma fourni | +| `data` | objet | Données structurées extraites correspondant au schéma fourni | + +### `stagehand_agent` + +Exécuter un agent web autonome pour accomplir des tâches et extraire des données structurées + +#### Entrée + +| Paramètre | Type | Obligatoire | Description | +| --------- | ---- | -------- | ----------- | +| `startUrl` | chaîne | Oui | URL de la page web sur laquelle démarrer l'agent | +| `task` | chaîne | Oui | La tâche à accomplir ou l'objectif à atteindre sur le site web | +| `variables` | json | Non | Variables optionnelles à substituer dans la tâche (format : \{key: value\}). Référence dans la tâche en utilisant %key% | +| `format` | chaîne | Non | Pas de description | +| `provider` | chaîne | Non | Fournisseur d'IA à utiliser : openai ou anthropic | +| `apiKey` | chaîne | Oui | Clé API pour le fournisseur sélectionné | +| `outputSchema` | json | Non | Schéma JSON optionnel définissant la structure des données que l'agent doit renvoyer | + +#### Sortie + +| Paramètre | Type | Description | +| --------- | ---- | ----------- | +| `agentResult` | object | Résultat de l'exécution de l'agent Stagehand | ## Notes diff --git a/apps/docs/content/docs/fr/tools/stagehand_agent.mdx b/apps/docs/content/docs/fr/tools/stagehand_agent.mdx deleted file mode 100644 index 59ff6dc06..000000000 --- a/apps/docs/content/docs/fr/tools/stagehand_agent.mdx +++ /dev/null @@ -1,59 +0,0 @@ ---- -title: Agent Stagehand -description: Agent de navigation web autonome ---- - -import { BlockInfoCard } from "@/components/ui/block-info-card" - - - -{/* MANUAL-CONTENT-START:intro */} -[Stagehand](https://www.stagehand.dev/) est une plateforme d'agent web autonome qui permet aux systèmes d'IA de naviguer et d'interagir avec des sites web comme le ferait un humain. Elle offre une solution puissante pour automatiser des tâches web complexes sans nécessiter de code personnalisé ou de scripts d'automatisation de navigateur. - -Avec Stagehand, vous pouvez : - -- **Automatiser la navigation web** : permettre à l'IA de parcourir des sites web, cliquer sur des liens, remplir des formulaires et interagir avec des éléments web -- **Extraire des données structurées** : collecter des informations spécifiques à partir de sites web dans un format structuré et utilisable -- **Réaliser des flux de travail complexes** : effectuer des tâches en plusieurs étapes sur différents sites web et applications web -- **Gérer l'authentification** : naviguer dans les processus de connexion et maintenir les sessions sur les sites web -- **Traiter du contenu dynamique** : interagir avec des sites à forte composante JavaScript et des applications à page unique -- **Maintenir une conscience contextuelle** : suivre l'état actuel et l'historique pendant la navigation -- **Générer des rapports détaillés** : recevoir des journaux complets des actions entreprises et des données collectées - -Dans Sim, l'intégration de Stagehand permet à vos agents d'interagir de manière transparente avec des systèmes basés sur le web dans le cadre de leurs flux de travail. Cela permet des scénarios d'automatisation sophistiqués qui comblent le fossé entre vos agents d'IA et la vaste quantité d'informations et de fonctionnalités disponibles sur le web. Vos agents peuvent rechercher des informations, interagir avec des applications web, extraire des données de sites web et intégrer ces capacités dans leurs processus de prise de décision. En connectant Sim avec Stagehand, vous pouvez créer des agents qui vont au-delà des intégrations basées sur API pour naviguer sur le web comme le ferait un humain - remplir des formulaires, cliquer sur des boutons, lire du contenu et extraire des informations précieuses pour accomplir leurs tâches plus efficacement. -{/* MANUAL-CONTENT-END */} - -## Instructions d'utilisation - -Intégrez l'agent Stagehand dans le flux de travail. Peut naviguer sur le web et effectuer des tâches. Nécessite une clé API. - -## Outils - -### `stagehand_agent` - -Exécuter un agent web autonome pour accomplir des tâches et extraire des données structurées - -#### Entrée - -| Paramètre | Type | Obligatoire | Description | -| --------- | ---- | ----------- | ----------- | -| `startUrl` | string | Oui | URL de la page web sur laquelle démarrer l'agent | -| `task` | string | Oui | La tâche à accomplir ou l'objectif à atteindre sur le site web | -| `variables` | json | Non | Variables optionnelles à substituer dans la tâche \(format : \{key: value\}\). Référencez dans la tâche en utilisant %key% | -| `format` | string | Non | Pas de description | -| `apiKey` | string | Oui | Clé API OpenAI pour l'exécution de l'agent \(requise par Stagehand\) | -| `outputSchema` | json | Non | Schéma JSON optionnel définissant la structure des données que l'agent doit renvoyer | - -#### Sortie - -| Paramètre | Type | Description | -| --------- | ---- | ----------- | -| `agentResult` | object | Résultat de l'exécution de l'agent Stagehand | - -## Remarques - -- Catégorie : `tools` -- Type : `stagehand_agent` diff --git a/apps/docs/content/docs/fr/tools/trello.mdx b/apps/docs/content/docs/fr/tools/trello.mdx index e91241442..6929893cc 100644 --- a/apps/docs/content/docs/fr/tools/trello.mdx +++ b/apps/docs/content/docs/fr/tools/trello.mdx @@ -45,10 +45,8 @@ Lister toutes les listes d'un tableau Trello | Paramètre | Type | Description | | --------- | ---- | ----------- | -| `success` | boolean | Si l'opération a réussi | -| `lists` | array | Tableau d'objets liste avec id, nom, fermé, position et idTableau | +| `lists` | array | Tableau d'objets liste avec id, name, closed, pos et idBoard | | `count` | number | Nombre de listes retournées | -| `error` | string | Message d'erreur si l'opération a échoué | ### `trello_list_cards` @@ -65,10 +63,8 @@ Lister toutes les cartes d'un tableau Trello | Paramètre | Type | Description | | --------- | ---- | ----------- | -| `success` | boolean | Si l'opération a réussi | -| `cards` | array | Tableau d'objets carte avec id, nom, description, url, IDs du tableau/liste, étiquettes et date d'échéance | +| `cards` | array | Tableau d'objets carte avec id, name, desc, url, IDs de tableau/liste, étiquettes et date d'échéance | | `count` | number | Nombre de cartes retournées | -| `error` | string | Message d'erreur si l'opération a échoué | ### `trello_create_card` @@ -90,9 +86,7 @@ Créer une nouvelle carte sur un tableau Trello | Paramètre | Type | Description | | --------- | ---- | ----------- | -| `success` | booléen | Indique si la carte a été créée avec succès | -| `card` | objet | L'objet carte créé avec id, nom, description, url et autres propriétés | -| `error` | chaîne | Message d'erreur si l'opération a échoué | +| `card` | object | L'objet carte créé avec id, name, desc, url et autres propriétés | ### `trello_update_card` @@ -114,9 +108,7 @@ Mettre à jour une carte existante sur Trello | Paramètre | Type | Description | | --------- | ---- | ----------- | -| `success` | booléen | Indique si la carte a été mise à jour avec succès | -| `card` | objet | L'objet carte mis à jour avec id, nom, description, url et autres propriétés | -| `error` | chaîne | Message d'erreur si l'opération a échoué | +| `card` | object | L'objet carte mis à jour avec id, name, desc, url et autres propriétés | ### `trello_get_actions` @@ -135,10 +127,8 @@ Obtenir l'activité/les actions d'un tableau ou d'une carte | Paramètre | Type | Description | | --------- | ---- | ----------- | -| `success` | boolean | Indique si l'opération a réussi | -| `actions` | array | Tableau d'objets d'action avec type, date, membre et données | +| `actions` | array | Tableau d'objets action avec type, date, member et data | | `count` | number | Nombre d'actions retournées | -| `error` | string | Message d'erreur si l'opération a échoué | ### `trello_add_comment` @@ -155,9 +145,7 @@ Ajouter un commentaire à une carte Trello | Paramètre | Type | Description | | --------- | ---- | ----------- | -| `success` | boolean | Indique si le commentaire a été ajouté avec succès | -| `comment` | object | L'objet commentaire créé avec id, texte, date et membre créateur | -| `error` | string | Message d'erreur si l'opération a échoué | +| `comment` | object | L'objet commentaire créé avec id, text, date et member creator | ## Notes diff --git a/apps/docs/content/docs/fr/tools/typeform.mdx b/apps/docs/content/docs/fr/tools/typeform.mdx index 879239006..9a3373390 100644 --- a/apps/docs/content/docs/fr/tools/typeform.mdx +++ b/apps/docs/content/docs/fr/tools/typeform.mdx @@ -48,25 +48,9 @@ Récupérer les réponses aux formulaires depuis Typeform | Paramètre | Type | Description | | --------- | ---- | ----------- | -| `total_items` | nombre | Nombre total de réponses/formulaires | -| `page_count` | nombre | Nombre total de pages | -| `items` | json | Tableau des éléments de réponse/formulaire | -| `id` | chaîne | Identifiant unique du formulaire | -| `title` | chaîne | Titre du formulaire | -| `type` | chaîne | Type de formulaire | -| `created_at` | chaîne | Horodatage ISO de création du formulaire | -| `last_updated_at` | chaîne | Horodatage ISO de la dernière mise à jour | -| `settings` | json | Objet des paramètres du formulaire | -| `theme` | json | Objet de configuration du thème | -| `workspace` | json | Informations sur l'espace de travail | -| `fields` | json | Tableau des champs/questions du formulaire | -| `thankyou_screens` | json | Tableau des écrans de remerciement | -| `_links` | json | Liens vers les ressources associées | -| `deleted` | booléen | Indique si le formulaire a été supprimé avec succès | -| `message` | chaîne | Message de confirmation de suppression | -| `fileUrl` | chaîne | URL du fichier téléchargé | -| `contentType` | chaîne | Type de contenu du fichier | -| `filename` | chaîne | Nom du fichier | +| `total_items` | nombre | Nombre total de réponses | +| `page_count` | nombre | Nombre total de pages disponibles | +| `items` | tableau | Tableau d'objets de réponse avec response_id, submitted_at, answers et metadata | ### `typeform_files` @@ -128,7 +112,7 @@ Récupérer la liste de tous les formulaires dans votre compte Typeform | --------- | ---- | ----------- | | `total_items` | nombre | Nombre total de formulaires dans le compte | | `page_count` | nombre | Nombre total de pages disponibles | -| `items` | tableau | Tableau d'objets de formulaire | +| `items` | tableau | Tableau d'objets de formulaire avec id, title, created_at, last_updated_at, settings, theme et _links | ### `typeform_get_form` @@ -148,11 +132,13 @@ Récupérer les détails complets et la structure d'un formulaire spécifique | `id` | chaîne | Identifiant unique du formulaire | | `title` | chaîne | Titre du formulaire | | `type` | chaîne | Type de formulaire \(form, quiz, etc.\) | -| `created_at` | chaîne | Horodatage ISO de création du formulaire | -| `last_updated_at` | chaîne | Horodatage ISO de la dernière mise à jour | | `settings` | objet | Paramètres du formulaire incluant langue, barre de progression, etc. | -| `theme` | objet | Configuration du thème avec couleurs, polices et paramètres de design | -| `workspace` | objet | Informations sur l'espace de travail | +| `theme` | objet | Référence du thème | +| `workspace` | objet | Référence de l'espace de travail | +| `fields` | tableau | Tableau des champs/questions du formulaire | +| `welcome_screens` | tableau | Tableau des écrans d'accueil | +| `thankyou_screens` | tableau | Tableau des écrans de remerciement | +| `_links` | objet | Liens vers les ressources associées, y compris l'URL publique du formulaire | ### `typeform_create_form` @@ -177,13 +163,8 @@ Créer un nouveau formulaire avec champs et paramètres | `id` | chaîne | Identifiant unique du formulaire créé | | `title` | chaîne | Titre du formulaire | | `type` | chaîne | Type de formulaire | -| `created_at` | chaîne | Horodatage ISO de création du formulaire | -| `last_updated_at` | chaîne | Horodatage ISO de la dernière mise à jour | -| `settings` | objet | Paramètres du formulaire | -| `theme` | objet | Configuration du thème appliqué | -| `workspace` | objet | Informations sur l'espace de travail | -| `fields` | tableau | Tableau des champs de formulaire créés | -| `_links` | objet | Liens vers les ressources associées | +| `fields` | tableau | Tableau des champs du formulaire créé | +| `_links` | objet | Liens vers les ressources associées, y compris l'URL publique du formulaire | ### `typeform_update_form` @@ -204,12 +185,11 @@ Mettre à jour un formulaire existant à l'aide d'opérations JSON Patch | `id` | chaîne | Identifiant unique du formulaire mis à jour | | `title` | chaîne | Titre du formulaire | | `type` | chaîne | Type de formulaire | -| `created_at` | chaîne | Horodatage ISO de création du formulaire | -| `last_updated_at` | chaîne | Horodatage ISO de la dernière mise à jour | | `settings` | objet | Paramètres du formulaire | -| `theme` | objet | Configuration du thème | -| `workspace` | objet | Informations sur l'espace de travail | +| `theme` | objet | Référence du thème | +| `workspace` | objet | Référence de l'espace de travail | | `fields` | tableau | Tableau des champs du formulaire | +| `welcome_screens` | tableau | Tableau des écrans d'accueil | | `thankyou_screens` | tableau | Tableau des écrans de remerciement | | `_links` | objet | Liens vers les ressources associées | diff --git a/apps/docs/content/docs/fr/tools/zep.mdx b/apps/docs/content/docs/fr/tools/zep.mdx index ba60852b4..3b107ea1b 100644 --- a/apps/docs/content/docs/fr/tools/zep.mdx +++ b/apps/docs/content/docs/fr/tools/zep.mdx @@ -94,10 +94,7 @@ Récupérer le contexte utilisateur d'un fil de discussion en mode résumé ou b | Paramètre | Type | Description | | --------- | ---- | ----------- | -| `context` | string | La chaîne de contexte \(résumé ou basique\) | -| `facts` | array | Faits extraits | -| `entities` | array | Entités extraites | -| `summary` | string | Résumé de la conversation | +| `context` | string | La chaîne de contexte \(mode résumé ou basique\) | ### `zep_get_messages` @@ -137,9 +134,9 @@ Ajouter des messages à un fil de discussion existant | Paramètre | Type | Description | | --------- | ---- | ----------- | -| `context` | chaîne | Contexte mis à jour après l'ajout des messages | -| `messageIds` | tableau | Tableau des UUID des messages ajoutés | -| `threadId` | chaîne | L'ID du fil de discussion | +| `threadId` | string | L'ID du fil de discussion | +| `added` | boolean | Si les messages ont été ajoutés avec succès | +| `messageIds` | array | Tableau des UUID des messages ajoutés | ### `zep_add_user` @@ -208,8 +205,8 @@ Lister tous les fils de conversation pour un utilisateur spécifique | Paramètre | Type | Description | | --------- | ---- | ----------- | -| `threads` | tableau | Tableau d'objets de fils pour cet utilisateur | -| `userId` | chaîne | L'ID de l'utilisateur | +| `threads` | array | Tableau d'objets de fil de discussion pour cet utilisateur | +| `totalCount` | number | Nombre total de fils de discussion retournés | ## Notes diff --git a/apps/docs/content/docs/ja/tools/apify.mdx b/apps/docs/content/docs/ja/tools/apify.mdx index ff5ef18f6..bd873bde5 100644 --- a/apps/docs/content/docs/ja/tools/apify.mdx +++ b/apps/docs/content/docs/ja/tools/apify.mdx @@ -51,10 +51,9 @@ APIPYアクターを同期的に実行して結果を取得(最大5分) | パラメータ | 型 | 説明 | | --------- | ---- | ----------- | -| `success` | boolean | アクター実行が成功したかどうか | +| `success` | boolean | アクターの実行が成功したかどうか | | `runId` | string | APIFY実行ID | -| `status` | string | 実行ステータス(SUCCEEDED、FAILEDなど) | -| `datasetId` | string | 結果を含むデータセットID | +| `status` | string | 実行ステータス(SUCCEEDED、FAILED、など) | | `items` | array | データセット項目(完了した場合) | ### `apify_run_actor_async` diff --git a/apps/docs/content/docs/ja/tools/asana.mdx b/apps/docs/content/docs/ja/tools/asana.mdx index baf639efc..d9ba23acc 100644 --- a/apps/docs/content/docs/ja/tools/asana.mdx +++ b/apps/docs/content/docs/ja/tools/asana.mdx @@ -33,8 +33,15 @@ GIDで単一のタスクを取得するか、フィルターを使用して複 | パラメータ | 型 | 説明 | | --------- | ---- | ----------- | -| `success` | boolean | 操作の成功ステータス | -| `output` | object | taskGidが提供されたかどうかに応じて、単一のタスクの詳細またはタスクの配列 | +| `success` | boolean | 操作成功ステータス | +| `ts` | string | レスポンスのタイムスタンプ | +| `gid` | string | タスクのグローバル一意識別子 | +| `resource_type` | string | リソースタイプ(タスク) | +| `resource_subtype` | string | リソースのサブタイプ | +| `name` | string | タスク名 | +| `notes` | string | タスクのメモや説明 | +| `completed` | boolean | タスクが完了しているかどうか | +| `assignee` | object | 担当者の詳細 | ### `asana_create_task` @@ -54,8 +61,14 @@ Asanaで新しいタスクを作成する | パラメータ | 型 | 説明 | | --------- | ---- | ----------- | -| `success` | boolean | 操作の成功ステータス | -| `output` | object | タイムスタンプ、GID、名前、メモ、パーマリンクを含む作成されたタスクの詳細 | +| `success` | boolean | 操作成功ステータス | +| `ts` | string | レスポンスのタイムスタンプ | +| `gid` | string | タスクのグローバル一意識別子 | +| `name` | string | タスク名 | +| `notes` | string | タスクのメモや説明 | +| `completed` | boolean | タスクが完了しているかどうか | +| `created_at` | string | タスク作成のタイムスタンプ | +| `permalink_url` | string | Asana内のタスクへのURL | ### `asana_update_task` @@ -77,7 +90,12 @@ Asanaの既存タスクを更新する | パラメータ | 型 | 説明 | | --------- | ---- | ----------- | | `success` | boolean | 操作成功ステータス | -| `output` | object | タイムスタンプ、gid、名前、メモ、更新タイムスタンプを含む更新されたタスクの詳細 | +| `ts` | string | レスポンスのタイムスタンプ | +| `gid` | string | タスクのグローバル一意識別子 | +| `name` | string | タスク名 | +| `notes` | string | タスクのメモや説明 | +| `completed` | boolean | タスクが完了しているかどうか | +| `modified_at` | string | タスクの最終更新タイムスタンプ | ### `asana_get_projects` @@ -94,7 +112,8 @@ Asanaワークスペースからすべてのプロジェクトを取得する | パラメータ | 型 | 説明 | | --------- | ---- | ----------- | | `success` | boolean | 操作成功ステータス | -| `output` | object | gid、名前、リソースタイプを含むプロジェクトのリスト | +| `ts` | string | レスポンスのタイムスタンプ | +| `projects` | array | プロジェクトの配列 | ### `asana_search_tasks` @@ -115,7 +134,8 @@ Asanaワークスペース内のタスクを検索する | パラメータ | 型 | 説明 | | --------- | ---- | ----------- | | `success` | boolean | 操作成功ステータス | -| `output` | object | 検索条件に一致するタスクのリスト | +| `ts` | string | レスポンスのタイムスタンプ | +| `tasks` | array | 一致するタスクの配列 | ### `asana_add_comment` @@ -133,7 +153,11 @@ Asanaタスクにコメント(ストーリー)を追加する | パラメータ | 型 | 説明 | | --------- | ---- | ----------- | | `success` | boolean | 操作成功ステータス | -| `output` | object | gid、テキスト、作成タイムスタンプ、作成者を含むコメントの詳細 | +| `ts` | string | レスポンスのタイムスタンプ | +| `gid` | string | コメントのグローバル一意識別子 | +| `text` | string | コメントのテキスト内容 | +| `created_at` | string | コメント作成タイムスタンプ | +| `created_by` | object | コメント投稿者の詳細 | ## 注意事項 diff --git a/apps/docs/content/docs/ja/tools/confluence.mdx b/apps/docs/content/docs/ja/tools/confluence.mdx index 44b07303f..c6426b4a7 100644 --- a/apps/docs/content/docs/ja/tools/confluence.mdx +++ b/apps/docs/content/docs/ja/tools/confluence.mdx @@ -221,6 +221,33 @@ Confluenceページからコメントを削除します。 | `commentId` | string | 削除されたコメントID | | `deleted` | boolean | 削除ステータス | +### `confluence_upload_attachment` + +ファイルをConfluenceページに添付ファイルとしてアップロードします。 + +#### 入力 + +| パラメータ | 型 | 必須 | 説明 | +| --------- | ---- | -------- | ----------- | +| `domain` | string | はい | あなたのConfluenceドメイン(例:yourcompany.atlassian.net) | +| `pageId` | string | はい | ファイルを添付するConfluenceページID | +| `file` | file | はい | 添付ファイルとしてアップロードするファイル | +| `fileName` | string | いいえ | 添付ファイルのオプションのカスタムファイル名 | +| `comment` | string | いいえ | 添付ファイルに追加するオプションのコメント | +| `cloudId` | string | いいえ | インスタンスのConfluence Cloud ID。提供されない場合、ドメインを使用して取得されます。 | + +#### 出力 + +| パラメータ | 型 | 説明 | +| --------- | ---- | ----------- | +| `ts` | string | アップロードのタイムスタンプ | +| `attachmentId` | string | アップロードされた添付ファイルID | +| `title` | string | 添付ファイル名 | +| `fileSize` | number | ファイルサイズ(バイト単位) | +| `mediaType` | string | 添付ファイルのMIMEタイプ | +| `downloadUrl` | string | 添付ファイルのダウンロードURL | +| `pageId` | string | 添付ファイルが追加されたページID | + ### `confluence_list_attachments` Confluenceページのすべての添付ファイルを一覧表示します。 @@ -282,7 +309,7 @@ Confluenceページのすべてのラベルを一覧表示します。 ### `confluence_get_space` -特定のConfluenceスペースの詳細を取得します。 +特定のConfluenceスペースに関する詳細を取得します。 #### 入力 diff --git a/apps/docs/content/docs/ja/tools/firecrawl.mdx b/apps/docs/content/docs/ja/tools/firecrawl.mdx index 281cc0ceb..f4cbbd6e6 100644 --- a/apps/docs/content/docs/ja/tools/firecrawl.mdx +++ b/apps/docs/content/docs/ja/tools/firecrawl.mdx @@ -145,7 +145,6 @@ Firecrawlを使用してウェブ上の情報を検索します | --------- | ---- | ----------- | | `success` | boolean | 抽出操作が成功したかどうか | | `data` | object | スキーマまたはプロンプトに従って抽出された構造化データ | -| `sources` | array | データソース(showSourcesが有効な場合のみ) | ## 注意事項 diff --git a/apps/docs/content/docs/ja/tools/google_groups.mdx b/apps/docs/content/docs/ja/tools/google_groups.mdx index 6f36eeb80..951bebdef 100644 --- a/apps/docs/content/docs/ja/tools/google_groups.mdx +++ b/apps/docs/content/docs/ja/tools/google_groups.mdx @@ -34,7 +34,8 @@ Google Workspaceドメイン内のすべてのグループを一覧表示する | パラメータ | 型 | 説明 | | --------- | ---- | ----------- | -| `output` | json | Google グループ API レスポンスデータ | +| `groups` | json | グループオブジェクトの配列 | +| `nextPageToken` | string | 次のページの結果を取得するためのトークン | ### `google_groups_get_group` @@ -50,7 +51,7 @@ Google Workspaceドメイン内のすべてのグループを一覧表示する | パラメータ | 型 | 説明 | | --------- | ---- | ----------- | -| `output` | json | Google グループ API レスポンスデータ | +| `group` | json | グループオブジェクト | ### `google_groups_create_group` @@ -68,7 +69,7 @@ Google Workspaceドメイン内のすべてのグループを一覧表示する | パラメータ | 型 | 説明 | | --------- | ---- | ----------- | -| `output` | json | Google Groups APIのレスポンスデータ | +| `group` | json | 作成されたグループオブジェクト | ### `google_groups_update_group` @@ -87,7 +88,7 @@ Google Workspaceドメイン内のすべてのグループを一覧表示する | パラメータ | 型 | 説明 | | --------- | ---- | ----------- | -| `output` | json | Google Groups APIのレスポンスデータ | +| `group` | json | 更新されたグループオブジェクト | ### `google_groups_delete_group` @@ -103,7 +104,7 @@ Googleグループを削除する | パラメータ | 型 | 説明 | | --------- | ---- | ----------- | -| `output` | json | Google Groups APIのレスポンスデータ | +| `message` | string | 成功メッセージ | ### `google_groups_list_members` @@ -122,7 +123,8 @@ Google グループのすべてのメンバーを一覧表示する | パラメータ | 型 | 説明 | | --------- | ---- | ----------- | -| `output` | json | Google Groups APIのレスポンスデータ | +| `members` | json | メンバーオブジェクトの配列 | +| `nextPageToken` | string | 次のページの結果を取得するためのトークン | ### `google_groups_get_member` @@ -139,7 +141,7 @@ Google グループ内の特定のメンバーの詳細を取得する | パラメータ | 型 | 説明 | | --------- | ---- | ----------- | -| `output` | json | Google Groups APIのレスポンスデータ | +| `member` | json | メンバーオブジェクト | ### `google_groups_add_member` @@ -157,7 +159,7 @@ Google グループに新しいメンバーを追加する | パラメータ | 型 | 説明 | | --------- | ---- | ----------- | -| `output` | json | Google Groups APIレスポンスデータ | +| `member` | json | 追加されたメンバーオブジェクト | ### `google_groups_remove_member` @@ -174,7 +176,7 @@ Google Groupからメンバーを削除する | パラメータ | 型 | 説明 | | --------- | ---- | ----------- | -| `output` | json | Google Groups APIレスポンスデータ | +| `message` | string | 成功メッセージ | ### `google_groups_update_member` @@ -192,7 +194,7 @@ Google Groupからメンバーを削除する | パラメータ | 型 | 説明 | | --------- | ---- | ----------- | -| `output` | json | Google Groups APIレスポンスデータ | +| `member` | json | 更新されたメンバーオブジェクト | ### `google_groups_has_member` @@ -209,7 +211,7 @@ Google Groupからメンバーを削除する | パラメータ | 型 | 説明 | | --------- | ---- | ----------- | -| `output` | json | Google グループ API レスポンスデータ | +| `isMember` | boolean | ユーザーがグループのメンバーであるかどうか | ## 注意事項 diff --git a/apps/docs/content/docs/ja/tools/google_vault.mdx b/apps/docs/content/docs/ja/tools/google_vault.mdx index 0575dd618..c8524755d 100644 --- a/apps/docs/content/docs/ja/tools/google_vault.mdx +++ b/apps/docs/content/docs/ja/tools/google_vault.mdx @@ -34,8 +34,7 @@ Google Vaultに接続して、案件内のエクスポートの作成、エク | パラメータ | 型 | 説明 | | --------- | ---- | ----------- | -| `output` | json | Vault APIレスポンスデータ | -| `file` | json | 実行ファイルからダウンロードしたエクスポートファイル(UserFile) | +| `export` | json | 作成されたエクスポートオブジェクト | ### `google_vault_list_matters_export` @@ -54,8 +53,9 @@ Google Vaultに接続して、案件内のエクスポートの作成、エク | パラメータ | 型 | 説明 | | --------- | ---- | ----------- | -| `output` | json | Vault APIレスポンスデータ | -| `file` | json | 実行ファイルからダウンロードしたエクスポートファイル(UserFile) | +| `exports` | json | エクスポートオブジェクトの配列 | +| `export` | json | 単一のエクスポートオブジェクト(exportIdが提供された場合) | +| `nextPageToken` | string | 結果の次のページを取得するためのトークン | ### `google_vault_download_export_file` @@ -94,8 +94,7 @@ Google Vaultエクスポート(GCSオブジェクト)から単一ファイ | パラメータ | 型 | 説明 | | --------- | ---- | ----------- | -| `output` | json | Vault APIレスポンスデータ | -| `file` | json | 実行ファイルからダウンロードしたエクスポートファイル(UserFile) | +| `hold` | json | 作成された保留オブジェクト | ### `google_vault_list_matters_holds` @@ -112,10 +111,11 @@ Google Vaultエクスポート(GCSオブジェクト)から単一ファイ #### 出力 -| パラメータ | タイプ | 説明 | +| パラメータ | 型 | 説明 | | --------- | ---- | ----------- | -| `output` | json | Vault APIレスポンスデータ | -| `file` | json | 実行ファイルからダウンロードされたエクスポートファイル(UserFile) | +| `holds` | json | 保留オブジェクトの配列 | +| `hold` | json | 単一の保留オブジェクト(holdIdが提供された場合) | +| `nextPageToken` | string | 結果の次のページを取得するためのトークン | ### `google_vault_create_matters` @@ -130,10 +130,9 @@ Google Vaultで新しい案件を作成する #### 出力 -| パラメータ | タイプ | 説明 | +| パラメータ | 型 | 説明 | | --------- | ---- | ----------- | -| `output` | json | Vault APIレスポンスデータ | -| `file` | json | 実行ファイルからダウンロードされたエクスポートファイル(UserFile) | +| `matter` | json | 作成された案件オブジェクト | ### `google_vault_list_matters` @@ -149,10 +148,11 @@ Google Vaultで新しい案件を作成する #### 出力 -| パラメータ | タイプ | 説明 | +| パラメータ | 型 | 説明 | | --------- | ---- | ----------- | -| `output` | json | Vault APIレスポンスデータ | -| `file` | json | 実行ファイルからダウンロードされたエクスポートファイル(UserFile) | +| `matters` | json | 案件オブジェクトの配列 | +| `matter` | json | 単一の案件オブジェクト(matterIdが提供された場合) | +| `nextPageToken` | string | 結果の次のページを取得するためのトークン | ## 注意事項 diff --git a/apps/docs/content/docs/ja/tools/grafana.mdx b/apps/docs/content/docs/ja/tools/grafana.mdx index 50b253141..bd3f9e9b7 100644 --- a/apps/docs/content/docs/ja/tools/grafana.mdx +++ b/apps/docs/content/docs/ja/tools/grafana.mdx @@ -321,9 +321,9 @@ UIDによるアラートルールの削除 | `organizationId` | string | いいえ | マルチ組織Grafanaインスタンス用の組織ID | | `text` | string | はい | アノテーションのテキスト内容 | | `tags` | string | いいえ | カンマ区切りのタグリスト | -| `dashboardUid` | string | いいえ | アノテーションを追加するダッシュボードのUID(全体的なアノテーションの場合はオプション) | +| `dashboardUid` | string | はい | アノテーションを追加するダッシュボードのUID | | `panelId` | number | いいえ | アノテーションを追加するパネルのID | -| `time` | number | いいえ | エポックミリ秒での開始時間(デフォルトは現在) | +| `time` | number | いいえ | エポックミリ秒での開始時間(デフォルトは現在時刻) | | `timeEnd` | number | いいえ | エポックミリ秒での終了時間(範囲アノテーション用) | #### 出力 @@ -346,10 +346,10 @@ UIDによるアラートルールの削除 | `organizationId` | string | いいえ | マルチ組織Grafanaインスタンス用の組織ID | | `from` | number | いいえ | エポックミリ秒での開始時間 | | `to` | number | いいえ | エポックミリ秒での終了時間 | -| `dashboardUid` | string | いいえ | ダッシュボードUIDでフィルタリング | +| `dashboardUid` | string | はい | アノテーションを取得するダッシュボードのUID | | `panelId` | number | いいえ | パネルIDでフィルタリング | | `tags` | string | いいえ | フィルタリングするタグのカンマ区切りリスト | -| `type` | string | いいえ | タイプでフィルタリング(アラートまたはアノテーション) | +| `type` | string | いいえ | タイプでフィルタリング(alertまたはannotation) | | `limit` | number | いいえ | 返すアノテーションの最大数 | #### 出力 @@ -487,6 +487,16 @@ Grafanaに新しいフォルダを作成 | `uid` | string | 作成されたフォルダのUID | | `title` | string | 作成されたフォルダのタイトル | | `url` | string | フォルダへのURLパス | +| `hasAcl` | boolean | フォルダがカスタムACL権限を持っているかどうか | +| `canSave` | boolean | 現在のユーザーがフォルダを保存できるかどうか | +| `canEdit` | boolean | 現在のユーザーがフォルダを編集できるかどうか | +| `canAdmin` | boolean | 現在のユーザーがフォルダに対して管理者権限を持っているかどうか | +| `canDelete` | boolean | 現在のユーザーがフォルダを削除できるかどうか | +| `createdBy` | string | フォルダを作成したユーザーのユーザー名 | +| `created` | string | フォルダが作成されたときのタイムスタンプ | +| `updatedBy` | string | フォルダを最後に更新したユーザーのユーザー名 | +| `updated` | string | フォルダが最後に更新されたときのタイムスタンプ | +| `version` | number | フォルダのバージョン番号 | ## メモ diff --git a/apps/docs/content/docs/ja/tools/hubspot.mdx b/apps/docs/content/docs/ja/tools/hubspot.mdx index 3f5bad592..4aa9a3782 100644 --- a/apps/docs/content/docs/ja/tools/hubspot.mdx +++ b/apps/docs/content/docs/ja/tools/hubspot.mdx @@ -47,8 +47,9 @@ HubSpotアカウントからすべてのユーザーを取得する | パラメータ | 型 | 説明 | | --------- | ---- | ----------- | -| `success` | boolean | 操作の成功ステータス | -| `output` | object | ユーザーデータ | +| `users` | array | HubSpotユーザーオブジェクトの配列 | +| `metadata` | object | 操作メタデータ | +| `success` | boolean | 操作成功ステータス | ### `hubspot_list_contacts` @@ -67,8 +68,10 @@ HubSpotアカウントからすべてのユーザーを取得する | パラメータ | 型 | 説明 | | --------- | ---- | ----------- | +| `contacts` | array | HubSpotコンタクトオブジェクトの配列 | +| `paging` | object | ページネーション情報 | +| `metadata` | object | 操作メタデータ | | `success` | boolean | 操作成功ステータス | -| `output` | object | コンタクトデータ | ### `hubspot_get_contact` @@ -87,8 +90,9 @@ HubSpotからIDまたはメールで単一のコンタクトを取得する | パラメータ | 型 | 説明 | | --------- | ---- | ----------- | +| `contact` | object | プロパティを持つHubSpotコンタクトオブジェクト | +| `metadata` | object | 操作メタデータ | | `success` | boolean | 操作成功ステータス | -| `output` | object | コンタクトデータ | ### `hubspot_create_contact` @@ -105,8 +109,9 @@ HubSpotで新しい連絡先を作成します。少なくともemail、firstnam | パラメータ | 型 | 説明 | | --------- | ---- | ----------- | -| `success` | boolean | 操作の成功ステータス | -| `output` | object | 作成された連絡先データ | +| `contact` | object | 作成されたHubSpotコンタクトオブジェクト | +| `metadata` | object | 操作メタデータ | +| `success` | boolean | 操作成功ステータス | ### `hubspot_update_contact` @@ -124,8 +129,9 @@ IDまたはメールアドレスでHubSpotの既存の連絡先を更新しま | パラメータ | 型 | 説明 | | --------- | ---- | ----------- | -| `success` | boolean | 操作の成功ステータス | -| `output` | object | 更新された連絡先データ | +| `contact` | object | 更新されたHubSpotコンタクトオブジェクト | +| `metadata` | object | 操作メタデータ | +| `success` | boolean | 操作成功ステータス | ### `hubspot_search_contacts` @@ -146,8 +152,11 @@ IDまたはメールアドレスでHubSpotの既存の連絡先を更新しま | パラメータ | 型 | 説明 | | --------- | ---- | ----------- | -| `success` | boolean | 操作の成功ステータス | -| `output` | object | 検索結果 | +| `contacts` | array | 一致するHubSpotコンタクトオブジェクトの配列 | +| `total` | number | 一致するコンタクトの総数 | +| `paging` | object | ページネーション情報 | +| `metadata` | object | 操作メタデータ | +| `success` | boolean | 操作成功ステータス | ### `hubspot_list_companies` @@ -166,8 +175,10 @@ IDまたはメールアドレスでHubSpotの既存の連絡先を更新しま | パラメータ | 型 | 説明 | | --------- | ---- | ----------- | -| `success` | boolean | 操作の成功ステータス | -| `output` | object | 企業データ | +| `companies` | array | HubSpot会社オブジェクトの配列 | +| `paging` | object | ページネーション情報 | +| `metadata` | object | 操作メタデータ | +| `success` | boolean | 操作成功ステータス | ### `hubspot_get_company` @@ -186,8 +197,9 @@ IDまたはドメインからHubSpotの単一企業を取得する | パラメータ | 型 | 説明 | | --------- | ---- | ----------- | +| `company` | object | プロパティを持つHubSpot会社オブジェクト | +| `metadata` | object | 操作メタデータ | | `success` | boolean | 操作成功ステータス | -| `output` | object | 企業データ | ### `hubspot_create_company` @@ -204,8 +216,9 @@ HubSpotに新しい企業を作成する | パラメータ | 型 | 説明 | | --------- | ---- | ----------- | +| `company` | object | 作成されたHubSpot会社オブジェクト | +| `metadata` | object | 操作メタデータ | | `success` | boolean | 操作成功ステータス | -| `output` | object | 作成された企業データ | ### `hubspot_update_company` @@ -223,8 +236,9 @@ IDまたはドメインによってHubSpotの既存企業を更新する | パラメータ | 型 | 説明 | | --------- | ---- | ----------- | +| `company` | object | 更新されたHubSpot会社オブジェクト | +| `metadata` | object | 操作メタデータ | | `success` | boolean | 操作成功ステータス | -| `output` | object | 更新された会社データ | ### `hubspot_search_companies` @@ -245,8 +259,11 @@ IDまたはドメインによってHubSpotの既存企業を更新する | パラメータ | 型 | 説明 | | --------- | ---- | ----------- | +| `companies` | array | 一致するHubSpot会社オブジェクトの配列 | +| `total` | number | 一致する会社の総数 | +| `paging` | object | ページネーション情報 | +| `metadata` | object | 操作メタデータ | | `success` | boolean | 操作成功ステータス | -| `output` | object | 検索結果 | ### `hubspot_list_deals` @@ -265,8 +282,10 @@ IDまたはドメインによってHubSpotの既存企業を更新する | パラメータ | 型 | 説明 | | --------- | ---- | ----------- | +| `deals` | array | HubSpotディールオブジェクトの配列 | +| `paging` | object | ページネーション情報 | +| `metadata` | object | 操作メタデータ | | `success` | boolean | 操作成功ステータス | -| `output` | object | 取引データ | ## 注意事項 diff --git a/apps/docs/content/docs/ja/tools/pipedrive.mdx b/apps/docs/content/docs/ja/tools/pipedrive.mdx index 4f60fa967..63e0d3a82 100644 --- a/apps/docs/content/docs/ja/tools/pipedrive.mdx +++ b/apps/docs/content/docs/ja/tools/pipedrive.mdx @@ -51,8 +51,9 @@ Pipedriveをワークフローに統合します。強力なCRM機能を使用 | パラメータ | 型 | 説明 | | --------- | ---- | ----------- | +| `deals` | array | Pipedriveからの取引オブジェクトの配列 | +| `metadata` | object | 操作メタデータ | | `success` | boolean | 操作成功ステータス | -| `output` | object | 取引データとメタデータ | ### `pipedrive_get_deal` @@ -68,8 +69,9 @@ Pipedriveをワークフローに統合します。強力なCRM機能を使用 | パラメータ | 型 | 説明 | | --------- | ---- | ----------- | +| `deal` | object | 詳細情報を含む取引オブジェクト | +| `metadata` | object | 操作メタデータ | | `success` | boolean | 操作成功ステータス | -| `output` | object | 取引の詳細 | ### `pipedrive_create_deal` @@ -93,8 +95,9 @@ Pipedriveで新しい取引を作成する | パラメータ | 型 | 説明 | | --------- | ---- | ----------- | +| `deal` | object | 作成された取引オブジェクト | +| `metadata` | object | 操作メタデータ | | `success` | boolean | 操作成功ステータス | -| `output` | object | 作成されたディールの詳細 | ### `pipedrive_update_deal` @@ -115,8 +118,9 @@ Pipedriveの既存のディールを更新する | パラメータ | 型 | 説明 | | --------- | ---- | ----------- | +| `deal` | object | 更新された取引オブジェクト | +| `metadata` | object | 操作メタデータ | | `success` | boolean | 操作成功ステータス | -| `output` | object | 更新されたディールの詳細 | ### `pipedrive_get_files` @@ -135,8 +139,9 @@ Pipedriveの既存のディールを更新する | パラメータ | 型 | 説明 | | --------- | ---- | ----------- | +| `files` | array | Pipedriveからのファイルオブジェクトの配列 | +| `metadata` | object | 操作メタデータ | | `success` | boolean | 操作成功ステータス | -| `output` | object | ファイルデータ | ### `pipedrive_get_mail_messages` @@ -153,8 +158,9 @@ Pipedriveメールボックスからメールスレッドを取得する | パラメータ | 型 | 説明 | | --------- | ---- | ----------- | +| `messages` | array | Pipedriveメールボックスからのメールスレッドオブジェクトの配列 | +| `metadata` | object | 操作メタデータ | | `success` | boolean | 操作成功ステータス | -| `output` | object | メールスレッドデータ | ### `pipedrive_get_mail_thread` @@ -170,8 +176,9 @@ Pipedriveメールボックスからメールスレッドを取得する | パラメータ | 型 | 説明 | | --------- | ---- | ----------- | +| `messages` | array | スレッドからのメールメッセージオブジェクトの配列 | +| `metadata` | object | スレッドIDを含む操作メタデータ | | `success` | boolean | 操作成功ステータス | -| `output` | object | メールスレッドメッセージデータ | ### `pipedrive_get_pipelines` @@ -190,8 +197,9 @@ Pipedriveからすべてのパイプラインを取得する | パラメータ | 型 | 説明 | | --------- | ---- | ----------- | +| `pipelines` | array | Pipedriveからのパイプラインオブジェクトの配列 | +| `metadata` | object | 操作メタデータ | | `success` | boolean | 操作成功ステータス | -| `output` | object | パイプラインデータ | ### `pipedrive_get_pipeline_deals` @@ -210,8 +218,9 @@ Pipedriveからすべてのパイプラインを取得する | パラメータ | 型 | 説明 | | --------- | ---- | ----------- | +| `deals` | array | パイプラインからの取引オブジェクトの配列 | +| `metadata` | object | パイプラインIDを含む操作メタデータ | | `success` | boolean | 操作成功ステータス | -| `output` | object | パイプライン取引データ | ### `pipedrive_get_projects` @@ -229,8 +238,10 @@ Pipedriveからすべてのプロジェクトまたは特定のプロジェク | パラメータ | 型 | 説明 | | --------- | ---- | ----------- | +| `projects` | array | プロジェクトオブジェクトの配列(すべてをリスト表示する場合) | +| `project` | object | 単一のプロジェクトオブジェクト(project_idが提供される場合) | +| `metadata` | object | 操作メタデータ | | `success` | boolean | 操作成功ステータス | -| `output` | object | プロジェクトデータまたは単一プロジェクトの詳細 | ### `pipedrive_create_project` @@ -249,8 +260,9 @@ Pipedriveで新しいプロジェクトを作成する | パラメータ | 型 | 説明 | | --------- | ---- | ----------- | +| `project` | object | 作成されたプロジェクトオブジェクト | +| `metadata` | object | 操作メタデータ | | `success` | boolean | 操作成功ステータス | -| `output` | object | 作成されたプロジェクトの詳細 | ### `pipedrive_get_activities` @@ -271,8 +283,9 @@ Pipedriveで新しいプロジェクトを作成する | パラメータ | 型 | 説明 | | --------- | ---- | ----------- | +| `activities` | array | Pipedriveからのアクティビティオブジェクトの配列 | +| `metadata` | object | 操作メタデータ | | `success` | boolean | 操作成功ステータス | -| `output` | object | アクティビティデータ | ### `pipedrive_create_activity` @@ -296,8 +309,9 @@ Pipedriveで新しいアクティビティ(タスク)を作成する | パラメータ | 型 | 説明 | | --------- | ---- | ----------- | -| `success` | boolean | 操作の成功ステータス | -| `output` | object | 作成されたアクティビティの詳細 | +| `activity` | object | 作成されたアクティビティオブジェクト | +| `metadata` | object | 操作メタデータ | +| `success` | boolean | 操作成功ステータス | ### `pipedrive_update_activity` @@ -319,8 +333,9 @@ Pipedriveで既存のアクティビティ(タスク)を更新する | パラメータ | 型 | 説明 | | --------- | ---- | ----------- | +| `activity` | object | 更新されたアクティビティオブジェクト | +| `metadata` | object | 操作メタデータ | | `success` | boolean | 操作成功ステータス | -| `output` | object | 更新されたアクティビティの詳細 | ### `pipedrive_get_leads` @@ -341,8 +356,10 @@ Pipedriveからすべてのリードまたは特定のリードを取得する | パラメータ | 型 | 説明 | | --------- | ---- | ----------- | +| `leads` | array | リード オブジェクトの配列(すべてをリスト表示する場合) | +| `lead` | object | 単一のリード オブジェクト(lead_id が提供される場合) | +| `metadata` | object | 操作メタデータ | | `success` | boolean | 操作成功ステータス | -| `output` | object | リードデータまたは単一リードの詳細 | ### `pipedrive_create_lead` @@ -365,8 +382,9 @@ Pipedriveに新しいリードを作成する | パラメータ | 型 | 説明 | | --------- | ---- | ----------- | +| `lead` | object | 作成されたリードオブジェクト | +| `metadata` | object | 操作メタデータ | | `success` | boolean | 操作成功ステータス | -| `output` | object | 作成されたリードの詳細 | ### `pipedrive_update_lead` @@ -390,8 +408,9 @@ Pipedriveの既存リードを更新する | パラメータ | 型 | 説明 | | --------- | ---- | ----------- | +| `lead` | object | 更新されたリードオブジェクト | +| `metadata` | object | 操作メタデータ | | `success` | boolean | 操作成功ステータス | -| `output` | object | 更新されたリードの詳細 | ### `pipedrive_delete_lead` @@ -407,8 +426,9 @@ Pipedriveから特定のリードを削除する | パラメータ | 型 | 説明 | | --------- | ---- | ----------- | +| `data` | object | 削除確認データ | +| `metadata` | object | 操作メタデータ | | `success` | boolean | 操作成功ステータス | -| `output` | object | 削除結果 | ## 注意事項 diff --git a/apps/docs/content/docs/ja/tools/pylon.mdx b/apps/docs/content/docs/ja/tools/pylon.mdx deleted file mode 100644 index c587d1956..000000000 --- a/apps/docs/content/docs/ja/tools/pylon.mdx +++ /dev/null @@ -1,806 +0,0 @@ ---- -title: Pylon -description: Pylonでカスタマーサポートの問題、アカウント、連絡先、ユーザー、チーム、タグを管理する ---- - -import { BlockInfoCard } from "@/components/ui/block-info-card" - - - -{/* MANUAL-CONTENT-START:intro */} -[Pylon](https://usepylon.com/)は、カスタマーサポートの問題からアカウント、連絡先、ユーザー、チームなど、顧客関係のあらゆる側面を管理するために設計された高度なカスタマーサポートおよび成功プラットフォームです。Pylonは豊富なAPIと包括的なツールセットを備え、サポートおよび成功チームが効率的かつプログラム的に運営できるよう支援します。 - -SimでPylonを使用すると、以下のことが可能です: - -- **サポート問題の管理:** - - 効率的なケース追跡のために、サポート問題の一覧表示、作成、取得、更新、削除ができます。 - - エージェントが集中して整理できるよう、問題の検索やスヌーズ機能を利用できます。 - - 内部および外部の関係者とのシームレスな連携のために、問題のフォロワーや外部問題を処理できます。 - -- **完全なアカウント管理:** - - 顧客アカウントの一覧表示、作成、取得、更新、削除ができます。 - - プログラムによるアカウントの一括更新が可能です。 - - サポートやアウトリーチに関連する顧客情報をすばやく見つけるためのアカウント検索ができます。 - -- **連絡先管理:** - - アカウントに関連するすべての人を管理するための連絡先の一覧表示、作成、取得、更新、削除、検索ができます。 - -- **ユーザーとチームの操作:** - - Pylonワークスペース内のユーザーの一覧表示、取得、更新、検索ができます。 - - サポート組織とワークフローを構築するためのチームの一覧表示、作成、取得、更新ができます。 - -- **タグ付けと整理:** - - 問題、アカウント、または連絡先を分類するためのタグの一覧表示、取得、作成、更新、削除ができます。 - -- **メッセージ処理:** - - プライバシーとコンプライアンスのために、ワークフローから直接機密メッセージ内容を編集できます。 - -PylonツールをSimに統合することで、エージェントはサポート業務のあらゆる側面を自動化できます: -- 顧客イベントが発生した際に、新しい問題を自動的に開いたり、更新したり、トリアージしたりできます。 -- テクノロジースタック全体でアカウントと連絡先データを同期させて維持できます。 -- タグとチームを使用して会話のルーティング、エスカレーションの処理、サポートデータの整理ができます。 -- 必要に応じてメッセージを編集することで、機密データが適切に管理されるようにします。 - -Pylonのエンドポイントは、顧客の問題と関係の全ライフサイクル管理のための詳細な制御を提供します。サポートデスクの拡張、積極的な顧客成功の推進、または他のシステムとの統合など、Sim内のPylonは、安全に、柔軟に、そして大規模に、最高クラスのCRM自動化を実現します。 -{/* MANUAL-CONTENT-END */} - -## 使用方法 - -Pylonをワークフローに統合します。問題(一覧表示、作成、取得、更新、削除、検索、スヌーズ、フォロワー、外部問題)、アカウント(一覧表示、作成、取得、更新、削除、一括更新、検索)、連絡先(一覧表示、作成、取得、更新、削除、検索)、ユーザー(一覧表示、取得、更新、検索)、チーム(一覧表示、取得、作成、更新)、タグ(一覧表示、取得、作成、更新、削除)、およびメッセージ(編集)を管理します。 - -## ツール - -### `pylon_list_issues` - -指定された時間範囲内の問題のリストを取得する - -#### 入力 - -| パラメータ | 型 | 必須 | 説明 | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | はい | Pylon APIトークン | -| `startTime` | string | はい | RFC3339形式の開始時間(例:2024-01-01T00:00:00Z) | -| `endTime` | string | はい | RFC3339形式の終了時間(例:2024-01-31T23:59:59Z) | -| `cursor` | string | いいえ | 結果の次のページのページネーションカーソル | - -#### 出力 - -| パラメータ | 型 | 説明 | -| --------- | ---- | ----------- | -| `success` | boolean | 操作成功ステータス | -| `output` | object | 問題のリスト | - -### `pylon_create_issue` - -指定されたプロパティで新しい問題を作成する - -#### 入力 - -| パラメータ | 型 | 必須 | 説明 | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | はい | Pylon APIトークン | -| `title` | string | はい | 課題のタイトル | -| `bodyHtml` | string | はい | HTML形式の課題本文 | -| `accountId` | string | いいえ | 課題に関連付けるアカウントID | -| `assigneeId` | string | いいえ | 課題を割り当てるユーザーID | -| `teamId` | string | いいえ | 課題を割り当てるチームID | -| `requesterId` | string | いいえ | 要求者ユーザーID(requester_emailの代替) | -| `requesterEmail` | string | いいえ | 要求者のメールアドレス(requester_idの代替) | -| `priority` | string | いいえ | 課題の優先度 | -| `tags` | string | いいえ | カンマ区切りのタグID | -| `customFields` | string | いいえ | JSONオブジェクトとしてのカスタムフィールド | -| `attachmentUrls` | string | いいえ | カンマ区切りの添付ファイルURL | - -#### 出力 - -| パラメータ | 型 | 説明 | -| --------- | ---- | ----------- | -| `success` | boolean | 操作成功ステータス | -| `output` | object | 作成された課題データ | - -### `pylon_get_issue` - -IDで特定の課題を取得する - -#### 入力 - -| パラメータ | 型 | 必須 | 説明 | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | はい | Pylon APIトークン | -| `issueId` | string | はい | 取得する課題のID | - -#### 出力 - -| パラメータ | 型 | 説明 | -| --------- | ---- | ----------- | -| `success` | boolean | 操作成功ステータス | -| `output` | object | 課題データ | - -### `pylon_update_issue` - -既存の課題を更新する - -#### 入力 - -| パラメータ | 型 | 必須 | 説明 | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | はい | Pylon APIトークン | -| `issueId` | string | はい | 更新する課題のID | -| `state` | string | いいえ | 課題の状態 | -| `assigneeId` | string | いいえ | 課題を割り当てるユーザーID | -| `teamId` | string | いいえ | 課題を割り当てるチームID | -| `tags` | string | いいえ | カンマ区切りのタグID | -| `customFields` | string | いいえ | JSONオブジェクトとしてのカスタムフィールド | -| `customerPortalVisible` | boolean | いいえ | 課題がカスタマーポータルで表示されるかどうか | -| `requesterId` | string | いいえ | 要求者ユーザーID | -| `accountId` | string | いいえ | 課題に関連付けるアカウントID | - -#### 出力 - -| パラメータ | 型 | 説明 | -| --------- | ---- | ----------- | -| `success` | boolean | 操作成功ステータス | -| `output` | object | 更新された課題データ | - -### `pylon_delete_issue` - -IDで課題を削除する - -#### 入力 - -| パラメータ | 型 | 必須 | 説明 | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | はい | Pylon APIトークン | -| `issueId` | string | はい | 削除する課題のID | - -#### 出力 - -| パラメータ | 型 | 説明 | -| --------- | ---- | ----------- | -| `success` | boolean | 操作成功ステータス | -| `output` | object | 削除結果 | - -### `pylon_search_issues` - -フィルターを使用して課題を検索する - -#### 入力 - -| パラメータ | 型 | 必須 | 説明 | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | はい | Pylon APIトークン | -| `filter` | string | はい | JSON文字列としてのフィルター条件 | -| `cursor` | string | いいえ | 次のページの結果のためのページネーションカーソル | -| `limit` | number | いいえ | 返す結果の最大数 | - -#### 出力 - -| パラメータ | 型 | 説明 | -| --------- | ---- | ----------- | -| `success` | boolean | 操作成功ステータス | -| `output` | object | 検索結果 | - -### `pylon_snooze_issue` - -指定した時間まで課題の表示を延期する - -#### 入力 - -| パラメータ | 型 | 必須 | 説明 | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | はい | Pylon APIトークン | -| `issueId` | string | はい | スヌーズする課題のID | -| `snoozeUntil` | string | はい | 課題が再表示されるべきRFC3339タイムスタンプ(例:2024-01-01T00:00:00Z) | - -#### 出力 - -| パラメータ | 型 | 説明 | -| --------- | ---- | ----------- | -| `success` | boolean | 操作成功ステータス | -| `output` | object | スヌーズされた課題データ | - -### `pylon_list_issue_followers` - -特定の課題のフォロワーリストを取得する - -#### 入力 - -| パラメータ | 型 | 必須 | 説明 | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | はい | Pylon APIトークン | -| `issueId` | string | はい | 課題のID | - -#### 出力 - -| パラメータ | 型 | 説明 | -| --------- | ---- | ----------- | -| `success` | boolean | 操作成功ステータス | -| `output` | object | フォロワーリスト | - -### `pylon_manage_issue_followers` - -課題にフォロワーを追加または削除する - -#### 入力 - -| パラメータ | 型 | 必須 | 説明 | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | はい | Pylon APIトークン | -| `issueId` | string | はい | 課題のID | -| `userIds` | string | いいえ | 追加/削除するユーザーIDのカンマ区切りリスト | -| `contactIds` | string | いいえ | 追加/削除する連絡先IDのカンマ区切りリスト | -| `operation` | string | いいえ | 実行する操作:"add"(追加)または"remove"(削除)(デフォルト:"add") | - -#### 出力 - -| パラメータ | 型 | 説明 | -| --------- | ---- | ----------- | -| `success` | boolean | 操作成功ステータス | -| `output` | object | 更新されたフォロワーリスト | - -### `pylon_link_external_issue` - -課題を外部システムの課題にリンクする - -#### 入力 - -| パラメータ | 型 | 必須 | 説明 | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | はい | Pylon APIトークン | -| `issueId` | string | はい | Pylon課題のID | -| `externalIssueId` | string | はい | 外部課題のID | -| `source` | string | はい | ソースシステム(例:"jira"、"linear"、"github") | - -#### 出力 - -| パラメータ | 型 | 説明 | -| --------- | ---- | ----------- | -| `success` | boolean | 操作成功ステータス | -| `output` | object | リンクされた外部課題データ | - -### `pylon_list_accounts` - -アカウントのページ分割リストを取得する - -#### 入力 - -| パラメータ | 型 | 必須 | 説明 | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | はい | Pylon APIトークン | -| `limit` | string | いいえ | 返すアカウント数(1-1000、デフォルト100) | -| `cursor` | string | いいえ | 次のページの結果のためのページネーションカーソル | - -#### 出力 - -| パラメータ | 型 | 説明 | -| --------- | ---- | ----------- | -| `success` | boolean | 操作成功ステータス | -| `output` | object | アカウントのリスト | - -### `pylon_create_account` - -指定されたプロパティで新しいアカウントを作成する - -#### 入力 - -| パラメータ | 型 | 必須 | 説明 | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | はい | Pylon APIトークン | -| `name` | string | はい | アカウント名 | -| `domains` | string | いいえ | カンマ区切りのドメインリスト | -| `primaryDomain` | string | いいえ | アカウントのプライマリドメイン | -| `customFields` | string | いいえ | JSONオブジェクトとしてのカスタムフィールド | -| `tags` | string | いいえ | カンマ区切りのタグID | -| `channels` | string | いいえ | カンマ区切りのチャネルID | -| `externalIds` | string | いいえ | カンマ区切りの外部ID | -| `ownerId` | string | いいえ | オーナーユーザーID | -| `logoUrl` | string | いいえ | アカウントロゴのURL | -| `subaccountIds` | string | いいえ | カンマ区切りのサブアカウントID | - -#### 出力 - -| パラメータ | 型 | 説明 | -| --------- | ---- | ----------- | -| `success` | boolean | 操作成功ステータス | -| `output` | object | 作成されたアカウントデータ | - -### `pylon_get_account` - -IDで単一のアカウントを取得する - -#### 入力 - -| パラメータ | 型 | 必須 | 説明 | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | はい | Pylon APIトークン | -| `accountId` | string | はい | 取得するアカウントID | - -#### 出力 - -| パラメータ | 型 | 説明 | -| --------- | ---- | ----------- | -| `success` | boolean | 操作成功ステータス | -| `output` | object | アカウントデータ | - -### `pylon_update_account` - -既存のアカウントを新しいプロパティで更新する - -#### 入力 - -| パラメータ | 型 | 必須 | 説明 | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | はい | Pylon APIトークン | -| `accountId` | string | はい | 更新するアカウントID | -| `name` | string | いいえ | アカウント名 | -| `domains` | string | いいえ | カンマ区切りのドメインリスト | -| `primaryDomain` | string | いいえ | アカウントのプライマリドメイン | -| `customFields` | string | いいえ | JSONオブジェクトとしてのカスタムフィールド | -| `tags` | string | いいえ | カンマ区切りのタグID | -| `channels` | string | いいえ | カンマ区切りのチャネルID | -| `externalIds` | string | いいえ | カンマ区切りの外部ID | -| `ownerId` | string | いいえ | オーナーユーザーID | -| `logoUrl` | string | いいえ | アカウントロゴのURL | -| `subaccountIds` | string | いいえ | カンマ区切りのサブアカウントID | - -#### 出力 - -| パラメータ | 型 | 説明 | -| --------- | ---- | ----------- | -| `success` | boolean | 操作成功ステータス | -| `output` | object | 更新されたアカウントデータ | - -### `pylon_delete_account` - -IDによるアカウントの削除 - -#### 入力 - -| パラメータ | 型 | 必須 | 説明 | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | はい | Pylon APIトークン | -| `accountId` | string | はい | 削除するアカウントID | - -#### 出力 - -| パラメータ | 型 | 説明 | -| --------- | ---- | ----------- | -| `success` | boolean | 操作成功ステータス | -| `output` | object | 削除確認 | - -### `pylon_bulk_update_accounts` - -複数のアカウントを一度に更新 - -#### 入力 - -| パラメータ | 型 | 必須 | 説明 | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | はい | Pylon APIトークン | -| `accountIds` | string | はい | 更新するアカウントIDのカンマ区切りリスト | -| `customFields` | string | いいえ | JSONオブジェクトとしてのカスタムフィールド | -| `tags` | string | いいえ | カンマ区切りのタグID | -| `ownerId` | string | いいえ | オーナーユーザーID | -| `tagsApplyMode` | string | いいえ | タグ適用モード: append_only、remove_only、またはreplace | - -#### 出力 - -| パラメータ | 型 | 説明 | -| --------- | ---- | ----------- | -| `success` | boolean | 操作成功ステータス | -| `output` | object | 一括更新されたアカウントデータ | - -### `pylon_search_accounts` - -カスタムフィルターでアカウントを検索 - -#### 入力 - -| パラメータ | 型 | 必須 | 説明 | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | はい | Pylon APIトークン | -| `filter` | string | はい | フィールド/演算子/値構造を持つJSONフィルター文字列 | -| `limit` | string | いいえ | 返すアカウント数(1-1000、デフォルト100) | -| `cursor` | string | いいえ | 次のページの結果用のページネーションカーソル | - -#### 出力 - -| パラメータ | 型 | 説明 | -| --------- | ---- | ----------- | -| `success` | boolean | 操作成功ステータス | -| `output` | object | 検索結果 | - -### `pylon_list_contacts` - -連絡先リストの取得 - -#### 入力 - -| パラメータ | 型 | 必須 | 説明 | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | はい | Pylon APIトークン | -| `cursor` | string | いいえ | 次のページの結果用のページネーションカーソル | -| `limit` | string | いいえ | 返す連絡先の最大数 | - -#### 出力 - -| パラメータ | 型 | 説明 | -| --------- | ---- | ----------- | -| `success` | boolean | 操作成功ステータス | -| `output` | object | 連絡先リスト | - -### `pylon_create_contact` - -指定されたプロパティで新しい連絡先を作成 - -#### 入力 - -| パラメータ | 型 | 必須 | 説明 | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | はい | Pylon APIトークン | -| `name` | string | はい | 連絡先名 | -| `email` | string | いいえ | 連絡先のメールアドレス | -| `accountId` | string | いいえ | 連絡先に関連付けるアカウントID | -| `accountExternalId` | string | いいえ | 連絡先に関連付ける外部アカウントID | -| `avatarUrl` | string | いいえ | 連絡先のアバター画像のURL | -| `customFields` | string | いいえ | JSONオブジェクトとしてのカスタムフィールド | -| `portalRole` | string | いいえ | 連絡先のポータルロール | - -#### 出力 - -| パラメータ | 型 | 説明 | -| --------- | ---- | ----------- | -| `success` | boolean | 操作成功ステータス | -| `output` | object | 作成された連絡先データ | - -### `pylon_get_contact` - -IDで特定の連絡先を取得する - -#### 入力 - -| パラメータ | 型 | 必須 | 説明 | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | はい | Pylon APIトークン | -| `contactId` | string | はい | 取得する連絡先ID | -| `cursor` | string | いいえ | 次のページの結果のためのページネーションカーソル | -| `limit` | string | いいえ | 返す項目の最大数 | - -#### 出力 - -| パラメータ | 型 | 説明 | -| --------- | ---- | ----------- | -| `success` | boolean | 操作成功ステータス | -| `output` | object | 連絡先データ | - -### `pylon_update_contact` - -指定されたプロパティで既存の連絡先を更新する - -#### 入力 - -| パラメータ | 型 | 必須 | 説明 | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | はい | Pylon APIトークン | -| `contactId` | string | はい | 更新する連絡先ID | -| `name` | string | いいえ | 連絡先名 | -| `email` | string | いいえ | 連絡先のメールアドレス | -| `accountId` | string | いいえ | 連絡先に関連付けるアカウントID | -| `accountExternalId` | string | いいえ | 連絡先に関連付ける外部アカウントID | -| `avatarUrl` | string | いいえ | 連絡先のアバター画像のURL | -| `customFields` | string | いいえ | JSONオブジェクトとしてのカスタムフィールド | -| `portalRole` | string | いいえ | 連絡先のポータルロール | - -#### 出力 - -| パラメータ | 型 | 説明 | -| --------- | ---- | ----------- | -| `success` | boolean | 操作成功ステータス | -| `output` | object | 更新された連絡先データ | - -### `pylon_delete_contact` - -IDで特定の連絡先を削除する - -#### 入力 - -| パラメータ | 型 | 必須 | 説明 | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | はい | Pylon APIトークン | -| `contactId` | string | はい | 削除する連絡先ID | - -#### 出力 - -| パラメータ | 型 | 説明 | -| --------- | ---- | ----------- | -| `success` | boolean | 操作成功ステータス | -| `output` | object | 削除操作の結果 | - -### `pylon_search_contacts` - -フィルターを使用して連絡先を検索する - -#### 入力 - -| パラメータ | 型 | 必須 | 説明 | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | はい | Pylon APIトークン | -| `filter` | string | はい | JSONオブジェクトとしてのフィルター | -| `limit` | string | いいえ | 返す連絡先の最大数 | -| `cursor` | string | いいえ | 次のページの結果のためのページネーションカーソル | - -#### 出力 - -| パラメータ | 型 | 説明 | -| --------- | ---- | ----------- | -| `success` | boolean | 操作成功ステータス | -| `output` | object | 検索結果 | - -### `pylon_list_users` - -ユーザーリストを取得する - -#### 入力 - -| パラメータ | 型 | 必須 | 説明 | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | はい | Pylon APIトークン | - -#### 出力 - -| パラメータ | 型 | 説明 | -| --------- | ---- | ----------- | -| `success` | boolean | 操作成功ステータス | -| `output` | object | ユーザーリスト | - -### `pylon_get_user` - -IDで特定のユーザーを取得する - -#### 入力 - -| パラメータ | 型 | 必須 | 説明 | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | はい | Pylon APIトークン | -| `userId` | string | はい | 取得するユーザーID | - -#### 出力 - -| パラメータ | 型 | 説明 | -| --------- | ---- | ----------- | -| `success` | boolean | 操作成功ステータス | -| `output` | object | ユーザーデータ | - -### `pylon_update_user` - -指定されたプロパティで既存のユーザーを更新する - -#### 入力 - -| パラメータ | 型 | 必須 | 説明 | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | はい | Pylon APIトークン | -| `userId` | string | はい | 更新するユーザーID | -| `roleId` | string | いいえ | ユーザーに割り当てるロールID | -| `status` | string | いいえ | ユーザーステータス | - -#### 出力 - -| パラメータ | 型 | 説明 | -| --------- | ---- | ----------- | -| `success` | boolean | 操作成功ステータス | -| `output` | object | 更新されたユーザーデータ | - -### `pylon_search_users` - -メールフィールドを使用したフィルターでユーザーを検索する - -#### 入力 - -| パラメータ | 型 | 必須 | 説明 | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | はい | Pylon APIトークン | -| `filter` | string | はい | メールフィールドを含むJSONオブジェクトとしてのフィルター | -| `cursor` | string | いいえ | 次のページの結果のためのページネーションカーソル | -| `limit` | string | いいえ | 返すユーザーの最大数 | - -#### 出力 - -| パラメータ | 型 | 説明 | -| --------- | ---- | ----------- | -| `success` | boolean | 操作成功ステータス | -| `output` | object | 検索結果 | - -### `pylon_list_teams` - -チームのリストを取得する - -#### 入力 - -| パラメータ | 型 | 必須 | 説明 | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | はい | Pylon APIトークン | - -#### 出力 - -| パラメータ | 型 | 説明 | -| --------- | ---- | ----------- | -| `success` | boolean | 操作成功ステータス | -| `output` | object | チームのリスト | - -### `pylon_get_team` - -IDで特定のチームを取得する - -#### 入力 - -| パラメータ | 型 | 必須 | 説明 | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | はい | Pylon APIトークン | -| `teamId` | string | はい | 取得するチームID | - -#### 出力 - -| パラメータ | 型 | 説明 | -| --------- | ---- | ----------- | -| `success` | boolean | 操作成功ステータス | -| `output` | object | チームデータ | - -### `pylon_create_team` - -指定されたプロパティで新しいチームを作成する - -#### 入力 - -| パラメータ | 型 | 必須 | 説明 | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | はい | Pylon APIトークン | -| `name` | string | いいえ | チーム名 | -| `userIds` | string | いいえ | チームメンバーとして追加するユーザーIDのカンマ区切りリスト | - -#### 出力 - -| パラメータ | 型 | 説明 | -| --------- | ---- | ----------- | -| `success` | boolean | 操作成功ステータス | -| `output` | object | 作成されたチームデータ | - -### `pylon_update_team` - -指定されたプロパティで既存のチームを更新します(userIdsはメンバーシップ全体を置き換えます) - -#### 入力 - -| パラメータ | 型 | 必須 | 説明 | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | はい | Pylon APIトークン | -| `teamId` | string | はい | 更新するチームID | -| `name` | string | いいえ | チーム名 | -| `userIds` | string | いいえ | カンマ区切りのユーザーID(チームメンバーシップ全体を置き換えます) | - -#### 出力 - -| パラメータ | 型 | 説明 | -| --------- | ---- | ----------- | -| `success` | boolean | 操作成功ステータス | -| `output` | object | 更新されたチームデータ | - -### `pylon_list_tags` - -タグのリストを取得する - -#### 入力 - -| パラメータ | 型 | 必須 | 説明 | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | はい | Pylon APIトークン | - -#### 出力 - -| パラメータ | 型 | 説明 | -| --------- | ---- | ----------- | -| `success` | boolean | 操作成功ステータス | -| `output` | object | タグのリスト | - -### `pylon_get_tag` - -IDで特定のタグを取得する - -#### 入力 - -| パラメータ | 型 | 必須 | 説明 | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | はい | Pylon APIトークン | -| `tagId` | string | はい | 取得するタグID | - -#### 出力 - -| パラメータ | 型 | 説明 | -| --------- | ---- | ----------- | -| `success` | boolean | 操作成功ステータス | -| `output` | object | タグデータ | - -### `pylon_create_tag` - -指定されたプロパティで新しいタグを作成します(objectType: account/issue/contact) - -#### 入力 - -| パラメータ | 型 | 必須 | 説明 | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | はい | Pylon APIトークン | -| `objectType` | string | はい | タグのオブジェクトタイプ(account、issue、またはcontact) | -| `value` | string | はい | タグの値/名前 | -| `hexColor` | string | いいえ | タグの16進カラーコード(例:#FF5733) | - -#### 出力 - -| パラメータ | 型 | 説明 | -| --------- | ---- | ----------- | -| `success` | boolean | 操作成功ステータス | -| `output` | object | 作成されたタグデータ | - -### `pylon_update_tag` - -指定されたプロパティで既存のタグを更新します - -#### 入力 - -| パラメータ | 型 | 必須 | 説明 | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | はい | Pylon APIトークン | -| `tagId` | string | はい | 更新するタグID | -| `hexColor` | string | いいえ | タグの16進カラーコード(例:#FF5733) | -| `value` | string | いいえ | タグの値/名前 | - -#### 出力 - -| パラメータ | 型 | 説明 | -| --------- | ---- | ----------- | -| `success` | boolean | 操作成功ステータス | -| `output` | object | 更新されたタグデータ | - -### `pylon_delete_tag` - -IDで特定のタグを削除する - -#### 入力 - -| パラメータ | 型 | 必須 | 説明 | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | はい | Pylon APIトークン | -| `tagId` | string | はい | 削除するタグID | - -#### 出力 - -| パラメータ | 型 | 説明 | -| --------- | ---- | ----------- | -| `success` | boolean | 操作成功ステータス | -| `output` | object | 削除操作の結果 | - -### `pylon_redact_message` - -問題内の特定のメッセージを編集する - -#### 入力 - -| パラメータ | 型 | 必須 | 説明 | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | はい | Pylon APIトークン | -| `issueId` | string | はい | メッセージを含む問題ID | -| `messageId` | string | はい | 編集するメッセージID | - -#### 出力 - -| パラメータ | 型 | 説明 | -| --------- | ---- | ----------- | -| `success` | boolean | 操作成功ステータス | -| `output` | object | 編集操作の結果 | - -## 注意事項 - -- カテゴリー: `tools` -- タイプ: `pylon` diff --git a/apps/docs/content/docs/ja/tools/spotify.mdx b/apps/docs/content/docs/ja/tools/spotify.mdx new file mode 100644 index 000000000..3726a2da2 --- /dev/null +++ b/apps/docs/content/docs/ja/tools/spotify.mdx @@ -0,0 +1,1452 @@ +--- +title: Spotify +description: 音楽を検索し、プレイリストを管理し、再生をコントロールし、ライブラリにアクセスする +--- + +import { BlockInfoCard } from "@/components/ui/block-info-card" + + + +## 使用方法 + +Spotifyをワークフローに統合しましょう。トラック、アルバム、アーティスト、プレイリストを検索できます。プレイリストの管理、ライブラリへのアクセス、再生のコントロール、ポッドキャストやオーディオブックの閲覧ができます。 + +## ツール + +### `spotify_search` + +Spotifyでトラック、アルバム、アーティスト、またはプレイリストを検索します。クエリに基づいて一致する結果を返します。 + +#### 入力 + +| パラメータ | 型 | 必須 | 説明 | +| --------- | ---- | -------- | ----------- | +| `query` | string | はい | 検索クエリ \(例: "Bohemian Rhapsody"、"artist:Queen"、"genre:rock"\) | +| `type` | string | いいえ | 結果の種類: track、album、artist、playlist、またはカンマ区切り \(例: "track,artist"\) | +| `limit` | number | いいえ | 返す結果の最大数 \(1-50\) | +| `offset` | number | いいえ | ページネーション用の最初の結果のインデックス | +| `market` | string | いいえ | 結果をフィルタリングするためのISO 3166-1 alpha-2国コード \(例: "US"、"GB"\) | + +#### 出力 + +| パラメータ | 型 | 説明 | +| --------- | ---- | ----------- | +| `tracks` | array | 一致するトラックのリスト | + +### `spotify_get_track` + +IDによってSpotify上の特定のトラックに関する詳細情報を取得します。 + +#### 入力 + +| パラメータ | 型 | 必須 | 説明 | +| --------- | ---- | -------- | ----------- | +| `trackId` | string | はい | トラックのSpotify ID | +| `market` | string | いいえ | トラックの利用可能性のためのISO 3166-1 alpha-2国コード | + +#### 出力 + +| パラメータ | 型 | 説明 | +| --------- | ---- | ----------- | +| `id` | string | Spotify トラックID | +| `name` | string | トラック名 | +| `artists` | array | アーティストのリスト | +| `album` | object | アルバム情報 | +| `duration_ms` | number | トラックの再生時間(ミリ秒) | +| `explicit` | boolean | トラックに露骨なコンテンツが含まれているかどうか | +| `popularity` | number | 人気度スコア(0-100) | +| `preview_url` | string | 30秒プレビューのURL | +| `external_url` | string | Spotify URL | +| `uri` | string | トラック用のSpotify URI | + +### `spotify_get_tracks` + +IDによって複数のSpotifyトラックに関する詳細情報を取得します(最大50件)。 + +#### 入力 + +| パラメータ | 型 | 必須 | 説明 | +| --------- | ---- | -------- | ----------- | +| `trackIds` | string | はい | カンマ区切りのSpotifyトラックIDリスト(最大50件) | +| `market` | string | いいえ | トラックの利用可能性を確認するためのISO 3166-1 alpha-2国コード | + +#### 出力 + +| パラメータ | 型 | 説明 | +| --------- | ---- | ----------- | +| `tracks` | array | トラックのリスト | + +### `spotify_get_album` + +IDによってSpotifyアルバムに関する詳細情報(トラックリストを含む)を取得します。 + +#### 入力 + +| パラメータ | 型 | 必須 | 説明 | +| --------- | ---- | -------- | ----------- | +| `albumId` | string | はい | アルバムのSpotify ID | +| `market` | string | いいえ | トラックの利用可能性を確認するためのISO 3166-1 alpha-2国コード | + +#### 出力 + +| パラメータ | 型 | 説明 | +| --------- | ---- | ----------- | +| `id` | string | Spotify アルバム ID | +| `name` | string | アルバム名 | +| `artists` | array | アーティストのリスト | +| `album_type` | string | アルバムの種類(album、single、compilation) | +| `total_tracks` | number | トラックの総数 | +| `release_date` | string | リリース日 | +| `label` | string | レコードレーベル | +| `popularity` | number | 人気度スコア(0-100) | +| `genres` | array | ジャンルのリスト | +| `image_url` | string | アルバムカバー画像のURL | +| `tracks` | array | アルバム内のトラックリスト | +| `external_url` | string | Spotify URL | + +### `spotify_get_albums` + +複数のアルバムの詳細をIDで取得します。 + +#### 入力 + +| パラメータ | 型 | 必須 | 説明 | +| --------- | ---- | -------- | ----------- | +| `albumIds` | string | はい | カンマ区切りのアルバムID(最大20個) | +| `market` | string | いいえ | マーケット用のISO国コード | + +#### 出力 + +| パラメータ | 型 | 説明 | +| --------- | ---- | ----------- | +| `albums` | json | アルバムのリスト | + +### `spotify_get_album_tracks` + +アルバムからトラックを取得します。 + +#### 入力 + +| パラメータ | 型 | 必須 | 説明 | +| --------- | ---- | -------- | ----------- | +| `albumId` | string | はい | Spotify アルバム ID | +| `limit` | number | いいえ | 返すトラック数(1-50) | +| `offset` | number | いいえ | 返す最初のトラックのインデックス | + +#### 出力 + +| パラメータ | 型 | 説明 | +| --------- | ---- | ----------- | +| `tracks` | json | トラックのリスト | +| `total` | number | トラックの総数 | +| `next` | string | 次のページのURL | + +### `spotify_get_saved_albums` + +ユーザーを取得する + +#### 入力 + +| パラメータ | 型 | 必須 | 説明 | +| --------- | ---- | -------- | ----------- | +| `limit` | number | いいえ | 返すアルバム数(1-50) | +| `offset` | number | いいえ | 返す最初のアルバムのインデックス | +| `market` | string | いいえ | マーケット用のISO国コード | + +#### 出力 + +| パラメータ | 型 | 説明 | +| --------- | ---- | ----------- | +| `albums` | json | 保存されたアルバムのリスト | +| `total` | number | 保存されたアルバムの総数 | +| `next` | string | 次のページのURL | + +### `spotify_save_albums` + +ユーザーにアルバムを保存する + +#### 入力 + +| パラメータ | 型 | 必須 | 説明 | +| --------- | ---- | -------- | ----------- | +| `albumIds` | string | はい | カンマ区切りのアルバムID(最大20) | + +#### 出力 + +| パラメータ | 型 | 説明 | +| --------- | ---- | ----------- | +| `success` | boolean | アルバムが保存されたかどうか | + +### `spotify_remove_saved_albums` + +ユーザーからアルバムを削除する + +#### 入力 + +| パラメータ | 型 | 必須 | 説明 | +| --------- | ---- | -------- | ----------- | +| `albumIds` | string | はい | カンマ区切りのアルバムID(最大20) | + +#### 出力 + +| パラメータ | 型 | 説明 | +| --------- | ---- | ----------- | +| `success` | boolean | アルバムが削除されたかどうか | + +### `spotify_check_saved_albums` + +アルバムがライブラリに保存されているかを確認します。 + +#### 入力 + +| パラメータ | 型 | 必須 | 説明 | +| --------- | ---- | -------- | ----------- | +| `albumIds` | string | はい | カンマ区切りのアルバムID(最大20個) | + +#### 出力 + +| パラメータ | 型 | 説明 | +| --------- | ---- | ----------- | +| `results` | json | 各アルバムに対するブール値の配列 | + +### `spotify_get_artist` + +IDによってSpotify上のアーティストに関する詳細情報を取得します。 + +#### 入力 + +| パラメータ | 型 | 必須 | 説明 | +| --------- | ---- | -------- | ----------- | +| `artistId` | string | はい | アーティストのSpotify ID | + +#### 出力 + +| パラメータ | 型 | 説明 | +| --------- | ---- | ----------- | +| `id` | string | SpotifyアーティストID | +| `name` | string | アーティスト名 | +| `genres` | array | アーティストに関連するジャンルのリスト | +| `popularity` | number | 人気度スコア(0-100) | +| `followers` | number | フォロワー数 | +| `image_url` | string | アーティスト画像のURL | +| `external_url` | string | Spotify URL | + +### `spotify_get_artists` + +複数のアーティストの詳細をIDで取得します。 + +#### 入力 + +| パラメータ | 型 | 必須 | 説明 | +| --------- | ---- | -------- | ----------- | +| `artistIds` | string | はい | カンマ区切りのアーティストID(最大50個) | + +#### 出力 + +| パラメータ | 型 | 説明 | +| --------- | ---- | ----------- | +| `artists` | json | アーティストのリスト | + +### `spotify_get_artist_albums` + +Spotifyでアーティストのアルバムを取得します。アルバムタイプでフィルタリングできます。 + +#### 入力 + +| パラメータ | 型 | 必須 | 説明 | +| --------- | ---- | -------- | ----------- | +| `artistId` | string | はい | アーティストのSpotify ID | +| `include_groups` | string | いいえ | アルバムタイプでフィルタリング: album, single, appears_on, compilation (カンマ区切り) | +| `limit` | number | いいえ | 返すアルバムの最大数(1-50) | +| `offset` | number | いいえ | 返す最初のアルバムのインデックス | +| `market` | string | いいえ | ISO 3166-1 alpha-2国コード | + +#### 出力 + +| パラメータ | 型 | 説明 | +| --------- | ---- | ----------- | +| `albums` | array | アーティスト | + +### `spotify_get_artist_top_tracks` + +Spotifyでアーティストの最も人気のある上位10曲を取得します。 + +#### 入力 + +| パラメータ | 型 | 必須 | 説明 | +| --------- | ---- | -------- | ----------- | +| `artistId` | string | はい | アーティストのSpotify ID | +| `market` | string | いいえ | ISO 3166-1 alpha-2国コード(このエンドポイントでは必須) | + +#### 出力 + +| パラメータ | 型 | 説明 | +| --------- | ---- | ----------- | +| `tracks` | array | アーティスト | + +### `spotify_follow_artists` + +一人または複数のアーティストをフォローします。 + +#### 入力 + +| パラメータ | 型 | 必須 | 説明 | +| --------- | ---- | -------- | ----------- | +| `artistIds` | string | はい | フォローするアーティストIDをカンマ区切りで指定(最大50) | + +#### 出力 + +| パラメータ | 型 | 説明 | +| --------- | ---- | ----------- | +| `success` | boolean | アーティストのフォローが成功したかどうか | + +### `spotify_unfollow_artists` + +一人または複数のアーティストのフォローを解除します。 + +#### 入力 + +| パラメータ | 型 | 必須 | 説明 | +| --------- | ---- | -------- | ----------- | +| `artistIds` | string | はい | フォロー解除するアーティストIDをカンマ区切りで指定(最大50) | + +#### 出力 + +| パラメータ | 型 | 説明 | +| --------- | ---- | ----------- | +| `success` | boolean | アーティストのフォロー解除が成功したかどうか | + +### `spotify_get_followed_artists` + +ユーザーを取得する + +#### 入力 + +| パラメータ | 型 | 必須 | 説明 | +| --------- | ---- | -------- | ----------- | +| `limit` | number | いいえ | 返すアーティストの数(1-50) | +| `after` | string | いいえ | ページネーション用カーソル(前回リクエストの最後のアーティストID) | + +#### 出力 + +| パラメータ | 型 | 説明 | +| --------- | ---- | ----------- | +| `artists` | json | フォロー中のアーティストのリスト | +| `total` | number | フォロー中のアーティストの総数 | +| `next` | string | 次ページ用カーソル | + +### `spotify_check_following` + +ユーザーがアーティストまたは他のユーザーをフォローしているかを確認します。 + +#### 入力 + +| パラメータ | 型 | 必須 | 説明 | +| --------- | ---- | -------- | ----------- | +| `type` | string | はい | 確認するタイプ:"artist"または"user" | +| `ids` | string | はい | アーティストまたはユーザーIDをカンマ区切りで指定(最大50) | + +#### 出力 + +| パラメータ | 型 | 説明 | +| --------- | ---- | ----------- | +| `results` | json | 各IDに対するブール値の配列 | + +### `spotify_get_show` + +ポッドキャスト番組の詳細を取得します。 + +#### 入力 + +| パラメータ | 型 | 必須 | 説明 | +| --------- | ---- | -------- | ----------- | +| `showId` | string | はい | Spotify番組ID | +| `market` | string | いいえ | マーケット用のISO国コード | + +#### 出力 + +| パラメータ | 型 | 説明 | +| --------- | ---- | ----------- | +| `id` | string | 番組ID | +| `name` | string | 番組名 | +| `description` | string | 番組説明 | +| `publisher` | string | パブリッシャー名 | +| `total_episodes` | number | 総エピソード数 | +| `explicit` | boolean | 露骨なコンテンツを含むかどうか | +| `languages` | json | 言語 | +| `image_url` | string | カバー画像のURL | +| `external_url` | string | Spotify URL | + +### `spotify_get_shows` + +複数のポッドキャスト番組の詳細を取得します。 + +#### 入力 + +| パラメータ | 型 | 必須 | 説明 | +| --------- | ---- | -------- | ----------- | +| `showIds` | string | はい | カンマ区切りの番組ID(最大50) | +| `market` | string | いいえ | マーケット用のISO国コード | + +#### 出力 + +| パラメータ | 型 | 説明 | +| --------- | ---- | ----------- | +| `shows` | json | 番組のリスト | + +### `spotify_get_show_episodes` + +ポッドキャスト番組からエピソードを取得します。 + +#### 入力 + +| パラメータ | 型 | 必須 | 説明 | +| --------- | ---- | -------- | ----------- | +| `showId` | string | はい | Spotify番組ID | +| `limit` | number | いいえ | 返すエピソード数(1-50) | +| `offset` | number | いいえ | 返す最初のエピソードのインデックス | +| `market` | string | いいえ | マーケット用のISO国コード | + +#### 出力 + +| パラメータ | 型 | 説明 | +| --------- | ---- | ----------- | +| `episodes` | json | エピソードのリスト | +| `total` | number | 合計エピソード数 | +| `next` | string | 次のページのURL | + +### `spotify_get_saved_shows` + +ユーザーを取得する + +#### 入力 + +| パラメータ | 型 | 必須 | 説明 | +| --------- | ---- | -------- | ----------- | +| `limit` | number | いいえ | 返す番組数(1-50) | +| `offset` | number | いいえ | 返す最初の番組のインデックス | + +#### 出力 + +| パラメータ | 型 | 説明 | +| --------- | ---- | ----------- | +| `shows` | json | 保存された番組のリスト | +| `total` | number | 保存された番組の合計数 | +| `next` | string | 次のページのURL | + +### `spotify_save_shows` + +ポッドキャスト番組をユーザーに保存する + +#### 入力 + +| パラメータ | 型 | 必須 | 説明 | +| --------- | ---- | -------- | ----------- | +| `showIds` | string | はい | カンマ区切りの番組ID(最大50) | + +#### 出力 + +| パラメータ | 型 | 説明 | +| --------- | ---- | ----------- | +| `success` | boolean | 番組が保存されたかどうか | + +### `spotify_remove_saved_shows` + +ユーザーからポッドキャスト番組を削除する + +#### 入力 + +| パラメータ | 型 | 必須 | 説明 | +| --------- | ---- | -------- | ----------- | +| `showIds` | string | はい | カンマ区切りの番組ID(最大50件) | + +#### 出力 + +| パラメータ | 型 | 説明 | +| --------- | ---- | ----------- | +| `success` | boolean | 番組が削除されたかどうか | + +### `spotify_check_saved_shows` + +ライブラリに番組が保存されているかを確認する。 + +#### 入力 + +| パラメータ | 型 | 必須 | 説明 | +| --------- | ---- | -------- | ----------- | +| `showIds` | string | はい | カンマ区切りの番組ID(最大50件) | + +#### 出力 + +| パラメータ | 型 | 説明 | +| --------- | ---- | ----------- | +| `results` | json | 各番組に対するブール値の配列 | + +### `spotify_get_episode` + +ポッドキャストエピソードの詳細を取得する。 + +#### 入力 + +| パラメータ | 型 | 必須 | 説明 | +| --------- | ---- | -------- | ----------- | +| `episodeId` | string | はい | Spotify エピソードID | +| `market` | string | いいえ | マーケット用のISO国コード | + +#### 出力 + +| パラメータ | 型 | 説明 | +| --------- | ---- | ----------- | +| `id` | string | エピソードID | +| `name` | string | エピソード名 | +| `description` | string | エピソードの説明 | +| `duration_ms` | number | 再生時間(ミリ秒) | +| `release_date` | string | 公開日 | +| `explicit` | boolean | 露骨なコンテンツを含むかどうか | +| `show` | json | 親番組情報 | +| `image_url` | string | カバー画像のURL | +| `external_url` | string | Spotify URL | + +### `spotify_get_episodes` + +複数のポッドキャストエピソードの詳細を取得します。 + +#### 入力 + +| パラメータ | 型 | 必須 | 説明 | +| --------- | ---- | -------- | ----------- | +| `episodeIds` | string | はい | カンマ区切りのエピソードID(最大50件) | +| `market` | string | いいえ | 市場のISOカントリーコード | + +#### 出力 + +| パラメータ | 型 | 説明 | +| --------- | ---- | ----------- | +| `episodes` | json | エピソードのリスト | + +### `spotify_get_saved_episodes` + +ユーザーを取得する + +#### 入力 + +| パラメータ | 型 | 必須 | 説明 | +| --------- | ---- | -------- | ----------- | +| `limit` | number | いいえ | 返すエピソード数(1-50) | +| `offset` | number | いいえ | 返す最初のエピソードのインデックス | +| `market` | string | いいえ | 市場のISOカントリーコード | + +#### 出力 + +| パラメータ | 型 | 説明 | +| --------- | ---- | ----------- | +| `episodes` | json | 保存されたエピソードのリスト | +| `total` | number | 保存されたエピソードの総数 | +| `next` | string | 次のページのURL | + +### `spotify_save_episodes` + +ポッドキャストエピソードをユーザーに保存する + +#### 入力 + +| パラメータ | 型 | 必須 | 説明 | +| --------- | ---- | -------- | ----------- | +| `episodeIds` | string | はい | カンマ区切りのエピソードID(最大50件) | + +#### 出力 + +| パラメータ | 型 | 説明 | +| --------- | ---- | ----------- | +| `success` | boolean | エピソードが保存されたかどうか | + +### `spotify_remove_saved_episodes` + +ユーザーからポッドキャストエピソードを削除する + +#### 入力 + +| パラメータ | 型 | 必須 | 説明 | +| --------- | ---- | -------- | ----------- | +| `episodeIds` | string | はい | カンマ区切りのエピソードID(最大50件) | + +#### 出力 + +| パラメータ | 型 | 説明 | +| --------- | ---- | ----------- | +| `success` | boolean | エピソードが削除されたかどうか | + +### `spotify_check_saved_episodes` + +エピソードがライブラリに保存されているかを確認する。 + +#### 入力 + +| パラメータ | 型 | 必須 | 説明 | +| --------- | ---- | -------- | ----------- | +| `episodeIds` | string | はい | カンマ区切りのエピソードID(最大50件) | + +#### 出力 + +| パラメータ | 型 | 説明 | +| --------- | ---- | ----------- | +| `results` | json | 各エピソードに対するブール値の配列 | + +### `spotify_get_audiobook` + +オーディオブックの詳細を取得する。 + +#### 入力 + +| パラメータ | 型 | 必須 | 説明 | +| --------- | ---- | -------- | ----------- | +| `audiobookId` | string | はい | Spotifyオーディオブック ID | +| `market` | string | いいえ | マーケット用のISO国コード | + +#### 出力 + +| パラメータ | 型 | 説明 | +| --------- | ---- | ----------- | +| `id` | string | オーディオブックID | +| `name` | string | オーディオブック名 | +| `authors` | json | 著者 | +| `narrators` | json | ナレーター | +| `publisher` | string | 出版社 | +| `description` | string | 説明 | +| `total_chapters` | number | 総チャプター数 | +| `languages` | json | 言語 | +| `image_url` | string | カバー画像URL | +| `external_url` | string | Spotify URL | + +### `spotify_get_audiobooks` + +複数のオーディオブックの詳細を取得します。 + +#### 入力 + +| パラメータ | 型 | 必須 | 説明 | +| --------- | ---- | -------- | ----------- | +| `audiobookIds` | string | はい | カンマ区切りのオーディオブックID(最大50個) | +| `market` | string | いいえ | マーケット用のISO国コード | + +#### 出力 + +| パラメータ | 型 | 説明 | +| --------- | ---- | ----------- | +| `audiobooks` | json | オーディオブックのリスト | + +### `spotify_get_audiobook_chapters` + +オーディオブックからチャプターを取得します。 + +#### 入力 + +| パラメータ | 型 | 必須 | 説明 | +| --------- | ---- | -------- | ----------- | +| `audiobookId` | string | はい | SpotifyオーディオブックID | +| `limit` | number | いいえ | 返すチャプターの数(1-50) | +| `offset` | number | いいえ | 返す最初のチャプターのインデックス | +| `market` | string | いいえ | マーケット用のISO国コード | + +#### 出力 + +| パラメータ | 型 | 説明 | +| --------- | ---- | ----------- | +| `chapters` | json | チャプターのリスト | +| `total` | number | チャプターの総数 | +| `next` | string | 次のページのURL | + +### `spotify_get_saved_audiobooks` + +ユーザーを取得する + +#### 入力 + +| パラメータ | 型 | 必須 | 説明 | +| --------- | ---- | -------- | ----------- | +| `limit` | number | いいえ | 返すオーディオブックの数(1-50) | +| `offset` | number | いいえ | 返す最初のオーディオブックのインデックス | + +#### 出力 + +| パラメータ | 型 | 説明 | +| --------- | ---- | ----------- | +| `audiobooks` | json | 保存されたオーディオブックのリスト | +| `total` | number | 保存されたオーディオブックの合計数 | +| `next` | string | 次のページのURL | + +### `spotify_save_audiobooks` + +ユーザーにオーディオブックを保存する + +#### 入力 + +| パラメータ | 型 | 必須 | 説明 | +| --------- | ---- | -------- | ----------- | +| `audiobookIds` | string | はい | カンマ区切りのオーディオブックID(最大50個) | + +#### 出力 + +| パラメータ | 型 | 説明 | +| --------- | ---- | ----------- | +| `success` | boolean | オーディオブックが保存されたかどうか | + +### `spotify_remove_saved_audiobooks` + +ユーザーからオーディオブックを削除する + +#### 入力 + +| パラメータ | 型 | 必須 | 説明 | +| --------- | ---- | -------- | ----------- | +| `audiobookIds` | string | はい | カンマ区切りのオーディオブックID(最大50個) | + +#### 出力 + +| パラメータ | 型 | 説明 | +| --------- | ---- | ----------- | +| `success` | boolean | オーディオブックが削除されたかどうか | + +### `spotify_check_saved_audiobooks` + +オーディオブックがライブラリに保存されているかを確認する。 + +#### 入力 + +| パラメータ | 型 | 必須 | 説明 | +| --------- | ---- | -------- | ----------- | +| `audiobookIds` | string | はい | カンマ区切りのオーディオブックID(最大50個) | + +#### 出力 + +| パラメータ | 型 | 説明 | +| --------- | ---- | ----------- | +| `results` | json | 各オーディオブックに対するブール値の配列 | + +### `spotify_get_playlist` + +IDによってSpotifyのプレイリストに関する詳細情報を取得する。 + +#### 入力 + +| パラメータ | 型 | 必須 | 説明 | +| --------- | ---- | -------- | ----------- | +| `playlistId` | string | はい | プレイリストのSpotify ID | +| `market` | string | いいえ | トラックの利用可能性を確認するためのISO 3166-1 alpha-2国コード | + +#### 出力 + +| パラメータ | 型 | 説明 | +| --------- | ---- | ----------- | +| `id` | string | SpotifyプレイリストID | +| `name` | string | プレイリスト名 | +| `description` | string | プレイリストの説明 | +| `public` | boolean | プレイリストが公開されているかどうか | +| `collaborative` | boolean | プレイリストがコラボレーティブかどうか | +| `owner` | object | プレイリスト所有者の情報 | +| `image_url` | string | プレイリストのカバー画像URL | +| `total_tracks` | number | トラックの総数 | +| `snapshot_id` | string | バージョン管理用のプレイリストスナップショットID | +| `external_url` | string | Spotify URL | + +### `spotify_get_playlist_tracks` + +Spotifyプレイリスト内のトラックを取得します。 + +#### 入力 + +| パラメータ | 型 | 必須 | 説明 | +| --------- | ---- | -------- | ----------- | +| `playlistId` | string | はい | プレイリストのSpotify ID | +| `limit` | number | いいえ | 返すトラックの最大数(1-100) | +| `offset` | number | いいえ | 返す最初のトラックのインデックス | +| `market` | string | いいえ | トラックの利用可能性を確認するためのISO 3166-1 alpha-2国コード | + +#### 出力 + +| パラメータ | 型 | 説明 | +| --------- | ---- | ----------- | +| `tracks` | array | プレイリスト内のトラックのリスト | + +### `spotify_get_playlist_cover` + +プレイリストを取得する + +#### 入力 + +| パラメータ | 型 | 必須 | 説明 | +| --------- | ---- | -------- | ----------- | +| `playlistId` | string | はい | Spotify プレイリスト ID | + +#### 出力 + +| パラメータ | 型 | 説明 | +| --------- | ---- | ----------- | +| `images` | json | カバー画像のリスト | + +### `spotify_get_user_playlists` + +現在のユーザーを取得する + +#### 入力 + +| パラメータ | 型 | 必須 | 説明 | +| --------- | ---- | -------- | ----------- | +| `limit` | number | いいえ | 返すプレイリストの最大数(1-50) | +| `offset` | number | いいえ | 返す最初のプレイリストのインデックス | + +#### 出力 + +| パラメータ | 型 | 説明 | +| --------- | ---- | ----------- | +| `playlists` | array | ユーザー | + +### `spotify_create_playlist` + +現在のユーザー用に Spotify で新しいプレイリストを作成する。 + +#### 入力 + +| パラメータ | 型 | 必須 | 説明 | +| --------- | ---- | -------- | ----------- | +| `name` | string | はい | 新しいプレイリストの名前 | +| `description` | string | いいえ | プレイリストの説明 | +| `public` | boolean | いいえ | プレイリストを公開するかどうか | +| `collaborative` | boolean | いいえ | プレイリストをコラボレーティブにするかどうか(public を false にする必要があります) | + +#### 出力 + +| パラメータ | 型 | 説明 | +| --------- | ---- | ----------- | +| `id` | string | Spotify プレイリスト ID | +| `name` | string | プレイリスト名 | +| `description` | string | プレイリストの説明 | +| `public` | boolean | プレイリストが公開されているかどうか | +| `collaborative` | boolean | コラボレーション可能かどうか | +| `snapshot_id` | string | プレイリストのスナップショット ID | +| `external_url` | string | Spotify URL | + +### `spotify_update_playlist` + +プレイリストを更新する + +#### 入力 + +| パラメータ | 型 | 必須 | 説明 | +| --------- | ---- | -------- | ----------- | +| `playlistId` | string | はい | Spotify プレイリスト ID | +| `name` | string | いいえ | プレイリストの新しい名前 | +| `description` | string | いいえ | プレイリストの新しい説明 | +| `public` | boolean | いいえ | プレイリストを公開するかどうか | + +#### 出力 + +| パラメータ | 型 | 説明 | +| --------- | ---- | ----------- | +| `success` | boolean | 更新が成功したかどうか | + +### `spotify_add_playlist_cover` + +プレイリスト用のカスタムカバー画像をアップロードします。画像はJPEG形式で256KB未満である必要があります。 + +#### 入力 + +| パラメータ | 型 | 必須 | 説明 | +| --------- | ---- | -------- | ----------- | +| `playlistId` | string | はい | Spotify プレイリスト ID | +| `imageBase64` | string | はい | Base64エンコードされたJPEG画像(最大256KB) | + +#### 出力 + +| パラメータ | 型 | 説明 | +| --------- | ---- | ----------- | +| `success` | boolean | アップロードが成功したかどうか | + +### `spotify_add_tracks_to_playlist` + +Spotifyプレイリストに1つ以上のトラックを追加します。 + +#### 入力 + +| パラメータ | 型 | 必須 | 説明 | +| --------- | ---- | -------- | ----------- | +| `playlistId` | string | はい | プレイリストのSpotify ID | +| `uris` | string | はい | カンマ区切りのSpotify URI(例:"spotify:track:xxx,spotify:track:yyy") | +| `position` | number | いいえ | トラックを挿入する位置(0ベース)。省略した場合、トラックは末尾に追加されます。 | + +#### 出力 + +| パラメータ | 型 | 説明 | +| --------- | ---- | ----------- | +| `snapshot_id` | string | 変更後の新しいプレイリストスナップショットID | + +### `spotify_remove_tracks_from_playlist` + +Spotifyプレイリストから1つ以上のトラックを削除します。 + +#### 入力 + +| パラメータ | 型 | 必須 | 説明 | +| --------- | ---- | -------- | ----------- | +| `playlistId` | string | はい | プレイリストのSpotify ID | +| `uris` | string | はい | 削除するカンマ区切りのSpotify URI(例:"spotify:track:xxx,spotify:track:yyy") | + +#### 出力 + +| パラメータ | 型 | 説明 | +| --------- | ---- | ----------- | +| `snapshot_id` | string | 変更後の新しいプレイリストスナップショットID | + +### `spotify_reorder_playlist_items` + +プレイリスト内のトラックを別の位置に移動します。 + +#### 入力 + +| パラメータ | 型 | 必須 | 説明 | +| --------- | ---- | -------- | ----------- | +| `playlistId` | string | はい | SpotifyプレイリストID | +| `range_start` | number | はい | 並べ替えるアイテムの開始インデックス | +| `insert_before` | number | はい | アイテムを挿入する前のインデックス | +| `range_length` | number | いいえ | 並べ替えるアイテムの数 | +| `snapshot_id` | string | いいえ | 同時実行制御用のプレイリストスナップショットID | + +#### 出力 + +| パラメータ | 型 | 説明 | +| --------- | ---- | ----------- | +| `snapshot_id` | string | 新しいプレイリストのスナップショットID | + +### `spotify_replace_playlist_items` + +プレイリスト内のすべての項目を新しいトラックに置き換えます。 + +#### 入力 + +| パラメータ | 型 | 必須 | 説明 | +| --------- | ---- | -------- | ----------- | +| `playlistId` | string | はい | Spotify プレイリストID | +| `uris` | string | はい | カンマ区切りの Spotify URI(最大100個) | + +#### 出力 + +| パラメータ | 型 | 説明 | +| --------- | ---- | ----------- | +| `snapshot_id` | string | 新しいプレイリストのスナップショットID | + +### `spotify_follow_playlist` + +プレイリストをフォロー(保存)します。 + +#### 入力 + +| パラメータ | 型 | 必須 | 説明 | +| --------- | ---- | -------- | ----------- | +| `playlistId` | string | はい | Spotify プレイリストID | +| `public` | boolean | いいえ | プレイリストを公開プレイリストに含めるかどうか | + +#### 出力 + +| パラメータ | 型 | 説明 | +| --------- | ---- | ----------- | +| `success` | boolean | フォローが成功したかどうか | + +### `spotify_unfollow_playlist` + +プレイリストのフォローを解除(保存解除)します。 + +#### 入力 + +| パラメータ | 型 | 必須 | 説明 | +| --------- | ---- | -------- | ----------- | +| `playlistId` | string | はい | Spotify プレイリストID | + +#### 出力 + +| パラメータ | 型 | 説明 | +| --------- | ---- | ----------- | +| `success` | boolean | フォロー解除が成功したかどうか | + +### `spotify_check_playlist_followers` + +ユーザーがプレイリストをフォローしているかを確認します。 + +#### 入力 + +| パラメータ | 型 | 必須 | 説明 | +| --------- | ---- | -------- | ----------- | +| `playlistId` | string | はい | Spotify プレイリスト ID | +| `userIds` | string | はい | 確認するユーザー ID(カンマ区切り、最大5件) | + +#### 出力 + +| パラメータ | 型 | 説明 | +| --------- | ---- | ----------- | +| `results` | json | 各ユーザーに対するブール値の配列 | + +### `spotify_get_current_user` + +現在のユーザーを取得 + +#### 入力 + +| パラメータ | 型 | 必須 | 説明 | +| --------- | ---- | -------- | ----------- | + +#### 出力 + +| パラメータ | 型 | 説明 | +| --------- | ---- | ----------- | +| `id` | string | Spotify ユーザー ID | +| `display_name` | string | 表示名 | +| `email` | string | メールアドレス | +| `country` | string | 国コード | +| `product` | string | サブスクリプションレベル(無料、プレミアム) | +| `followers` | number | フォロワー数 | +| `image_url` | string | プロフィール画像 URL | +| `external_url` | string | Spotify プロフィール URL | + +### `spotify_get_user_profile` + +ユーザーを取得 + +#### 入力 + +| パラメータ | 型 | 必須 | 説明 | +| --------- | ---- | -------- | ----------- | +| `userId` | string | はい | Spotify ユーザー ID | + +#### 出力 + +| パラメータ | 型 | 説明 | +| --------- | ---- | ----------- | +| `id` | string | ユーザー ID | +| `display_name` | string | 表示名 | +| `followers` | number | フォロワー数 | +| `image_url` | string | プロフィール画像 URL | +| `external_url` | string | Spotify URL | + +### `spotify_get_top_tracks` + +現在のユーザーを取得する + +#### 入力 + +| パラメータ | 型 | 必須 | 説明 | +| --------- | ---- | -------- | ----------- | +| `time_range` | string | いいえ | 時間範囲:short_term(約4週間)、medium_term(約6ヶ月)、long_term(数年) | +| `limit` | number | いいえ | 返すトラック数(1-50) | +| `offset` | number | いいえ | 返す最初のトラックのインデックス | + +#### 出力 + +| パラメータ | 型 | 説明 | +| --------- | ---- | ----------- | +| `tracks` | array | ユーザー | + +### `spotify_get_top_artists` + +現在のユーザーを取得する + +#### 入力 + +| パラメータ | 型 | 必須 | 説明 | +| --------- | ---- | -------- | ----------- | +| `time_range` | string | いいえ | 時間範囲:short_term(約4週間)、medium_term(約6ヶ月)、long_term(数年) | +| `limit` | number | いいえ | 返すアーティスト数(1-50) | +| `offset` | number | いいえ | 返す最初のアーティストのインデックス | + +#### 出力 + +| パラメータ | 型 | 説明 | +| --------- | ---- | ----------- | +| `artists` | array | ユーザー | + +### `spotify_get_saved_tracks` + +現在のユーザーを取得する + +#### 入力 + +| パラメータ | 型 | 必須 | 説明 | +| --------- | ---- | -------- | ----------- | +| `limit` | number | いいえ | 返すトラック数(1-50) | +| `offset` | number | いいえ | 返す最初のトラックのインデックス | +| `market` | string | いいえ | ISO 3166-1 alpha-2国コード | + +#### 出力 + +| パラメータ | 型 | 説明 | +| --------- | ---- | ----------- | +| `tracks` | array | ユーザー | + +### `spotify_save_tracks` + +現在のユーザーにトラックを保存する + +#### 入力 + +| パラメータ | 型 | 必須 | 説明 | +| --------- | ---- | -------- | ----------- | +| `trackIds` | string | はい | 保存するSpotifyトラックIDをカンマ区切りで指定(最大50件) | + +#### 出力 + +| パラメータ | 型 | 説明 | +| --------- | ---- | ----------- | +| `success` | boolean | トラックが正常に保存されたかどうか | + +### `spotify_remove_saved_tracks` + +ユーザーからトラックを削除する + +#### 入力 + +| パラメータ | 型 | 必須 | 説明 | +| --------- | ---- | -------- | ----------- | +| `trackIds` | string | はい | 削除するトラックIDをカンマ区切りで指定(最大50件) | + +#### 出力 + +| パラメータ | 型 | 説明 | +| --------- | ---- | ----------- | +| `success` | boolean | トラックが正常に削除されたかどうか | + +### `spotify_check_saved_tracks` + +1つ以上のトラックがユーザーに保存されているかを確認する + +#### 入力 + +| パラメータ | 型 | 必須 | 説明 | +| --------- | ---- | -------- | ----------- | +| `trackIds` | string | はい | 確認するトラックIDをカンマ区切りで指定(最大50件) | + +#### 出力 + +| パラメータ | 型 | 説明 | +| --------- | ---- | ----------- | +| `results` | json | 保存状態を含むトラックIDの配列 | +| `all_saved` | boolean | すべてのトラックが保存されているかどうか | +| `none_saved` | boolean | トラックが1つも保存されていないかどうか | + +### `spotify_get_recently_played` + +ユーザーを取得する + +#### 入力 + +| パラメータ | 型 | 必須 | 説明 | +| --------- | ---- | -------- | ----------- | +| `limit` | number | いいえ | 返すトラック数(1-50) | +| `after` | number | いいえ | ミリ秒単位のUnixタイムスタンプ。このカーソル以降のアイテムを返します。 | +| `before` | number | いいえ | ミリ秒単位のUnixタイムスタンプ。このカーソル以前のアイテムを返します。 | + +#### 出力 + +| パラメータ | 型 | 説明 | +| --------- | ---- | ----------- | +| `items` | array | 最近再生したトラック | + +### `spotify_get_new_releases` + +Spotifyで紹介されている新しいアルバムリリースのリストを取得します。 + +#### 入力 + +| パラメータ | 型 | 必須 | 説明 | +| --------- | ---- | -------- | ----------- | +| `country` | string | いいえ | ISO 3166-1 alpha-2国コード(例:"US"、"GB") | +| `limit` | number | いいえ | 返すリリース数(1-50) | +| `offset` | number | いいえ | 返す最初のリリースのインデックス | + +#### 出力 + +| パラメータ | 型 | 説明 | +| --------- | ---- | ----------- | +| `albums` | json | 新しいリリースのリスト | +| `total` | number | 新しいリリースの総数 | +| `next` | string | 次のページのURL | + +### `spotify_get_categories` + +Spotifyでアイテムにタグ付けするために使用されるブラウズカテゴリのリストを取得します。 + +#### 入力 + +| パラメータ | 型 | 必須 | 説明 | +| --------- | ---- | -------- | ----------- | +| `country` | string | いいえ | ISO 3166-1 alpha-2国コード(例:"US"、"GB") | +| `locale` | string | いいえ | ロケールコード(例:"en_US"、"es_MX") | +| `limit` | number | いいえ | 返すカテゴリ数(1-50) | + +#### 出力 + +| パラメータ | 型 | 説明 | +| --------- | ---- | ----------- | +| `categories` | json | ブラウズカテゴリのリスト | +| `total` | number | カテゴリの総数 | + +### `spotify_get_markets` + +Spotifyが利用可能な市場のリストを取得します。 + +#### 入力 + +| パラメータ | 型 | 必須 | 説明 | +| --------- | ---- | -------- | ----------- | + +#### 出力 + +| パラメータ | 型 | 説明 | +| --------- | ---- | ----------- | +| `markets` | json | ISO国コードのリスト | + +### `spotify_get_playback_state` + +デバイス、トラック、進行状況を含む現在の再生状態を取得します。 + +#### 入力 + +| パラメータ | 型 | 必須 | 説明 | +| --------- | ---- | -------- | ----------- | +| `market` | string | いいえ | ISO 3166-1 alpha-2国コード | + +#### 出力 + +| パラメータ | 型 | 説明 | +| --------- | ---- | ----------- | +| `is_playing` | boolean | 再生がアクティブかどうか | +| `device` | object | アクティブなデバイス情報 | +| `progress_ms` | number | ミリ秒単位の進行状況 | +| `currently_playing_type` | string | 再生中のコンテンツの種類 | +| `shuffle_state` | boolean | シャッフルが有効かどうか | +| `repeat_state` | string | リピートモード(off、track、context) | +| `track` | object | 現在再生中のトラック | + +### `spotify_get_currently_playing` + +ユーザーを取得する + +#### 入力 + +| パラメータ | 型 | 必須 | 説明 | +| --------- | ---- | -------- | ----------- | +| `market` | string | いいえ | 市場のためのISO国コード | + +#### 出力 + +| パラメータ | 型 | 説明 | +| --------- | ---- | ----------- | +| `is_playing` | boolean | 再生がアクティブかどうか | +| `progress_ms` | number | トラック内の現在位置(ミリ秒) | +| `track` | json | 現在再生中のトラック | + +### `spotify_get_devices` + +ユーザーを取得 + +#### 入力 + +| パラメータ | 型 | 必須 | 説明 | +| --------- | ---- | -------- | ----------- | + +#### 出力 + +| パラメータ | 型 | 説明 | +| --------- | ---- | ----------- | +| `devices` | array | 利用可能な再生デバイス | + +### `spotify_get_queue` + +ユーザーを取得 + +#### 入力 + +| パラメータ | 型 | 必須 | 説明 | +| --------- | ---- | -------- | ----------- | + +#### 出力 + +| パラメータ | 型 | 説明 | +| --------- | ---- | ----------- | +| `currently_playing` | json | 現在再生中のトラック | +| `queue` | json | キュー内の次のトラック | + +### `spotify_play` + +Spotifyで再生を開始または再開します。特定のトラック、アルバム、またはプレイリストを再生できます。 + +#### 入力 + +| パラメータ | 型 | 必須 | 説明 | +| --------- | ---- | -------- | ----------- | +| `device_id` | string | いいえ | 再生するデバイスID。提供されない場合、アクティブなデバイスで再生します。 | +| `context_uri` | string | いいえ | 再生するアルバム、アーティスト、またはプレイリストのSpotify URI(例:"spotify:album:xxx") | +| `uris` | string | いいえ | 再生するトラックURIのカンマ区切りリスト(例:"spotify:track:xxx,spotify:track:yyy") | +| `offset` | number | いいえ | 再生を開始するコンテキスト内の位置(0ベースのインデックス) | +| `position_ms` | number | いいえ | トラック内の開始位置(ミリ秒単位) | + +#### 出力 + +| パラメータ | 型 | 説明 | +| --------- | ---- | ----------- | +| `success` | boolean | 再生が正常に開始されたかどうか | + +### `spotify_pause` + +Spotifyでの再生を一時停止します。 + +#### 入力 + +| パラメータ | 型 | 必須 | 説明 | +| --------- | ---- | -------- | ----------- | +| `device_id` | string | いいえ | 一時停止するデバイスID。提供されない場合、アクティブなデバイスを一時停止します。 | + +#### 出力 + +| パラメータ | 型 | 説明 | +| --------- | ---- | ----------- | +| `success` | boolean | 再生が一時停止されたかどうか | + +### `spotify_skip_next` + +Spotifyで次のトラックにスキップします。 + +#### 入力 + +| パラメータ | 型 | 必須 | 説明 | +| --------- | ---- | -------- | ----------- | +| `device_id` | string | いいえ | デバイスID。提供されない場合、アクティブなデバイスを使用します。 | + +#### 出力 + +| パラメータ | 型 | 説明 | +| --------- | ---- | ----------- | +| `success` | boolean | スキップが成功したかどうか | + +### `spotify_skip_previous` + +Spotifyで前のトラックにスキップします。 + +#### 入力 + +| パラメータ | 型 | 必須 | 説明 | +| --------- | ---- | -------- | ----------- | +| `device_id` | string | いいえ | デバイスID。提供されない場合、アクティブなデバイスを使用します。 | + +#### 出力 + +| パラメータ | 型 | 説明 | +| --------- | ---- | ----------- | +| `success` | boolean | スキップが成功したかどうか | + +### `spotify_seek` + +現在再生中のトラックの特定の位置にシークします。 + +#### 入力 + +| パラメータ | 型 | 必須 | 説明 | +| --------- | ---- | -------- | ----------- | +| `position_ms` | number | はい | シークする位置(ミリ秒) | +| `device_id` | string | いいえ | 対象デバイスID | + +#### 出力 + +| パラメータ | 型 | 説明 | +| --------- | ---- | ----------- | +| `success` | boolean | シークが成功したかどうか | + +### `spotify_add_to_queue` + +ユーザーにトラックを追加する + +#### 入力 + +| パラメータ | 型 | 必須 | 説明 | +| --------- | ---- | -------- | ----------- | +| `uri` | string | はい | 追加するトラックのSpotify URI(例:"spotify:track:xxx") | +| `device_id` | string | いいえ | デバイスID。提供されない場合、アクティブなデバイスを使用します。 | + +#### 出力 + +| パラメータ | 型 | 説明 | +| --------- | ---- | ----------- | +| `success` | boolean | トラックがキューに追加されたかどうか | + +### `spotify_set_volume` + +Spotifyの再生音量を設定する。 + +#### 入力 + +| パラメータ | 型 | 必須 | 説明 | +| --------- | ---- | -------- | ----------- | +| `volume_percent` | number | はい | 音量レベル(0〜100) | +| `device_id` | string | いいえ | デバイスID。提供されない場合、アクティブなデバイスを使用します。 | + +#### 出力 + +| パラメータ | 型 | 説明 | +| --------- | ---- | ----------- | +| `success` | boolean | 音量が設定されたかどうか | + +### `spotify_set_repeat` + +再生のリピートモードを設定する。 + +#### 入力 + +| パラメータ | 型 | 必須 | 説明 | +| --------- | ---- | -------- | ----------- | +| `state` | string | はい | リピートモード: "off"、"track"、または "context" | +| `device_id` | string | いいえ | 対象とするデバイスID | + +#### 出力 + +| パラメータ | 型 | 説明 | +| --------- | ---- | ----------- | +| `success` | boolean | リピートモードが正常に設定されたかどうか | + +### `spotify_set_shuffle` + +シャッフルのオン・オフを切り替えます。 + +#### 入力 + +| パラメータ | 型 | 必須 | 説明 | +| --------- | ---- | -------- | ----------- | +| `state` | boolean | はい | シャッフルをオンにする場合はtrue、オフにする場合はfalse | +| `device_id` | string | いいえ | 対象とするデバイスID | + +#### 出力 + +| パラメータ | 型 | 説明 | +| --------- | ---- | ----------- | +| `success` | boolean | シャッフルが正常に設定されたかどうか | + +### `spotify_transfer_playback` + +再生を別のデバイスに転送します。 + +#### 入力 + +| パラメータ | 型 | 必須 | 説明 | +| --------- | ---- | -------- | ----------- | +| `device_id` | string | はい | 再生を転送する先のデバイスID | +| `play` | boolean | いいえ | 新しいデバイスで再生を開始するかどうか | + +#### 出力 + +| パラメータ | 型 | 説明 | +| --------- | ---- | ----------- | +| `success` | boolean | 転送が成功したかどうか | + +## 注意事項 + +- カテゴリー: `tools` +- タイプ: `spotify` diff --git a/apps/docs/content/docs/ja/tools/sqs.mdx b/apps/docs/content/docs/ja/tools/sqs.mdx new file mode 100644 index 000000000..03838251f --- /dev/null +++ b/apps/docs/content/docs/ja/tools/sqs.mdx @@ -0,0 +1,63 @@ +--- +title: Amazon SQS +description: Amazon SQSに接続 +--- + +import { BlockInfoCard } from "@/components/ui/block-info-card" + + + +{/* MANUAL-CONTENT-START:intro */} +[Amazon Simple Queue Service (SQS)](https://aws.amazon.com/sqs/)は、マイクロサービス、分散システム、サーバーレスアプリケーションの分離とスケーリングを可能にする完全マネージド型のメッセージキューイングサービスです。SQSは、メッセージ指向のミドルウェアの管理と運用に関連する複雑さとオーバーヘッドを排除し、開発者が差別化作業に集中できるようにします。 + +Amazon SQSでは、以下のことが可能です: + +- **メッセージの送信**:非同期処理のためにキューにメッセージを公開 +- **アプリケーションの分離**:システムのコンポーネント間の疎結合を実現 +- **ワークロードのスケーリング**:インフラストラクチャをプロビジョニングせずに変動するワークロードを処理 +- **信頼性の確保**:組み込みの冗長性と高可用性 +- **FIFOキューのサポート**:厳密なメッセージ順序と完全に一度だけの処理を維持 + +Simでは、SQS統合により、エージェントがAmazon SQSキューにメッセージを安全にプログラムで送信できるようになります。サポートされている操作には以下が含まれます: + +- **メッセージ送信**:FIFOキュー用のオプションのメッセージグループIDと重複排除IDを使用してSQSキューにメッセージを送信 + +この統合により、エージェントは手動介入なしでメッセージ送信ワークフローを自動化できます。SimとAmazon SQSを接続することで、キューインフラストラクチャや接続を処理することなく、ワークフロー内でキューにメッセージを公開するエージェントを構築できます。 +{/* MANUAL-CONTENT-END */} + +## 使用手順 + +Amazon SQSをワークフローに統合します。SQSキューにメッセージを送信できます。 + +## ツール + +### `sqs_send` + +Amazon SQSキューにメッセージを送信 + +#### 入力 + +| パラメータ | 型 | 必須 | 説明 | +| --------- | ---- | -------- | ----------- | +| `region` | string | はい | AWS リージョン(例:us-east-1) | +| `accessKeyId` | string | はい | AWS アクセスキーID | +| `secretAccessKey` | string | はい | AWS シークレットアクセスキー | +| `queueUrl` | string | はい | キューURL | +| `data` | object | はい | 送信するメッセージ本文 | +| `messageGroupId` | string | いいえ | メッセージグループID(オプション) | +| `messageDeduplicationId` | string | いいえ | メッセージ重複排除ID(オプション) | + +#### 出力 + +| パラメータ | 型 | 説明 | +| --------- | ---- | ----------- | +| `message` | string | 操作ステータスメッセージ | +| `id` | string | メッセージID | + +## 注意事項 + +- カテゴリー: `tools` +- タイプ: `sqs` diff --git a/apps/docs/content/docs/ja/tools/stagehand.mdx b/apps/docs/content/docs/ja/tools/stagehand.mdx index 9e9a1d921..e23b8a295 100644 --- a/apps/docs/content/docs/ja/tools/stagehand.mdx +++ b/apps/docs/content/docs/ja/tools/stagehand.mdx @@ -1,6 +1,6 @@ --- -title: Stagehand Extract -description: Extract data from websites +title: Stagehand +description: Webの自動化とデータ抽出 --- import { BlockInfoCard } from "@/components/ui/block-info-card" @@ -11,43 +11,73 @@ import { BlockInfoCard } from "@/components/ui/block-info-card" /> {/* MANUAL-CONTENT-START:intro */} -[Stagehand](https://stagehand.com) is a tool that allows you to extract structured data from webpages using Browserbase and OpenAI. +[Stagehand](https://stagehand.com)は、BrowserbaseとモダンなLLM(OpenAIまたはAnthropic)を使用して、Webページからの構造化データの抽出と自律的なWeb自動化の両方を可能にするツールです。 -With Stagehand, you can: +StagehandはSimで2つの主要な機能を提供します: -- **Extract structured data**: Extract structured data from webpages using Browserbase and OpenAI -- **Save data to a database**: Save the extracted data to a database -- **Automate workflows**: Automate workflows to extract data from webpages +- **stagehand_extract**: 単一のWebページから構造化データを抽出します。必要なもの(スキーマ)を指定すると、AIがページからその形式でデータを取得して解析します。これは、必要な情報とその取得場所を正確に把握している場合に、リスト、フィールド、またはオブジェクトを抽出するのに最適です。 -In Sim, the Stagehand integration enables your agents to extract structured data from webpages using Browserbase and OpenAI. This allows for powerful automation scenarios such as data extraction, data analysis, and data integration. Your agents can extract structured data from webpages, save the extracted data to a database, and automate workflows to extract data from webpages. This integration bridges the gap between your AI workflows and your data management system, enabling seamless data extraction and integration. By connecting Sim with Stagehand, you can automate data extraction processes, maintain up-to-date information repositories, generate reports, and organize information intelligently - all through your intelligent agents. +- **stagehand_agent**: 複数ステップのタスクを完了し、要素と対話し、ページ間を移動し、構造化された結果を返すことができる自律型Webエージェントを実行します。これははるかに柔軟で、エージェントはログイン、検索、フォーム入力、複数の場所からのデータ収集、要求されたスキーマに従った最終結果の出力などを行うことができます。 + +**主な違い:** + +- *stagehand_extract*は迅速な“このページからこのデータを抽出する”操作です。直接的な一段階の抽出タスクに最適です。 +- *stagehand_agent*はWeb上で複雑な複数ステップの自律的なタスク(ナビゲーション、検索、さらには取引など)を実行し、指示とオプションのスキーマに従って動的にデータを抽出できます。 + +実際には、何が欲しいのかとその場所を知っている場合は**stagehand_extract**を使用し、インタラクティブなワークフローを考え実行するボットが必要な場合は**stagehand_agent**を使用します。 + +Stagehandを統合することで、Simエージェントはデータ収集、分析、Web上でのワークフロー実行を自動化できます:データベースの更新、情報の整理、カスタムレポートの生成を、シームレスかつ自律的に行います。 {/* MANUAL-CONTENT-END */} -## Usage Instructions +## 使用方法 -Integrate Stagehand into the workflow. Can extract structured data from webpages. +Stagehandをワークフローに統合します。ウェブページから構造化データを抽出したり、タスクを実行する自律型エージェントを実行したりできます。 -## Tools +## ツール ### `stagehand_extract` -Extract structured data from a webpage using Stagehand +Stagehandを使用してウェブページから構造化データを抽出する -#### Input +#### 入力 -| Parameter | Type | Required | Description | +| パラメータ | 型 | 必須 | 説明 | | --------- | ---- | -------- | ----------- | -| `url` | string | Yes | URL of the webpage to extract data from | -| `instruction` | string | Yes | Instructions for extraction | -| `apiKey` | string | Yes | OpenAI API key for extraction \(required by Stagehand\) | -| `schema` | json | Yes | JSON schema defining the structure of the data to extract | +| `url` | string | はい | データを抽出するウェブページのURL | +| `instruction` | string | はい | 抽出のための指示 | +| `provider` | string | いいえ | 使用するAIプロバイダー:openaiまたはanthropic | +| `apiKey` | string | はい | 選択したプロバイダーのAPIキー | +| `schema` | json | はい | 抽出するデータの構造を定義するJSONスキーマ | -#### Output +#### 出力 -| Parameter | Type | Description | +| パラメータ | 型 | 説明 | | --------- | ---- | ----------- | -| `data` | object | Extracted structured data matching the provided schema | +| `data` | object | 提供されたスキーマに一致する抽出された構造化データ | -## Notes +### `stagehand_agent` -- Category: `tools` -- Type: `stagehand` +タスクを完了し構造化データを抽出するための自律型ウェブエージェントを実行する + +#### 入力 + +| パラメータ | 型 | 必須 | 説明 | +| --------- | ---- | -------- | ----------- | +| `startUrl` | string | はい | エージェントを開始するウェブページのURL | +| `task` | string | はい | ウェブサイトで完了するタスクまたは達成する目標 | +| `variables` | json | いいえ | タスクで置き換えるオプションの変数(形式:\{key: value\})。タスク内で%key%を使用して参照 | +| `format` | string | いいえ | 説明なし | +| `provider` | string | いいえ | 使用するAIプロバイダー:openaiまたはanthropic | +| `apiKey` | string | はい | 選択したプロバイダーのAPIキー | +| `outputSchema` | json | いいえ | エージェントが返すべきデータの構造を定義するオプションのJSONスキーマ | + +#### 出力 + +| パラメータ | 型 | 説明 | +| --------- | ---- | ----------- | +| `agentResult` | object | Stagehandエージェント実行からの結果 | + +## 注意事項 + +- カテゴリー: `tools` +- タイプ: `stagehand` diff --git a/apps/docs/content/docs/ja/tools/stagehand_agent.mdx b/apps/docs/content/docs/ja/tools/stagehand_agent.mdx deleted file mode 100644 index 2ca8ffc15..000000000 --- a/apps/docs/content/docs/ja/tools/stagehand_agent.mdx +++ /dev/null @@ -1,59 +0,0 @@ ---- -title: Stagehand Agent -description: Autonomous web browsing agent ---- - -import { BlockInfoCard } from "@/components/ui/block-info-card" - - - -{/* MANUAL-CONTENT-START:intro */} -[Stagehand](https://www.stagehand.dev/) is an autonomous web agent platform that enables AI systems to navigate and interact with websites just like a human would. It provides a powerful solution for automating complex web tasks without requiring custom code or browser automation scripts. - -With Stagehand, you can: - -- **Automate web navigation**: Enable AI to browse websites, click links, fill forms, and interact with web elements -- **Extract structured data**: Collect specific information from websites in a structured, usable format -- **Complete complex workflows**: Perform multi-step tasks across different websites and web applications -- **Handle authentication**: Navigate login processes and maintain sessions across websites -- **Process dynamic content**: Interact with JavaScript-heavy sites and single-page applications -- **Maintain context awareness**: Keep track of the current state and history while navigating -- **Generate detailed reports**: Receive comprehensive logs of actions taken and data collected - -In Sim, the Stagehand integration enables your agents to seamlessly interact with web-based systems as part of their workflows. This allows for sophisticated automation scenarios that bridge the gap between your AI agents and the vast information and functionality available on the web. Your agents can search for information, interact with web applications, extract data from websites, and incorporate these capabilities into their decision-making processes. By connecting Sim with Stagehand, you can create agents that extend beyond API-based integrations to navigate the web just as a human would - filling forms, clicking buttons, reading content, and extracting valuable information to complete their tasks more effectively. -{/* MANUAL-CONTENT-END */} - -## Usage Instructions - -Integrate Stagehand Agent into the workflow. Can navigate the web and perform tasks. - -## Tools - -### `stagehand_agent` - -Run an autonomous web agent to complete tasks and extract structured data - -#### Input - -| Parameter | Type | Required | Description | -| --------- | ---- | -------- | ----------- | -| `startUrl` | string | Yes | URL of the webpage to start the agent on | -| `task` | string | Yes | The task to complete or goal to achieve on the website | -| `variables` | json | No | Optional variables to substitute in the task \(format: \{key: value\}\). Reference in task using %key% | -| `format` | string | No | No description | -| `apiKey` | string | Yes | OpenAI API key for agent execution \(required by Stagehand\) | -| `outputSchema` | json | No | Optional JSON schema defining the structure of data the agent should return | - -#### Output - -| Parameter | Type | Description | -| --------- | ---- | ----------- | -| `agentResult` | object | Result from the Stagehand agent execution | - -## Notes - -- Category: `tools` -- Type: `stagehand_agent` diff --git a/apps/docs/content/docs/ja/tools/trello.mdx b/apps/docs/content/docs/ja/tools/trello.mdx index ac15c3278..57b208ea2 100644 --- a/apps/docs/content/docs/ja/tools/trello.mdx +++ b/apps/docs/content/docs/ja/tools/trello.mdx @@ -45,10 +45,8 @@ Trelloボード上のすべてのリストを表示する | パラメータ | 型 | 説明 | | --------- | ---- | ----------- | -| `success` | boolean | 操作が成功したかどうか | | `lists` | array | id、name、closed、pos、idBoardを含むリストオブジェクトの配列 | | `count` | number | 返されたリストの数 | -| `error` | string | 操作が失敗した場合のエラーメッセージ | ### `trello_list_cards` @@ -65,10 +63,8 @@ Trelloボード上のすべてのカードを表示する | パラメータ | 型 | 説明 | | --------- | ---- | ----------- | -| `success` | boolean | 操作が成功したかどうか | | `cards` | array | id、name、desc、url、ボード/リストID、ラベル、期限日を含むカードオブジェクトの配列 | | `count` | number | 返されたカードの数 | -| `error` | string | 操作が失敗した場合のエラーメッセージ | ### `trello_create_card` @@ -90,9 +86,7 @@ Trelloボードに新しいカードを作成する | パラメータ | 型 | 説明 | | --------- | ---- | ----------- | -| `success` | boolean | カードが正常に作成されたかどうか | -| `card` | object | 作成されたカードオブジェクト(id、name、desc、url、その他のプロパティを含む) | -| `error` | string | 操作が失敗した場合のエラーメッセージ | +| `card` | object | id、name、desc、urlなどのプロパティを含む作成されたカードオブジェクト | ### `trello_update_card` @@ -114,9 +108,7 @@ Trelloの既存のカードを更新する | パラメータ | 型 | 説明 | | --------- | ---- | ----------- | -| `success` | boolean | カードが正常に更新されたかどうか | -| `card` | object | 更新されたカードオブジェクト(id、name、desc、url、その他のプロパティを含む) | -| `error` | string | 操作が失敗した場合のエラーメッセージ | +| `card` | object | id、name、desc、urlなどのプロパティを含む更新されたカードオブジェクト | ### `trello_get_actions` @@ -135,10 +127,8 @@ Trelloの既存のカードを更新する | パラメータ | 型 | 説明 | | --------- | ---- | ----------- | -| `success` | boolean | 操作が成功したかどうか | -| `actions` | array | タイプ、日付、メンバー、データを含むアクションオブジェクトの配列 | +| `actions` | array | type、date、member、dataを含むアクションオブジェクトの配列 | | `count` | number | 返されたアクションの数 | -| `error` | string | 操作が失敗した場合のエラーメッセージ | ### `trello_add_comment` @@ -155,9 +145,7 @@ Trelloカードにコメントを追加する | パラメータ | 型 | 説明 | | --------- | ---- | ----------- | -| `success` | boolean | コメントが正常に追加されたかどうか | -| `comment` | object | ID、テキスト、日付、作成者メンバーを含む作成されたコメントオブジェクト | -| `error` | string | 操作が失敗した場合のエラーメッセージ | +| `comment` | object | id、text、date、member creatorを含む作成されたコメントオブジェクト | ## 注意事項 diff --git a/apps/docs/content/docs/ja/tools/typeform.mdx b/apps/docs/content/docs/ja/tools/typeform.mdx index e4f484714..47087eb68 100644 --- a/apps/docs/content/docs/ja/tools/typeform.mdx +++ b/apps/docs/content/docs/ja/tools/typeform.mdx @@ -48,25 +48,9 @@ Typeformからフォームの回答を取得する | パラメータ | 型 | 説明 | | --------- | ---- | ----------- | -| `total_items` | number | 回答/フォームの総数 | -| `page_count` | number | 総ページ数 | -| `items` | json | 回答/フォーム項目の配列 | -| `id` | string | フォームの一意の識別子 | -| `title` | string | フォームのタイトル | -| `type` | string | フォームのタイプ | -| `created_at` | string | フォーム作成のISOタイムスタンプ | -| `last_updated_at` | string | 最終更新のISOタイムスタンプ | -| `settings` | json | フォーム設定オブジェクト | -| `theme` | json | テーマ設定オブジェクト | -| `workspace` | json | ワークスペース情報 | -| `fields` | json | フォームフィールド/質問の配列 | -| `thankyou_screens` | json | サンキュースクリーンの配列 | -| `_links` | json | 関連リソースリンク | -| `deleted` | boolean | フォームが正常に削除されたかどうか | -| `message` | string | 削除確認メッセージ | -| `fileUrl` | string | ダウンロードされたファイルのURL | -| `contentType` | string | ファイルのコンテンツタイプ | -| `filename` | string | ファイル名 | +| `total_items` | number | 回答の総数 | +| `page_count` | number | 利用可能なページの総数 | +| `items` | array | response_id、submitted_at、answers、およびmetadataを含む回答オブジェクトの配列 | ### `typeform_files` @@ -127,8 +111,8 @@ Typeformアカウント内のすべてのフォームのリストを取得する | パラメータ | 型 | 説明 | | --------- | ---- | ----------- | | `total_items` | number | アカウント内のフォームの総数 | -| `page_count` | number | 利用可能な総ページ数 | -| `items` | array | フォームオブジェクトの配列 | +| `page_count` | number | 利用可能なページの総数 | +| `items` | array | id、title、created_at、last_updated_at、settings、theme、および_linksを含むフォームオブジェクトの配列 | ### `typeform_get_form` @@ -148,11 +132,13 @@ Typeformアカウント内のすべてのフォームのリストを取得する | `id` | string | フォームの一意の識別子 | | `title` | string | フォームのタイトル | | `type` | string | フォームのタイプ(form、quizなど) | -| `created_at` | string | フォーム作成のISOタイムスタンプ | -| `last_updated_at` | string | 最終更新のISOタイムスタンプ | -| `settings` | object | 言語、進捗バーなどを含むフォーム設定 | -| `theme` | object | 色、フォント、デザイン設定を含むテーマ構成 | -| `workspace` | object | ワークスペース情報 | +| `settings` | object | 言語、プログレスバーなどを含むフォーム設定 | +| `theme` | object | テーマ参照 | +| `workspace` | object | ワークスペース参照 | +| `fields` | array | フォームフィールド/質問の配列 | +| `welcome_screens` | array | ウェルカム画面の配列 | +| `thankyou_screens` | array | サンキュー画面の配列 | +| `_links` | object | 公開フォームURLを含む関連リソースリンク | ### `typeform_create_form` @@ -177,13 +163,8 @@ Typeformアカウント内のすべてのフォームのリストを取得する | `id` | string | 作成されたフォームの一意の識別子 | | `title` | string | フォームのタイトル | | `type` | string | フォームのタイプ | -| `created_at` | string | フォーム作成のISOタイムスタンプ | -| `last_updated_at` | string | 最終更新のISOタイムスタンプ | -| `settings` | object | フォーム設定 | -| `theme` | object | 適用されたテーマ設定 | -| `workspace` | object | ワークスペース情報 | | `fields` | array | 作成されたフォームフィールドの配列 | -| `_links` | object | 関連リソースリンク | +| `_links` | object | 公開フォームURLを含む関連リソースリンク | ### `typeform_update_form` @@ -204,13 +185,12 @@ JSON Patchオペレーションを使用して既存のフォームを更新す | `id` | string | 更新されたフォームの一意の識別子 | | `title` | string | フォームのタイトル | | `type` | string | フォームのタイプ | -| `created_at` | string | フォーム作成のISOタイムスタンプ | -| `last_updated_at` | string | 最終更新のISOタイムスタンプ | | `settings` | object | フォーム設定 | -| `theme` | object | テーマ設定 | -| `workspace` | object | ワークスペース情報 | +| `theme` | object | テーマ参照 | +| `workspace` | object | ワークスペース参照 | | `fields` | array | フォームフィールドの配列 | -| `thankyou_screens` | array | サンキュー画面の配列 | +| `welcome_screens` | array | ウェルカム画面の配列 | +| `thankyou_screens` | array | サンクスページの配列 | | `_links` | object | 関連リソースリンク | ### `typeform_delete_form` diff --git a/apps/docs/content/docs/ja/tools/zep.mdx b/apps/docs/content/docs/ja/tools/zep.mdx index 1502da166..e4c478190 100644 --- a/apps/docs/content/docs/ja/tools/zep.mdx +++ b/apps/docs/content/docs/ja/tools/zep.mdx @@ -94,10 +94,7 @@ Zepから会話スレッドを削除する | パラメータ | 型 | 説明 | | --------- | ---- | ----------- | -| `context` | string | コンテキスト文字列(サマリーまたは基本) | -| `facts` | array | 抽出されたファクト | -| `entities` | array | 抽出されたエンティティ | -| `summary` | string | 会話のサマリー | +| `context` | string | コンテキスト文字列(要約または基本モード) | ### `zep_get_messages` @@ -137,9 +134,9 @@ Zepから会話スレッドを削除する | パラメータ | 型 | 説明 | | --------- | ---- | ----------- | -| `context` | string | メッセージ追加後の更新されたコンテキスト | -| `messageIds` | array | 追加されたメッセージUUIDの配列 | | `threadId` | string | スレッドID | +| `added` | boolean | メッセージが正常に追加されたかどうか | +| `messageIds` | array | 追加されたメッセージUUIDの配列 | ### `zep_add_user` @@ -209,7 +206,7 @@ Zepからユーザー情報を取得する | パラメータ | 型 | 説明 | | --------- | ---- | ----------- | | `threads` | array | このユーザーのスレッドオブジェクトの配列 | -| `userId` | string | ユーザーID | +| `totalCount` | number | 返されたスレッドの総数 | ## 注意事項 diff --git a/apps/docs/content/docs/zh/tools/apify.mdx b/apps/docs/content/docs/zh/tools/apify.mdx index c384c060b..66dfb5b40 100644 --- a/apps/docs/content/docs/zh/tools/apify.mdx +++ b/apps/docs/content/docs/zh/tools/apify.mdx @@ -54,7 +54,6 @@ import { BlockInfoCard } from "@/components/ui/block-info-card" | `success` | boolean | actor 运行是否成功 | | `runId` | string | APIFY 运行 ID | | `status` | string | 运行状态 \(SUCCEEDED, FAILED 等\) | -| `datasetId` | string | 包含结果的数据集 ID | | `items` | array | 数据集条目 \(如果已完成\) | ### `apify_run_actor_async` diff --git a/apps/docs/content/docs/zh/tools/asana.mdx b/apps/docs/content/docs/zh/tools/asana.mdx index 1c3223964..46d23ae9b 100644 --- a/apps/docs/content/docs/zh/tools/asana.mdx +++ b/apps/docs/content/docs/zh/tools/asana.mdx @@ -34,7 +34,14 @@ import { BlockInfoCard } from "@/components/ui/block-info-card" | 参数 | 类型 | 描述 | | --------- | ---- | ----------- | | `success` | boolean | 操作成功状态 | -| `output` | object | 单个任务详情或任务数组,取决于是否提供了 taskGid | +| `ts` | string | 响应的时间戳 | +| `gid` | string | 任务的全局唯一标识符 | +| `resource_type` | string | 资源类型(任务) | +| `resource_subtype` | string | 资源子类型 | +| `name` | string | 任务名称 | +| `notes` | string | 任务备注或描述 | +| `completed` | boolean | 任务是否已完成 | +| `assignee` | object | 分配人详情 | ### `asana_create_task` @@ -55,7 +62,13 @@ import { BlockInfoCard } from "@/components/ui/block-info-card" | 参数 | 类型 | 描述 | | --------- | ---- | ----------- | | `success` | boolean | 操作成功状态 | -| `output` | object | 包含时间戳、gid、名称、备注和永久链接的已创建任务详情 | +| `ts` | string | 响应的时间戳 | +| `gid` | string | 任务的全局唯一标识符 | +| `name` | string | 任务名称 | +| `notes` | string | 任务备注或描述 | +| `completed` | boolean | 任务是否已完成 | +| `created_at` | string | 任务创建时间戳 | +| `permalink_url` | string | 任务在 Asana 中的 URL | ### `asana_update_task` @@ -77,7 +90,12 @@ import { BlockInfoCard } from "@/components/ui/block-info-card" | 参数 | 类型 | 描述 | | --------- | ---- | ----------- | | `success` | boolean | 操作成功状态 | -| `output` | object | 更新的任务详情,包括时间戳、gid、名称、备注和修改时间戳 | +| `ts` | string | 响应的时间戳 | +| `gid` | string | 任务的全局唯一标识符 | +| `name` | string | 任务名称 | +| `notes` | string | 任务备注或描述 | +| `completed` | boolean | 任务是否已完成 | +| `modified_at` | string | 任务最后修改时间戳 | ### `asana_get_projects` @@ -94,7 +112,8 @@ import { BlockInfoCard } from "@/components/ui/block-info-card" | 参数 | 类型 | 描述 | | --------- | ---- | ----------- | | `success` | boolean | 操作成功状态 | -| `output` | object | 项目列表,包括它们的 gid、名称和资源类型 | +| `ts` | string | 响应的时间戳 | +| `projects` | array | 项目数组 | ### `asana_search_tasks` @@ -115,7 +134,8 @@ import { BlockInfoCard } from "@/components/ui/block-info-card" | 参数 | 类型 | 描述 | | --------- | ---- | ----------- | | `success` | boolean | 操作成功状态 | -| `output` | object | 符合搜索条件的任务列表 | +| `ts` | string | 响应的时间戳 | +| `tasks` | array | 匹配任务的数组 | ### `asana_add_comment` @@ -133,7 +153,11 @@ import { BlockInfoCard } from "@/components/ui/block-info-card" | 参数 | 类型 | 描述 | | --------- | ---- | ----------- | | `success` | boolean | 操作成功状态 | -| `output` | object | 评论详情,包括 gid、文本、创建时间戳和作者 | +| `ts` | string | 响应的时间戳 | +| `gid` | string | 评论的全局唯一标识符 | +| `text` | string | 评论的文本内容 | +| `created_at` | string | 评论的创建时间戳 | +| `created_by` | object | 评论作者的详细信息 | ## 注意事项 diff --git a/apps/docs/content/docs/zh/tools/confluence.mdx b/apps/docs/content/docs/zh/tools/confluence.mdx index f74f7ff16..ed1033d89 100644 --- a/apps/docs/content/docs/zh/tools/confluence.mdx +++ b/apps/docs/content/docs/zh/tools/confluence.mdx @@ -220,6 +220,33 @@ import { BlockInfoCard } from "@/components/ui/block-info-card" | `commentId` | string | 删除的评论 ID | | `deleted` | boolean | 删除状态 | +### `confluence_upload_attachment` + +将文件作为附件上传到 Confluence 页面。 + +#### 输入 + +| 参数 | 类型 | 必需 | 描述 | +| --------- | ---- | -------- | ----------- | +| `domain` | string | 是 | 您的 Confluence 域名 \(例如:yourcompany.atlassian.net\) | +| `pageId` | string | 是 | 要附加文件的 Confluence 页面 ID | +| `file` | file | 是 | 要作为附件上传的文件 | +| `fileName` | string | 否 | 附件的可选自定义文件名 | +| `comment` | string | 否 | 附件的可选评论 | +| `cloudId` | string | 否 | 实例的 Confluence Cloud ID。如果未提供,将使用域名进行获取。 | + +#### 输出 + +| 参数 | 类型 | 描述 | +| --------- | ---- | ----------- | +| `ts` | string | 上传的时间戳 | +| `attachmentId` | string | 上传的附件 ID | +| `title` | string | 附件文件名 | +| `fileSize` | number | 文件大小(以字节为单位) | +| `mediaType` | string | 附件的 MIME 类型 | +| `downloadUrl` | string | 附件的下载 URL | +| `pageId` | string | 添加附件的页面 ID | + ### `confluence_list_attachments` 列出 Confluence 页面上的所有附件。 @@ -230,7 +257,7 @@ import { BlockInfoCard } from "@/components/ui/block-info-card" | --------- | ---- | -------- | ----------- | | `domain` | string | 是 | 您的 Confluence 域名 \(例如:yourcompany.atlassian.net\) | | `pageId` | string | 是 | 要列出附件的 Confluence 页面 ID | -| `limit` | number | 否 | 返回的附件最大数量 \(默认值:25\) | +| `limit` | number | 否 | 返回的最大附件数量 \(默认值:25\) | | `cloudId` | string | 否 | 实例的 Confluence Cloud ID。如果未提供,将使用域名进行获取。 | #### 输出 @@ -257,7 +284,7 @@ import { BlockInfoCard } from "@/components/ui/block-info-card" | 参数 | 类型 | 描述 | | --------- | ---- | ----------- | | `ts` | string | 删除的时间戳 | -| `attachmentId` | string | 已删除的附件 ID | +| `attachmentId` | string | 删除的附件 ID | | `deleted` | boolean | 删除状态 | ### `confluence_list_labels` @@ -281,7 +308,7 @@ import { BlockInfoCard } from "@/components/ui/block-info-card" ### `confluence_get_space` -获取特定 Confluence 空间的详细信息。 +获取有关特定 Confluence 空间的详细信息。 #### 输入 diff --git a/apps/docs/content/docs/zh/tools/firecrawl.mdx b/apps/docs/content/docs/zh/tools/firecrawl.mdx index e1c92a290..7d6c1f5b0 100644 --- a/apps/docs/content/docs/zh/tools/firecrawl.mdx +++ b/apps/docs/content/docs/zh/tools/firecrawl.mdx @@ -145,7 +145,6 @@ import { BlockInfoCard } from "@/components/ui/block-info-card" | --------- | ---- | ----------- | | `success` | boolean | 提取操作是否成功 | | `data` | object | 根据模式或提示提取的结构化数据 | -| `sources` | array | 数据来源(仅在启用 showSources 时) | ## 注意 diff --git a/apps/docs/content/docs/zh/tools/google_groups.mdx b/apps/docs/content/docs/zh/tools/google_groups.mdx index 4e61b6a5c..cdb03b837 100644 --- a/apps/docs/content/docs/zh/tools/google_groups.mdx +++ b/apps/docs/content/docs/zh/tools/google_groups.mdx @@ -34,7 +34,8 @@ import { BlockInfoCard } from "@/components/ui/block-info-card" | 参数 | 类型 | 描述 | | --------- | ---- | ----------- | -| `output` | json | Google Groups API 响应数据 | +| `groups` | json | 群组对象的数组 | +| `nextPageToken` | string | 用于获取下一页结果的令牌 | ### `google_groups_get_group` @@ -50,7 +51,7 @@ import { BlockInfoCard } from "@/components/ui/block-info-card" | 参数 | 类型 | 描述 | | --------- | ---- | ----------- | -| `output` | json | Google Groups API 响应数据 | +| `group` | json | 群组对象 | ### `google_groups_create_group` @@ -68,7 +69,7 @@ import { BlockInfoCard } from "@/components/ui/block-info-card" | 参数 | 类型 | 描述 | | --------- | ---- | ----------- | -| `output` | json | Google Groups API 响应数据 | +| `group` | json | 创建的群组对象 | ### `google_groups_update_group` @@ -87,7 +88,7 @@ import { BlockInfoCard } from "@/components/ui/block-info-card" | 参数 | 类型 | 描述 | | --------- | ---- | ----------- | -| `output` | json | Google Groups API 响应数据 | +| `group` | json | 更新的群组对象 | ### `google_groups_delete_group` @@ -103,7 +104,7 @@ import { BlockInfoCard } from "@/components/ui/block-info-card" | 参数 | 类型 | 描述 | | --------- | ---- | ----------- | -| `output` | json | Google Groups API 响应数据 | +| `message` | string | 成功消息 | ### `google_groups_list_members` @@ -122,7 +123,8 @@ import { BlockInfoCard } from "@/components/ui/block-info-card" | 参数 | 类型 | 描述 | | --------- | ---- | ----------- | -| `output` | json | Google Groups API 响应数据 | +| `members` | json | 成员对象的数组 | +| `nextPageToken` | string | 用于获取下一页结果的令牌 | ### `google_groups_get_member` @@ -139,7 +141,7 @@ import { BlockInfoCard } from "@/components/ui/block-info-card" | 参数 | 类型 | 描述 | | --------- | ---- | ----------- | -| `output` | json | Google Groups API 响应数据 | +| `member` | json | 成员对象 | ### `google_groups_add_member` @@ -157,7 +159,7 @@ import { BlockInfoCard } from "@/components/ui/block-info-card" | 参数 | 类型 | 描述 | | --------- | ---- | ----------- | -| `output` | json | Google Groups API 响应数据 | +| `member` | json | 添加的成员对象 | ### `google_groups_remove_member` @@ -174,7 +176,7 @@ import { BlockInfoCard } from "@/components/ui/block-info-card" | 参数 | 类型 | 描述 | | --------- | ---- | ----------- | -| `output` | json | Google Groups API 响应数据 | +| `message` | string | 成功消息 | ### `google_groups_update_member` @@ -192,7 +194,7 @@ import { BlockInfoCard } from "@/components/ui/block-info-card" | 参数 | 类型 | 描述 | | --------- | ---- | ----------- | -| `output` | json | Google Groups API 响应数据 | +| `member` | json | 更新的成员对象 | ### `google_groups_has_member` @@ -209,7 +211,7 @@ import { BlockInfoCard } from "@/components/ui/block-info-card" | 参数 | 类型 | 描述 | | --------- | ---- | ----------- | -| `output` | json | Google Groups API 响应数据 | +| `isMember` | boolean | 用户是否是该群组的成员 | ## 注意事项 diff --git a/apps/docs/content/docs/zh/tools/google_vault.mdx b/apps/docs/content/docs/zh/tools/google_vault.mdx index 144b20a2f..f149956fb 100644 --- a/apps/docs/content/docs/zh/tools/google_vault.mdx +++ b/apps/docs/content/docs/zh/tools/google_vault.mdx @@ -34,8 +34,7 @@ import { BlockInfoCard } from "@/components/ui/block-info-card" | 参数 | 类型 | 描述 | | --------- | ---- | ----------- | -| `output` | json | Vault API 响应数据 | -| `file` | json | 从执行文件中下载的导出文件 \(UserFile\) | +| `export` | json | 创建的导出对象 | ### `google_vault_list_matters_export` @@ -54,8 +53,9 @@ import { BlockInfoCard } from "@/components/ui/block-info-card" | 参数 | 类型 | 描述 | | --------- | ---- | ----------- | -| `output` | json | Vault API 响应数据 | -| `file` | json | 从执行文件中下载的导出文件 \(UserFile\) | +| `exports` | json | 导出对象的数组 | +| `export` | json | 单个导出对象(当提供 exportId 时) | +| `nextPageToken` | string | 用于获取下一页结果的令牌 | ### `google_vault_download_export_file` @@ -94,8 +94,7 @@ import { BlockInfoCard } from "@/components/ui/block-info-card" | 参数 | 类型 | 描述 | | --------- | ---- | ----------- | -| `output` | json | Vault API 响应数据 | -| `file` | json | 从执行文件中下载的导出文件 \(UserFile\) | +| `hold` | json | 创建的保留对象 | ### `google_vault_list_matters_holds` @@ -114,8 +113,9 @@ import { BlockInfoCard } from "@/components/ui/block-info-card" | 参数 | 类型 | 描述 | | --------- | ---- | ----------- | -| `output` | json | Vault API 响应数据 | -| `file` | json | 从执行文件中下载的导出文件 \(UserFile\) | +| `holds` | json | 保留对象的数组 | +| `hold` | json | 单个保留对象(当提供 holdId 时) | +| `nextPageToken` | string | 用于获取下一页结果的令牌 | ### `google_vault_create_matters` @@ -132,8 +132,7 @@ import { BlockInfoCard } from "@/components/ui/block-info-card" | 参数 | 类型 | 描述 | | --------- | ---- | ----------- | -| `output` | json | Vault API 响应数据 | -| `file` | json | 从执行文件中下载的导出文件 \(UserFile\) | +| `matter` | json | 创建的事项对象 | ### `google_vault_list_matters` @@ -151,8 +150,9 @@ import { BlockInfoCard } from "@/components/ui/block-info-card" | 参数 | 类型 | 描述 | | --------- | ---- | ----------- | -| `output` | json | Vault API 响应数据 | -| `file` | json | 从执行文件中下载的导出文件 \(UserFile\) | +| `matters` | json | 事项对象的数组 | +| `matter` | json | 单个事项对象(当提供 matterId 时) | +| `nextPageToken` | string | 用于获取下一页结果的令牌 | ## 注意事项 diff --git a/apps/docs/content/docs/zh/tools/grafana.mdx b/apps/docs/content/docs/zh/tools/grafana.mdx index ada49f548..530e26109 100644 --- a/apps/docs/content/docs/zh/tools/grafana.mdx +++ b/apps/docs/content/docs/zh/tools/grafana.mdx @@ -320,11 +320,11 @@ import { BlockInfoCard } from "@/components/ui/block-info-card" | `baseUrl` | string | 是 | Grafana 实例 URL \(例如:https://your-grafana.com\) | | `organizationId` | string | 否 | 多组织 Grafana 实例的组织 ID | | `text` | string | 是 | 注释的文本内容 | -| `tags` | string | 否 | 以逗号分隔的标签列表 | -| `dashboardUid` | string | 否 | 要添加注释的仪表板 UID \(全局注释可选\) | +| `tags` | string | 否 | 逗号分隔的标签列表 | +| `dashboardUid` | string | 是 | 要添加注释的仪表板 UID | | `panelId` | number | 否 | 要添加注释的面板 ID | -| `time` | number | 否 | 起始时间(以 epoch 毫秒为单位,默认为当前时间) | -| `timeEnd` | number | 否 | 结束时间(以 epoch 毫秒为单位,用于范围注释) | +| `time` | number | 否 | 开始时间(以纪元毫秒为单位,默认为当前时间) | +| `timeEnd` | number | 否 | 结束时间(以纪元毫秒为单位,用于范围注释) | #### 输出 @@ -342,15 +342,15 @@ import { BlockInfoCard } from "@/components/ui/block-info-card" | 参数 | 类型 | 必需 | 描述 | | --------- | ---- | -------- | ----------- | | `apiKey` | string | 是 | Grafana 服务账户令牌 | -| ---INLINE-CODE-PLACEHOLDER-42355e89d407292dbef683bcc5a4fc3e--- | string | 是 | Grafana 实例 URL \(例如:https://your-grafana.com\) | +| `baseUrl` | string | 是 | Grafana 实例 URL \(例如:https://your-grafana.com\) | | `organizationId` | string | 否 | 多组织 Grafana 实例的组织 ID | -| `from` | number | 否 | 起始时间(以 epoch 毫秒为单位) | -| `to` | number | 否 | 结束时间(以 epoch 毫秒为单位) | -| `dashboardUid` | string | 否 | 按仪表板 UID 过滤 | +| `from` | number | 否 | 开始时间(以纪元毫秒为单位) | +| `to` | number | 否 | 结束时间(以纪元毫秒为单位) | +| `dashboardUid` | string | 是 | 要查询注释的仪表板 UID | | `panelId` | number | 否 | 按面板 ID 过滤 | -| `tags` | string | 否 | 按逗号分隔的标签列表过滤 | -| `type` | string | 否 | 按类型过滤 \(警报或注释\) | -| `limit` | number | 否 | 返回的最大注释数 | +| `tags` | string | 否 | 按标签过滤(逗号分隔) | +| `type` | string | 否 | 按类型过滤 \(alert 或 annotation\) | +| `limit` | number | 否 | 返回的注释最大数量 | #### 输出 @@ -483,10 +483,20 @@ import { BlockInfoCard } from "@/components/ui/block-info-card" | 参数 | 类型 | 描述 | | --------- | ---- | ----------- | -| `id` | number | 创建的文件夹的数字 ID | -| `uid` | string | 创建的文件夹的 UID | -| `title` | string | 创建的文件夹的标题 | +| `id` | number | 创建文件夹的数字 ID | +| `uid` | string | 创建文件夹的 UID | +| `title` | string | 创建文件夹的标题 | | `url` | string | 文件夹的 URL 路径 | +| `hasAcl` | boolean | 文件夹是否具有自定义 ACL 权限 | +| `canSave` | boolean | 当前用户是否可以保存文件夹 | +| `canEdit` | boolean | 当前用户是否可以编辑文件夹 | +| `canAdmin` | boolean | 当前用户是否对文件夹具有管理员权限 | +| `canDelete` | boolean | 当前用户是否可以删除文件夹 | +| `createdBy` | string | 创建文件夹的用户名 | +| `created` | string | 文件夹创建的时间戳 | +| `updatedBy` | string | 最后更新文件夹的用户名 | +| `updated` | string | 文件夹最后更新的时间戳 | +| `version` | number | 文件夹的版本号 | ## 注意事项 diff --git a/apps/docs/content/docs/zh/tools/hubspot.mdx b/apps/docs/content/docs/zh/tools/hubspot.mdx index ef2b99a87..f7928e05e 100644 --- a/apps/docs/content/docs/zh/tools/hubspot.mdx +++ b/apps/docs/content/docs/zh/tools/hubspot.mdx @@ -47,8 +47,9 @@ HubSpot CRM 的主要功能包括: | 参数 | 类型 | 描述 | | --------- | ---- | ----------- | -| `success` | boolean | 操作成功状态 | -| `output` | object | 用户数据 | +| `users` | 数组 | HubSpot 用户对象的数组 | +| `metadata` | 对象 | 操作元数据 | +| `success` | 布尔值 | 操作成功状态 | ### `hubspot_list_contacts` @@ -67,8 +68,10 @@ HubSpot CRM 的主要功能包括: | 参数 | 类型 | 描述 | | --------- | ---- | ----------- | -| `success` | boolean | 操作成功状态 | -| `output` | object | 联系人数据 | +| `contacts` | 数组 | HubSpot 联系人对象的数组 | +| `paging` | 对象 | 分页信息 | +| `metadata` | 对象 | 操作元数据 | +| `success` | 布尔值 | 操作成功状态 | ### `hubspot_get_contact` @@ -87,8 +90,9 @@ HubSpot CRM 的主要功能包括: | 参数 | 类型 | 描述 | | --------- | ---- | ----------- | -| `success` | boolean | 操作成功状态 | -| `output` | object | 联系人数据 | +| `contact` | 对象 | 带有属性的 HubSpot 联系人对象 | +| `metadata` | 对象 | 操作元数据 | +| `success` | 布尔值 | 操作成功状态 | ### `hubspot_create_contact` @@ -105,8 +109,9 @@ HubSpot CRM 的主要功能包括: | 参数 | 类型 | 描述 | | --------- | ---- | ----------- | -| `success` | boolean | 操作成功状态 | -| `output` | object | 创建的联系人数据 | +| `contact` | 对象 | 创建的 HubSpot 联系人对象 | +| `metadata` | 对象 | 操作元数据 | +| `success` | 布尔值 | 操作成功状态 | ### `hubspot_update_contact` @@ -124,8 +129,9 @@ HubSpot CRM 的主要功能包括: | 参数 | 类型 | 描述 | | --------- | ---- | ----------- | -| `success` | boolean | 操作成功状态 | -| `output` | object | 更新的联系人数据 | +| `contact` | 对象 | 更新的 HubSpot 联系人对象 | +| `metadata` | 对象 | 操作元数据 | +| `success` | 布尔值 | 操作成功状态 | ### `hubspot_search_contacts` @@ -146,8 +152,11 @@ HubSpot CRM 的主要功能包括: | 参数 | 类型 | 描述 | | --------- | ---- | ----------- | -| `success` | boolean | 操作成功状态 | -| `output` | object | 搜索结果 | +| `contacts` | 数组 | 匹配的 HubSpot 联系人对象的数组 | +| `total` | 数字 | 匹配的联系人总数 | +| `paging` | 对象 | 分页信息 | +| `metadata` | 对象 | 操作元数据 | +| `success` | 布尔值 | 操作成功状态 | ### `hubspot_list_companies` @@ -166,8 +175,10 @@ HubSpot CRM 的主要功能包括: | 参数 | 类型 | 描述 | | --------- | ---- | ----------- | +| `companies` | array | HubSpot 公司对象的数组 | +| `paging` | object | 分页信息 | +| `metadata` | object | 操作元数据 | | `success` | boolean | 操作成功状态 | -| `output` | object | 公司数据 | ### `hubspot_get_company` @@ -186,8 +197,9 @@ HubSpot CRM 的主要功能包括: | 参数 | 类型 | 描述 | | --------- | ---- | ----------- | +| `company` | object | 带有属性的 HubSpot 公司对象 | +| `metadata` | object | 操作元数据 | | `success` | boolean | 操作成功状态 | -| `output` | object | 公司数据 | ### `hubspot_create_company` @@ -204,8 +216,9 @@ HubSpot CRM 的主要功能包括: | 参数 | 类型 | 描述 | | --------- | ---- | ----------- | +| `company` | object | 创建的 HubSpot 公司对象 | +| `metadata` | object | 操作元数据 | | `success` | boolean | 操作成功状态 | -| `output` | object | 创建的公司数据 | ### `hubspot_update_company` @@ -223,8 +236,9 @@ HubSpot CRM 的主要功能包括: | 参数 | 类型 | 描述 | | --------- | ---- | ----------- | +| `company` | object | 更新的 HubSpot 公司对象 | +| `metadata` | object | 操作元数据 | | `success` | boolean | 操作成功状态 | -| `output` | object | 更新的公司数据 | ### `hubspot_search_companies` @@ -245,8 +259,11 @@ HubSpot CRM 的主要功能包括: | 参数 | 类型 | 描述 | | --------- | ---- | ----------- | +| `companies` | array | 匹配的 HubSpot 公司对象的数组 | +| `total` | number | 匹配的公司总数 | +| `paging` | object | 分页信息 | +| `metadata` | object | 操作元数据 | | `success` | boolean | 操作成功状态 | -| `output` | object | 搜索结果 | ### `hubspot_list_deals` @@ -265,8 +282,10 @@ HubSpot CRM 的主要功能包括: | 参数 | 类型 | 描述 | | --------- | ---- | ----------- | -| `success` | 布尔值 | 操作成功状态 | -| `output` | 对象 | 交易数据 | +| `deals` | array | HubSpot 交易对象的数组 | +| `paging` | object | 分页信息 | +| `metadata` | object | 操作元数据 | +| `success` | boolean | 操作成功状态 | ## 注意事项 diff --git a/apps/docs/content/docs/zh/tools/pipedrive.mdx b/apps/docs/content/docs/zh/tools/pipedrive.mdx index 5c73d902a..bf63821e7 100644 --- a/apps/docs/content/docs/zh/tools/pipedrive.mdx +++ b/apps/docs/content/docs/zh/tools/pipedrive.mdx @@ -51,8 +51,9 @@ Pipedrive 的主要功能包括: | 参数 | 类型 | 描述 | | --------- | ---- | ----------- | +| `deals` | array | 来自 Pipedrive 的交易对象数组 | +| `metadata` | object | 操作元数据 | | `success` | boolean | 操作成功状态 | -| `output` | object | 交易数据和元数据 | ### `pipedrive_get_deal` @@ -68,8 +69,9 @@ Pipedrive 的主要功能包括: | 参数 | 类型 | 描述 | | --------- | ---- | ----------- | +| `deal` | object | 包含完整详细信息的交易对象 | +| `metadata` | object | 操作元数据 | | `success` | boolean | 操作成功状态 | -| `output` | object | 交易详情 | ### `pipedrive_create_deal` @@ -93,8 +95,9 @@ Pipedrive 的主要功能包括: | 参数 | 类型 | 描述 | | --------- | ---- | ----------- | +| `deal` | object | 创建的交易对象 | +| `metadata` | object | 操作元数据 | | `success` | boolean | 操作成功状态 | -| `output` | object | 创建的交易详情 | ### `pipedrive_update_deal` @@ -115,8 +118,9 @@ Pipedrive 的主要功能包括: | 参数 | 类型 | 描述 | | --------- | ---- | ----------- | +| `deal` | object | 更新的交易对象 | +| `metadata` | object | 操作元数据 | | `success` | boolean | 操作成功状态 | -| `output` | object | 更新的交易详情 | ### `pipedrive_get_files` @@ -135,8 +139,9 @@ Pipedrive 的主要功能包括: | 参数 | 类型 | 描述 | | --------- | ---- | ----------- | +| `files` | array | 来自 Pipedrive 的文件对象数组 | +| `metadata` | object | 操作元数据 | | `success` | boolean | 操作成功状态 | -| `output` | object | 文件数据 | ### `pipedrive_get_mail_messages` @@ -153,8 +158,9 @@ Pipedrive 的主要功能包括: | 参数 | 类型 | 描述 | | --------- | ---- | ----------- | +| `messages` | array | 来自 Pipedrive 邮箱的邮件线程对象数组 | +| `metadata` | object | 操作元数据 | | `success` | boolean | 操作成功状态 | -| `output` | object | 邮件线程数据 | ### `pipedrive_get_mail_thread` @@ -170,8 +176,9 @@ Pipedrive 的主要功能包括: | 参数 | 类型 | 描述 | | --------- | ---- | ----------- | +| `messages` | array | 邮件线程中的邮件消息对象数组 | +| `metadata` | object | 包含线程 ID 的操作元数据 | | `success` | boolean | 操作成功状态 | -| `output` | object | 邮件线程消息数据 | ### `pipedrive_get_pipelines` @@ -190,8 +197,9 @@ Pipedrive 的主要功能包括: | 参数 | 类型 | 描述 | | --------- | ---- | ----------- | +| `pipelines` | array | 来自 Pipedrive 的管道对象数组 | +| `metadata` | object | 操作元数据 | | `success` | boolean | 操作成功状态 | -| `output` | object | 管道数据 | ### `pipedrive_get_pipeline_deals` @@ -210,8 +218,9 @@ Pipedrive 的主要功能包括: | 参数 | 类型 | 描述 | | --------- | ---- | ----------- | +| `deals` | array | 管道中的交易对象数组 | +| `metadata` | object | 包含管道 ID 的操作元数据 | | `success` | boolean | 操作成功状态 | -| `output` | object | 管道交易数据 | ### `pipedrive_get_projects` @@ -229,8 +238,10 @@ Pipedrive 的主要功能包括: | 参数 | 类型 | 描述 | | --------- | ---- | ----------- | +| `projects` | array | 项目对象数组(列出所有项目时) | +| `project` | object | 单个项目对象(提供 project_id 时) | +| `metadata` | object | 操作元数据 | | `success` | boolean | 操作成功状态 | -| `output` | object | 项目数据或单个项目详情 | ### `pipedrive_create_project` @@ -249,8 +260,9 @@ Pipedrive 的主要功能包括: | 参数 | 类型 | 描述 | | --------- | ---- | ----------- | +| `project` | object | 创建的项目对象 | +| `metadata` | object | 操作元数据 | | `success` | boolean | 操作成功状态 | -| `output` | object | 创建的项目详情 | ### `pipedrive_get_activities` @@ -271,8 +283,9 @@ Pipedrive 的主要功能包括: | 参数 | 类型 | 描述 | | --------- | ---- | ----------- | +| `activities` | array | 来自 Pipedrive 的活动对象数组 | +| `metadata` | object | 操作元数据 | | `success` | boolean | 操作成功状态 | -| `output` | object | 活动数据 | ### `pipedrive_create_activity` @@ -296,8 +309,9 @@ Pipedrive 的主要功能包括: | 参数 | 类型 | 描述 | | --------- | ---- | ----------- | +| `activity` | object | 创建的活动对象 | +| `metadata` | object | 操作元数据 | | `success` | boolean | 操作成功状态 | -| `output` | object | 创建的活动详情 | ### `pipedrive_update_activity` @@ -319,8 +333,9 @@ Pipedrive 的主要功能包括: | 参数 | 类型 | 描述 | | --------- | ---- | ----------- | +| `activity` | object | 更新的活动对象 | +| `metadata` | object | 操作元数据 | | `success` | boolean | 操作成功状态 | -| `output` | object | 更新的活动详情 | ### `pipedrive_get_leads` @@ -341,8 +356,10 @@ Pipedrive 的主要功能包括: | 参数 | 类型 | 描述 | | --------- | ---- | ----------- | +| `leads` | array | 潜在客户对象数组(列出所有时) | +| `lead` | object | 单个潜在客户对象(提供 lead_id 时) | +| `metadata` | object | 操作元数据 | | `success` | boolean | 操作成功状态 | -| `output` | object | 潜在客户数据或单个潜在客户详情 | ### `pipedrive_create_lead` @@ -365,8 +382,9 @@ Pipedrive 的主要功能包括: | 参数 | 类型 | 描述 | | --------- | ---- | ----------- | +| `lead` | object | 创建的潜在客户对象 | +| `metadata` | object | 操作元数据 | | `success` | boolean | 操作成功状态 | -| `output` | object | 创建的潜在客户详情 | ### `pipedrive_update_lead` @@ -390,8 +408,9 @@ Pipedrive 的主要功能包括: | 参数 | 类型 | 描述 | | --------- | ---- | ----------- | +| `lead` | object | 更新的潜在客户对象 | +| `metadata` | object | 操作元数据 | | `success` | boolean | 操作成功状态 | -| `output` | object | 更新的潜在客户详情 | ### `pipedrive_delete_lead` @@ -407,8 +426,9 @@ Pipedrive 的主要功能包括: | 参数 | 类型 | 描述 | | --------- | ---- | ----------- | +| `data` | object | 删除确认数据 | +| `metadata` | object | 操作元数据 | | `success` | boolean | 操作成功状态 | -| `output` | object | 删除结果 | ## 注意事项 diff --git a/apps/docs/content/docs/zh/tools/pylon.mdx b/apps/docs/content/docs/zh/tools/pylon.mdx deleted file mode 100644 index d39431c3b..000000000 --- a/apps/docs/content/docs/zh/tools/pylon.mdx +++ /dev/null @@ -1,806 +0,0 @@ ---- -title: Pylon -description: 在 Pylon 中管理客户支持问题、账户、联系人、用户、团队和标签 ---- - -import { BlockInfoCard } from "@/components/ui/block-info-card" - - - -{/* MANUAL-CONTENT-START:intro */} -[Pylon](https://usepylon.com/) 是一个先进的客户支持和成功平台,旨在帮助您管理客户关系的各个方面——从支持问题到账户、联系人、用户、团队等。Pylon 通过丰富的 API 和全面的工具集,使支持和成功团队能够高效且程序化地运作。 - -在 Sim 中使用 Pylon,您可以: - -- **管理支持问题:** - - 列出、创建、获取、更新和删除支持问题,以实现高效的案例跟踪。 - - 搜索和延后问题,帮助代理专注并保持有序。 - - 处理问题关注者和外部问题,与内部和外部利益相关者无缝协作。 - -- **全面的账户管理:** - - 列出、创建、获取、更新和删除客户账户。 - - 以编程方式批量更新账户。 - - 搜索账户,快速找到与支持或外联相关的客户信息。 - -- **联系人管理:** - - 列出、创建、获取、更新、删除和搜索联系人——管理与您的账户相关的所有人。 - -- **用户和团队操作:** - - 列出、获取、更新和搜索 Pylon 工作区中的用户。 - - 列出、创建、获取和更新团队,以构建您的支持组织和工作流程。 - -- **标签和组织:** - - 列出、获取、创建、更新和删除标签,用于对问题、账户或联系人进行分类。 - -- **消息处理:** - - 直接从您的工作流程中编辑敏感消息内容,以确保隐私和合规性。 - -通过将 Pylon 工具集成到 Sim 中,您的代理可以自动化支持操作的各个方面: -- 在客户事件发生时自动打开、更新或分类新问题。 -- 在您的技术堆栈中保持账户和联系人数据的同步。 -- 使用标签和团队路由对话、处理升级并组织您的支持数据。 -- 确保敏感数据得到妥善管理,根据需要编辑消息。 - -Pylon 的端点提供了对客户问题和关系全生命周期管理的精细控制。无论是扩展支持服务台、推动主动客户成功,还是与其他系统集成,Sim 中的 Pylon 都能实现一流的 CRM 自动化——安全、灵活且可扩展。 -{/* MANUAL-CONTENT-END */} - -## 使用说明 - -将 Pylon 集成到工作流程中。管理问题(列表、创建、获取、更新、删除、搜索、延迟、关注者、外部问题)、账户(列表、创建、获取、更新、删除、批量更新、搜索)、联系人(列表、创建、获取、更新、删除、搜索)、用户(列表、获取、更新、搜索)、团队(列表、获取、创建、更新)、标签(列表、获取、创建、更新、删除)和消息(编辑)。 - -## 工具 - -### `pylon_list_issues` - -检索指定时间范围内的问题列表 - -#### 输入 - -| 参数 | 类型 | 必需 | 描述 | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | 是 | Pylon API 令牌 | -| `startTime` | string | 是 | RFC3339 格式的开始时间 \(例如:2024-01-01T00:00:00Z\) | -| `endTime` | string | 是 | RFC3339 格式的结束时间 \(例如:2024-01-31T23:59:59Z\) | -| `cursor` | string | 否 | 下一页结果的分页游标 | - -#### 输出 - -| 参数 | 类型 | 描述 | -| --------- | ---- | ----------- | -| `success` | boolean | 操作成功状态 | -| `output` | object | 问题列表 | - -### `pylon_create_issue` - -创建具有指定属性的新问题 - -#### 输入 - -| 参数 | 类型 | 必需 | 描述 | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | 是 | Pylon API 令牌 | -| `title` | string | 是 | 问题标题 | -| `bodyHtml` | string | 是 | HTML 格式的问题正文 | -| `accountId` | string | 否 | 与问题关联的账户 ID | -| `assigneeId` | string | 否 | 分配问题的用户 ID | -| `teamId` | string | 否 | 分配问题的团队 ID | -| `requesterId` | string | 否 | 请求者用户 ID(请求者邮箱的替代选项) | -| `requesterEmail` | string | 否 | 请求者邮箱地址(请求者 ID 的替代选项) | -| `priority` | string | 否 | 问题优先级 | -| `tags` | string | 否 | 逗号分隔的标签 ID | -| `customFields` | string | 否 | 作为 JSON 对象的自定义字段 | -| `attachmentUrls` | string | 否 | 逗号分隔的附件 URL | - -#### 输出 - -| 参数 | 类型 | 描述 | -| --------- | ---- | ----------- | -| `success` | boolean | 操作成功状态 | -| `output` | object | 创建的问题数据 | - -### `pylon_get_issue` - -通过 ID 获取特定问题 - -#### 输入 - -| 参数 | 类型 | 必需 | 描述 | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | 是 | Pylon API 令牌 | -| `issueId` | string | 是 | 要检索的问题 ID | - -#### 输出 - -| 参数 | 类型 | 描述 | -| --------- | ---- | ----------- | -| `success` | boolean | 操作成功状态 | -| `output` | object | 问题数据 | - -### `pylon_update_issue` - -更新现有问题 - -#### 输入 - -| 参数 | 类型 | 必需 | 描述 | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | 是 | Pylon API 令牌 | -| `issueId` | string | 是 | 要更新的问题 ID | -| `state` | string | 否 | 问题状态 | -| `assigneeId` | string | 否 | 分配问题的用户 ID | -| `teamId` | string | 否 | 分配问题的团队 ID | -| `tags` | string | 否 | 逗号分隔的标签 ID | -| `customFields` | string | 否 | 作为 JSON 对象的自定义字段 | -| `customerPortalVisible` | boolean | 否 | 问题是否在客户门户中可见 | -| `requesterId` | string | 否 | 请求者用户 ID | -| `accountId` | string | 否 | 与问题关联的账户 ID | - -#### 输出 - -| 参数 | 类型 | 描述 | -| --------- | ---- | ----------- | -| `success` | boolean | 操作成功状态 | -| `output` | object | 更新的问题数据 | - -### `pylon_delete_issue` - -通过 ID 删除问题 - -#### 输入 - -| 参数 | 类型 | 必需 | 描述 | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | 是 | Pylon API 令牌 | -| `issueId` | string | 是 | 要删除的问题 ID | - -#### 输出 - -| 参数 | 类型 | 描述 | -| --------- | ---- | ----------- | -| `success` | boolean | 操作成功状态 | -| `output` | object | 删除结果 | - -### `pylon_search_issues` - -使用筛选器查询问题 - -#### 输入 - -| 参数 | 类型 | 必需 | 描述 | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | 是 | Pylon API 令牌 | -| `filter` | string | 是 | 作为 JSON 字符串的筛选条件 | -| `cursor` | string | 否 | 下一页结果的分页游标 | -| `limit` | number | 否 | 要返回的最大结果数 | - -#### 输出 - -| 参数 | 类型 | 描述 | -| --------- | ---- | ----------- | -| `success` | boolean | 操作成功状态 | -| `output` | object | 搜索结果 | - -### `pylon_snooze_issue` - -推迟问题的可见性直到指定时间 - -#### 输入 - -| 参数 | 类型 | 必需 | 描述 | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | 是 | Pylon API 令牌 | -| `issueId` | string | 是 | 要推迟的问题 ID | -| `snoozeUntil` | string | 是 | 问题应重新出现的 RFC3339 时间戳 \(例如,2024-01-01T00:00:00Z\) | - -#### 输出 - -| 参数 | 类型 | 描述 | -| --------- | ---- | ----------- | -| `success` | boolean | 操作成功状态 | -| `output` | object | 延期问题数据 | - -### `pylon_list_issue_followers` - -获取特定问题的关注者列表 - -#### 输入 - -| 参数 | 类型 | 必需 | 描述 | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | 是 | Pylon API 令牌 | -| `issueId` | string | 是 | 问题的 ID | - -#### 输出 - -| 参数 | 类型 | 描述 | -| --------- | ---- | ----------- | -| `success` | boolean | 操作成功状态 | -| `output` | object | 关注者列表 | - -### `pylon_manage_issue_followers` - -添加或移除问题的关注者 - -#### 输入 - -| 参数 | 类型 | 必需 | 描述 | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | 是 | Pylon API 令牌 | -| `issueId` | string | 是 | 问题的 ID | -| `userIds` | string | 否 | 逗号分隔的用户 ID 列表,用于添加/移除 | -| `contactIds` | string | 否 | 逗号分隔的联系人 ID 列表,用于添加/移除 | -| `operation` | string | 否 | 要执行的操作:"add" 或 "remove" \(默认值:"add"\) | - -#### 输出 - -| 参数 | 类型 | 描述 | -| --------- | ---- | ----------- | -| `success` | boolean | 操作成功状态 | -| `output` | object | 更新后的关注者列表 | - -### `pylon_link_external_issue` - -将问题链接到外部系统问题 - -#### 输入 - -| 参数 | 类型 | 必需 | 描述 | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | 是 | Pylon API 令牌 | -| `issueId` | string | 是 | Pylon 问题的 ID | -| `externalIssueId` | string | 是 | 外部问题的 ID | -| `source` | string | 是 | 来源系统(例如:"jira", "linear", "github") | - -#### 输出 - -| 参数 | 类型 | 描述 | -| --------- | ---- | ----------- | -| `success` | boolean | 操作成功状态 | -| `output` | object | 已链接的外部问题数据 | - -### `pylon_list_accounts` - -检索账户的分页列表 - -#### 输入 - -| 参数 | 类型 | 必需 | 描述 | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | 是 | Pylon API 令牌 | -| `limit` | string | 否 | 要返回的账户数量(1-1000,默认 100) | -| `cursor` | string | 否 | 下一页结果的分页游标 | - -#### 输出 - -| 参数 | 类型 | 描述 | -| --------- | ---- | ----------- | -| `success` | boolean | 操作成功状态 | -| `output` | object | 账户列表 | - -### `pylon_create_account` - -使用指定属性创建新账户 - -#### 输入 - -| 参数 | 类型 | 必需 | 描述 | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | 是 | Pylon API 令牌 | -| `name` | string | 是 | 账户名称 | -| `domains` | string | 否 | 逗号分隔的域名列表 | -| `primaryDomain` | string | 否 | 账户的主域名 | -| `customFields` | string | 否 | 作为 JSON 对象的自定义字段 | -| `tags` | string | 否 | 逗号分隔的标签 ID | -| `channels` | string | 否 | 逗号分隔的频道 ID | -| `externalIds` | string | 否 | 逗号分隔的外部 ID | -| `ownerId` | string | 否 | 所有者用户 ID | -| `logoUrl` | string | 否 | 账户徽标的 URL | -| `subaccountIds` | string | 否 | 逗号分隔的子账户 ID | - -#### 输出 - -| 参数 | 类型 | 描述 | -| --------- | ---- | ----------- | -| `success` | boolean | 操作成功状态 | -| `output` | object | 创建的账户数据 | - -### `pylon_get_account` - -通过 ID 检索单个账户 - -#### 输入 - -| 参数 | 类型 | 必需 | 描述 | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | 是 | Pylon API 令牌 | -| `accountId` | string | 是 | 要检索的账户 ID | - -#### 输出 - -| 参数 | 类型 | 描述 | -| --------- | ---- | ----------- | -| `success` | boolean | 操作成功状态 | -| `output` | object | 账户数据 | - -### `pylon_update_account` - -使用新属性更新现有账户 - -#### 输入 - -| 参数 | 类型 | 必需 | 描述 | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | 是 | Pylon API 令牌 | -| `accountId` | string | 是 | 要更新的账户 ID | -| `name` | string | 否 | 账户名称 | -| `domains` | string | 否 | 逗号分隔的域名列表 | -| `primaryDomain` | string | 否 | 账户的主域名 | -| `customFields` | string | 否 | 作为 JSON 对象的自定义字段 | -| `tags` | string | 否 | 逗号分隔的标签 ID | -| `channels` | string | 否 | 逗号分隔的频道 ID | -| `externalIds` | string | 否 | 逗号分隔的外部 ID | -| `ownerId` | string | 否 | 所有者用户 ID | -| `logoUrl` | string | 否 | 账户标志的 URL | -| `subaccountIds` | string | 否 | 逗号分隔的子账户 ID | - -#### 输出 - -| 参数 | 类型 | 描述 | -| --------- | ---- | ----------- | -| `success` | boolean | 操作成功状态 | -| `output` | object | 更新的账户数据 | - -### `pylon_delete_account` - -通过 ID 删除账户 - -#### 输入 - -| 参数 | 类型 | 必需 | 描述 | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | 是 | Pylon API 令牌 | -| `accountId` | string | 是 | 要删除的账户 ID | - -#### 输出 - -| 参数 | 类型 | 描述 | -| --------- | ---- | ----------- | -| `success` | boolean | 操作成功状态 | -| `output` | object | 删除确认 | - -### `pylon_bulk_update_accounts` - -一次更新多个账户 - -#### 输入 - -| 参数 | 类型 | 必需 | 描述 | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | 是 | Pylon API 令牌 | -| `accountIds` | string | 是 | 逗号分隔的账户 ID 列表 | -| `customFields` | string | 否 | 自定义字段(JSON 对象) | -| `tags` | string | 否 | 逗号分隔的标签 ID | -| `ownerId` | string | 否 | 所有者用户 ID | -| `tagsApplyMode` | string | 否 | 标签应用模式:append_only、remove_only 或 replace | - -#### 输出 - -| 参数 | 类型 | 描述 | -| --------- | ---- | ----------- | -| `success` | boolean | 操作成功状态 | -| `output` | object | 批量更新的账户数据 | - -### `pylon_search_accounts` - -使用自定义筛选器搜索账户 - -#### 输入 - -| 参数 | 类型 | 必需 | 描述 | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | 是 | Pylon API 令牌 | -| `filter` | string | 是 | 以 JSON 字符串形式表示的筛选器,包含字段/操作符/值结构 | -| `limit` | string | 否 | 要返回的账户数量 \(1-1000,默认 100\) | -| `cursor` | string | 否 | 用于下一页结果的分页游标 | - -#### 输出 - -| 参数 | 类型 | 描述 | -| --------- | ---- | ----------- | -| `success` | boolean | 操作成功状态 | -| `output` | object | 搜索结果 | - -### `pylon_list_contacts` - -检索联系人列表 - -#### 输入 - -| 参数 | 类型 | 必需 | 描述 | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | 是 | Pylon API 令牌 | -| `cursor` | string | 否 | 用于下一页结果的分页游标 | -| `limit` | string | 否 | 要返回的最大联系人数量 | - -#### 输出 - -| 参数 | 类型 | 描述 | -| --------- | ---- | ----------- | -| `success` | boolean | 操作成功状态 | -| `output` | object | 联系人列表 | - -### `pylon_create_contact` - -创建具有指定属性的新联系人 - -#### 输入 - -| 参数 | 类型 | 必需 | 描述 | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | 是 | Pylon API 令牌 | -| `name` | string | 是 | 联系人姓名 | -| `email` | string | 否 | 联系人电子邮件地址 | -| `accountId` | string | 否 | 要与联系人关联的账户 ID | -| `accountExternalId` | string | 否 | 要与联系人关联的外部账户 ID | -| `avatarUrl` | string | 否 | 联系人头像图片的 URL | -| `customFields` | string | 否 | 以 JSON 对象形式表示的自定义字段 | -| `portalRole` | string | 否 | 联系人的门户角色 | - -#### 输出 - -| 参数 | 类型 | 描述 | -| --------- | ---- | ----------- | -| `success` | boolean | 操作成功状态 | -| `output` | object | 创建的联系人数据 | - -### `pylon_get_contact` - -通过 ID 检索特定联系人 - -#### 输入 - -| 参数 | 类型 | 必需 | 描述 | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | 是 | Pylon API 令牌 | -| `contactId` | string | 是 | 要检索的联系人 ID | -| `cursor` | string | 否 | 下一页结果的分页游标 | -| `limit` | string | 否 | 要返回的最大项目数 | - -#### 输出 - -| 参数 | 类型 | 描述 | -| --------- | ---- | ----------- | -| `success` | boolean | 操作成功状态 | -| `output` | object | 联系人数据 | - -### `pylon_update_contact` - -使用指定属性更新现有联系人 - -#### 输入 - -| 参数 | 类型 | 必需 | 描述 | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | 是 | Pylon API 令牌 | -| `contactId` | string | 是 | 要更新的联系人 ID | -| `name` | string | 否 | 联系人姓名 | -| `email` | string | 否 | 联系人电子邮件地址 | -| `accountId` | string | 否 | 要与联系人关联的账户 ID | -| `accountExternalId` | string | 否 | 要与联系人关联的外部账户 ID | -| `avatarUrl` | string | 否 | 联系人头像图片的 URL | -| `customFields` | string | 否 | 作为 JSON 对象的自定义字段 | -| `portalRole` | string | 否 | 联系人的门户角色 | - -#### 输出 - -| 参数 | 类型 | 描述 | -| --------- | ---- | ----------- | -| `success` | boolean | 操作成功状态 | -| `output` | object | 更新的联系人数据 | - -### `pylon_delete_contact` - -通过 ID 删除特定联系人 - -#### 输入 - -| 参数 | 类型 | 必需 | 描述 | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | 是 | Pylon API 令牌 | -| `contactId` | string | 是 | 要删除的联系人 ID | - -#### 输出 - -| 参数 | 类型 | 描述 | -| --------- | ---- | ----------- | -| `success` | boolean | 操作成功状态 | -| `output` | object | 删除操作结果 | - -### `pylon_search_contacts` - -使用筛选器搜索联系人 - -#### 输入 - -| 参数 | 类型 | 必需 | 描述 | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | 是 | Pylon API 令牌 | -| `filter` | string | 是 | 作为 JSON 对象的筛选器 | -| `limit` | string | 否 | 要返回的最大联系人数量 | -| `cursor` | string | 否 | 下一页结果的分页游标 | - -#### 输出 - -| 参数 | 类型 | 描述 | -| --------- | ---- | ----------- | -| `success` | boolean | 操作成功状态 | -| `output` | object | 搜索结果 | - -### `pylon_list_users` - -检索用户列表 - -#### 输入 - -| 参数 | 类型 | 必需 | 描述 | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | 是 | Pylon API 令牌 | - -#### 输出 - -| 参数 | 类型 | 描述 | -| --------- | ---- | ----------- | -| `success` | boolean | 操作成功状态 | -| `output` | object | 用户列表 | - -### `pylon_get_user` - -通过 ID 检索特定用户 - -#### 输入 - -| 参数 | 类型 | 必需 | 描述 | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | 是 | Pylon API 令牌 | -| `userId` | string | 是 | 要检索的用户 ID | - -#### 输出 - -| 参数 | 类型 | 描述 | -| --------- | ---- | ----------- | -| `success` | boolean | 操作成功状态 | -| `output` | object | 用户数据 | - -### `pylon_update_user` - -使用指定属性更新现有用户 - -#### 输入 - -| 参数 | 类型 | 必需 | 描述 | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | 是 | Pylon API 令牌 | -| `userId` | string | 是 | 要更新的用户 ID | -| `roleId` | string | 否 | 要分配给用户的角色 ID | -| `status` | string | 否 | 用户状态 | - -#### 输出 - -| 参数 | 类型 | 描述 | -| --------- | ---- | ----------- | -| `success` | boolean | 操作成功状态 | -| `output` | object | 更新的用户数据 | - -### `pylon_search_users` - -使用电子邮件字段的过滤器搜索用户 - -#### 输入 - -| 参数 | 类型 | 必需 | 描述 | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | 是 | Pylon API 令牌 | -| `filter` | string | 是 | 包含电子邮件字段的 JSON 对象过滤器 | -| `cursor` | string | 否 | 下一页结果的分页游标 | -| `limit` | string | 否 | 要返回的最大用户数 | - -#### 输出 - -| 参数 | 类型 | 描述 | -| --------- | ---- | ----------- | -| `success` | boolean | 操作成功状态 | -| `output` | object | 搜索结果 | - -### `pylon_list_teams` - -检索团队列表 - -#### 输入 - -| 参数 | 类型 | 必需 | 描述 | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | 是 | Pylon API 令牌 | - -#### 输出 - -| 参数 | 类型 | 描述 | -| --------- | ---- | ----------- | -| `success` | boolean | 操作成功状态 | -| `output` | object | 团队列表 | - -### `pylon_get_team` - -通过 ID 检索特定团队 - -#### 输入 - -| 参数 | 类型 | 必需 | 描述 | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | 是 | Pylon API 令牌 | -| `teamId` | string | 是 | 要检索的团队 ID | - -#### 输出 - -| 参数 | 类型 | 描述 | -| --------- | ---- | ----------- | -| `success` | boolean | 操作成功状态 | -| `output` | object | 团队数据 | - -### `pylon_create_team` - -使用指定属性创建新团队 - -#### 输入 - -| 参数 | 类型 | 必需 | 描述 | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | 是 | Pylon API 令牌 | -| `name` | string | 否 | 团队名称 | -| `userIds` | string | 否 | 以逗号分隔的用户 ID,用于添加为团队成员 | - -#### 输出 - -| 参数 | 类型 | 描述 | -| --------- | ---- | ----------- | -| `success` | boolean | 操作成功状态 | -| `output` | object | 创建的团队数据 | - -### `pylon_update_team` - -使用指定属性更新现有团队(userIds 将替换整个成员列表) - -#### 输入 - -| 参数 | 类型 | 必需 | 描述 | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | 是 | Pylon API 令牌 | -| `teamId` | string | 是 | 要更新的团队 ID | -| `name` | string | 否 | 团队名称 | -| `userIds` | string | 否 | 逗号分隔的用户 ID(替换整个团队成员列表) | - -#### 输出 - -| 参数 | 类型 | 描述 | -| --------- | ---- | ----------- | -| `success` | boolean | 操作成功状态 | -| `output` | object | 更新的团队数据 | - -### `pylon_list_tags` - -检索标签列表 - -#### 输入 - -| 参数 | 类型 | 必需 | 描述 | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | 是 | Pylon API 令牌 | - -#### 输出 - -| 参数 | 类型 | 描述 | -| --------- | ---- | ----------- | -| `success` | boolean | 操作成功状态 | -| `output` | object | 标签列表 | - -### `pylon_get_tag` - -通过 ID 检索特定标签 - -#### 输入 - -| 参数 | 类型 | 必需 | 描述 | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | 是 | Pylon API 令牌 | -| `tagId` | string | 是 | 要检索的标签 ID | - -#### 输出 - -| 参数 | 类型 | 描述 | -| --------- | ---- | ----------- | -| `success` | boolean | 操作成功状态 | -| `output` | object | 标签数据 | - -### `pylon_create_tag` - -使用指定属性创建一个新标签(objectType: account/issue/contact) - -#### 输入 - -| 参数 | 类型 | 必需 | 描述 | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | 是 | Pylon API 令牌 | -| `objectType` | string | 是 | 标签的对象类型 \(account, issue, 或 contact\) | -| `value` | string | 是 | 标签值/名称 | -| `hexColor` | string | 否 | 标签的十六进制颜色代码 \(例如:#FF5733\) | - -#### 输出 - -| 参数 | 类型 | 描述 | -| --------- | ---- | ----------- | -| `success` | boolean | 操作成功状态 | -| `output` | object | 创建的标签数据 | - -### `pylon_update_tag` - -使用指定属性更新现有标签 - -#### 输入 - -| 参数 | 类型 | 必需 | 描述 | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | 是 | Pylon API 令牌 | -| `tagId` | string | 是 | 要更新的标签 ID | -| `hexColor` | string | 否 | 标签的十六进制颜色代码 \(例如:#FF5733\) | -| `value` | string | 否 | 标签值/名称 | - -#### 输出 - -| 参数 | 类型 | 描述 | -| --------- | ---- | ----------- | -| `success` | boolean | 操作成功状态 | -| `output` | object | 更新的标签数据 | - -### `pylon_delete_tag` - -通过 ID 删除特定标签 - -#### 输入 - -| 参数 | 类型 | 必需 | 描述 | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | 是 | Pylon API 令牌 | -| `tagId` | string | 是 | 要删除的标签 ID | - -#### 输出 - -| 参数 | 类型 | 描述 | -| --------- | ---- | ----------- | -| `success` | boolean | 操作成功状态 | -| `output` | object | 删除操作结果 | - -### `pylon_redact_message` - -编辑问题中的特定消息 - -#### 输入 - -| 参数 | 类型 | 必需 | 描述 | -| --------- | ---- | -------- | ----------- | -| `apiToken` | string | 是 | Pylon API 令牌 | -| `issueId` | string | 是 | 包含消息的问题 ID | -| `messageId` | string | 是 | 要编辑的消息 ID | - -#### 输出 - -| 参数 | 类型 | 描述 | -| --------- | ---- | ----------- | -| `success` | boolean | 操作成功状态 | -| `output` | object | 编辑操作结果 | - -## 注意事项 - -- 类别:`tools` -- 类型:`pylon` diff --git a/apps/docs/content/docs/zh/tools/spotify.mdx b/apps/docs/content/docs/zh/tools/spotify.mdx new file mode 100644 index 000000000..7f03b0bde --- /dev/null +++ b/apps/docs/content/docs/zh/tools/spotify.mdx @@ -0,0 +1,1452 @@ +--- +title: Spotify +description: 搜索音乐、管理播放列表、控制播放并访问您的音乐库 +--- + +import { BlockInfoCard } from "@/components/ui/block-info-card" + + + +## 使用说明 + +将 Spotify 集成到您的工作流程中。搜索曲目、专辑、艺术家和播放列表。管理播放列表,访问您的音乐库,控制播放,浏览播客和有声书。 + +## 工具 + +### `spotify_search` + +在 Spotify 上搜索曲目、专辑、艺术家或播放列表。根据查询返回匹配的结果。 + +#### 输入 + +| 参数 | 类型 | 必需 | 描述 | +| --------- | ---- | -------- | ----------- | +| `query` | string | 是 | 搜索查询 \(例如:"Bohemian Rhapsody", "artist:Queen", "genre:rock"\) | +| `type` | string | 否 | 结果类型:track, album, artist, playlist 或逗号分隔 \(例如:"track,artist"\) | +| `limit` | number | 否 | 返回结果的最大数量 \(1-50\) | +| `offset` | number | 否 | 分页时返回的第一个结果的索引 | +| `market` | string | 否 | 用于过滤结果的 ISO 3166-1 alpha-2 国家代码 \(例如:"US", "GB"\) | + +#### 输出 + +| 参数 | 类型 | 描述 | +| --------- | ---- | ----------- | +| `tracks` | array | 匹配曲目的列表 | + +### `spotify_get_track` + +通过其 ID 获取 Spotify 上特定曲目的详细信息。 + +#### 输入 + +| 参数 | 类型 | 必需 | 描述 | +| --------- | ---- | -------- | ----------- | +| `trackId` | string | 是 | 曲目的 Spotify ID | +| `market` | string | 否 | 曲目可用性的 ISO 3166-1 alpha-2 国家代码 | + +#### 输出 + +| 参数 | 类型 | 描述 | +| --------- | ---- | ----------- | +| `id` | string | Spotify 曲目 ID | +| `name` | string | 曲目名称 | +| `artists` | array | 艺术家列表 | +| `album` | object | 专辑信息 | +| `duration_ms` | number | 曲目时长(毫秒) | +| `explicit` | boolean | 曲目是否包含显式内容 | +| `popularity` | number | 热度评分 \(0-100\) | +| `preview_url` | string | 30 秒预览的 URL | +| `external_url` | string | Spotify URL | +| `uri` | string | 曲目的 Spotify URI | + +### `spotify_get_tracks` + +通过曲目 ID(最多 50 个)获取 Spotify 上多个曲目的详细信息。 + +#### 输入 + +| 参数 | 类型 | 必需 | 描述 | +| --------- | ---- | -------- | ----------- | +| `trackIds` | string | 是 | 逗号分隔的 Spotify 曲目 ID 列表 \(最多 50 个\) | +| `market` | string | 否 | 曲目可用性的 ISO 3166-1 alpha-2 国家代码 | + +#### 输出 + +| 参数 | 类型 | 描述 | +| --------- | ---- | ----------- | +| `tracks` | array | 曲目列表 | + +### `spotify_get_album` + +通过专辑 ID 获取 Spotify 上专辑的详细信息,包括曲目列表。 + +#### 输入 + +| 参数 | 类型 | 必需 | 描述 | +| --------- | ---- | -------- | ----------- | +| `albumId` | string | 是 | 专辑的 Spotify ID | +| `market` | string | 否 | 曲目可用性的 ISO 3166-1 alpha-2 国家代码 | + +#### 输出 + +| 参数 | 类型 | 描述 | +| --------- | ---- | ----------- | +| `id` | string | Spotify 专辑 ID | +| `name` | string | 专辑名称 | +| `artists` | array | 艺术家列表 | +| `album_type` | string | 专辑类型 \(专辑、单曲、合辑\) | +| `total_tracks` | number | 曲目总数 | +| `release_date` | string | 发行日期 | +| `label` | string | 唱片公司 | +| `popularity` | number | 热度评分 \(0-100\) | +| `genres` | array | 流派列表 | +| `image_url` | string | 专辑封面图片 URL | +| `tracks` | array | 专辑中的曲目列表 | +| `external_url` | string | Spotify URL | + +### `spotify_get_albums` + +通过专辑 ID 获取多个专辑的详细信息。 + +#### 输入 + +| 参数 | 类型 | 是否必需 | 描述 | +| --------- | ---- | -------- | ----------- | +| `albumIds` | string | 是 | 逗号分隔的专辑 ID \(最多 20 个\) | +| `market` | string | 否 | 市场的 ISO 国家代码 | + +#### 输出 + +| 参数 | 类型 | 描述 | +| --------- | ---- | ----------- | +| `albums` | json | 专辑列表 | + +### `spotify_get_album_tracks` + +获取专辑中的曲目。 + +#### 输入 + +| 参数 | 类型 | 是否必需 | 描述 | +| --------- | ---- | -------- | ----------- | +| `albumId` | string | 是 | Spotify 专辑 ID | +| `limit` | number | 否 | 返回的曲目数量 \(1-50\) | +| `offset` | number | 否 | 返回的首个曲目的索引 | + +#### 输出 + +| 参数 | 类型 | 描述 | +| --------- | ---- | ----------- | +| `tracks` | json | 曲目列表 | +| `total` | number | 曲目总数 | +| `next` | string | 下一页的 URL | + +### `spotify_get_saved_albums` + +获取用户 + +#### 输入 + +| 参数 | 类型 | 必需 | 描述 | +| --------- | ---- | -------- | ----------- | +| `limit` | number | 否 | 要返回的专辑数量 \(1-50\) | +| `offset` | number | 否 | 要返回的第一个专辑的索引 | +| `market` | string | 否 | 市场的 ISO 国家代码 | + +#### 输出 + +| 参数 | 类型 | 描述 | +| --------- | ---- | ----------- | +| `albums` | json | 已保存专辑列表 | +| `total` | number | 已保存专辑总数 | +| `next` | string | 下一页的 URL | + +### `spotify_save_albums` + +将专辑保存到用户 + +#### 输入 + +| 参数 | 类型 | 必需 | 描述 | +| --------- | ---- | -------- | ----------- | +| `albumIds` | string | 是 | 逗号分隔的专辑 ID \(最多 20 个\) | + +#### 输出 + +| 参数 | 类型 | 描述 | +| --------- | ---- | ----------- | +| `success` | boolean | 是否已保存专辑 | + +### `spotify_remove_saved_albums` + +从用户中移除专辑 + +#### 输入 + +| 参数 | 类型 | 必需 | 描述 | +| --------- | ---- | -------- | ----------- | +| `albumIds` | string | 是 | 逗号分隔的专辑 ID \(最多 20 个\) | + +#### 输出 + +| 参数 | 类型 | 描述 | +| --------- | ---- | ----------- | +| `success` | 布尔值 | 是否移除了专辑 | + +### `spotify_check_saved_albums` + +检查专辑是否已保存到库中。 + +#### 输入 + +| 参数 | 类型 | 必需 | 描述 | +| --------- | ---- | -------- | ----------- | +| `albumIds` | 字符串 | 是 | 逗号分隔的专辑 ID(最多 20 个) | + +#### 输出 + +| 参数 | 类型 | 描述 | +| --------- | ---- | ----------- | +| `results` | JSON | 每个专辑的布尔值数组 | + +### `spotify_get_artist` + +通过 Spotify ID 获取艺术家的详细信息。 + +#### 输入 + +| 参数 | 类型 | 必需 | 描述 | +| --------- | ---- | -------- | ----------- | +| `artistId` | 字符串 | 是 | 艺术家的 Spotify ID | + +#### 输出 + +| 参数 | 类型 | 描述 | +| --------- | ---- | ----------- | +| `id` | 字符串 | Spotify 艺术家 ID | +| `name` | 字符串 | 艺术家名称 | +| `genres` | 数组 | 与艺术家相关的流派列表 | +| `popularity` | 数字 | 人气评分(0-100) | +| `followers` | 数字 | 关注者数量 | +| `image_url` | 字符串 | 艺术家图片 URL | +| `external_url` | 字符串 | Spotify URL | + +### `spotify_get_artists` + +通过 ID 获取多个艺术家的详细信息。 + +#### 输入 + +| 参数 | 类型 | 必需 | 描述 | +| --------- | ---- | -------- | ----------- | +| `artistIds` | 字符串 | 是 | 逗号分隔的艺术家 ID(最多 50 个) | + +#### 输出 + +| 参数 | 类型 | 描述 | +| --------- | ---- | ----------- | +| `artists` | json | 艺术家列表 | + +### `spotify_get_artist_albums` + +获取 Spotify 上某艺术家的专辑。可以按专辑类型筛选。 + +#### 输入 + +| 参数 | 类型 | 必需 | 描述 | +| --------- | ---- | -------- | ----------- | +| `artistId` | string | 是 | 艺术家的 Spotify ID | +| `include_groups` | string | 否 | 按专辑类型筛选:album, single, appears_on, compilation(逗号分隔) | +| `limit` | number | 否 | 返回的专辑最大数量(1-50) | +| `offset` | number | 否 | 返回的第一个专辑的索引 | +| `market` | string | 否 | ISO 3166-1 alpha-2 国家代码 | + +#### 输出 + +| 参数 | 类型 | 描述 | +| --------- | ---- | ----------- | +| `albums` | array | 艺术家 | + +### `spotify_get_artist_top_tracks` + +获取 Spotify 上某艺术家的前 10 首最受欢迎的曲目。 + +#### 输入 + +| 参数 | 类型 | 必需 | 描述 | +| --------- | ---- | -------- | ----------- | +| `artistId` | string | 是 | 艺术家的 Spotify ID | +| `market` | string | 否 | ISO 3166-1 alpha-2 国家代码(此端点必需) | + +#### 输出 + +| 参数 | 类型 | 描述 | +| --------- | ---- | ----------- | +| `tracks` | array | 艺术家 | + +### `spotify_follow_artists` + +关注一个或多个艺术家。 + +#### 输入 + +| 参数 | 类型 | 必需 | 描述 | +| --------- | ---- | -------- | ----------- | +| `artistIds` | string | 是 | 逗号分隔的艺术家 ID 列表(最多 50 个) | + +#### 输出 + +| 参数 | 类型 | 描述 | +| --------- | ---- | ----------- | +| `success` | boolean | 艺术家是否成功关注 | + +### `spotify_unfollow_artists` + +取消关注一个或多个艺术家。 + +#### 输入 + +| 参数 | 类型 | 必需 | 描述 | +| --------- | ---- | -------- | ----------- | +| `artistIds` | string | 是 | 逗号分隔的艺术家 ID 列表(最多 50 个) | + +#### 输出 + +| 参数 | 类型 | 描述 | +| --------- | ---- | ----------- | +| `success` | boolean | 艺术家是否成功取消关注 | + +### `spotify_get_followed_artists` + +获取用户 + +#### 输入 + +| 参数 | 类型 | 必需 | 描述 | +| --------- | ---- | -------- | ----------- | +| `limit` | number | 否 | 返回的艺术家数量(1-50) | +| `after` | string | 否 | 分页游标(上次请求的最后一个艺术家 ID) | + +#### 输出 + +| 参数 | 类型 | 描述 | +| --------- | ---- | ----------- | +| `artists` | json | 已关注艺术家列表 | +| `total` | number | 已关注艺术家的总数 | +| `next` | string | 下一页的游标 | + +### `spotify_check_following` + +检查用户是否关注艺术家或用户。 + +#### 输入 + +| 参数 | 类型 | 必需 | 描述 | +| --------- | ---- | -------- | ----------- | +| `type` | string | 是 | 检查的类型:“artist” 或 “user” | +| `ids` | string | 是 | 逗号分隔的艺术家或用户 ID 列表(最多 50 个) | + +#### 输出 + +| 参数 | 类型 | 描述 | +| --------- | ---- | ----------- | +| `results` | json | 每个 ID 的布尔值数组 | + +### `spotify_get_show` + +获取播客节目的详细信息。 + +#### 输入 + +| 参数 | 类型 | 必需 | 描述 | +| --------- | ---- | -------- | ----------- | +| `showId` | string | 是 | Spotify 节目 ID | +| `market` | string | 否 | 市场的 ISO 国家代码 | + +#### 输出 + +| 参数 | 类型 | 描述 | +| --------- | ---- | ----------- | +| `id` | string | 节目 ID | +| `name` | string | 节目名称 | +| `description` | string | 节目描述 | +| `publisher` | string | 发布者名称 | +| `total_episodes` | number | 总集数 | +| `explicit` | boolean | 是否包含显式内容 | +| `languages` | json | 语言 | +| `image_url` | string | 封面图片 URL | +| `external_url` | string | Spotify URL | + +### `spotify_get_shows` + +获取多个播客节目的详细信息。 + +#### 输入 + +| 参数 | 类型 | 必需 | 描述 | +| --------- | ---- | -------- | ----------- | +| `showIds` | string | 是 | 逗号分隔的节目 ID(最多 50 个) | +| `market` | string | 否 | 市场的 ISO 国家代码 | + +#### 输出 + +| 参数 | 类型 | 描述 | +| --------- | ---- | ----------- | +| `shows` | json | 节目列表 | + +### `spotify_get_show_episodes` + +从播客节目中获取剧集。 + +#### 输入 + +| 参数 | 类型 | 必需 | 描述 | +| --------- | ---- | -------- | ----------- | +| `showId` | string | 是 | Spotify 节目 ID | +| `limit` | number | 否 | 要返回的剧集数量 \(1-50\) | +| `offset` | number | 否 | 要返回的第一个剧集的索引 | +| `market` | string | 否 | 市场的 ISO 国家代码 | + +#### 输出 + +| 参数 | 类型 | 描述 | +| --------- | ---- | ----------- | +| `episodes` | json | 剧集列表 | +| `total` | number | 剧集总数 | +| `next` | string | 下一页的 URL | + +### `spotify_get_saved_shows` + +获取用户 + +#### 输入 + +| 参数 | 类型 | 必需 | 描述 | +| --------- | ---- | -------- | ----------- | +| `limit` | number | 否 | 要返回的节目数量 \(1-50\) | +| `offset` | number | 否 | 要返回的第一个节目的索引 | + +#### 输出 + +| 参数 | 类型 | 描述 | +| --------- | ---- | ----------- | +| `shows` | json | 已保存节目的列表 | +| `total` | number | 已保存节目的总数 | +| `next` | string | 下一页的 URL | + +### `spotify_save_shows` + +将播客节目保存到用户 + +#### 输入 + +| 参数 | 类型 | 必需 | 描述 | +| --------- | ---- | -------- | ----------- | +| `showIds` | string | 是 | 逗号分隔的节目 ID \(最多 50 个\) | + +#### 输出 + +| 参数 | 类型 | 描述 | +| --------- | ---- | ----------- | +| `success` | boolean | 是否保存了节目 | + +### `spotify_remove_saved_shows` + +从用户中移除播客节目 + +#### 输入 + +| 参数 | 类型 | 必需 | 描述 | +| --------- | ---- | -------- | ----------- | +| `showIds` | string | 是 | 逗号分隔的节目 ID(最多 50 个) | + +#### 输出 + +| 参数 | 类型 | 描述 | +| --------- | ---- | ----------- | +| `success` | boolean | 是否移除了节目 | + +### `spotify_check_saved_shows` + +检查节目是否已保存在库中。 + +#### 输入 + +| 参数 | 类型 | 必需 | 描述 | +| --------- | ---- | -------- | ----------- | +| `showIds` | string | 是 | 逗号分隔的节目 ID(最多 50 个) | + +#### 输出 + +| 参数 | 类型 | 描述 | +| --------- | ---- | ----------- | +| `results` | json | 每个节目的布尔值数组 | + +### `spotify_get_episode` + +获取播客剧集的详细信息。 + +#### 输入 + +| 参数 | 类型 | 必需 | 描述 | +| --------- | ---- | -------- | ----------- | +| `episodeId` | string | 是 | Spotify 剧集 ID | +| `market` | string | 否 | 市场的 ISO 国家代码 | + +#### 输出 + +| 参数 | 类型 | 描述 | +| --------- | ---- | ----------- | +| `id` | string | 剧集 ID | +| `name` | string | 剧集名称 | +| `description` | string | 剧集描述 | +| `duration_ms` | number | 时长(毫秒) | +| `release_date` | string | 发布日期 | +| `explicit` | boolean | 是否包含显式内容 | +| `show` | json | 父节目信息 | +| `image_url` | string | 封面图片 URL | +| `external_url` | string | Spotify URL | + +### `spotify_get_episodes` + +获取多个播客剧集的详细信息。 + +#### 输入 + +| 参数 | 类型 | 必需 | 描述 | +| --------- | ---- | -------- | ----------- | +| `episodeIds` | string | 是 | 逗号分隔的剧集 ID(最多 50 个) | +| `market` | string | 否 | 市场的 ISO 国家代码 | + +#### 输出 + +| 参数 | 类型 | 描述 | +| --------- | ---- | ----------- | +| `episodes` | json | 剧集列表 | + +### `spotify_get_saved_episodes` + +获取用户 + +#### 输入 + +| 参数 | 类型 | 必需 | 描述 | +| --------- | ---- | -------- | ----------- | +| `limit` | number | 否 | 要返回的剧集数量(1-50) | +| `offset` | number | 否 | 要返回的第一个剧集的索引 | +| `market` | string | 否 | 市场的 ISO 国家代码 | + +#### 输出 + +| 参数 | 类型 | 描述 | +| --------- | ---- | ----------- | +| `episodes` | json | 已保存的剧集列表 | +| `total` | number | 已保存剧集总数 | +| `next` | string | 下一页的 URL | + +### `spotify_save_episodes` + +将播客剧集保存到用户 + +#### 输入 + +| 参数 | 类型 | 必需 | 描述 | +| --------- | ---- | -------- | ----------- | +| `episodeIds` | string | 是 | 逗号分隔的剧集 ID(最多 50 个) | + +#### 输出 + +| 参数 | 类型 | 描述 | +| --------- | ---- | ----------- | +| `success` | boolean | 剧集是否已保存 | + +### `spotify_remove_saved_episodes` + +从用户中移除播客剧集 + +#### 输入 + +| 参数 | 类型 | 必需 | 描述 | +| --------- | ---- | -------- | ----------- | +| `episodeIds` | string | 是 | 逗号分隔的剧集 ID(最多 50 个) | + +#### 输出 + +| 参数 | 类型 | 描述 | +| --------- | ---- | ----------- | +| `success` | boolean | 是否已移除剧集 | + +### `spotify_check_saved_episodes` + +检查剧集是否已保存到库中。 + +#### 输入 + +| 参数 | 类型 | 必需 | 描述 | +| --------- | ---- | -------- | ----------- | +| `episodeIds` | string | 是 | 逗号分隔的剧集 ID(最多 50 个) | + +#### 输出 + +| 参数 | 类型 | 描述 | +| --------- | ---- | ----------- | +| `results` | json | 每个剧集的布尔值数组 | + +### `spotify_get_audiobook` + +获取有声书的详细信息。 + +#### 输入 + +| 参数 | 类型 | 必需 | 描述 | +| --------- | ---- | -------- | ----------- | +| `audiobookId` | string | 是 | Spotify 有声书 ID | +| `market` | string | 否 | 市场的 ISO 国家代码 | + +#### 输出 + +| 参数 | 类型 | 描述 | +| --------- | ---- | ----------- | +| `id` | string | 有声书 ID | +| `name` | string | 有声书名称 | +| `authors` | json | 作者 | +| `narrators` | json | 旁白 | +| `publisher` | string | 出版商 | +| `description` | string | 描述 | +| `total_chapters` | number | 总章节数 | +| `languages` | json | 语言 | +| `image_url` | string | 封面图片 URL | +| `external_url` | string | Spotify URL | + +### `spotify_get_audiobooks` + +获取多个有声书的详细信息。 + +#### 输入 + +| 参数 | 类型 | 必需 | 描述 | +| --------- | ---- | -------- | ----------- | +| `audiobookIds` | string | 是 | 逗号分隔的有声书 ID(最多 50 个) | +| `market` | string | 否 | 市场的 ISO 国家代码 | + +#### 输出 + +| 参数 | 类型 | 描述 | +| --------- | ---- | ----------- | +| `audiobooks` | json | 有声书列表 | + +### `spotify_get_audiobook_chapters` + +获取有声书的章节。 + +#### 输入 + +| 参数 | 类型 | 必需 | 描述 | +| --------- | ---- | -------- | ----------- | +| `audiobookId` | string | 是 | Spotify 有声书 ID | +| `limit` | number | 否 | 返回的章节数量(1-50) | +| `offset` | number | 否 | 返回的第一个章节的索引 | +| `market` | string | 否 | 市场的 ISO 国家代码 | + +#### 输出 + +| 参数 | 类型 | 描述 | +| --------- | ---- | ----------- | +| `chapters` | json | 章节列表 | +| `total` | number | 总章节数 | +| `next` | string | 下一页的 URL | + +### `spotify_get_saved_audiobooks` + +获取用户 + +#### 输入 + +| 参数 | 类型 | 必需 | 描述 | +| --------- | ---- | -------- | ----------- | +| `limit` | number | 否 | 返回的有声书数量(1-50) | +| `offset` | number | 否 | 返回的第一个有声书的索引 | + +#### 输出 + +| 参数 | 类型 | 描述 | +| --------- | ---- | ----------- | +| `audiobooks` | json | 已保存有声书的列表 | +| `total` | number | 已保存有声书的总数 | +| `next` | string | 下一页的 URL | + +### `spotify_save_audiobooks` + +将有声书保存到用户 + +#### 输入 + +| 参数 | 类型 | 必需 | 描述 | +| --------- | ---- | -------- | ----------- | +| `audiobookIds` | string | 是 | 逗号分隔的有声书 ID(最多 50 个) | + +#### 输出 + +| 参数 | 类型 | 描述 | +| --------- | ---- | ----------- | +| `success` | boolean | 是否已保存有声书 | + +### `spotify_remove_saved_audiobooks` + +从用户中移除有声书 + +#### 输入 + +| 参数 | 类型 | 必需 | 描述 | +| --------- | ---- | -------- | ----------- | +| `audiobookIds` | string | 是 | 逗号分隔的有声书 ID(最多 50 个) | + +#### 输出 + +| 参数 | 类型 | 描述 | +| --------- | ---- | ----------- | +| `success` | boolean | 是否已移除有声书 | + +### `spotify_check_saved_audiobooks` + +检查有声书是否已保存到库中。 + +#### 输入 + +| 参数 | 类型 | 必需 | 描述 | +| --------- | ---- | -------- | ----------- | +| `audiobookIds` | string | 是 | 逗号分隔的有声书 ID(最多 50 个) | + +#### 输出 + +| 参数 | 类型 | 描述 | +| --------- | ---- | ----------- | +| `results` | json | 每本有声书的布尔值数组 | + +### `spotify_get_playlist` + +通过其 ID 获取 Spotify 上播放列表的详细信息。 + +#### 输入 + +| 参数 | 类型 | 必需 | 描述 | +| --------- | ---- | -------- | ----------- | +| `playlistId` | string | 是 | 播放列表的 Spotify ID | +| `market` | string | 否 | 用于曲目可用性的 ISO 3166-1 alpha-2 国家代码 | + +#### 输出 + +| 参数 | 类型 | 描述 | +| --------- | ---- | ----------- | +| `id` | string | Spotify 播放列表 ID | +| `name` | string | 播放列表名称 | +| `description` | string | 播放列表描述 | +| `public` | boolean | 播放列表是否公开 | +| `collaborative` | boolean | 播放列表是否为协作 | +| `owner` | object | 播放列表所有者信息 | +| `image_url` | string | 播放列表封面图片 URL | +| `total_tracks` | number | 曲目总数 | +| `snapshot_id` | string | 用于版本控制的播放列表快照 ID | +| `external_url` | string | Spotify URL | + +### `spotify_get_playlist_tracks` + +获取 Spotify 播放列表中的曲目。 + +#### 输入 + +| 参数 | 类型 | 必需 | 描述 | +| --------- | ---- | -------- | ----------- | +| `playlistId` | string | 是 | 播放列表的 Spotify ID | +| `limit` | number | 否 | 返回的曲目最大数量 \(1-100\) | +| `offset` | number | 否 | 返回的第一个曲目的索引 | +| `market` | string | 否 | 用于曲目可用性的 ISO 3166-1 alpha-2 国家代码 | + +#### 输出 + +| 参数 | 类型 | 描述 | +| --------- | ---- | ----------- | +| `tracks` | array | 播放列表中的曲目列表 | + +### `spotify_get_playlist_cover` + +获取播放列表 + +#### 输入 + +| 参数 | 类型 | 必需 | 描述 | +| --------- | ---- | -------- | ----------- | +| `playlistId` | string | 是 | Spotify 播放列表 ID | + +#### 输出 + +| 参数 | 类型 | 描述 | +| --------- | ---- | ----------- | +| `images` | json | 封面图片列表 | + +### `spotify_get_user_playlists` + +获取当前用户 + +#### 输入 + +| 参数 | 类型 | 必需 | 描述 | +| --------- | ---- | -------- | ----------- | +| `limit` | number | 否 | 要返回的最大播放列表数量 \(1-50\) | +| `offset` | number | 否 | 要返回的第一个播放列表的索引 | + +#### 输出 + +| 参数 | 类型 | 描述 | +| --------- | ---- | ----------- | +| `playlists` | array | 用户 | + +### `spotify_create_playlist` + +为当前用户在 Spotify 上创建一个新播放列表。 + +#### 输入 + +| 参数 | 类型 | 必需 | 描述 | +| --------- | ---- | -------- | ----------- | +| `name` | string | 是 | 新播放列表的名称 | +| `description` | string | 否 | 播放列表的描述 | +| `public` | boolean | 否 | 播放列表是否应为公开 | +| `collaborative` | boolean | 否 | 播放列表是否应为协作 \(需要公开设置为 false\) | + +#### 输出 + +| 参数 | 类型 | 描述 | +| --------- | ---- | ----------- | +| `id` | string | Spotify 播放列表 ID | +| `name` | string | 播放列表名称 | +| `description` | string | 播放列表描述 | +| `public` | boolean | 播放列表是否公开 | +| `collaborative` | boolean | 是否可协作 | +| `snapshot_id` | string | 播放列表快照 ID | +| `external_url` | string | Spotify URL | + +### `spotify_update_playlist` + +更新播放列表 + +#### 输入 + +| 参数 | 类型 | 必需 | 描述 | +| --------- | ---- | -------- | ----------- | +| `playlistId` | string | 是 | Spotify 播放列表 ID | +| `name` | string | 否 | 播放列表的新名称 | +| `description` | string | 否 | 播放列表的新描述 | +| `public` | boolean | 否 | 播放列表是否应公开 | + +#### 输出 + +| 参数 | 类型 | 描述 | +| --------- | ---- | ----------- | +| `success` | boolean | 更新是否成功 | + +### `spotify_add_playlist_cover` + +为播放列表上传自定义封面图片。图片必须为 JPEG 格式且小于 256KB。 + +#### 输入 + +| 参数 | 类型 | 必需 | 描述 | +| --------- | ---- | -------- | ----------- | +| `playlistId` | string | 是 | Spotify 播放列表 ID | +| `imageBase64` | string | 是 | Base64 编码的 JPEG 图片(最大 256KB) | + +#### 输出 + +| 参数 | 类型 | 描述 | +| --------- | ---- | ----------- | +| `success` | boolean | 上传是否成功 | + +### `spotify_add_tracks_to_playlist` + +将一首或多首曲目添加到 Spotify 播放列表。 + +#### 输入 + +| 参数 | 类型 | 必需 | 描述 | +| --------- | ---- | -------- | ----------- | +| `playlistId` | string | 是 | 播放列表的 Spotify ID | +| `uris` | string | 是 | 逗号分隔的 Spotify URI \(例如:"spotify:track:xxx,spotify:track:yyy"\) | +| `position` | number | 否 | 插入曲目的位置 \(从 0 开始\)。如果省略,曲目将追加到末尾。 | + +#### 输出 + +| 参数 | 类型 | 描述 | +| --------- | ---- | ----------- | +| `snapshot_id` | string | 修改后新的播放列表快照 ID | + +### `spotify_remove_tracks_from_playlist` + +从 Spotify 播放列表中移除一首或多首曲目。 + +#### 输入 + +| 参数 | 类型 | 必需 | 描述 | +| --------- | ---- | -------- | ----------- | +| `playlistId` | string | 是 | 播放列表的 Spotify ID | +| `uris` | string | 是 | 要移除的逗号分隔的 Spotify URI \(例如:"spotify:track:xxx,spotify:track:yyy"\) | + +#### 输出 + +| 参数 | 类型 | 描述 | +| --------- | ---- | ----------- | +| `snapshot_id` | string | 修改后新的播放列表快照 ID | + +### `spotify_reorder_playlist_items` + +将曲目移动到播放列表中的不同位置。 + +#### 输入 + +| 参数 | 类型 | 必需 | 描述 | +| --------- | ---- | -------- | ----------- | +| `playlistId` | string | 是 | Spotify 播放列表 ID | +| `range_start` | number | 是 | 要重新排序的项目的起始索引 | +| `insert_before` | number | 是 | 插入项目之前的索引 | +| `range_length` | number | 否 | 要重新排序的项目数量 | +| `snapshot_id` | string | 否 | 用于并发控制的播放列表快照 ID | + +#### 输出 + +| 参数 | 类型 | 描述 | +| --------- | ---- | ----------- | +| `snapshot_id` | string | 新的播放列表快照 ID | + +### `spotify_replace_playlist_items` + +用新曲目替换播放列表中的所有项目。 + +#### 输入 + +| 参数 | 类型 | 必需 | 描述 | +| --------- | ---- | -------- | ----------- | +| `playlistId` | string | 是 | Spotify 播放列表 ID | +| `uris` | string | 是 | 逗号分隔的 Spotify URI(最多 100 个) | + +#### 输出 + +| 参数 | 类型 | 描述 | +| --------- | ---- | ----------- | +| `snapshot_id` | string | 新的播放列表快照 ID | + +### `spotify_follow_playlist` + +关注(保存)播放列表。 + +#### 输入 + +| 参数 | 类型 | 必需 | 描述 | +| --------- | ---- | -------- | ----------- | +| `playlistId` | string | 是 | Spotify 播放列表 ID | +| `public` | boolean | 否 | 播放列表是否会出现在公开播放列表中 | + +#### 输出 + +| 参数 | 类型 | 描述 | +| --------- | ---- | ----------- | +| `success` | boolean | 是否关注成功 | + +### `spotify_unfollow_playlist` + +取消关注(取消保存)播放列表。 + +#### 输入 + +| 参数 | 类型 | 必需 | 描述 | +| --------- | ---- | -------- | ----------- | +| `playlistId` | string | 是 | Spotify 播放列表 ID | + +#### 输出 + +| 参数 | 类型 | 描述 | +| --------- | ---- | ----------- | +| `success` | boolean | 是否取消关注成功 | + +### `spotify_check_playlist_followers` + +检查用户是否关注某个播放列表。 + +#### 输入 + +| 参数 | 类型 | 必需 | 描述 | +| --------- | ---- | -------- | ----------- | +| `playlistId` | string | 是 | Spotify 播放列表 ID | +| `userIds` | string | 是 | 逗号分隔的用户 ID(最多 5 个) | + +#### 输出 + +| 参数 | 类型 | 描述 | +| --------- | ---- | ----------- | +| `results` | json | 每个用户的布尔值数组 | + +### `spotify_get_current_user` + +获取当前用户 + +#### 输入 + +| 参数 | 类型 | 必需 | 描述 | +| --------- | ---- | -------- | ----------- | + +#### 输出 + +| 参数 | 类型 | 描述 | +| --------- | ---- | ----------- | +| `id` | string | Spotify 用户 ID | +| `display_name` | string | 显示名称 | +| `email` | string | 电子邮件地址 | +| `country` | string | 国家代码 | +| `product` | string | 订阅级别(免费,付费)| +| `followers` | number | 关注者数量 | +| `image_url` | string | 个人资料图片 URL | +| `external_url` | string | Spotify 个人资料 URL | + +### `spotify_get_user_profile` + +获取用户 + +#### 输入 + +| 参数 | 类型 | 必需 | 描述 | +| --------- | ---- | -------- | ----------- | +| `userId` | string | 是 | Spotify 用户 ID | + +#### 输出 + +| 参数 | 类型 | 描述 | +| --------- | ---- | ----------- | +| `id` | string | 用户 ID | +| `display_name` | string | 显示名称 | +| `followers` | number | 关注者数量 | +| `image_url` | string | 个人资料图片 URL | +| `external_url` | string | Spotify URL | + +### `spotify_get_top_tracks` + +获取当前用户 + +#### 输入 + +| 参数 | 类型 | 必需 | 描述 | +| --------- | ---- | -------- | ----------- | +| `time_range` | string | 否 | 时间范围:short_term(约4周)、medium_term(约6个月)、long_term(年) | +| `limit` | number | 否 | 返回的曲目数量(1-50) | +| `offset` | number | 否 | 返回的第一个曲目的索引 | + +#### 输出 + +| 参数 | 类型 | 描述 | +| --------- | ---- | ----------- | +| `tracks` | array | 用户 | + +### `spotify_get_top_artists` + +获取当前用户 + +#### 输入 + +| 参数 | 类型 | 必需 | 描述 | +| --------- | ---- | -------- | ----------- | +| `time_range` | string | 否 | 时间范围:short_term(约4周)、medium_term(约6个月)、long_term(年) | +| `limit` | number | 否 | 返回的艺术家数量(1-50) | +| `offset` | number | 否 | 返回的第一个艺术家的索引 | + +#### 输出 + +| 参数 | 类型 | 描述 | +| --------- | ---- | ----------- | +| `artists` | array | 用户 | + +### `spotify_get_saved_tracks` + +获取当前用户 + +#### 输入 + +| 参数 | 类型 | 必需 | 描述 | +| --------- | ---- | -------- | ----------- | +| `limit` | number | 否 | 返回的曲目数量(1-50) | +| `offset` | number | 否 | 返回的第一个曲目的索引 | +| `market` | string | 否 | ISO 3166-1 alpha-2 国家代码 | + +#### 输出 + +| 参数 | 类型 | 描述 | +| --------- | ---- | ----------- | +| `tracks` | array | 用户 | + +### `spotify_save_tracks` + +将曲目保存到当前用户 + +#### 输入 + +| 参数 | 类型 | 必需 | 描述 | +| --------- | ---- | -------- | ----------- | +| `trackIds` | string | 是 | 逗号分隔的 Spotify 曲目 ID(最多 50 个) | + +#### 输出 + +| 参数 | 类型 | 描述 | +| --------- | ---- | ----------- | +| `success` | boolean | 曲目是否成功保存 | + +### `spotify_remove_saved_tracks` + +从用户中移除曲目 + +#### 输入 + +| 参数 | 类型 | 必需 | 描述 | +| --------- | ---- | -------- | ----------- | +| `trackIds` | string | 是 | 逗号分隔的曲目 ID(最多 50 个) | + +#### 输出 + +| 参数 | 类型 | 描述 | +| --------- | ---- | ----------- | +| `success` | boolean | 曲目是否成功移除 | + +### `spotify_check_saved_tracks` + +检查一个或多个曲目是否已保存到用户 + +#### 输入 + +| 参数 | 类型 | 必需 | 描述 | +| --------- | ---- | -------- | ----------- | +| `trackIds` | string | 是 | 逗号分隔的曲目 ID(最多 50 个) | + +#### 输出 + +| 参数 | 类型 | 描述 | +| --------- | ---- | ----------- | +| `results` | json | 包含保存状态的曲目 ID 数组 | +| `all_saved` | boolean | 是否所有曲目都已保存 | +| `none_saved` | boolean | 是否没有曲目被保存 | + +### `spotify_get_recently_played` + +获取用户 + +#### 输入 + +| 参数 | 类型 | 必需 | 描述 | +| --------- | ---- | -------- | ----------- | +| `limit` | number | 否 | 返回的曲目数量 \(1-50\) | +| `after` | number | 否 | Unix 时间戳(毫秒)。返回此游标之后的项目。 | +| `before` | number | 否 | Unix 时间戳(毫秒)。返回此游标之前的项目。 | + +#### 输出 + +| 参数 | 类型 | 描述 | +| --------- | ---- | ----------- | +| `items` | array | 最近播放的曲目 | + +### `spotify_get_new_releases` + +获取 Spotify 中推荐的新专辑列表。 + +#### 输入 + +| 参数 | 类型 | 必需 | 描述 | +| --------- | ---- | -------- | ----------- | +| `country` | string | 否 | ISO 3166-1 alpha-2 国家代码 \(例如:"US", "GB"\) | +| `limit` | number | 否 | 返回的专辑数量 \(1-50\) | +| `offset` | number | 否 | 返回的第一个专辑的索引 | + +#### 输出 + +| 参数 | 类型 | 描述 | +| --------- | ---- | ----------- | +| `albums` | json | 新专辑列表 | +| `total` | number | 新专辑的总数 | +| `next` | string | 下一页的 URL | + +### `spotify_get_categories` + +获取 Spotify 中用于标记项目的浏览类别列表。 + +#### 输入 + +| 参数 | 类型 | 必需 | 描述 | +| --------- | ---- | -------- | ----------- | +| `country` | string | 否 | ISO 3166-1 alpha-2 国家代码 \(例如:"US", "GB"\) | +| `locale` | string | 否 | 区域代码 \(例如:"en_US", "es_MX"\) | +| `limit` | number | 否 | 返回的类别数量 \(1-50\) | + +#### 输出 + +| 参数 | 类型 | 描述 | +| --------- | ---- | ----------- | +| `categories` | json | 浏览类别列表 | +| `total` | number | 类别总数 | + +### `spotify_get_markets` + +获取 Spotify 可用的市场列表。 + +#### 输入 + +| 参数 | 类型 | 必需 | 描述 | +| --------- | ---- | -------- | ----------- | + +#### 输出 + +| 参数 | 类型 | 描述 | +| --------- | ---- | ----------- | +| `markets` | json | ISO 国家代码列表 | + +### `spotify_get_playback_state` + +获取当前播放状态,包括设备、曲目和进度。 + +#### 输入 + +| 参数 | 类型 | 必需 | 描述 | +| --------- | ---- | -------- | ----------- | +| `market` | string | 否 | ISO 3166-1 alpha-2 国家代码 | + +#### 输出 + +| 参数 | 类型 | 描述 | +| --------- | ---- | ----------- | +| `is_playing` | boolean | 播放是否处于活动状态 | +| `device` | object | 活动设备信息 | +| `progress_ms` | number | 进度(毫秒) | +| `currently_playing_type` | string | 播放内容的类型 | +| `shuffle_state` | boolean | 是否启用了随机播放 | +| `repeat_state` | string | 循环模式(off, track, context) | +| `track` | object | 当前播放的曲目 | + +### `spotify_get_currently_playing` + +获取用户 + +#### 输入 + +| 参数 | 类型 | 必需 | 描述 | +| --------- | ---- | -------- | ----------- | +| `market` | string | 否 | 市场的 ISO 国家代码 | + +#### 输出 + +| 参数 | 类型 | 描述 | +| --------- | ---- | ----------- | +| `is_playing` | boolean | 播放是否处于活动状态 | +| `progress_ms` | number | 当前曲目位置(毫秒) | +| `track` | json | 当前播放的曲目 | + +### `spotify_get_devices` + +获取用户 + +#### 输入 + +| 参数 | 类型 | 必需 | 描述 | +| --------- | ---- | -------- | ----------- | + +#### 输出 + +| 参数 | 类型 | 描述 | +| --------- | ---- | ----------- | +| `devices` | array | 可用的播放设备 | + +### `spotify_get_queue` + +获取用户 + +#### 输入 + +| 参数 | 类型 | 必需 | 描述 | +| --------- | ---- | -------- | ----------- | + +#### 输出 + +| 参数 | 类型 | 描述 | +| --------- | ---- | ----------- | +| `currently_playing` | json | 当前播放的曲目 | +| `queue` | json | 队列中的即将播放曲目 | + +### `spotify_play` + +在 Spotify 上开始或恢复播放。可以播放特定的曲目、专辑或播放列表。 + +#### 输入 + +| 参数 | 类型 | 必需 | 描述 | +| --------- | ---- | -------- | ----------- | +| `device_id` | string | 否 | 要播放的设备 ID。如果未提供,则在活动设备上播放。 | +| `context_uri` | string | 否 | 专辑、艺术家或播放列表的 Spotify URI(例如:"spotify:album:xxx") | +| `uris` | string | 否 | 逗号分隔的曲目 URI(例如:"spotify:track:xxx,spotify:track:yyy") | +| `offset` | number | 否 | 开始播放的上下文位置(从 0 开始的索引) | +| `position_ms` | number | 否 | 从曲目中的位置开始播放(以毫秒为单位) | + +#### 输出 + +| 参数 | 类型 | 描述 | +| --------- | ---- | ----------- | +| `success` | 布尔值 | 播放是否成功启动 | + +### `spotify_pause` + +暂停 Spotify 上的播放。 + +#### 输入 + +| 参数 | 类型 | 必需 | 描述 | +| --------- | ---- | -------- | ----------- | +| `device_id` | 字符串 | 否 | 要暂停的设备 ID。如果未提供,则暂停活动设备。 | + +#### 输出 + +| 参数 | 类型 | 描述 | +| --------- | ---- | ----------- | +| `success` | 布尔值 | 播放是否已暂停 | + +### `spotify_skip_next` + +跳到 Spotify 上的下一首曲目。 + +#### 输入 + +| 参数 | 类型 | 必需 | 描述 | +| --------- | ---- | -------- | ----------- | +| `device_id` | 字符串 | 否 | 设备 ID。如果未提供,则使用活动设备。 | + +#### 输出 + +| 参数 | 类型 | 描述 | +| --------- | ---- | ----------- | +| `success` | 布尔值 | 跳过是否成功 | + +### `spotify_skip_previous` + +跳到 Spotify 上的上一首曲目。 + +#### 输入 + +| 参数 | 类型 | 必需 | 描述 | +| --------- | ---- | -------- | ----------- | +| `device_id` | 字符串 | 否 | 设备 ID。如果未提供,则使用活动设备。 | + +#### 输出 + +| 参数 | 类型 | 描述 | +| --------- | ---- | ----------- | +| `success` | 布尔值 | 跳过是否成功 | + +### `spotify_seek` + +跳到当前播放曲目中的某个位置。 + +#### 输入 + +| 参数 | 类型 | 必需 | 描述 | +| --------- | ---- | -------- | ----------- | +| `position_ms` | number | 是 | 要跳转到的位置(以毫秒为单位) | +| `device_id` | string | 否 | 目标设备 ID | + +#### 输出 + +| 参数 | 类型 | 描述 | +| --------- | ---- | ----------- | +| `success` | boolean | 是否成功跳转 | + +### `spotify_add_to_queue` + +将曲目添加到用户 + +#### 输入 + +| 参数 | 类型 | 必需 | 描述 | +| --------- | ---- | -------- | ----------- | +| `uri` | string | 是 | 要添加的曲目的 Spotify URI \(例如:"spotify:track:xxx"\) | +| `device_id` | string | 否 | 设备 ID。如果未提供,则使用活动设备。 | + +#### 输出 + +| 参数 | 类型 | 描述 | +| --------- | ---- | ----------- | +| `success` | boolean | 是否将曲目添加到队列 | + +### `spotify_set_volume` + +设置 Spotify 的播放音量。 + +#### 输入 + +| 参数 | 类型 | 必需 | 描述 | +| --------- | ---- | -------- | ----------- | +| `volume_percent` | number | 是 | 音量级别 \(0 到 100\) | +| `device_id` | string | 否 | 设备 ID。如果未提供,则使用活动设备。 | + +#### 输出 + +| 参数 | 类型 | 描述 | +| --------- | ---- | ----------- | +| `success` | boolean | 是否设置了音量 | + +### `spotify_set_repeat` + +设置播放的重复模式。 + +#### 输入 + +| 参数 | 类型 | 必需 | 描述 | +| --------- | ---- | -------- | ----------- | +| `state` | string | 是 | 重复模式:"off"、"track" 或 "context" | +| `device_id` | string | 否 | 目标设备 ID | + +#### 输出 + +| 参数 | 类型 | 描述 | +| --------- | ---- | ----------- | +| `success` | boolean | 是否成功设置了重复模式 | + +### `spotify_set_shuffle` + +打开或关闭随机播放。 + +#### 输入 + +| 参数 | 类型 | 必需 | 描述 | +| --------- | ---- | -------- | ----------- | +| `state` | boolean | 是 | true 表示打开随机播放,false 表示关闭 | +| `device_id` | string | 否 | 目标设备 ID | + +#### 输出 + +| 参数 | 类型 | 描述 | +| --------- | ---- | ----------- | +| `success` | boolean | 是否成功设置了随机播放 | + +### `spotify_transfer_playback` + +将播放转移到其他设备。 + +#### 输入 + +| 参数 | 类型 | 必需 | 描述 | +| --------- | ---- | -------- | ----------- | +| `device_id` | string | 是 | 要转移播放的目标设备 ID | +| `play` | boolean | 否 | 是否在新设备上开始播放 | + +#### 输出 + +| 参数 | 类型 | 描述 | +| --------- | ---- | ----------- | +| `success` | boolean | 是否成功转移播放 | + +## 注意 + +- 类别:`tools` +- 类型:`spotify` diff --git a/apps/docs/content/docs/zh/tools/sqs.mdx b/apps/docs/content/docs/zh/tools/sqs.mdx new file mode 100644 index 000000000..e5ed5a678 --- /dev/null +++ b/apps/docs/content/docs/zh/tools/sqs.mdx @@ -0,0 +1,63 @@ +--- +title: Amazon SQS +description: 连接到 Amazon SQS +--- + +import { BlockInfoCard } from "@/components/ui/block-info-card" + + + +{/* MANUAL-CONTENT-START:intro */} +[Amazon Simple Queue Service (SQS)](https://aws.amazon.com/sqs/) 是一项完全托管的消息队列服务,可帮助您解耦和扩展微服务、分布式系统和无服务器应用程序。SQS 消除了与管理和操作面向消息的中间件相关的复杂性和开销,使开发人员能够专注于差异化工作。 + +使用 Amazon SQS,您可以: + +- **发送消息**:将消息发布到队列以进行异步处理 +- **解耦应用程序**:实现系统组件之间的松耦合 +- **扩展工作负载**:处理可变工作负载,无需预置基础设施 +- **确保可靠性**:内置冗余和高可用性 +- **支持 FIFO 队列**:保持严格的消息顺序和精确的一次性处理 + +在 Sim 中,SQS 集成使您的代理能够安全且以编程方式将消息发送到 Amazon SQS 队列。支持的操作包括: + +- **发送消息**:将消息发送到 SQS 队列,并为 FIFO 队列提供可选的消息组 ID 和去重 ID + +此集成允许您的代理自动化消息发送工作流,无需人工干预。通过将 Sim 与 Amazon SQS 连接,您可以构建代理,在工作流中将消息发布到队列,而无需处理队列基础设施或连接。 +{/* MANUAL-CONTENT-END */} + +## 使用说明 + +将 Amazon SQS 集成到工作流中。可以将消息发送到 SQS 队列。 + +## 工具 + +### `sqs_send` + +向 Amazon SQS 队列发送消息 + +#### 输入 + +| 参数 | 类型 | 必需 | 描述 | +| --------- | ---- | -------- | ----------- | +| `region` | string | 是 | AWS 区域 \(例如,us-east-1\) | +| `accessKeyId` | string | 是 | AWS 访问密钥 ID | +| `secretAccessKey` | string | 是 | AWS 秘密访问密钥 | +| `queueUrl` | string | 是 | 队列 URL | +| `data` | object | 是 | 要发送的消息正文 | +| `messageGroupId` | string | 否 | 消息组 ID \(可选\) | +| `messageDeduplicationId` | string | 否 | 消息去重 ID \(可选\) | + +#### 输出 + +| 参数 | 类型 | 描述 | +| --------- | ---- | ----------- | +| `message` | string | 操作状态消息 | +| `id` | string | 消息 ID | + +## 注意事项 + +- 类别: `tools` +- 类型: `sqs` diff --git a/apps/docs/content/docs/zh/tools/stagehand.mdx b/apps/docs/content/docs/zh/tools/stagehand.mdx index 3d3f43721..6f84fc855 100644 --- a/apps/docs/content/docs/zh/tools/stagehand.mdx +++ b/apps/docs/content/docs/zh/tools/stagehand.mdx @@ -1,6 +1,6 @@ --- -title: Stagehand Extract -description: 从网站提取数据 +title: Stagehand +description: 网页自动化和数据提取 --- import { BlockInfoCard } from "@/components/ui/block-info-card" @@ -11,20 +11,27 @@ import { BlockInfoCard } from "@/components/ui/block-info-card" /> {/* MANUAL-CONTENT-START:intro */} -[Stagehand](https://stagehand.com) 是一款工具,可通过 Browserbase 和 OpenAI 从网页中提取结构化数据。 +[Stagehand](https://stagehand.com) 是一款工具,可以通过 Browserbase 和现代 LLMs(如 OpenAI 或 Anthropic)实现从网页中提取结构化数据以及自主网页自动化。 -使用 Stagehand,您可以: +Stagehand 在 Sim 中提供了两项主要功能: -- **提取结构化数据**:通过 Browserbase 和 OpenAI 从网页中提取结构化数据 -- **将数据保存到数据库**:将提取的数据保存到数据库中 -- **自动化工作流程**:自动化工作流程以从网页中提取数据 +- **stagehand_extract**:从单个网页中提取结构化数据。您可以指定所需内容(一个模式),AI 会从页面中以该格式检索并解析数据。这非常适合在您明确知道需要什么信息以及从哪里获取时,用于提取列表、字段或对象。 -在 Sim 中,Stagehand 集成使您的代理能够通过 Browserbase 和 OpenAI 从网页中提取结构化数据。这为数据提取、数据分析和数据集成等强大的自动化场景提供了可能。您的代理可以从网页中提取结构化数据,将提取的数据保存到数据库中,并自动化工作流程以提取数据。此集成弥合了 AI 工作流程与数据管理系统之间的差距,实现了无缝的数据提取和集成。通过将 Sim 与 Stagehand 连接,您可以自动化数据提取流程,维护最新的信息库,生成报告,并智能地组织信息——这一切都通过您的智能代理完成。 +- **stagehand_agent**:运行一个自主的网页代理,能够完成多步骤任务,与元素交互,在页面之间导航,并返回结构化结果。这更加灵活:代理可以执行登录、搜索、填写表单、从多个地方收集数据,并根据请求的模式输出最终结果。 + +**关键区别:** + +- *stagehand_extract* 是一个快速的“从这个页面提取这些数据”的操作。它最适合直接的、一步完成的提取任务。 +- *stagehand_agent* 执行复杂的、多步骤的自主网页任务,例如导航、搜索,甚至交易,并可以根据您的指示和可选的模式动态提取数据。 + +在实际应用中,当您知道需要什么以及在哪里时,请使用 **stagehand_extract**;当您需要一个机器人思考并执行交互式工作流程时,请使用 **stagehand_agent**。 + +通过集成 Stagehand,Sim 代理可以在网页上自动化数据收集、分析和工作流程执行:更新数据库、组织信息以及生成自定义报告——无缝且自主地完成。 {/* MANUAL-CONTENT-END */} ## 使用说明 -将 Stagehand 集成到工作流程中。可以从网页中提取结构化数据。需要 API 密钥。 +将 Stagehand 集成到工作流程中。可以从网页中提取结构化数据,或运行自主代理执行任务。 ## 工具 @@ -38,14 +45,37 @@ import { BlockInfoCard } from "@/components/ui/block-info-card" | --------- | ---- | -------- | ----------- | | `url` | string | 是 | 要提取数据的网页 URL | | `instruction` | string | 是 | 提取的指令 | -| `apiKey` | string | 是 | 用于提取的 OpenAI API 密钥 \(Stagehand 所需\) | +| `provider` | string | 否 | 要使用的 AI 提供商:openai 或 anthropic | +| `apiKey` | string | 是 | 所选提供商的 API 密钥 | | `schema` | json | 是 | 定义要提取数据结构的 JSON 架构 | #### 输出 | 参数 | 类型 | 描述 | | --------- | ---- | ----------- | -| `data` | object | 提取的与提供的模式匹配的结构化数据 | +| `data` | object | 符合提供架构的提取结构化数据 | + +### `stagehand_agent` + +运行自主网页代理以完成任务并提取结构化数据 + +#### 输入 + +| 参数 | 类型 | 必需 | 描述 | +| --------- | ---- | -------- | ----------- | +| `startUrl` | string | 是 | 启动代理的网页 URL | +| `task` | string | 是 | 在网站上完成的任务或目标 | +| `variables` | json | 否 | 任务中可替换的可选变量(格式:\{key: value\})。在任务中使用 %key% 引用 | +| `format` | string | 否 | 无描述 | +| `provider` | string | 否 | 要使用的 AI 提供商:openai 或 anthropic | +| `apiKey` | string | 是 | 所选提供商的 API 密钥 | +| `outputSchema` | json | 否 | 定义代理应返回数据结构的可选 JSON 架构 | + +#### 输出 + +| 参数 | 类型 | 描述 | +| --------- | ---- | ----------- | +| `agentResult` | object | Stagehand 代理执行的结果 | ## 注意事项 diff --git a/apps/docs/content/docs/zh/tools/stagehand_agent.mdx b/apps/docs/content/docs/zh/tools/stagehand_agent.mdx deleted file mode 100644 index e279a66f8..000000000 --- a/apps/docs/content/docs/zh/tools/stagehand_agent.mdx +++ /dev/null @@ -1,59 +0,0 @@ ---- -title: Stagehand Agent -description: 自主网页浏览代理 ---- - -import { BlockInfoCard } from "@/components/ui/block-info-card" - - - -{/* MANUAL-CONTENT-START:intro */} -[Stagehand](https://www.stagehand.dev/) 是一个自主的网页代理平台,使 AI 系统能够像人类一样浏览和与网站交互。它为自动化复杂的网页任务提供了强大的解决方案,无需定制代码或浏览器自动化脚本。 - -使用 Stagehand,您可以: - -- **自动化网页导航**:使 AI 能够浏览网站、点击链接、填写表单并与网页元素交互 -- **提取结构化数据**:从网站收集特定信息并以结构化、可用的格式呈现 -- **完成复杂工作流程**:在不同网站和网页应用程序之间执行多步骤任务 -- **处理身份验证**:导航登录流程并维护跨网站的会话 -- **处理动态内容**:与 JavaScript 密集型网站和单页应用程序交互 -- **保持上下文感知**:在导航时跟踪当前状态和历史记录 -- **生成详细报告**:接收所采取操作和收集数据的全面日志 - -在 Sim 中,Stagehand 集成使您的代理能够无缝地与基于网页的系统交互,作为其工作流程的一部分。这允许复杂的自动化场景,将您的 AI 代理与网络上广泛的信息和功能连接起来。您的代理可以搜索信息、与网页应用程序交互、从网站提取数据,并将这些能力融入其决策过程中。通过将 Sim 与 Stagehand 连接,您可以创建超越基于 API 集成的代理,使其能够像人类一样浏览网页——填写表单、点击按钮、阅读内容并提取有价值的信息,从而更高效地完成任务。 -{/* MANUAL-CONTENT-END */} - -## 使用说明 - -将 Stagehand Agent 集成到工作流程中。可以浏览网页并执行任务。需要 API 密钥。 - -## 工具 - -### `stagehand_agent` - -运行一个自主的网页代理来完成任务并提取结构化数据 - -#### 输入 - -| 参数 | 类型 | 必需 | 描述 | -| --------- | ---- | -------- | ----------- | -| `startUrl` | string | 是 | 启动代理的网页 URL | -| `task` | string | 是 | 在网站上完成的任务或实现的目标 | -| `variables` | json | 否 | 替代任务中的可选变量(格式:\{key: value\})。在任务中使用 %key% 引用 | -| `format` | string | 否 | 无描述 | -| `apiKey` | string | 是 | 用于代理执行的 OpenAI API 密钥(Stagehand 必需) | -| `outputSchema` | json | 否 | 定义代理应返回的数据结构的可选 JSON 架构 | - -#### 输出 - -| 参数 | 类型 | 描述 | -| --------- | ---- | ----------- | -| `agentResult` | object | Stagehand 代理执行的结果 | - -## 注意 - -- 类别:`tools` -- 类型:`stagehand_agent` diff --git a/apps/docs/content/docs/zh/tools/trello.mdx b/apps/docs/content/docs/zh/tools/trello.mdx index 27f641d10..5c8338ae3 100644 --- a/apps/docs/content/docs/zh/tools/trello.mdx +++ b/apps/docs/content/docs/zh/tools/trello.mdx @@ -45,10 +45,8 @@ import { BlockInfoCard } from "@/components/ui/block-info-card" | 参数 | 类型 | 描述 | | --------- | ---- | ----------- | -| `success` | boolean | 操作是否成功 | | `lists` | array | 包含 id、name、closed、pos 和 idBoard 的列表对象数组 | | `count` | number | 返回的列表数量 | -| `error` | string | 如果操作失败的错误信息 | ### `trello_list_cards` @@ -65,10 +63,8 @@ import { BlockInfoCard } from "@/components/ui/block-info-card" | 参数 | 类型 | 描述 | | --------- | ---- | ----------- | -| `success` | boolean | 操作是否成功 | -| `cards` | array | 包含 id、name、desc、url、board/list IDs、labels 和到期日期的卡片对象数组 | +| `cards` | array | 包含 id、name、desc、url、看板/列表 ID、标签和到期日期的卡片对象数组 | | `count` | number | 返回的卡片数量 | -| `error` | string | 如果操作失败的错误信息 | ### `trello_create_card` @@ -90,9 +86,7 @@ import { BlockInfoCard } from "@/components/ui/block-info-card" | 参数 | 类型 | 描述 | | --------- | ---- | ----------- | -| `success` | boolean | 卡片是否创建成功 | | `card` | object | 创建的卡片对象,包含 id、name、desc、url 和其他属性 | -| `error` | string | 如果操作失败,返回错误信息 | ### `trello_update_card` @@ -114,9 +108,7 @@ import { BlockInfoCard } from "@/components/ui/block-info-card" | 参数 | 类型 | 描述 | | --------- | ---- | ----------- | -| `success` | boolean | 卡片是否更新成功 | | `card` | object | 更新的卡片对象,包含 id、name、desc、url 和其他属性 | -| `error` | string | 如果操作失败,返回错误信息 | ### `trello_get_actions` @@ -135,10 +127,8 @@ import { BlockInfoCard } from "@/components/ui/block-info-card" | 参数 | 类型 | 描述 | | --------- | ---- | ----------- | -| `success` | boolean | 操作是否成功 | -| `actions` | array | 包含类型、日期、成员和数据的操作对象数组 | +| `actions` | array | 包含 type、date、member 和 data 的操作对象数组 | | `count` | number | 返回的操作数量 | -| `error` | string | 如果操作失败,返回的错误信息 | ### `trello_add_comment` @@ -155,9 +145,7 @@ import { BlockInfoCard } from "@/components/ui/block-info-card" | 参数 | 类型 | 描述 | | --------- | ---- | ----------- | -| `success` | boolean | 评论是否成功添加 | -| `comment` | object | 创建的评论对象,包含 id、text、date 和 member creator | -| `error` | string | 如果操作失败,返回的错误信息 | +| `comment` | object | 创建的评论对象,包含 id、text、date 和创建者信息 | ## 注意事项 diff --git a/apps/docs/content/docs/zh/tools/typeform.mdx b/apps/docs/content/docs/zh/tools/typeform.mdx index f1e545453..1e79963c2 100644 --- a/apps/docs/content/docs/zh/tools/typeform.mdx +++ b/apps/docs/content/docs/zh/tools/typeform.mdx @@ -48,25 +48,9 @@ import { BlockInfoCard } from "@/components/ui/block-info-card" | 参数 | 类型 | 描述 | | --------- | ---- | ----------- | -| `total_items` | number | 响应/表单总数 | -| `page_count` | number | 总页数 | -| `items` | json | 响应/表单项目数组 | -| `id` | string | 表单唯一标识符 | -| `title` | string | 表单标题 | -| `type` | string | 表单类型 | -| `created_at` | string | 表单创建的 ISO 时间戳 | -| `last_updated_at` | string | 上次更新的 ISO 时间戳 | -| `settings` | json | 表单设置对象 | -| `theme` | json | 主题配置对象 | -| `workspace` | json | 工作区信息 | -| `fields` | json | 表单字段/问题数组 | -| `thankyou_screens` | json | 感谢页面数组 | -| `_links` | json | 相关资源链接 | -| `deleted` | boolean | 表单是否成功删除 | -| `message` | string | 删除确认消息 | -| `fileUrl` | string | 下载文件的 URL | -| `contentType` | string | 文件内容类型 | -| `filename` | string | 文件名 | +| `total_items` | number | 响应的总数 | +| `page_count` | number | 可用页面的总数 | +| `items` | array | 包含 response_id、submitted_at、answers 和 metadata 的响应对象数组 | ### `typeform_files` @@ -126,9 +110,9 @@ import { BlockInfoCard } from "@/components/ui/block-info-card" | 参数 | 类型 | 描述 | | --------- | ---- | ----------- | -| `total_items` | number | 帐户中表单的总数 | +| `total_items` | number | 账户中的表单总数 | | `page_count` | number | 可用页面的总数 | -| `items` | array | 表单对象的数组 | +| `items` | array | 包含 id、title、created_at、last_updated_at、settings、theme 和 _links 的表单对象数组 | ### `typeform_get_form` @@ -147,12 +131,14 @@ import { BlockInfoCard } from "@/components/ui/block-info-card" | --------- | ---- | ----------- | | `id` | string | 表单唯一标识符 | | `title` | string | 表单标题 | -| `type` | string | 表单类型 \(表单、测验等\) | -| `created_at` | string | 表单创建的 ISO 时间戳 | -| `last_updated_at` | string | 上次更新的 ISO 时间戳 | +| `type` | string | 表单类型 \(form, quiz 等\) | | `settings` | object | 表单设置,包括语言、进度条等 | -| `theme` | object | 主题配置,包括颜色、字体和设计设置 | -| `workspace` | object | 工作区信息 | +| `theme` | object | 主题引用 | +| `workspace` | object | 工作区引用 | +| `fields` | array | 表单字段/问题数组 | +| `welcome_screens` | array | 欢迎页面数组 | +| `thankyou_screens` | array | 感谢页面数组 | +| `_links` | object | 包括公共表单 URL 在内的相关资源链接 | ### `typeform_create_form` @@ -177,13 +163,8 @@ import { BlockInfoCard } from "@/components/ui/block-info-card" | `id` | string | 创建的表单唯一标识符 | | `title` | string | 表单标题 | | `type` | string | 表单类型 | -| `created_at` | string | 表单创建的 ISO 时间戳 | -| `last_updated_at` | string | 最后更新的 ISO 时间戳 | -| `settings` | object | 表单设置 | -| `theme` | object | 应用的主题配置 | -| `workspace` | object | 工作区信息 | | `fields` | array | 创建的表单字段数组 | -| `_links` | object | 相关资源链接 | +| `_links` | object | 包括公共表单 URL 在内的相关资源链接 | ### `typeform_update_form` @@ -204,13 +185,12 @@ import { BlockInfoCard } from "@/components/ui/block-info-card" | `id` | string | 更新的表单唯一标识符 | | `title` | string | 表单标题 | | `type` | string | 表单类型 | -| `created_at` | string | 表单创建的 ISO 时间戳 | -| `last_updated_at` | string | 最后更新的 ISO 时间戳 | | `settings` | object | 表单设置 | -| `theme` | object | 主题配置 | -| `workspace` | object | 工作区信息 | +| `theme` | object | 主题引用 | +| `workspace` | object | 工作区引用 | | `fields` | array | 表单字段数组 | -| `thankyou_screens` | array | 感谢页面数组 | +| `welcome_screens` | array | 欢迎屏幕数组 | +| `thankyou_screens` | array | 感谢屏幕数组 | | `_links` | object | 相关资源链接 | ### `typeform_delete_form` diff --git a/apps/docs/content/docs/zh/tools/zep.mdx b/apps/docs/content/docs/zh/tools/zep.mdx index 3f022d7b1..1a864df3d 100644 --- a/apps/docs/content/docs/zh/tools/zep.mdx +++ b/apps/docs/content/docs/zh/tools/zep.mdx @@ -94,10 +94,7 @@ import { BlockInfoCard } from "@/components/ui/block-info-card" | 参数 | 类型 | 描述 | | --------- | ---- | ----------- | -| `context` | 字符串 | 上下文字符串(摘要或基本) | -| `facts` | 数组 | 提取的事实 | -| `entities` | 数组 | 提取的实体 | -| `summary` | 字符串 | 会话摘要 | +| `context` | string | 上下文字符串(摘要或基本模式) | ### `zep_get_messages` @@ -137,9 +134,9 @@ import { BlockInfoCard } from "@/components/ui/block-info-card" | 参数 | 类型 | 描述 | | --------- | ---- | ----------- | -| `context` | string | 添加消息后的更新上下文 | -| `messageIds` | array | 添加的消息 UUID 数组 | | `threadId` | string | 线程 ID | +| `added` | boolean | 消息是否成功添加 | +| `messageIds` | array | 添加的消息 UUID 数组 | ### `zep_add_user` @@ -209,7 +206,7 @@ import { BlockInfoCard } from "@/components/ui/block-info-card" | 参数 | 类型 | 描述 | | --------- | ---- | ----------- | | `threads` | array | 此用户的线程对象数组 | -| `userId` | string | 用户 ID | +| `totalCount` | number | 返回的线程总数 | ## 注意 diff --git a/apps/docs/i18n.lock b/apps/docs/i18n.lock index b740d582f..5cf9a4ed6 100644 --- a/apps/docs/i18n.lock +++ b/apps/docs/i18n.lock @@ -477,7 +477,7 @@ checksums: content/11: 371d0e46b4bd2c23f559b8bc112f6955 content/12: f86b4f5f2c68f43bb30c31455e3be9b6 content/13: bcadfc362b69078beee0088e5936c98b - content/14: a29319a7824fc50f83f50b8d616371d4 + content/14: 5112eece1ec6b0be680f45e1135a3281 content/15: 0bf7daaa3e25f831e867651f1f741b42 content/16: 194950d92c8162c418cb14eec4ab5a18 content/17: 371d0e46b4bd2c23f559b8bc112f6955 @@ -495,25 +495,25 @@ checksums: content/29: 371d0e46b4bd2c23f559b8bc112f6955 content/30: 1cc22f14b53f6cb1508c9d9e76a97ffc content/31: bcadfc362b69078beee0088e5936c98b - content/32: 52de3b8f239d1c17c53364d781b0e644 + content/32: bfb1f1db8e96160f94f6edb40fa3faad content/33: 13f4e18c7e77c96613108cfe64e4d364 content/34: aaada0cb81a7e70297d9d47f936e51fd content/35: 371d0e46b4bd2c23f559b8bc112f6955 content/36: 4c6a3b159dfff0106b67269130253eba content/37: bcadfc362b69078beee0088e5936c98b - content/38: 93282e29fd004417112ebfee716b2e29 + content/38: 21cc925781120afc2c4568f74ed8191a content/39: 5de052cae5ada1f845f7257ba431ebd1 content/40: 1a36fc873771b68a67d95a2130487aec content/41: 371d0e46b4bd2c23f559b8bc112f6955 content/42: b000bca7bd6658d4b5d21e6c7787d05e content/43: bcadfc362b69078beee0088e5936c98b - content/44: 8fa5b975e46b4e488b17cc497de86694 + content/44: 448922b8585b0b4599e7023c80faa449 content/45: 776f62636d112cbd27d5064a40e29ec9 content/46: f512a5096a1d5a4e4a0afd762152b714 content/47: 371d0e46b4bd2c23f559b8bc112f6955 content/48: 06de592289fb5f4dff42f451ebf9658a content/49: bcadfc362b69078beee0088e5936c98b - content/50: d3696981fefa1f9c436e23842f69e172 + content/50: d242a9680311743714a60bf1941ef9ac content/51: a4cfd36d36633eee441423283d4d5fb3 content/52: 85ea23183709f33902aec778c7cb62b0 content/53: 371d0e46b4bd2c23f559b8bc112f6955 @@ -844,25 +844,35 @@ checksums: content/15: b3f310d5ef115bea5a8b75bf25d7ea9a content/16: a367df5277edf27ed08ff11b03279fdd abf533c0ff218cfc4166a55a9bd3a01f: - meta/title: fa81baef9ba5e794e519b71ad8a0bcf2 - meta/description: a6150e728da734390689627af1a2fd34 + meta/title: 01271b85ff001bf1a4a8d1730f570331 + meta/description: 78b809fd1f5ecde25dab06776f6090d6 content/0: 1b031fb0c62c46b177aeed5c3d3f8f80 content/1: fdd8ecb5e550d9ed729ea0445c3c3ad1 - content/2: a0e89f4efd3f7a0474568bceef251e05 - content/3: c96320b1e7271f8b46b18556cf10f680 - content/4: 0cf4d7d650aec185fb41b3e92f507057 - content/5: 3816dfaf26ed3afd7aff9090710024f1 - content/6: 821e6394b0a953e2b0842b04ae8f3105 - content/7: e47a99fb84a6ba46b2f6bf91c26f842b - content/8: 9c8aa3f09c9b2bd50ea4cdff3598ea4e - content/9: 0f2701a070121f0abbbf8cc289652330 - content/10: 18e01e99857573a423da69c5b4127487 - content/11: 371d0e46b4bd2c23f559b8bc112f6955 - content/12: d9f2aa90cdfac53f9a3b09225bb67700 - content/13: bcadfc362b69078beee0088e5936c98b - content/14: cca5bb45df434d1dd843d94eb9ac3f76 - content/15: b3f310d5ef115bea5a8b75bf25d7ea9a - content/16: c5ce52e3a765ca8ed0be639afb2eee7b + content/2: 6f77421e48f3fc5d9d226461657d5955 + content/3: 992b3abebfb89a1ba9ca3498b86079ff + content/4: 80d3d3ff22a583a17280020155880f42 + content/5: 7e97694717a88e22ca342219173d8007 + content/6: 2c10a97e08ea83f66da35433bba4b161 + content/7: cd0d728e5ece860818fd28cb492b7d51 + content/8: a2f4a9e48c0a82a5cf4776abac56f135 + content/9: d8c8b2d9dfb5aac795de26be43a7d9b9 + content/10: 821e6394b0a953e2b0842b04ae8f3105 + content/11: dfc1ee41d6b3e799ee65271d45fbe2a8 + content/12: 9c8aa3f09c9b2bd50ea4cdff3598ea4e + content/13: 0f2701a070121f0abbbf8cc289652330 + content/14: 18e01e99857573a423da69c5b4127487 + content/15: 371d0e46b4bd2c23f559b8bc112f6955 + content/16: b7d7d051b6003de92f09eff59955c4e7 + content/17: bcadfc362b69078beee0088e5936c98b + content/18: cca5bb45df434d1dd843d94eb9ac3f76 + content/19: b09ace13f48c17268148d1602d105999 + content/20: 553d5f0825e9d426b9753e64dd596872 + content/21: 371d0e46b4bd2c23f559b8bc112f6955 + content/22: ea958419fd22c3fbd2f647aae2ddb32a + content/23: bcadfc362b69078beee0088e5936c98b + content/24: 08992483aceab1862eedadd4e0e374d5 + content/25: b3f310d5ef115bea5a8b75bf25d7ea9a + content/26: c5ce52e3a765ca8ed0be639afb2eee7b 14b4bb962f102a4a42dd93498f0cf40c: meta/title: 7b7b808a136ce10b6199c504e81fb902 meta/description: 9b77a5b1561b43c9f30bb06febc6ff6c @@ -3464,7 +3474,7 @@ checksums: content/37: 371d0e46b4bd2c23f559b8bc112f6955 content/38: 3e7b1f581c8ef51fb3d9b6ecff47deb4 content/39: bcadfc362b69078beee0088e5936c98b - content/40: 8f63ba4785aed72b1840e562ff0d0df7 + content/40: 07994574571bcaeb3b86ce92c46d0527 content/41: b3f310d5ef115bea5a8b75bf25d7ea9a content/42: dc809f5be4a108f769310dd8290c0db4 bda76150deadd23f7803a15b39c4db66: @@ -3845,38 +3855,44 @@ checksums: content/60: 5901c2c84678c889c2d48e77b40014ec content/61: bcadfc362b69078beee0088e5936c98b content/62: d76ee741e1888731742798f2794101ed - content/63: 496b5789a744fec56b165a7f7ccbefc0 - content/64: 976b5c09fddc3981a1881e62624fb1f6 + content/63: a81589f2200fc67b255fe43614d22976 + content/64: 37784f302e365fcd636a86adf08c0297 content/65: 371d0e46b4bd2c23f559b8bc112f6955 - content/66: c9ea0e2c6bfb9abd73572d021f74a7de + content/66: fed65968404d4a377eaf8d2387a15926 content/67: bcadfc362b69078beee0088e5936c98b - content/68: e01308629566a2c3e95cc26304188ef0 - content/69: 1de796fec3488fe36d6e811727a916a9 - content/70: 75f92c54e71d2734e3901343240ab29e + content/68: bdfc6b8dc4f285b5636054bda5073f28 + content/69: 496b5789a744fec56b165a7f7ccbefc0 + content/70: 976b5c09fddc3981a1881e62624fb1f6 content/71: 371d0e46b4bd2c23f559b8bc112f6955 - content/72: 2e80241a94359c7165b7eee705674e31 + content/72: c9ea0e2c6bfb9abd73572d021f74a7de content/73: bcadfc362b69078beee0088e5936c98b - content/74: e843dcc7e9c933e4a5747379c1e51f2e - content/75: 72c749dd7c4c64b84e8764c606c9599e - content/76: d3feee2154fc7a46b842e2435a649727 + content/74: e01308629566a2c3e95cc26304188ef0 + content/75: 1de796fec3488fe36d6e811727a916a9 + content/76: 75f92c54e71d2734e3901343240ab29e content/77: 371d0e46b4bd2c23f559b8bc112f6955 - content/78: 7465a5023e6ba134f07e12e588a85671 + content/78: 2e80241a94359c7165b7eee705674e31 content/79: bcadfc362b69078beee0088e5936c98b - content/80: a2817ce70b061ae3f2c1bf62c4078001 - content/81: 119c212dac0135f1ccedfbf0eb8d27ae - content/82: 83dd6ad7872478f4ec41b4362792b883 + content/80: e843dcc7e9c933e4a5747379c1e51f2e + content/81: 72c749dd7c4c64b84e8764c606c9599e + content/82: d3feee2154fc7a46b842e2435a649727 content/83: 371d0e46b4bd2c23f559b8bc112f6955 - content/84: d2acf911462ae4e825d47e8a386d6d1c + content/84: 7465a5023e6ba134f07e12e588a85671 content/85: bcadfc362b69078beee0088e5936c98b - content/86: f69940bcedadf67b0e474682577207cf - content/87: db73fc05316809b28857ca697ceeffe7 - content/88: 3277861c34a8958c3a6d47b5978ae867 + content/86: a2817ce70b061ae3f2c1bf62c4078001 + content/87: 119c212dac0135f1ccedfbf0eb8d27ae + content/88: 83dd6ad7872478f4ec41b4362792b883 content/89: 371d0e46b4bd2c23f559b8bc112f6955 - content/90: 07003e71b6286e0588f606d8e063c783 + content/90: d2acf911462ae4e825d47e8a386d6d1c content/91: bcadfc362b69078beee0088e5936c98b - content/92: 5c0becafe66dc048e541fe7330336c3f - content/93: b3f310d5ef115bea5a8b75bf25d7ea9a - content/94: 05207a2c6155f6912f2945a2ca85d5fc + content/92: f69940bcedadf67b0e474682577207cf + content/93: db73fc05316809b28857ca697ceeffe7 + content/94: 3277861c34a8958c3a6d47b5978ae867 + content/95: 371d0e46b4bd2c23f559b8bc112f6955 + content/96: 07003e71b6286e0588f606d8e063c783 + content/97: bcadfc362b69078beee0088e5936c98b + content/98: 5c0becafe66dc048e541fe7330336c3f + content/99: b3f310d5ef115bea5a8b75bf25d7ea9a + content/100: 05207a2c6155f6912f2945a2ca85d5fc 63c9ac4220dfb233b39daaa9c82ade00: meta/title: 50de3a91960f18340fe2672a889fcfd7 meta/description: 4dd9ce8fa67af977678af57427c65e0b @@ -5674,13 +5690,13 @@ checksums: content/7: 371d0e46b4bd2c23f559b8bc112f6955 content/8: a3c11477d8439403d831759eaf853014 content/9: bcadfc362b69078beee0088e5936c98b - content/10: f383a8845c0fe57f4eb82c1c69009925 + content/10: 845660ec2cdd9b96a52f7fd6edb7e069 content/11: 6ec042e76b23443637c5318f52794824 content/12: 8b5f9dc14880c8c000fb31d2609b472d content/13: 371d0e46b4bd2c23f559b8bc112f6955 content/14: 0a261f4aa9ed78d0d064e2bb0d62044c content/15: bcadfc362b69078beee0088e5936c98b - content/16: f383a8845c0fe57f4eb82c1c69009925 + content/16: e69b63114342a49f24a67f2867164814 content/17: da5389d425a2ed3cfc699b8b305b92ca content/18: 2f8d4817554dde3883597dc00beb677a content/19: 371d0e46b4bd2c23f559b8bc112f6955 @@ -5692,25 +5708,25 @@ checksums: content/25: 371d0e46b4bd2c23f559b8bc112f6955 content/26: d5b98c983daa7d8b92969933a797b4fd content/27: bcadfc362b69078beee0088e5936c98b - content/28: f383a8845c0fe57f4eb82c1c69009925 + content/28: ba52aed0f57ba4b4616a67f7648c2d3b content/29: 156255b2849bbf28a1aa98516dee39e1 content/30: 226995d6023bacd5ebeb6568cef38d32 content/31: 371d0e46b4bd2c23f559b8bc112f6955 content/32: 3d10386c77486a8fb7777eb2e616762f content/33: bcadfc362b69078beee0088e5936c98b - content/34: f383a8845c0fe57f4eb82c1c69009925 + content/34: 2556172bac9279ba61689e93a75077cc content/35: e4d7bc479212113e9ce1e4a4bd76f86a content/36: ce9c08055f6ec84a646c1fb90aab9fc4 content/37: 371d0e46b4bd2c23f559b8bc112f6955 content/38: 0f29418fa0c7fe544613330b91940f6a content/39: bcadfc362b69078beee0088e5936c98b - content/40: f383a8845c0fe57f4eb82c1c69009925 + content/40: 60cc1342d1475d0b822aacfcc9d162d8 content/41: 6226071e782ecd50a31e3667852aeaae content/42: 6253ab1d2159b9179728769cc223b05a content/43: 371d0e46b4bd2c23f559b8bc112f6955 content/44: 6ea2166f86fd38641c7cbbf7ff7dde14 content/45: bcadfc362b69078beee0088e5936c98b - content/46: f383a8845c0fe57f4eb82c1c69009925 + content/46: 4c9b5b6404367f05cf17c80f718a9722 content/47: b3f310d5ef115bea5a8b75bf25d7ea9a content/48: 5e1c856b28d30016198e90cda5b05e57 5d496ee293efcfeeabc8ba9cb5bea389: @@ -5909,7 +5925,7 @@ checksums: content/25: 371d0e46b4bd2c23f559b8bc112f6955 content/26: 1c1914a63d880607fa1f0ccaa47d6bdc content/27: bcadfc362b69078beee0088e5936c98b - content/28: dfba53a44a72ddb05d937ac850642c32 + content/28: 92c61c22136d02896171fccc6ade1f69 content/29: 25c0139e6dbae0caf7045db76d678057 content/30: c11a5d76541d3111055068edb43d26af content/31: 371d0e46b4bd2c23f559b8bc112f6955 @@ -5921,7 +5937,7 @@ checksums: content/37: 371d0e46b4bd2c23f559b8bc112f6955 content/38: 722e870ff0fd01d4bf8abf17bfc56110 content/39: bcadfc362b69078beee0088e5936c98b - content/40: edf9a72a6b185e4dc921c84774bef409 + content/40: 4e89b91d0a20c2e0ab0de5f93cfb4382 content/41: ffae7ab7fc862449bf8c47818726e36d content/42: 31375eb7944dce78bcba23c2e754f9e6 content/43: 371d0e46b4bd2c23f559b8bc112f6955 @@ -5939,7 +5955,7 @@ checksums: content/55: 371d0e46b4bd2c23f559b8bc112f6955 content/56: 094163dad0578662e2a3197dbf665a4e content/57: bcadfc362b69078beee0088e5936c98b - content/58: 74af50eceb2a5f514301c497a8e64030 + content/58: f2e1fb3bce0b54b10e312b5421f61707 content/59: b3f310d5ef115bea5a8b75bf25d7ea9a content/60: 549a9bd7ff92264fbd18c9d6e616594b 65891ef7e29a3ad2464222a998549ff5: @@ -6423,37 +6439,37 @@ checksums: content/11: 371d0e46b4bd2c23f559b8bc112f6955 content/12: 6602fca05cac2890ce1e6c2bfb4c3edc content/13: bcadfc362b69078beee0088e5936c98b - content/14: 30597d02be39403d58878009bf9ad180 + content/14: 30a5638b5aabcb47356cee8feefe35df content/15: 0f74280b9f76b77c5ff3d7adf579567f content/16: c49e0c8c6a6e30001076b52666b65513 content/17: 371d0e46b4bd2c23f559b8bc112f6955 content/18: 44177bd68134b05e5d857fd4d961faec content/19: bcadfc362b69078beee0088e5936c98b - content/20: 7114399c57ea4b939fb2ceec1c1c73d4 + content/20: 151e3c55629a36e872d2a16e3e8aa02b content/21: 5380b52a75a54072ce4c80ef02c1d9f9 content/22: f81573284f81699b8ccd4c9a32134b76 content/23: 371d0e46b4bd2c23f559b8bc112f6955 content/24: e1d1f3f81bc90ef9dc2d9a7000584517 content/25: bcadfc362b69078beee0088e5936c98b - content/26: 5703816c9993cad8f724477c7d3baba1 + content/26: a2ee2f96a49b3c6804562e2b0603c663 content/27: a989ad3de44846f0494357c17a41ee9a content/28: 97cb66519a9ab1bf445fb1cb9c94122e content/29: 371d0e46b4bd2c23f559b8bc112f6955 content/30: e67b226b18e41f76c4891c7899446a7c content/31: bcadfc362b69078beee0088e5936c98b - content/32: 7cb731c92a2952d96be745a4dc813317 + content/32: 6ef3798dfeac016bcd19a8be2547f6d0 content/33: a887a78b115ab7ddd3ddd817c4bd2021 content/34: 27141f5a3f85214f3ef64decfa914b6c content/35: 371d0e46b4bd2c23f559b8bc112f6955 content/36: efe5483771b85548be6a18808d8f8190 content/37: bcadfc362b69078beee0088e5936c98b - content/38: 9564cc04cb9372fa8e24c84c82e347b2 + content/38: 70afce01643c577069971ff10da90acb content/39: b35883a517799e6b6dae2fab1582086e content/40: 42f88110bd2976790ec32981c33833ec content/41: 371d0e46b4bd2c23f559b8bc112f6955 content/42: 85e2b5b0b03f537b0513c041a6b8eb50 content/43: bcadfc362b69078beee0088e5936c98b - content/44: 2a9520f488643a0aefc6985c64353ab6 + content/44: fc1fba3d0fb8497db9326b741efbc4bc content/45: b3f310d5ef115bea5a8b75bf25d7ea9a content/46: 3a03da5c351afd4029f7e7b099f9d47a 4708d770626bc09eea209330925801e6: @@ -6698,109 +6714,109 @@ checksums: content/12: 371d0e46b4bd2c23f559b8bc112f6955 content/13: dae5c302ede2453d0009c5a685feb022 content/14: bcadfc362b69078beee0088e5936c98b - content/15: 6fa0deda19439292c55097ef25239c77 + content/15: 1602503ae72d1314b640123d677cc633 content/16: 51bce1eb49f5202343f9826024223b31 content/17: 2350cbe796d8d46f5952029c863fda06 content/18: 371d0e46b4bd2c23f559b8bc112f6955 content/19: 9c06876470db23917a2a3ee5a4315733 content/20: bcadfc362b69078beee0088e5936c98b - content/21: 2e035c1b9af4b2beef1f5b5fdc0f2308 + content/21: 106fd592034d1f004c98d526cf3f3d73 content/22: 7c0ac45f6f6630777a388cffda717b5b content/23: 49cb82a2975f9088dab6b37cf7cc0554 content/24: 371d0e46b4bd2c23f559b8bc112f6955 content/25: 1479d81949322910928d3986fda177c8 content/26: bcadfc362b69078beee0088e5936c98b - content/27: 7a0fbeb1d352c71128b6c71919428414 + content/27: b747e7b327f0dd4ae3672533e4e6eb62 content/28: afb55d14fa0dddda2ff67bdb87aa04b5 content/29: b06d024ce4c861572929702e551501c0 content/30: 371d0e46b4bd2c23f559b8bc112f6955 content/31: e23ce76d94ca15f112c3da007d896376 content/32: bcadfc362b69078beee0088e5936c98b - content/33: d88238e92bd4da31e893dbef2602577f + content/33: 4a8637b7a6dfe444af42778d5dea8953 content/34: 573ed349fb115c8e2b262639eb1cee94 content/35: 2cf83cedde0bf34c0126d10fa57d8ea7 content/36: 371d0e46b4bd2c23f559b8bc112f6955 content/37: ced779c0459899d9934ed9d5e9c16027 content/38: bcadfc362b69078beee0088e5936c98b - content/39: a7eebb30e28a7b07316b224c7a2a8d65 + content/39: a22c0adf9f7af9920ffd005ea77f0973 content/40: 7346be42f9672ab948b276c6bcd6f7f6 content/41: 1aee2da8c1e7b0d6869959103bffb799 content/42: 371d0e46b4bd2c23f559b8bc112f6955 content/43: 87a0ac973fd1af8f8282589860fc9846 content/44: bcadfc362b69078beee0088e5936c98b - content/45: 4c20536f0e8a44cd5f4e4fbac837c84d + content/45: 5963fe44971a0c55f0a1a63305ee0489 content/46: 0a4667f0fe6170c78f12dab6c8f43545 content/47: 168d47bf81f43b2f07f68a6135dc6e20 content/48: 371d0e46b4bd2c23f559b8bc112f6955 content/49: f0e41e3c3b7472bbe309abaaf3251faf content/50: bcadfc362b69078beee0088e5936c98b - content/51: b8d43e8492c521206c7698b16ad47a77 + content/51: 431aa94527010c6e8da4c205ec739e34 content/52: 194e0dcae0b72f23ae9b7d5422a99b33 content/53: 3c4fdc8e069f2802c73471908fddd25a content/54: 371d0e46b4bd2c23f559b8bc112f6955 content/55: 6014a6b6972597a13edc66f8bd65a9a0 content/56: bcadfc362b69078beee0088e5936c98b - content/57: 739083ffe3711c4dfb580ee7f2949343 + content/57: 10e5475e4ba1928c6f409c962d48b1d7 content/58: 53e2acf4473d4182244c34aa421d8a43 content/59: d768c66310b7a829344a7ee4ac897e72 content/60: 371d0e46b4bd2c23f559b8bc112f6955 content/61: cd4caf9d3ae8aef3785a78db4fdadc9f content/62: bcadfc362b69078beee0088e5936c98b - content/63: 9b70d9ae3fda05442e911dee1614f27e + content/63: 680395d47cd8d1134facf052e0a2a38b content/64: 48b29aa751b26ed0f9db1e95e760cd27 content/65: 6b8826b7fe1b3639465cd267f149673a content/66: 371d0e46b4bd2c23f559b8bc112f6955 content/67: bded72160da14ccf151b0a0eb06bb56f content/68: bcadfc362b69078beee0088e5936c98b - content/69: e54159fa3e3620cc49bee79e772cb87e + content/69: e0b7ea1fe1ef728e53492b5993b15d14 content/70: ae4b76165d096d64525d1aee1e18fee0 content/71: a18956fdd8ce9a265626539f75e96084 content/72: 371d0e46b4bd2c23f559b8bc112f6955 content/73: 573b4147d240e71a452c45d772f28b33 content/74: bcadfc362b69078beee0088e5936c98b - content/75: b8aa04222de1cd87b5ef6ffcad8e63fd + content/75: 209a7be82a8c8f943a2b6eae46fdf59d content/76: 4bd432a7a3e1440b6b71f235a6ad65cd content/77: fd8fbeb55ef74c575281f61b04ec31c0 content/78: 371d0e46b4bd2c23f559b8bc112f6955 content/79: e558fa14a8f54ad2957a0715c8fc131d content/80: bcadfc362b69078beee0088e5936c98b - content/81: 5e681a2ba92d15d5efdbd3269bbd595c + content/81: 8cdef68820d5b731b817485136203e2e content/82: a617faea0b4556a3e2cdd76854be4eeb content/83: 3a4f2fec3210cd6caaceaff1ade1d25d content/84: 371d0e46b4bd2c23f559b8bc112f6955 content/85: 6268a8ef99f3c8edfbb54adb702252c2 content/86: bcadfc362b69078beee0088e5936c98b - content/87: 2db32021d8c338ff378c041bdd771b36 + content/87: c4005cf9f2be966687a8e1657053b658 content/88: e594b6968a32cc114836e7d338b2ae72 content/89: ecbe896e30d37803f062d774c3fed61e content/90: 371d0e46b4bd2c23f559b8bc112f6955 content/91: 31bb12c5fecb55e000fb6548ff84611d content/92: bcadfc362b69078beee0088e5936c98b - content/93: cbb110de4c385f111ba0c2cfd2bee9ba + content/93: 13881b819f65455ba6eaa79578a69416 content/94: 232c00f66421f98d3acfe0066c25a861 content/95: 29cea11c97efbd2d46163eb3f091fe54 content/96: 371d0e46b4bd2c23f559b8bc112f6955 content/97: 1e7dbcb716a318b2861889422fdc16cc content/98: bcadfc362b69078beee0088e5936c98b - content/99: bf86387df51e9fba30a22614e23450e0 + content/99: 5642bc5da8834e5c1b825393e59138bb content/100: b9fa49fac9189484fb4952264802b2fa content/101: 730c30b24067e75bf4bd88067281d869 content/102: 371d0e46b4bd2c23f559b8bc112f6955 content/103: 80bad3d5d39d84dddf169515ea34e867 content/104: bcadfc362b69078beee0088e5936c98b - content/105: 1f974e39ff95cbb8f217448e40537a7a + content/105: 8424c37fc3a7ab3c14673df85ffdb97e content/106: 7d3f547f7d19f6f08b6501de082e9d22 content/107: 410cfe5d22625805edc6d68e6cdd9606 content/108: 371d0e46b4bd2c23f559b8bc112f6955 content/109: 5ad03aa50355f0c83f7bb6cb8795a598 content/110: bcadfc362b69078beee0088e5936c98b - content/111: f9e40bfcca798561cf3fa41ecea16079 + content/111: fbcea5843f0ceacfada9473d602b5073 content/112: 940c561f84e0e3cb3c75cf789ce886b8 content/113: 83d531300698c39ce89ff22a4a699722 content/114: 371d0e46b4bd2c23f559b8bc112f6955 content/115: 3015c78bbe4877ab591f25b04f026f1b content/116: bcadfc362b69078beee0088e5936c98b - content/117: 45d8bfeced635336cacc9d4a8d08dbca + content/117: 0db5be06d1f87f79a56b19c0cd33c5d9 content/118: b3f310d5ef115bea5a8b75bf25d7ea9a content/119: 58da44cca95db12222bd186cf4042384 f8151918dd7b32173a979241c19134ba: @@ -6821,73 +6837,73 @@ checksums: content/12: 371d0e46b4bd2c23f559b8bc112f6955 content/13: cf0eb00889d3fbe8f11192fbde69d152 content/14: bcadfc362b69078beee0088e5936c98b - content/15: ddea0f29c3b0b39d4d68accb1ee22f1d + content/15: 903282a17337b15eb942f93814ca7e27 content/16: dacdc7f65574fccd17af803318f08ef9 content/17: 1e91462ed3829658d2ec8c5e19b44276 content/18: 371d0e46b4bd2c23f559b8bc112f6955 content/19: 3f75fb03850d89c3746403ab778e6c6e content/20: bcadfc362b69078beee0088e5936c98b - content/21: a91e46a2855f87996b8dae5dc6a9aaf6 + content/21: 91827ecd0a9656291c376a3ad8f4d496 content/22: 8d068110b8b042b41197680cbcbd0927 content/23: dde6ab55890a4d8cc9327080ce0597c3 content/24: 371d0e46b4bd2c23f559b8bc112f6955 content/25: 3e92d8c3f4040a803e8b607960c29b6c content/26: bcadfc362b69078beee0088e5936c98b - content/27: b74416361f94e71f2a94139711a5dd21 + content/27: 237639e938a067fec5678d0515b7d168 content/28: 713d826a38614b3652126a3fe9c6126f content/29: f5a0bd20a329a7dd67288c689b47e2d9 content/30: 371d0e46b4bd2c23f559b8bc112f6955 content/31: 98ca93ddd2a2aee2f61dec9fe632384a content/32: bcadfc362b69078beee0088e5936c98b - content/33: 59c08999f9c404330ebd8f8a7d21e1a1 + content/33: a911e619373da2bd26a6ab96aec81055 content/34: 7d04f221614ad1354fe3621c30df226d content/35: 7e180b7c89c19f1e2cd120262e57ba38 content/36: 371d0e46b4bd2c23f559b8bc112f6955 content/37: 58087b9c1752a00e213ae852c0bd8809 content/38: bcadfc362b69078beee0088e5936c98b - content/39: a9096a341b00ce4f4891daaca2586d1c + content/39: 299684025f9e6e850ab16d6baf418b26 content/40: 3c244b481f57915598dd929f5b8a23cc content/41: d6d85996497b2381017261d33d5cd1b0 content/42: 371d0e46b4bd2c23f559b8bc112f6955 content/43: 4fac81b063955c77058d3baa9163b3d0 content/44: bcadfc362b69078beee0088e5936c98b - content/45: d84fb23e5dfc9d41a177acd7dfb28e72 + content/45: f49a920a3b7cde671b28907e8b502139 content/46: 5931a0fc92f49d3319a105262d5ca128 content/47: b08cbcbb1e221857dac6f92381f5bcb3 content/48: 371d0e46b4bd2c23f559b8bc112f6955 content/49: 6d1626fc785f9ada58825976e51a31f9 content/50: bcadfc362b69078beee0088e5936c98b - content/51: 024d1b1b1865fe5a64117e56e8787378 + content/51: ccb1eb5dabe073b1c58ab500f799e52f content/52: ebe21f836617d8f9fac6bc1c2adb80f6 content/53: db8df7c9b04b016eeb2b9a47e0719206 content/54: 371d0e46b4bd2c23f559b8bc112f6955 content/55: 66bbc953313a2075ca8598e291251910 content/56: bcadfc362b69078beee0088e5936c98b - content/57: a7e001e39652db8eeb4d32968bda102b + content/57: 368234e1ffbba050e602cfa12151c3ea content/58: 688707edc447f458dd66ed554d4d4b3f content/59: 2a2834d73d8ff43d7e3b4e5bda10325e content/60: 371d0e46b4bd2c23f559b8bc112f6955 content/61: ade51ba73d7a75e12fc928288ff20ea9 content/62: bcadfc362b69078beee0088e5936c98b - content/63: 4c03414c0a9acc3ea28293b627b5b881 + content/63: 7c3270bc6736a2bd7c0f5496d1c5f5ce content/64: 76aaca4f2b31aac6deaeaa1d71882912 content/65: b05b49d0597283e9c4c672f0b45ecda0 content/66: 371d0e46b4bd2c23f559b8bc112f6955 content/67: 0ba45c91fa13677917e47e88297e5a20 content/68: bcadfc362b69078beee0088e5936c98b - content/69: 3155eda71c6003c7382f3f1c7c793c4d + content/69: ddfbf3d4e45cae666af814d9c855f219 content/70: 41fdc537cc5a4f117f4e51b10d4b893c content/71: 2aab9e60a5ddef37cc45e839fd265d10 content/72: 371d0e46b4bd2c23f559b8bc112f6955 content/73: 4fac81b063955c77058d3baa9163b3d0 content/74: bcadfc362b69078beee0088e5936c98b - content/75: d84fb23e5dfc9d41a177acd7dfb28e72 + content/75: 043b526a4286ce4cd2dac146a6e4da9a content/76: 1e064911f29516b36aac2252d09d3264 content/77: 8872c46680fb5433e3e0e0a77e003b22 content/78: 371d0e46b4bd2c23f559b8bc112f6955 content/79: 6d1626fc785f9ada58825976e51a31f9 content/80: bcadfc362b69078beee0088e5936c98b - content/81: fed2311ba97e58ae76786292a757702e + content/81: 4edfee5770f54034f27f9bc59ee7d1f4 content/82: b3f310d5ef115bea5a8b75bf25d7ea9a content/83: dd6d6480c2ae6bc7c827ec9564ec7ef9 ed72a377ba81c1bf04db2423f73d062b: @@ -6903,37 +6919,37 @@ checksums: content/7: 371d0e46b4bd2c23f559b8bc112f6955 content/8: 3266fdc66f47be026e3d85ab90eb7d16 content/9: bcadfc362b69078beee0088e5936c98b - content/10: 365ddc9f29d7be92c2728fa31acd422e + content/10: 2f41e84609ff3ba897a32f8e033b97a4 content/11: 886903f11f98dfe38a6e6f29fdbb8528 content/12: 3d11d1d78714f9e4075abf1953e75419 content/13: 371d0e46b4bd2c23f559b8bc112f6955 content/14: fa21911c64ea75c918e352059eb2fe7f content/15: bcadfc362b69078beee0088e5936c98b - content/16: 73fafa520a11921f8df9fa8d8b587d92 + content/16: 662dacdee0a82c71c7b630238514aaf3 content/17: 82a733d968d25120950aaf9fd928c63c content/18: bef062551faa2678b2112920a5bda1d2 content/19: 371d0e46b4bd2c23f559b8bc112f6955 content/20: 4aeb05322a8d1e939a3b3b64d28f08a5 content/21: bcadfc362b69078beee0088e5936c98b - content/22: 1619572a3d37abd3ce129d2504ecbdcb + content/22: 25e898053049f3125589308873970895 content/23: 5cf8947a4e28bad973b58526cb57d0ab content/24: 0093e8689859deeb465584a5338891fd content/25: 371d0e46b4bd2c23f559b8bc112f6955 content/26: aebeebc35e961034b2800b44d3c8c50a content/27: bcadfc362b69078beee0088e5936c98b - content/28: f0659feb482e9a487ff14d3babc59851 + content/28: 87d76638ba698c2b3e5b8f67377eff5f content/29: 69d5a8e4bf6275107b232f78bb67162a content/30: 37fd64adf8a955b203d31a19bd328878 content/31: 371d0e46b4bd2c23f559b8bc112f6955 content/32: 78657a4d018e378ca7aea2e00d1aa602 content/33: bcadfc362b69078beee0088e5936c98b - content/34: e267b11cdce02732ed71edd6cce119ae + content/34: d05d8d278738bb917a7e0f88ff94458b content/35: 1f5a6b20541ced797f9bf32db70f972d content/36: 9cec30d66167e3a54f01f27b500026f2 content/37: 371d0e46b4bd2c23f559b8bc112f6955 content/38: 1705a4a7e36233333aa624fd7c561bef content/39: bcadfc362b69078beee0088e5936c98b - content/40: 60efbb9e08ce955c225a0e8cf69626be + content/40: 9ca0c224a20194a7efe00c52d1ce3218 content/41: b3f310d5ef115bea5a8b75bf25d7ea9a content/42: e7d074449d490a0eb0f4cbf2ca1886ab b7341c73e73c19fbe18dd999900d8f7c: @@ -47473,7 +47489,7 @@ checksums: content/13: 371d0e46b4bd2c23f559b8bc112f6955 content/14: 6c217c31e3269045db51e0ca2e02dc40 content/15: bcadfc362b69078beee0088e5936c98b - content/16: 9a5ecda96a3113d95900df597cffc636 + content/16: cff09b9499de76d13da4478d7365dec2 content/17: e28cdc705de05af33fc86ed8d5d900d3 content/18: 0e38f19d9fbfbd36051d2e5c7f65d0c0 content/19: 371d0e46b4bd2c23f559b8bc112f6955 @@ -48395,13 +48411,13 @@ checksums: content/77: 1168e89ec2162f8b1c0f4437e79d683b content/78: 1175fa4d6a946de24b5fb57d016f68c1 content/79: 371d0e46b4bd2c23f559b8bc112f6955 - content/80: 502dd72a174138e7888c41a31a445bc9 + content/80: b3d399422a0cc360275321cbf348c3fe content/81: bcadfc362b69078beee0088e5936c98b content/82: f194ced69b293f9f8d49d752f44caadb content/83: 90a2342ab1d3182265f81c9c7b94e800 content/84: a44f8a4284da46f9e6eea1418e4053d5 content/85: 371d0e46b4bd2c23f559b8bc112f6955 - content/86: f0be34514306abc1a6f2d43bba7c4743 + content/86: 6c0bde07d783bdd9c4dbc9295a9aad23 content/87: bcadfc362b69078beee0088e5936c98b content/88: 907a7c72c1cb1bbaa476500208058e61 content/89: 77b4c49ac2abbf3177723a26027f4b20 @@ -48439,7 +48455,7 @@ checksums: content/121: 371d0e46b4bd2c23f559b8bc112f6955 content/122: de3c6dc828985e7145637e03d3749170 content/123: bcadfc362b69078beee0088e5936c98b - content/124: f5157d6ea024ed45c55f8bed7516220a + content/124: fc1646564753a62ca90f9dc1dedd8dd8 content/125: b3f310d5ef115bea5a8b75bf25d7ea9a content/126: a7a0477ca54d01f3c0d815d727c47143 6bf4a002144862f19cec5ad8c2151fa3: @@ -48948,67 +48964,67 @@ checksums: content/7: 371d0e46b4bd2c23f559b8bc112f6955 content/8: ddf9f33ab00bc63ba73d935e9a9461bb content/9: bcadfc362b69078beee0088e5936c98b - content/10: 83f29573676a9d1ccb33827ff578858a + content/10: 221e358865139adec497f1cb5d0b1a99 content/11: 16b29a33d78bf2344e7b204ca98c0b82 content/12: 97b8063d8d1ada29666d9ec525694a93 content/13: 371d0e46b4bd2c23f559b8bc112f6955 content/14: 6e295e5dcf37ad9f7ee602652b93c5bf content/15: bcadfc362b69078beee0088e5936c98b - content/16: 83f29573676a9d1ccb33827ff578858a + content/16: 5c47ddc296b16e10a7b1594b7dcfd825 content/17: 20c596f9dbdfe0cfa2d8f5b60dc71514 content/18: 1448d524a996ed212e7dbdbe967339b0 content/19: 371d0e46b4bd2c23f559b8bc112f6955 content/20: 0c9e28a7cf7bcfee1fe692fbd502dbb4 content/21: bcadfc362b69078beee0088e5936c98b - content/22: 83f29573676a9d1ccb33827ff578858a + content/22: f559cd33f4b35b97e66d822945f63137 content/23: 24e966f4a7a7f97a355b749b74377e64 content/24: 968f985de62e1fe2ad21716d7c215fc3 content/25: 371d0e46b4bd2c23f559b8bc112f6955 content/26: fd89e6852579854ef98eef8a76a261c5 content/27: bcadfc362b69078beee0088e5936c98b - content/28: 83f29573676a9d1ccb33827ff578858a + content/28: 08765f663111f814f0f7e0d3343f6cef content/29: 84bf7ab082392d81a1347dd4091df95c content/30: e6d21b5e83b22fcee600f5863114f76b content/31: 371d0e46b4bd2c23f559b8bc112f6955 content/32: 6357650b93cf00ec79d620f75336a063 content/33: bcadfc362b69078beee0088e5936c98b - content/34: 83f29573676a9d1ccb33827ff578858a + content/34: 2b3c80bcbce92fe344b5d92ace204b15 content/35: 9a047f1df87fa8980889528cd4a7e23e content/36: 10a705b69f4de0cafb55b579a091ff3e content/37: 371d0e46b4bd2c23f559b8bc112f6955 content/38: a5f1409dffad379396a370fc6ef0b784 content/39: bcadfc362b69078beee0088e5936c98b - content/40: 83f29573676a9d1ccb33827ff578858a + content/40: 49d0e9315a756ad56e74dd4554d65f25 content/41: bc110e334defc4a0037ba2ef9fb75083 content/42: 741dfd7becb14378932cbad9bd3f1aaa content/43: 371d0e46b4bd2c23f559b8bc112f6955 content/44: 5bf2c3d8e1f679dffa34a23728e09d3d content/45: bcadfc362b69078beee0088e5936c98b - content/46: 83f29573676a9d1ccb33827ff578858a + content/46: ee3bece021d785fa491f484d2647efa9 content/47: 007ad7c8b597dd1638c1d730ae57c18b content/48: 66114378d52751790fb30b1d4a49fb4b content/49: 371d0e46b4bd2c23f559b8bc112f6955 content/50: 2f9f05b2bdf789cfda1791b0a274de0f content/51: bcadfc362b69078beee0088e5936c98b - content/52: 83f29573676a9d1ccb33827ff578858a + content/52: d08b87675acf0952c583781b4344377f content/53: b812f4c86dc86447c8aab2e6fc7ee77b content/54: d368e64c4bc2884ac4af1c046d3043fc content/55: 371d0e46b4bd2c23f559b8bc112f6955 content/56: 8d96a5aad7ba60cbbe6c4ab8b816c8f5 content/57: bcadfc362b69078beee0088e5936c98b - content/58: 83f29573676a9d1ccb33827ff578858a + content/58: 2b3c80bcbce92fe344b5d92ace204b15 content/59: bb444040039dcefd837703242f69b3f2 content/60: 2ca4d597cf85afe0c09441a1c55dc588 content/61: 371d0e46b4bd2c23f559b8bc112f6955 content/62: f90f9e7f20b3c4bf832a71e2dcbc1fe5 content/63: bcadfc362b69078beee0088e5936c98b - content/64: 83f29573676a9d1ccb33827ff578858a + content/64: 41fcb4df99d2ba5f87c86d126a017227 content/65: cdbf6d4d4066c241de37637f23944a51 content/66: 1f1ad7c241c27cf4614ba7b0b67fb584 content/67: 371d0e46b4bd2c23f559b8bc112f6955 content/68: 705cf28994842a8a455ba3dcb61c3f11 content/69: bcadfc362b69078beee0088e5936c98b - content/70: 83f29573676a9d1ccb33827ff578858a + content/70: a03d9bf68ad5a88bf70953996c51b951 content/71: b3f310d5ef115bea5a8b75bf25d7ea9a content/72: fe020be6c017a995d0355c99c6b034ec 1b5c57a63b2d38e097b7f96b6e054db8: @@ -49305,3 +49321,503 @@ checksums: content/9: 7a3be8a3771ee428ecf09008e42c0e2e content/10: 42e4caf9b036a8d7726a8968f3ed201f content/11: e74f8ee79105babdaa8dfec520ecdf74 + 01bda2a6417895b3b24a3d2b543866d4: + meta/title: 55272c40df2a877093c8470e52102e87 + meta/description: 13e8a6591a8addf009cb647bb7ee6a0d + content/0: 1b031fb0c62c46b177aeed5c3d3f8f80 + content/1: 13c31b22dc8320eea4766871b5bdb2b1 + content/2: da04d549734a9cf9c8cc168dbd6952dc + content/3: ecde46402d67144e99794c51b616c17d + content/4: 8884d8cca8ee6de94be5d8116e2f94b6 + content/5: 3b6cc1660e95dc03733da604d98f19b9 + content/6: 2167786106b3d684b5175827be6b3a1f + content/7: 3271375c7c99de5bdf13fad0b98b466d + content/8: 821e6394b0a953e2b0842b04ae8f3105 + content/9: 88b0ee08769002bb9b22b4683e7a8e4c + content/10: 9c8aa3f09c9b2bd50ea4cdff3598ea4e + content/11: b1a2d0fd1320fb6a73e3fda153b9c7ae + content/12: cba5245faf73a6067d5720b824e1bef0 + content/13: 371d0e46b4bd2c23f559b8bc112f6955 + content/14: c93b79e5e1d98454c11e30fc97049725 + content/15: bcadfc362b69078beee0088e5936c98b + content/16: a064887f5c777b54e029ba6ba1b56848 + content/17: b3f310d5ef115bea5a8b75bf25d7ea9a + content/18: a4748f8ce0a4667675ca03e4d9fef87b + 69ea9d99d8ef0b139c482d74509ab07b: + meta/title: 423cacfcc17c571c411a211fd0229cd4 + meta/description: 8c462ba6272aef51b1a0ffa7aac37fb5 + content/0: 1b031fb0c62c46b177aeed5c3d3f8f80 + content/1: b171b09b3f47764cf7aa827625194864 + content/2: 821e6394b0a953e2b0842b04ae8f3105 + content/3: 1670b89782aa1b50d232766d4ddc6ccd + content/4: 9c8aa3f09c9b2bd50ea4cdff3598ea4e + content/5: f70cf85dcd2c3cf7d46b01dc32aa10d6 + content/6: cc27d8fa96a722609186b19333d85814 + content/7: 371d0e46b4bd2c23f559b8bc112f6955 + content/8: 8bf8c43d7d7ae7278da7ebe6ecd356ac + content/9: bcadfc362b69078beee0088e5936c98b + content/10: 879f16545eaf9c61e35185b4129b64d4 + content/11: 8b880d3439aa74c33b9902d27c8a870d + content/12: 1467c26def4fe4ecc55fa200b40384b7 + content/13: 371d0e46b4bd2c23f559b8bc112f6955 + content/14: cf9b2ad21e039311bca96387146eeb87 + content/15: bcadfc362b69078beee0088e5936c98b + content/16: f61f5faf356f1a6b891cadbed34c84d2 + content/17: e29d2b102b3f58bd37638ea9210894bf + content/18: 378a38c76c0106c7209934794597d5d9 + content/19: 371d0e46b4bd2c23f559b8bc112f6955 + content/20: 83824e68c76b4a6e5c4fe62d58ea1c82 + content/21: bcadfc362b69078beee0088e5936c98b + content/22: 966cf37490e58a583d3958368df796fa + content/23: 8c81c45fda92e753c0dac4367973eac6 + content/24: ce0c05074a2bddbd40f5e26485ee5f06 + content/25: 371d0e46b4bd2c23f559b8bc112f6955 + content/26: e7c5338c8271763746e8ff8b6369183d + content/27: bcadfc362b69078beee0088e5936c98b + content/28: 227953269e44083ef3bc39218711cb05 + content/29: dc170a7f70ce32d5908cb1757103f8f8 + content/30: f2e6726730cf2f8612e10d0fdd03eaf8 + content/31: 371d0e46b4bd2c23f559b8bc112f6955 + content/32: 7ceeaac2d12299cae6e3892d6369ed9f + content/33: bcadfc362b69078beee0088e5936c98b + content/34: 8d2aeec4a01cda0a03816d9624b117c2 + content/35: ba00e04a0ff2e1a6a12d7aee62fa33f8 + content/36: 6d3896e9abe0f44805fecde59e52dfb4 + content/37: 371d0e46b4bd2c23f559b8bc112f6955 + content/38: 3310c3cd1e7ad3538d876973c5d4cd74 + content/39: bcadfc362b69078beee0088e5936c98b + content/40: aa4677bf16eb43aae63a4ae9ac57c5e5 + content/41: 08f5cdb1f569ac004040dbc0a0dfbce7 + content/42: 543a7893133239c24998013b6383a2ec + content/43: 371d0e46b4bd2c23f559b8bc112f6955 + content/44: f3505fc99976c10189a8bdd06281289a + content/45: bcadfc362b69078beee0088e5936c98b + content/46: b944979ca1b96c44154db7b38480f47a + content/47: ec85158684a17f7075c55ca5ba178c40 + content/48: 0508c2f54b25f8f31ed432805e094b0b + content/49: 371d0e46b4bd2c23f559b8bc112f6955 + content/50: 6e91b64186a5b220e8539b190991eca2 + content/51: bcadfc362b69078beee0088e5936c98b + content/52: ae001f604fd5ff92aef5797aa0094c2a + content/53: 47f7b5486bee09d1d0f2e5c976099ced + content/54: c096bcae5c582e9e060d3922549d3eb5 + content/55: 371d0e46b4bd2c23f559b8bc112f6955 + content/56: 6e91b64186a5b220e8539b190991eca2 + content/57: bcadfc362b69078beee0088e5936c98b + content/58: 68dc862efbc97d4bd6a12ea5e0bb768a + content/59: 3a43a63dc6dc7080da15db3e9cc3b7d9 + content/60: 507990b312b03294b9a70bf617a4f6f7 + content/61: 371d0e46b4bd2c23f559b8bc112f6955 + content/62: 6e91b64186a5b220e8539b190991eca2 + content/63: bcadfc362b69078beee0088e5936c98b + content/64: e4738365d87b2951f7284d2ed3a499ea + content/65: a5ff73112631e5d1f07812c7bafa8e1b + content/66: 8d56ee136021f3324dacf867b853038e + content/67: 371d0e46b4bd2c23f559b8bc112f6955 + content/68: 48338466c2390dc956c8d7e29dbe54e5 + content/69: bcadfc362b69078beee0088e5936c98b + content/70: 5939fda569e9e2470d0ec33c9e9f65c7 + content/71: 070ed023774d1aa1e25488372b52307e + content/72: a18e5c2a4cd9cf33e6ce14254b22ceba + content/73: 371d0e46b4bd2c23f559b8bc112f6955 + content/74: 4641cc3e4a6b63ce0e14c724b34017b8 + content/75: bcadfc362b69078beee0088e5936c98b + content/76: 976e478e3f2972d8ee3a245dfbe7b62e + content/77: 0e87446547d645d6a9d3bf4cdf1578e7 + content/78: 3211cb4fe3bc83c7c2b54399f0f9137c + content/79: 371d0e46b4bd2c23f559b8bc112f6955 + content/80: 84b2621db57916bbc9e1ff0533cb38e8 + content/81: bcadfc362b69078beee0088e5936c98b + content/82: 824ba104f268f10f2cc115913f6029ad + content/83: 64cc7298d2de7ceb78788d58d87898d9 + content/84: 74cd415dadcb38afdca3f733866a1aa7 + content/85: 371d0e46b4bd2c23f559b8bc112f6955 + content/86: 32660308667470b041bb2ad58ea661c1 + content/87: bcadfc362b69078beee0088e5936c98b + content/88: b029d32a6beabaca93723811cb26cd81 + content/89: 7115d89068cd7857095940eaf8e1bddd + content/90: 61d17e01d34a752b71157b8a005ba057 + content/91: 371d0e46b4bd2c23f559b8bc112f6955 + content/92: 1ab0a1bc823fcf2de657524ceea291af + content/93: bcadfc362b69078beee0088e5936c98b + content/94: a7c67f06628744551a9ae8179f2de2f1 + content/95: f309abdedd929f33810fffa5be8367c2 + content/96: 37feff6bad59c085b76fade5530b3cef + content/97: 371d0e46b4bd2c23f559b8bc112f6955 + content/98: f9b550860e44f6246a4f40c58c259b92 + content/99: bcadfc362b69078beee0088e5936c98b + content/100: f88ef41a0cd5601c4ce748b36f256253 + content/101: 675999bd8732f157f00284487dd610c7 + content/102: 543a7893133239c24998013b6383a2ec + content/103: 371d0e46b4bd2c23f559b8bc112f6955 + content/104: f6b0d1db4665a2bb31dfc8868b633e83 + content/105: bcadfc362b69078beee0088e5936c98b + content/106: db8f7f803591cdb0d53aa6f6aeeadac9 + content/107: 272d4f8e911da506722e66ea7fc06069 + content/108: 3ab139411b417c30e7473cad1ed374a1 + content/109: 371d0e46b4bd2c23f559b8bc112f6955 + content/110: 4735e0cc24471b2d1083dfde44bcccd5 + content/111: bcadfc362b69078beee0088e5936c98b + content/112: a205342d961d329a951066d1aeb9d344 + content/113: 325a0443a09a80a7795a3e53d790a608 + content/114: 907503eb014a7f0781237be119ed936c + content/115: 371d0e46b4bd2c23f559b8bc112f6955 + content/116: b3f1358de153b9dab2ef4c04d992965d + content/117: bcadfc362b69078beee0088e5936c98b + content/118: 0e244093c7c68d2993dba96d32d78814 + content/119: 1aa7fb20b2b2da0057d50edee1ee4804 + content/120: b413d3cb6cc735740d52686d859141ce + content/121: 371d0e46b4bd2c23f559b8bc112f6955 + content/122: 6c042d17fa1610528e0dda13884fd75d + content/123: bcadfc362b69078beee0088e5936c98b + content/124: c9febd022d469475d126e799d2ee3ddd + content/125: ad73b5cc613e18385c5b2b4d501d38cc + content/126: df462f7a572ad3994994f0ca76a68e76 + content/127: 371d0e46b4bd2c23f559b8bc112f6955 + content/128: 09899077a6a6b195512df6caf6c8fa01 + content/129: bcadfc362b69078beee0088e5936c98b + content/130: 12f0d6903559cb1120d4a3148dd381e7 + content/131: 9491f7740180102c9d049090daf5102a + content/132: 543a7893133239c24998013b6383a2ec + content/133: 371d0e46b4bd2c23f559b8bc112f6955 + content/134: ecc05074290b48ca06325410279a51dc + content/135: bcadfc362b69078beee0088e5936c98b + content/136: 106cc40304bb3b99875a664945d20653 + content/137: e903e245433fa0f0050609d0672c0cb5 + content/138: 9791cc374db8ab132621a0ae7ec50964 + content/139: 371d0e46b4bd2c23f559b8bc112f6955 + content/140: 77522579656cf07dd8643eb54962a3e6 + content/141: bcadfc362b69078beee0088e5936c98b + content/142: 97f12ce3c5e54f2b54792bf4eaeaa959 + content/143: 5420a194a8d33ad00076e768c1a299f6 + content/144: 2ef88df8b8a3684d125e9355a0dc57ce + content/145: 371d0e46b4bd2c23f559b8bc112f6955 + content/146: 77522579656cf07dd8643eb54962a3e6 + content/147: bcadfc362b69078beee0088e5936c98b + content/148: 25c2070b192a0c432f9c406fd3e68811 + content/149: 7e57012ba94aa52f9b0a10c121414454 + content/150: 7d384443444ff0f66076340b465adf8c + content/151: 371d0e46b4bd2c23f559b8bc112f6955 + content/152: 77522579656cf07dd8643eb54962a3e6 + content/153: bcadfc362b69078beee0088e5936c98b + content/154: 68f0fb5fb1c482871629a7ef6f68f401 + content/155: 5fcce1f516514f07d19ada48a67e64b9 + content/156: d0f8733556af6080f14f961a970d3ed2 + content/157: 371d0e46b4bd2c23f559b8bc112f6955 + content/158: 603d40532b35027d1070a1d511279dd7 + content/159: bcadfc362b69078beee0088e5936c98b + content/160: 8854a695814f9c3e5408024a6de4b874 + content/161: 38824704803684b47120f90d72c4d1f3 + content/162: fae2b8c0813d8c4a16cfc1a939557b12 + content/163: 371d0e46b4bd2c23f559b8bc112f6955 + content/164: 3e87387b13c5a32cf60e79e288081d2a + content/165: bcadfc362b69078beee0088e5936c98b + content/166: e611f1b9fcd2ec209f7e8c541da0d334 + content/167: e23262668801f4e01b1705bf2e06dbb9 + content/168: 543a7893133239c24998013b6383a2ec + content/169: 371d0e46b4bd2c23f559b8bc112f6955 + content/170: ea6bfafd502021032c8461583d575003 + content/171: bcadfc362b69078beee0088e5936c98b + content/172: fc2291a33dbe5fb5a8e6e9fba4a962e5 + content/173: 465f3cda4842dcbd91914420c94e7e2c + content/174: 0827bafb8fd84e5d2c941a5ba49180f9 + content/175: 371d0e46b4bd2c23f559b8bc112f6955 + content/176: 80d9e59852604254bbea9b5b429a56a9 + content/177: bcadfc362b69078beee0088e5936c98b + content/178: e48a4a4332a93d669ae9d6734faf52ed + content/179: f4b3dc25c15cd089a940c3f87e1682cb + content/180: 29fcda568d59b51927e5032fea029bbb + content/181: 371d0e46b4bd2c23f559b8bc112f6955 + content/182: 80d9e59852604254bbea9b5b429a56a9 + content/183: bcadfc362b69078beee0088e5936c98b + content/184: d5fc19166d3a3cea8b8d2d50f0d563bb + content/185: d094dd11ce2f71593989b9f08ef50d1c + content/186: ecc367223a7d500e39174238f904c96b + content/187: 371d0e46b4bd2c23f559b8bc112f6955 + content/188: 80d9e59852604254bbea9b5b429a56a9 + content/189: bcadfc362b69078beee0088e5936c98b + content/190: 965bce63781360c2d25225ef73ab2be6 + content/191: 91d09906a52576aca688686d68fe98c3 + content/192: 0ef50aac80634edc58281abaf4c172de + content/193: 371d0e46b4bd2c23f559b8bc112f6955 + content/194: 52d31c23ea85ff2429d9ffa3304764f7 + content/195: bcadfc362b69078beee0088e5936c98b + content/196: e6f6c7f9ebe48b0904f00e22dc7fa6a5 + content/197: 22e79701e2b405b16f3ec3eb1c45ab6e + content/198: 6c49f8ce476f21412e4d9ab21dd99a35 + content/199: 371d0e46b4bd2c23f559b8bc112f6955 + content/200: ef7d5b6b00dec889debfa44a73912f00 + content/201: bcadfc362b69078beee0088e5936c98b + content/202: d0c41bb0907153104dbdc410f9f8bdb2 + content/203: 33429e717ec12c6c21aaf8c08cebf59d + content/204: 0e8ff53af4c52be00d5dd6f6089e9eb6 + content/205: 371d0e46b4bd2c23f559b8bc112f6955 + content/206: 5fd8c99db5befe8b23fd5a689ce113a7 + content/207: bcadfc362b69078beee0088e5936c98b + content/208: 6e076a87026c2bd5cec3f1e3f41f03e5 + content/209: d0563ce6c297585d9c9597190d55dca4 + content/210: 543a7893133239c24998013b6383a2ec + content/211: 371d0e46b4bd2c23f559b8bc112f6955 + content/212: ce48d31c56d3bf55875623e232e3a4f7 + content/213: bcadfc362b69078beee0088e5936c98b + content/214: f05f834e80d44f4b261ed70444986784 + content/215: cc504b22e453c680bd5af9b7346a9b16 + content/216: c09610268eeccf0bfd34ebd5dd35c007 + content/217: 371d0e46b4bd2c23f559b8bc112f6955 + content/218: b367871da0561ad3c5d7dacf2cb9a176 + content/219: bcadfc362b69078beee0088e5936c98b + content/220: 85e1990e4f26720de4b40a1bc42a3e32 + content/221: f630cb95b06d7aad74eb3ee3061ea255 + content/222: ff11171170fa01ddfe1b54a6a9b7bf7e + content/223: 371d0e46b4bd2c23f559b8bc112f6955 + content/224: b367871da0561ad3c5d7dacf2cb9a176 + content/225: bcadfc362b69078beee0088e5936c98b + content/226: 2b9e1aad4a556211a265a182cbe25a05 + content/227: 40965cc40257c6bd2be2cac20c5dfccb + content/228: 257fbd87a9b8b1c20190b5b91b304c37 + content/229: 371d0e46b4bd2c23f559b8bc112f6955 + content/230: b367871da0561ad3c5d7dacf2cb9a176 + content/231: bcadfc362b69078beee0088e5936c98b + content/232: 55cb78c8d67ffcf7ada95dcc00bde23c + content/233: 6cef845ded645616c419d28bad1d6f9e + content/234: ba43c5aeb8f25faf46f26bf55b19bff1 + content/235: 371d0e46b4bd2c23f559b8bc112f6955 + content/236: 44115089ae4f362d5b4039b17ade418c + content/237: bcadfc362b69078beee0088e5936c98b + content/238: c3d9c66aa878494de5e962966252bcd4 + content/239: ed22ba9ba05d9a98ddf5c52c37df20bd + content/240: 2cf208e195bb91c07ad9e53e948f6ddf + content/241: 371d0e46b4bd2c23f559b8bc112f6955 + content/242: e6ef31303aa260ffd54368f310718c60 + content/243: bcadfc362b69078beee0088e5936c98b + content/244: e8f550ccf6f5146969dc94e230896468 + content/245: 4fb261f05c50668d4dbf59cb5b33187c + content/246: ca25da475b2c19ca9365eb40a3e883ef + content/247: 371d0e46b4bd2c23f559b8bc112f6955 + content/248: 014b7067c2080c6778a1c5af5786de1f + content/249: bcadfc362b69078beee0088e5936c98b + content/250: 420275dbc42f605397d2e5d792dd0ec6 + content/251: e3ae93e2557ade9f9101c7d7002ebae2 + content/252: 41be55e87cb49923a825c78943f87cda + content/253: 371d0e46b4bd2c23f559b8bc112f6955 + content/254: c86d375921bcc75708fbdcee104151e3 + content/255: bcadfc362b69078beee0088e5936c98b + content/256: 49208ed01fcf6816c16f9be9c609bc3f + content/257: d786589994cd61d6822c95ef9bade462 + content/258: e2a3bd59ba9f74919e79722d01b2cd08 + content/259: 371d0e46b4bd2c23f559b8bc112f6955 + content/260: fe4f450f29f2ab131ab01c1e3418050f + content/261: bcadfc362b69078beee0088e5936c98b + content/262: f0acbbe591b2053cfb0ff4592ada342d + content/263: 1e55ca66a9625b7e5d1d402a7b8ad866 + content/264: 6191ceb51b5788eab069f6f9445ac7d9 + content/265: 371d0e46b4bd2c23f559b8bc112f6955 + content/266: ad4f64f06c612d941d8caf1241539721 + content/267: bcadfc362b69078beee0088e5936c98b + content/268: f48fcfa0a3ed81e1a5090d7023745106 + content/269: 02c6f039913ad3d9aeb4d64940b144a7 + content/270: 3adfe68791a044e51a37c630a1164083 + content/271: 371d0e46b4bd2c23f559b8bc112f6955 + content/272: 4c6876bac6fc6e63bdfa336ed8287e82 + content/273: bcadfc362b69078beee0088e5936c98b + content/274: 267cca917156e53a0a7191ea3b654dd2 + content/275: 7f59ca32e2e37a892ec0fa0106980689 + content/276: 837fe390f427bf342fdb347f660b8e24 + content/277: 371d0e46b4bd2c23f559b8bc112f6955 + content/278: 1e0346d0d1a808956842f5834a9a4ca7 + content/279: bcadfc362b69078beee0088e5936c98b + content/280: 41138a38aa9cc6bf8d202404de595669 + content/281: bfe437d8120b3bfdcb3d32f8baaa08cc + content/282: a45b4af8c2f1ce76300a770abfdb4586 + content/283: 371d0e46b4bd2c23f559b8bc112f6955 + content/284: b13666816ba70de0836700f0baa6a3cd + content/285: bcadfc362b69078beee0088e5936c98b + content/286: 41138a38aa9cc6bf8d202404de595669 + content/287: 4d891a03094ba52d969bde716a26ef79 + content/288: f00b571a9ab7a024a1b7256850110465 + content/289: 371d0e46b4bd2c23f559b8bc112f6955 + content/290: 285d1aaab77d5d2c1c6e3414c498458b + content/291: bcadfc362b69078beee0088e5936c98b + content/292: f3bb7d23cf26b0729d5c2bd050ee2f3d + content/293: cc51bfd76f006cb46a1f0971bf6725b3 + content/294: 0740301dc6622444bf888739959cd064 + content/295: 371d0e46b4bd2c23f559b8bc112f6955 + content/296: dbaa8157daa175b74bf24a7a344d9b50 + content/297: bcadfc362b69078beee0088e5936c98b + content/298: f3bb7d23cf26b0729d5c2bd050ee2f3d + content/299: 99c6883c74ac9ff2029bf9a993d108b2 + content/300: 8888ecab4b3b39f2359344b27297b9fc + content/301: 371d0e46b4bd2c23f559b8bc112f6955 + content/302: 725e1460c8d7e77af73130661211832b + content/303: bcadfc362b69078beee0088e5936c98b + content/304: 8d16e692f351c8018a19ebe10b42e600 + content/305: 4c657061119501c3e92e44e2e1d34872 + content/306: 47e2cc0eeec5f2cb91d830348d233911 + content/307: 371d0e46b4bd2c23f559b8bc112f6955 + content/308: 014b7067c2080c6778a1c5af5786de1f + content/309: bcadfc362b69078beee0088e5936c98b + content/310: 0a27f1dece5205a1fdad782471983af0 + content/311: 208d2fe38550193159f17e05de690d3a + content/312: 3d1d49231eeb2920ffb765feb9099fd7 + content/313: 371d0e46b4bd2c23f559b8bc112f6955 + content/314: ac5aa666db2990b8e5c9328d435e6f2f + content/315: bcadfc362b69078beee0088e5936c98b + content/316: 63c2bbaa67c1f21c8394137da481c35c + content/317: d3fc31382a8b93b5798b0a8204200e9a + content/318: 41be55e87cb49923a825c78943f87cda + content/319: 371d0e46b4bd2c23f559b8bc112f6955 + content/320: d71b6bb8e2dd6ce98101aec6a1dd77f2 + content/321: bcadfc362b69078beee0088e5936c98b + content/322: 04a5b82cf37aba4a903f9fd607bf4321 + content/323: a981995f0ce1ff26f910fa3f14084258 + content/324: bb1385dbf0bd4ca26e69ee7259049758 + content/325: 371d0e46b4bd2c23f559b8bc112f6955 + content/326: b2cea0326a67f273c57fa21d72669c2d + content/327: bcadfc362b69078beee0088e5936c98b + content/328: 5f48c7eab78092422ecf5b876f38f5d6 + content/329: 5465f9813e73a2b2434f093ae9f9e4fe + content/330: 41be55e87cb49923a825c78943f87cda + content/331: 371d0e46b4bd2c23f559b8bc112f6955 + content/332: 5043d4e44428c5608442876f605f8fbf + content/333: bcadfc362b69078beee0088e5936c98b + content/334: 87050e58efe03557a55e784813899b25 + content/335: 7daa967e284f004f64c8fbcac1dabd6d + content/336: 41be55e87cb49923a825c78943f87cda + content/337: 371d0e46b4bd2c23f559b8bc112f6955 + content/338: 245d9a70b38a1b43467510b43b1dfd0b + content/339: bcadfc362b69078beee0088e5936c98b + content/340: b8b046b580b425b46ee97042b007cb5c + content/341: c516d20b10d7d47f9250156fdc05b51b + content/342: 41be55e87cb49923a825c78943f87cda + content/343: 371d0e46b4bd2c23f559b8bc112f6955 + content/344: d3f7cf28e23f03c6ccd3c322a0dfcf7a + content/345: bcadfc362b69078beee0088e5936c98b + content/346: 87050e58efe03557a55e784813899b25 + content/347: 93e76f13a0b2468f443b0addf2f5b426 + content/348: fd835a0491ef404f10f95a64a8d799d7 + content/349: 371d0e46b4bd2c23f559b8bc112f6955 + content/350: 9330190b54228f4946546d6c918d362a + content/351: bcadfc362b69078beee0088e5936c98b + content/352: ef38c832c7c3e8a7912326a82e8e152d + content/353: cdbda4d943cce1c1e6cee284cd9499ba + content/354: afcdfbbd50590cddc8f328231183ffc7 + content/355: 371d0e46b4bd2c23f559b8bc112f6955 + content/356: 08b384a0452ac039fcd5a10c700887ef + content/357: bcadfc362b69078beee0088e5936c98b + content/358: 29bf3a3adb2e03579ce3067c31000cfe + content/359: ba0f72f52c6c1b69eb4b7ed77ace3eed + content/360: a0f850e27892642967e8387d236c7d3d + content/361: 371d0e46b4bd2c23f559b8bc112f6955 + content/362: b1085b1b1b2cacf24e21dab7e53275ef + content/363: bcadfc362b69078beee0088e5936c98b + content/364: 3224246af0e256d3b1cebc4f5d4af7b8 + content/365: 2b7033832f71a1afea2ad0de1a4eb0f6 + content/366: 543a7893133239c24998013b6383a2ec + content/367: 371d0e46b4bd2c23f559b8bc112f6955 + content/368: dacda77a1a1e6eb1fb09681a03b16b39 + content/369: bcadfc362b69078beee0088e5936c98b + content/370: f92ddf910a76ccfba44526b5fc9e18eb + content/371: e5df0bf9989c8fb4bb8cc84bbc2893aa + content/372: 8d8179708a474294e5c18aa0f4c8e211 + content/373: 371d0e46b4bd2c23f559b8bc112f6955 + content/374: 13d49b60016c99dab88b976bc726dff2 + content/375: bcadfc362b69078beee0088e5936c98b + content/376: 540cebf1a23579cbff89a8471080e513 + content/377: 2316cd35c407ec12007f9791d7addc5d + content/378: 6a8a257b30c96326fb03188c00a8b89f + content/379: 371d0e46b4bd2c23f559b8bc112f6955 + content/380: e9732d548f74b7cc7d045c755255d14b + content/381: bcadfc362b69078beee0088e5936c98b + content/382: d01baf6d3458f3e6ac1e1b93adbedc85 + content/383: f04f7c69567c6d4641432928dd8fbbe0 + content/384: 186964792066e564d16712d000144cfc + content/385: 371d0e46b4bd2c23f559b8bc112f6955 + content/386: d71b6bb8e2dd6ce98101aec6a1dd77f2 + content/387: bcadfc362b69078beee0088e5936c98b + content/388: 23531b030992d6af95a46fedf7ebba2d + content/389: 99e642e2d7e14f2de122fd31c8cc05a2 + content/390: 67cb0568fb3a1ec30492380da7a07d76 + content/391: 371d0e46b4bd2c23f559b8bc112f6955 + content/392: 9dfe50ce64c70b434d17598a4ac8234b + content/393: bcadfc362b69078beee0088e5936c98b + content/394: ed2143e277e57380a95890c21950efa6 + content/395: 0c6c2544d0bacb6f0f6fd613d858789a + content/396: 543a7893133239c24998013b6383a2ec + content/397: 371d0e46b4bd2c23f559b8bc112f6955 + content/398: 6600803515bc80ef0b1a567c49794a6f + content/399: bcadfc362b69078beee0088e5936c98b + content/400: 36e4192fe30f586d12f1617efd6ef404 + content/401: 6e7203406297c99cb022bb5c6afe0835 + content/402: 543a7893133239c24998013b6383a2ec + content/403: 371d0e46b4bd2c23f559b8bc112f6955 + content/404: d71b6bb8e2dd6ce98101aec6a1dd77f2 + content/405: bcadfc362b69078beee0088e5936c98b + content/406: e30243efbaf6344a2588df16b7b03284 + content/407: 16310c021653f143fa83827a9e4f3a34 + content/408: 543a7893133239c24998013b6383a2ec + content/409: 371d0e46b4bd2c23f559b8bc112f6955 + content/410: d71b6bb8e2dd6ce98101aec6a1dd77f2 + content/411: bcadfc362b69078beee0088e5936c98b + content/412: 967acf2732882d79bbfbbb09157f5754 + content/413: 80faf4b7ad34e672124993b741af2632 + content/414: 513b1bd1010130caba927d7cb4ad317d + content/415: 371d0e46b4bd2c23f559b8bc112f6955 + content/416: 683cb2f65472983ba73b76bd7b6e2d13 + content/417: bcadfc362b69078beee0088e5936c98b + content/418: a6bb59aed6ec6c5cbc6380c07e5d875d + content/419: 020bf7263ea4bfdd38b730a5d97a1d27 + content/420: c5a66ae6dd3d38e0955ddc199b241f94 + content/421: 371d0e46b4bd2c23f559b8bc112f6955 + content/422: e670ca8583015c3bbeaa9f0e04dc07e7 + content/423: bcadfc362b69078beee0088e5936c98b + content/424: e35f604c54faeba3ab9cc9222b008e13 + content/425: fcf4b372290efddeafde18f874cb9056 + content/426: af6ffdf3979d631c1c0f3ce41aabcf56 + content/427: 371d0e46b4bd2c23f559b8bc112f6955 + content/428: f4d2b9c6ac152adb8676d09177e356bb + content/429: bcadfc362b69078beee0088e5936c98b + content/430: 49bc6ae2d6952bc9ff409d41bb0d21be + content/431: 4d6e4bbe907d379c3fbf703ab58b3022 + content/432: 5536b11f94c6e96cc8ecb198bcf53ca7 + content/433: 371d0e46b4bd2c23f559b8bc112f6955 + content/434: f4d2b9c6ac152adb8676d09177e356bb + content/435: bcadfc362b69078beee0088e5936c98b + content/436: 49bc6ae2d6952bc9ff409d41bb0d21be + content/437: fd10df2f8761ee35226d0093777bdf6d + content/438: 95260d57dd53c9c3b7fe9429257e767e + content/439: 371d0e46b4bd2c23f559b8bc112f6955 + content/440: 826b5d8ecc169a1e377687ac028040f5 + content/441: bcadfc362b69078beee0088e5936c98b + content/442: 840756181376b103737fda44d21a98f6 + content/443: 70fe3481a60a82c17db681eced11eada + content/444: e974d6f1cc3444d6f44495180e69b05e + content/445: 371d0e46b4bd2c23f559b8bc112f6955 + content/446: 9921ba4d4de84198b763bc0bde6b03b3 + content/447: bcadfc362b69078beee0088e5936c98b + content/448: d5f105ab1237fca610d09608b3b4e88d + content/449: 5b3b40dab522c857510f51a63237293c + content/450: 030bf2ff87d6c11732b684f306b4d2f5 + content/451: 371d0e46b4bd2c23f559b8bc112f6955 + content/452: 9ed3acd5390461eeb6414faf0a1a512e + content/453: bcadfc362b69078beee0088e5936c98b + content/454: eaca3ee3a7d41ebd10e3ede6127bf459 + content/455: bf893edcd95310e98a3af9e73cdaae60 + content/456: c0b33fa82175a4cc6ad90b02c67713b9 + content/457: 371d0e46b4bd2c23f559b8bc112f6955 + content/458: f82a23358be57576d645fa76c0955391 + content/459: bcadfc362b69078beee0088e5936c98b + content/460: 834d3f74c39b74e6aa4c99ccd13a46e8 + content/461: 67c97a416e8abeb8d61893c3f5ac17fd + content/462: c2f07afc0743347406fb9c9b98690997 + content/463: 371d0e46b4bd2c23f559b8bc112f6955 + content/464: 44d040b1598cbd8043043cb270da5bbb + content/465: bcadfc362b69078beee0088e5936c98b + content/466: c1a8cbf38b2a8480ea70243b38d509bc + content/467: dc3a650eefb9d65f582bfee6517ac2f9 + content/468: 883277a3e47c7476d6356dc48df6c257 + content/469: 371d0e46b4bd2c23f559b8bc112f6955 + content/470: 96d428e4bb2231882653c845b590469b + content/471: bcadfc362b69078beee0088e5936c98b + content/472: dbc5fceeefb3ab5fa505394becafef4e + content/473: b3f310d5ef115bea5a8b75bf25d7ea9a + content/474: 27c398e669b297cea076e4ce4cc0c5eb diff --git a/apps/docs/package.json b/apps/docs/package.json index 14bcd4922..8987f561f 100644 --- a/apps/docs/package.json +++ b/apps/docs/package.json @@ -19,7 +19,7 @@ "fumadocs-mdx": "14.1.0", "fumadocs-ui": "16.2.3", "lucide-react": "^0.511.0", - "next": "16.0.7", + "next": "16.0.9", "next-themes": "^0.4.6", "react": "19.2.1", "react-dom": "19.2.1", diff --git a/apps/sim/app/(landing)/components/footer/consts.ts b/apps/sim/app/(landing)/components/footer/consts.ts index e0e02c58f..f45b6d64d 100644 --- a/apps/sim/app/(landing)/components/footer/consts.ts +++ b/apps/sim/app/(landing)/components/footer/consts.ts @@ -63,7 +63,6 @@ export const FOOTER_TOOLS = [ 'Pipedrive', 'PostHog', 'PostgreSQL', - 'Pylon', 'Qdrant', 'Reddit', 'Resend', diff --git a/apps/sim/app/(landing)/components/nav/nav.tsx b/apps/sim/app/(landing)/components/nav/nav.tsx index 1725c2b16..48852e374 100644 --- a/apps/sim/app/(landing)/components/nav/nav.tsx +++ b/apps/sim/app/(landing)/components/nav/nav.tsx @@ -135,6 +135,7 @@ export default function Nav({ hideAuthButtons = false, variant = 'landing' }: Na priority loading='eager' quality={100} + unoptimized /> ) : ( = { - // Text formats - txt: 'text/plain', - csv: 'text/csv', - json: 'application/json', - xml: 'application/xml', - md: 'text/markdown', - html: 'text/html', - css: 'text/css', - js: 'application/javascript', - ts: 'application/typescript', - // Document formats - pdf: 'application/pdf', - doc: 'application/msword', - docx: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', - // Spreadsheet formats - xls: 'application/vnd.ms-excel', - xlsx: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', - // Presentation formats - ppt: 'application/vnd.ms-powerpoint', - pptx: 'application/vnd.openxmlformats-officedocument.presentationml.presentation', - // Image formats - png: 'image/png', - jpg: 'image/jpeg', - jpeg: 'image/jpeg', - gif: 'image/gif', - // Archive formats - zip: 'application/zip', -} - /** * Main API route handler */ @@ -382,7 +353,8 @@ async function handleExternalUrl( }) } else { const { uploadWorkspaceFile } = await import('@/lib/uploads/contexts/workspace') - const mimeType = response.headers.get('content-type') || getMimeType(extension) + const mimeType = + response.headers.get('content-type') || getMimeTypeFromExtension(extension) await uploadWorkspaceFile(workspaceId, userId, buffer, filename, mimeType) logger.info(`Saved URL file to workspace storage: ${filename}`) } @@ -574,7 +546,7 @@ async function handleLocalFile( content: result.content, filePath, metadata: { - fileType: fileType || getMimeType(extension), + fileType: fileType || getMimeTypeFromExtension(extension), size: stats.size, hash, processingTime: 0, @@ -709,7 +681,7 @@ async function handleGenericTextBuffer( content: result.content, filePath: originalPath || filename, metadata: { - fileType: fileType || getMimeType(extension), + fileType: fileType || getMimeTypeFromExtension(extension), size: fileBuffer.length, hash: createHash('md5').update(fileBuffer).digest('hex'), processingTime: 0, @@ -727,7 +699,7 @@ async function handleGenericTextBuffer( content, filePath: originalPath || filename, metadata: { - fileType: fileType || getMimeType(extension), + fileType: fileType || getMimeTypeFromExtension(extension), size: fileBuffer.length, hash: createHash('md5').update(fileBuffer).digest('hex'), processingTime: 0, @@ -768,7 +740,7 @@ function handleGenericBuffer( content, filePath: filename, metadata: { - fileType: fileType || getMimeType(extension), + fileType: fileType || getMimeTypeFromExtension(extension), size: fileBuffer.length, hash: createHash('md5').update(fileBuffer).digest('hex'), processingTime: 0, @@ -791,13 +763,6 @@ async function parseBufferAsPdf(buffer: Buffer) { } } -/** - * Get MIME type from file extension - */ -function getMimeType(extension: string): string { - return fileTypeMap[extension] || 'application/octet-stream' -} - /** * Format bytes to human readable size */ diff --git a/apps/sim/app/api/mcp/servers/route.ts b/apps/sim/app/api/mcp/servers/route.ts index 370ddac58..183c5e434 100644 --- a/apps/sim/app/api/mcp/servers/route.ts +++ b/apps/sim/app/api/mcp/servers/route.ts @@ -7,7 +7,11 @@ import { getParsedBody, withMcpAuth } from '@/lib/mcp/middleware' import { mcpService } from '@/lib/mcp/service' import type { McpTransport } from '@/lib/mcp/types' import { validateMcpServerUrl } from '@/lib/mcp/url-validator' -import { createMcpErrorResponse, createMcpSuccessResponse } from '@/lib/mcp/utils' +import { + createMcpErrorResponse, + createMcpSuccessResponse, + generateMcpServerId, +} from '@/lib/mcp/utils' const logger = createLogger('McpServersAPI') @@ -50,13 +54,20 @@ export const GET = withMcpAuth('read')( /** * POST - Register a new MCP server for the workspace (requires write permission) + * + * Uses deterministic server IDs based on URL hash to ensure that re-adding + * the same server produces the same ID. This prevents "server not found" errors + * when workflows reference the old server ID after delete/re-add cycles. + * + * If a server with the same ID already exists (same URL in same workspace), + * it will be updated instead of creating a duplicate. */ export const POST = withMcpAuth('write')( async (request: NextRequest, { userId, workspaceId, requestId }) => { try { const body = getParsedBody(request) || (await request.json()) - logger.info(`[${requestId}] Registering new MCP server:`, { + logger.info(`[${requestId}] Registering MCP server:`, { name: body.name, transport: body.transport, workspaceId, @@ -82,7 +93,43 @@ export const POST = withMcpAuth('write')( body.url = urlValidation.normalizedUrl } - const serverId = body.id || crypto.randomUUID() + const serverId = body.url ? generateMcpServerId(workspaceId, body.url) : crypto.randomUUID() + + const [existingServer] = await db + .select({ id: mcpServers.id, deletedAt: mcpServers.deletedAt }) + .from(mcpServers) + .where(and(eq(mcpServers.id, serverId), eq(mcpServers.workspaceId, workspaceId))) + .limit(1) + + if (existingServer) { + logger.info( + `[${requestId}] Server with ID ${serverId} already exists, updating instead of creating` + ) + + await db + .update(mcpServers) + .set({ + name: body.name, + description: body.description, + transport: body.transport, + url: body.url, + headers: body.headers || {}, + timeout: body.timeout || 30000, + retries: body.retries || 3, + enabled: body.enabled !== false, + updatedAt: new Date(), + deletedAt: null, + }) + .where(eq(mcpServers.id, serverId)) + + mcpService.clearCache(workspaceId) + + logger.info( + `[${requestId}] Successfully updated MCP server: ${body.name} (ID: ${serverId})` + ) + + return createMcpSuccessResponse({ serverId, updated: true }, 200) + } await db .insert(mcpServers) @@ -105,9 +152,10 @@ export const POST = withMcpAuth('write')( mcpService.clearCache(workspaceId) - logger.info(`[${requestId}] Successfully registered MCP server: ${body.name}`) + logger.info( + `[${requestId}] Successfully registered MCP server: ${body.name} (ID: ${serverId})` + ) - // Track MCP server registration try { const { trackPlatformEvent } = await import('@/lib/core/telemetry') trackPlatformEvent('platform.mcp.server_added', { diff --git a/apps/sim/app/api/proxy/video/route.ts b/apps/sim/app/api/proxy/video/route.ts index 01f75fdba..9aa4091ef 100644 --- a/apps/sim/app/api/proxy/video/route.ts +++ b/apps/sim/app/api/proxy/video/route.ts @@ -807,18 +807,31 @@ async function generateWithFalAI( // Build request body based on model requirements const requestBody: any = { prompt } - // Format duration based on model requirements - const formattedDuration = formatDuration(model, duration) - if (formattedDuration !== undefined) { - requestBody.duration = formattedDuration - } + // Models that support duration and aspect_ratio parameters + const supportsStandardParams = [ + 'kling-2.5-turbo-pro', + 'kling-2.1-pro', + 'minimax-hailuo-2.3-pro', + 'minimax-hailuo-2.3-standard', + ] - if (aspectRatio) { - requestBody.aspect_ratio = aspectRatio - } + // Models that only need prompt (minimal params) + const minimalParamModels = ['ltxv-0.9.8', 'wan-2.1', 'veo-3.1', 'sora-2'] - if (resolution) { - requestBody.resolution = resolution + if (supportsStandardParams.includes(model)) { + // Kling and MiniMax models support duration and aspect_ratio + const formattedDuration = formatDuration(model, duration) + if (formattedDuration !== undefined) { + requestBody.duration = formattedDuration + } + + if (aspectRatio) { + requestBody.aspect_ratio = aspectRatio + } + + if (resolution) { + requestBody.resolution = resolution + } } // MiniMax models support prompt optimizer diff --git a/apps/sim/app/api/templates/route.ts b/apps/sim/app/api/templates/route.ts index ee4df30e9..47939ab1e 100644 --- a/apps/sim/app/api/templates/route.ts +++ b/apps/sim/app/api/templates/route.ts @@ -40,7 +40,7 @@ const CreateTemplateSchema = z.object({ about: z.string().optional(), // Markdown long description }) .optional(), - creatorId: z.string().optional(), // Creator profile ID + creatorId: z.string().min(1, 'Creator profile is required'), tags: z.array(z.string()).max(10, 'Maximum 10 tags allowed').optional().default([]), }) @@ -204,50 +204,47 @@ export async function POST(request: NextRequest) { return NextResponse.json({ error: 'Workflow not found' }, { status: 404 }) } - // Validate creator profile if provided - if (data.creatorId) { - // Verify the creator profile exists and user has access - const creatorProfile = await db + // Validate creator profile - required for all templates + const creatorProfile = await db + .select() + .from(templateCreators) + .where(eq(templateCreators.id, data.creatorId)) + .limit(1) + + if (creatorProfile.length === 0) { + logger.warn(`[${requestId}] Creator profile not found: ${data.creatorId}`) + return NextResponse.json({ error: 'Creator profile not found' }, { status: 404 }) + } + + const creator = creatorProfile[0] + + // Verify user has permission to use this creator profile + if (creator.referenceType === 'user') { + if (creator.referenceId !== session.user.id) { + logger.warn(`[${requestId}] User cannot use creator profile: ${data.creatorId}`) + return NextResponse.json( + { error: 'You do not have permission to use this creator profile' }, + { status: 403 } + ) + } + } else if (creator.referenceType === 'organization') { + // Verify user is a member of the organization + const membership = await db .select() - .from(templateCreators) - .where(eq(templateCreators.id, data.creatorId)) + .from(member) + .where( + and(eq(member.userId, session.user.id), eq(member.organizationId, creator.referenceId)) + ) .limit(1) - if (creatorProfile.length === 0) { - logger.warn(`[${requestId}] Creator profile not found: ${data.creatorId}`) - return NextResponse.json({ error: 'Creator profile not found' }, { status: 404 }) - } - - const creator = creatorProfile[0] - - // Verify user has permission to use this creator profile - if (creator.referenceType === 'user') { - if (creator.referenceId !== session.user.id) { - logger.warn(`[${requestId}] User cannot use creator profile: ${data.creatorId}`) - return NextResponse.json( - { error: 'You do not have permission to use this creator profile' }, - { status: 403 } - ) - } - } else if (creator.referenceType === 'organization') { - // Verify user is a member of the organization - const membership = await db - .select() - .from(member) - .where( - and(eq(member.userId, session.user.id), eq(member.organizationId, creator.referenceId)) - ) - .limit(1) - - if (membership.length === 0) { - logger.warn( - `[${requestId}] User not a member of organization for creator: ${data.creatorId}` - ) - return NextResponse.json( - { error: 'You must be a member of the organization to use its creator profile' }, - { status: 403 } - ) - } + if (membership.length === 0) { + logger.warn( + `[${requestId}] User not a member of organization for creator: ${data.creatorId}` + ) + return NextResponse.json( + { error: 'You must be a member of the organization to use its creator profile' }, + { status: 403 } + ) } } @@ -307,7 +304,7 @@ export async function POST(request: NextRequest) { workflowId: data.workflowId, name: data.name, details: data.details || null, - creatorId: data.creatorId || null, + creatorId: data.creatorId, views: 0, stars: 0, status: 'pending' as const, // All new templates start as pending diff --git a/apps/sim/app/api/tools/asana/add-comment/route.ts b/apps/sim/app/api/tools/asana/add-comment/route.ts index fa9bf681f..bd00e151c 100644 --- a/apps/sim/app/api/tools/asana/add-comment/route.ts +++ b/apps/sim/app/api/tools/asana/add-comment/route.ts @@ -86,18 +86,16 @@ export async function POST(request: Request) { return NextResponse.json({ success: true, - output: { - ts: new Date().toISOString(), - gid: story.gid, - text: story.text || '', - created_at: story.created_at, - created_by: story.created_by - ? { - gid: story.created_by.gid, - name: story.created_by.name, - } - : undefined, - }, + ts: new Date().toISOString(), + gid: story.gid, + text: story.text || '', + created_at: story.created_at, + created_by: story.created_by + ? { + gid: story.created_by.gid, + name: story.created_by.name, + } + : undefined, }) } catch (error) { logger.error('Error processing request:', error) diff --git a/apps/sim/app/api/tools/asana/create-task/route.ts b/apps/sim/app/api/tools/asana/create-task/route.ts index 70bd00f1b..69200e6d9 100644 --- a/apps/sim/app/api/tools/asana/create-task/route.ts +++ b/apps/sim/app/api/tools/asana/create-task/route.ts @@ -99,15 +99,13 @@ export async function POST(request: Request) { return NextResponse.json({ success: true, - output: { - ts: new Date().toISOString(), - gid: task.gid, - name: task.name, - notes: task.notes || '', - completed: task.completed || false, - created_at: task.created_at, - permalink_url: task.permalink_url, - }, + ts: new Date().toISOString(), + gid: task.gid, + name: task.name, + notes: task.notes || '', + completed: task.completed || false, + created_at: task.created_at, + permalink_url: task.permalink_url, }) } catch (error: any) { logger.error('Error creating Asana task:', { diff --git a/apps/sim/app/api/tools/asana/get-projects/route.ts b/apps/sim/app/api/tools/asana/get-projects/route.ts index 5e93e93c4..f26da3fd9 100644 --- a/apps/sim/app/api/tools/asana/get-projects/route.ts +++ b/apps/sim/app/api/tools/asana/get-projects/route.ts @@ -73,14 +73,12 @@ export async function POST(request: Request) { return NextResponse.json({ success: true, - output: { - ts: new Date().toISOString(), - projects: projects.map((project: any) => ({ - gid: project.gid, - name: project.name, - resource_type: project.resource_type, - })), - }, + ts: new Date().toISOString(), + projects: projects.map((project: any) => ({ + gid: project.gid, + name: project.name, + resource_type: project.resource_type, + })), }) } catch (error) { logger.error('Error processing request:', error) diff --git a/apps/sim/app/api/tools/asana/get-task/route.ts b/apps/sim/app/api/tools/asana/get-task/route.ts index 8122986e9..bcc459e4c 100644 --- a/apps/sim/app/api/tools/asana/get-task/route.ts +++ b/apps/sim/app/api/tools/asana/get-task/route.ts @@ -69,31 +69,29 @@ export async function POST(request: Request) { return NextResponse.json({ success: true, - output: { - ts: new Date().toISOString(), - gid: task.gid, - resource_type: task.resource_type, - resource_subtype: task.resource_subtype, - name: task.name, - notes: task.notes || '', - completed: task.completed || false, - assignee: task.assignee - ? { - gid: task.assignee.gid, - name: task.assignee.name, - } - : undefined, - created_by: task.created_by - ? { - gid: task.created_by.gid, - resource_type: task.created_by.resource_type, - name: task.created_by.name, - } - : undefined, - due_on: task.due_on || undefined, - created_at: task.created_at, - modified_at: task.modified_at, - }, + ts: new Date().toISOString(), + gid: task.gid, + resource_type: task.resource_type, + resource_subtype: task.resource_subtype, + name: task.name, + notes: task.notes || '', + completed: task.completed || false, + assignee: task.assignee + ? { + gid: task.assignee.gid, + name: task.assignee.name, + } + : undefined, + created_by: task.created_by + ? { + gid: task.created_by.gid, + resource_type: task.created_by.resource_type, + name: task.created_by.name, + } + : undefined, + due_on: task.due_on || undefined, + created_at: task.created_at, + modified_at: task.modified_at, }) } @@ -180,34 +178,32 @@ export async function POST(request: Request) { return NextResponse.json({ success: true, - output: { - ts: new Date().toISOString(), - tasks: tasks.map((task: any) => ({ - gid: task.gid, - resource_type: task.resource_type, - resource_subtype: task.resource_subtype, - name: task.name, - notes: task.notes || '', - completed: task.completed || false, - assignee: task.assignee - ? { - gid: task.assignee.gid, - name: task.assignee.name, - } - : undefined, - created_by: task.created_by - ? { - gid: task.created_by.gid, - resource_type: task.created_by.resource_type, - name: task.created_by.name, - } - : undefined, - due_on: task.due_on || undefined, - created_at: task.created_at, - modified_at: task.modified_at, - })), - next_page: result.next_page, - }, + ts: new Date().toISOString(), + tasks: tasks.map((task: any) => ({ + gid: task.gid, + resource_type: task.resource_type, + resource_subtype: task.resource_subtype, + name: task.name, + notes: task.notes || '', + completed: task.completed || false, + assignee: task.assignee + ? { + gid: task.assignee.gid, + name: task.assignee.name, + } + : undefined, + created_by: task.created_by + ? { + gid: task.created_by.gid, + resource_type: task.created_by.resource_type, + name: task.created_by.name, + } + : undefined, + due_on: task.due_on || undefined, + created_at: task.created_at, + modified_at: task.modified_at, + })), + next_page: result.next_page, }) } catch (error) { logger.error('Error processing request:', error) diff --git a/apps/sim/app/api/tools/asana/search-tasks/route.ts b/apps/sim/app/api/tools/asana/search-tasks/route.ts index c6e7d8cb6..397b9b07c 100644 --- a/apps/sim/app/api/tools/asana/search-tasks/route.ts +++ b/apps/sim/app/api/tools/asana/search-tasks/route.ts @@ -96,34 +96,32 @@ export async function POST(request: Request) { return NextResponse.json({ success: true, - output: { - ts: new Date().toISOString(), - tasks: tasks.map((task: any) => ({ - gid: task.gid, - resource_type: task.resource_type, - resource_subtype: task.resource_subtype, - name: task.name, - notes: task.notes || '', - completed: task.completed || false, - assignee: task.assignee - ? { - gid: task.assignee.gid, - name: task.assignee.name, - } - : undefined, - created_by: task.created_by - ? { - gid: task.created_by.gid, - resource_type: task.created_by.resource_type, - name: task.created_by.name, - } - : undefined, - due_on: task.due_on || undefined, - created_at: task.created_at, - modified_at: task.modified_at, - })), - next_page: result.next_page, - }, + ts: new Date().toISOString(), + tasks: tasks.map((task: any) => ({ + gid: task.gid, + resource_type: task.resource_type, + resource_subtype: task.resource_subtype, + name: task.name, + notes: task.notes || '', + completed: task.completed || false, + assignee: task.assignee + ? { + gid: task.assignee.gid, + name: task.assignee.name, + } + : undefined, + created_by: task.created_by + ? { + gid: task.created_by.gid, + resource_type: task.created_by.resource_type, + name: task.created_by.name, + } + : undefined, + due_on: task.due_on || undefined, + created_at: task.created_at, + modified_at: task.modified_at, + })), + next_page: result.next_page, }) } catch (error) { logger.error('Error processing request:', error) diff --git a/apps/sim/app/api/tools/asana/update-task/route.ts b/apps/sim/app/api/tools/asana/update-task/route.ts index 2eca4d7c7..e83cc5ef9 100644 --- a/apps/sim/app/api/tools/asana/update-task/route.ts +++ b/apps/sim/app/api/tools/asana/update-task/route.ts @@ -99,14 +99,12 @@ export async function PUT(request: Request) { return NextResponse.json({ success: true, - output: { - ts: new Date().toISOString(), - gid: task.gid, - name: task.name, - notes: task.notes || '', - completed: task.completed || false, - modified_at: task.modified_at, - }, + ts: new Date().toISOString(), + gid: task.gid, + name: task.name, + notes: task.notes || '', + completed: task.completed || false, + modified_at: task.modified_at, }) } catch (error: any) { logger.error('Error updating Asana task:', { diff --git a/apps/sim/app/api/tools/confluence/create-page/route.ts b/apps/sim/app/api/tools/confluence/create-page/route.ts index f049b8672..c50acf93e 100644 --- a/apps/sim/app/api/tools/confluence/create-page/route.ts +++ b/apps/sim/app/api/tools/confluence/create-page/route.ts @@ -31,6 +31,16 @@ export async function POST(request: Request) { return NextResponse.json({ error: 'Space ID is required' }, { status: 400 }) } + if (!/^\d+$/.test(String(spaceId))) { + return NextResponse.json( + { + error: + 'Invalid Space ID. The Space ID must be a numeric value, not the space key from the URL. Use the "list" operation to get all spaces with their numeric IDs.', + }, + { status: 400 } + ) + } + if (!title) { return NextResponse.json({ error: 'Title is required' }, { status: 400 }) } @@ -91,10 +101,24 @@ export async function POST(request: Request) { statusText: response.statusText, error: JSON.stringify(errorData, null, 2), }) - const errorMessage = - errorData?.message || - (errorData?.errors && JSON.stringify(errorData.errors)) || - `Failed to create Confluence page (${response.status})` + + let errorMessage = `Failed to create Confluence page (${response.status})` + if (errorData?.message) { + errorMessage = errorData.message + } else if (errorData?.errors && Array.isArray(errorData.errors)) { + const firstError = errorData.errors[0] + if (firstError?.title) { + if (firstError.title.includes("'spaceId'") && firstError.title.includes('Long')) { + errorMessage = + 'Invalid Space ID. Use the list spaces operation to find valid space IDs.' + } else { + errorMessage = firstError.title + } + } else { + errorMessage = JSON.stringify(errorData.errors) + } + } + return NextResponse.json({ error: errorMessage }, { status: response.status }) } diff --git a/apps/sim/app/api/tools/confluence/upload-attachment/route.ts b/apps/sim/app/api/tools/confluence/upload-attachment/route.ts new file mode 100644 index 000000000..21e9f75ef --- /dev/null +++ b/apps/sim/app/api/tools/confluence/upload-attachment/route.ts @@ -0,0 +1,135 @@ +import { type NextRequest, NextResponse } from 'next/server' +import { validateAlphanumericId, validateJiraCloudId } from '@/lib/core/security/input-validation' +import { createLogger } from '@/lib/logs/console/logger' +import { processSingleFileToUserFile } from '@/lib/uploads/utils/file-utils' +import { downloadFileFromStorage } from '@/lib/uploads/utils/file-utils.server' +import { getConfluenceCloudId } from '@/tools/confluence/utils' + +const logger = createLogger('ConfluenceUploadAttachmentAPI') + +export const dynamic = 'force-dynamic' + +export async function POST(request: NextRequest) { + try { + const body = await request.json() + const { domain, accessToken, cloudId: providedCloudId, pageId, file, fileName, comment } = body + + if (!domain) { + return NextResponse.json({ error: 'Domain is required' }, { status: 400 }) + } + + if (!accessToken) { + return NextResponse.json({ error: 'Access token is required' }, { status: 400 }) + } + + if (!pageId) { + return NextResponse.json({ error: 'Page ID is required' }, { status: 400 }) + } + + if (!file) { + return NextResponse.json({ error: 'File is required' }, { status: 400 }) + } + + const pageIdValidation = validateAlphanumericId(pageId, 'pageId', 255) + if (!pageIdValidation.isValid) { + return NextResponse.json({ error: pageIdValidation.error }, { status: 400 }) + } + + const cloudId = providedCloudId || (await getConfluenceCloudId(domain, accessToken)) + + const cloudIdValidation = validateJiraCloudId(cloudId, 'cloudId') + if (!cloudIdValidation.isValid) { + return NextResponse.json({ error: cloudIdValidation.error }, { status: 400 }) + } + + let fileToProcess = file + if (Array.isArray(file)) { + if (file.length === 0) { + return NextResponse.json({ error: 'No file provided' }, { status: 400 }) + } + fileToProcess = file[0] + } + + let userFile + try { + userFile = processSingleFileToUserFile(fileToProcess, 'confluence-upload', logger) + } catch (error) { + return NextResponse.json( + { error: error instanceof Error ? error.message : 'Failed to process file' }, + { status: 400 } + ) + } + + let fileBuffer: Buffer + try { + fileBuffer = await downloadFileFromStorage(userFile, 'confluence-upload', logger) + } catch (error) { + logger.error('Failed to download file from storage:', error) + return NextResponse.json( + { + error: `Failed to download file: ${error instanceof Error ? error.message : 'Unknown error'}`, + }, + { status: 500 } + ) + } + + const uploadFileName = fileName || userFile.name || 'attachment' + const mimeType = userFile.type || 'application/octet-stream' + + const url = `https://api.atlassian.com/ex/confluence/${cloudId}/wiki/rest/api/content/${pageId}/child/attachment` + + const formData = new FormData() + const blob = new Blob([new Uint8Array(fileBuffer)], { type: mimeType }) + formData.append('file', blob, uploadFileName) + + if (comment) { + formData.append('comment', comment) + } + + const response = await fetch(url, { + method: 'POST', + headers: { + Authorization: `Bearer ${accessToken}`, + 'X-Atlassian-Token': 'nocheck', + }, + body: formData, + }) + + if (!response.ok) { + const errorData = await response.json().catch(() => null) + logger.error('Confluence API error response:', { + status: response.status, + statusText: response.statusText, + error: JSON.stringify(errorData, null, 2), + }) + + let errorMessage = `Failed to upload attachment to Confluence (${response.status})` + if (errorData?.message) { + errorMessage = errorData.message + } else if (errorData?.errorMessage) { + errorMessage = errorData.errorMessage + } + + return NextResponse.json({ error: errorMessage }, { status: response.status }) + } + + const data = await response.json() + + const attachment = data.results?.[0] || data + + return NextResponse.json({ + attachmentId: attachment.id, + title: attachment.title, + fileSize: attachment.extensions?.fileSize || 0, + mediaType: attachment.extensions?.mediaType || mimeType, + downloadUrl: attachment._links?.download || '', + pageId: pageId, + }) + } catch (error) { + logger.error('Error uploading Confluence attachment:', error) + return NextResponse.json( + { error: (error as Error).message || 'Internal server error' }, + { status: 500 } + ) + } +} diff --git a/apps/sim/app/api/tools/onedrive/upload/route.ts b/apps/sim/app/api/tools/onedrive/upload/route.ts index 43875ce2a..db7936120 100644 --- a/apps/sim/app/api/tools/onedrive/upload/route.ts +++ b/apps/sim/app/api/tools/onedrive/upload/route.ts @@ -4,7 +4,10 @@ import { z } from 'zod' import { checkHybridAuth } from '@/lib/auth/hybrid' import { generateRequestId } from '@/lib/core/utils/request' import { createLogger } from '@/lib/logs/console/logger' -import { processSingleFileToUserFile } from '@/lib/uploads/utils/file-utils' +import { + getExtensionFromMimeType, + processSingleFileToUserFile, +} from '@/lib/uploads/utils/file-utils' import { downloadFileFromStorage } from '@/lib/uploads/utils/file-utils.server' import { normalizeExcelValues } from '@/tools/onedrive/utils' @@ -27,9 +30,8 @@ const OneDriveUploadSchema = z.object({ fileName: z.string().min(1, 'File name is required'), file: z.any().optional(), // UserFile object (optional for blank Excel creation) folderId: z.string().optional().nullable(), - mimeType: z.string().optional(), - // Optional Excel write-after-create inputs - values: ExcelValuesSchema.optional(), + mimeType: z.string().nullish(), // Accept string, null, or undefined + values: ExcelValuesSchema.optional().nullable(), }) export async function POST(request: NextRequest) { @@ -149,9 +151,17 @@ export async function POST(request: NextRequest) { ) } - // Ensure file name has correct extension for Excel files + // Ensure file name has an appropriate extension let fileName = validatedData.fileName - if (isExcelCreation && !fileName.endsWith('.xlsx')) { + const hasExtension = fileName.includes('.') && fileName.lastIndexOf('.') > 0 + + if (!hasExtension) { + const extension = getExtensionFromMimeType(mimeType) + if (extension) { + fileName = `${fileName}.${extension}` + logger.info(`[${requestId}] Added extension to filename: ${fileName}`) + } + } else if (isExcelCreation && !fileName.endsWith('.xlsx')) { fileName = `${fileName.replace(/\.[^.]*$/, '')}.xlsx` } diff --git a/apps/sim/app/api/tools/sqs/send/route.ts b/apps/sim/app/api/tools/sqs/send/route.ts new file mode 100644 index 000000000..402f5ca53 --- /dev/null +++ b/apps/sim/app/api/tools/sqs/send/route.ts @@ -0,0 +1,70 @@ +import { randomUUID } from 'crypto' +import { type NextRequest, NextResponse } from 'next/server' +import { z } from 'zod' +import { createLogger } from '@/lib/logs/console/logger' +import { createSqsClient, sendMessage } from '../utils' + +const logger = createLogger('SQSSendMessageAPI') + +const SendMessageSchema = z.object({ + region: z.string().min(1, 'AWS region is required'), + accessKeyId: z.string().min(1, 'AWS access key ID is required'), + secretAccessKey: z.string().min(1, 'AWS secret access key is required'), + queueUrl: z.string().min(1, 'Queue URL is required'), + messageGroupId: z.string().nullish(), + messageDeduplicationId: z.string().nullish(), + data: z.record(z.unknown()).refine((obj) => Object.keys(obj).length > 0, { + message: 'Data object must have at least one field', + }), +}) + +export async function POST(request: NextRequest) { + const requestId = randomUUID().slice(0, 8) + + try { + const body = await request.json() + const params = SendMessageSchema.parse(body) + + logger.info(`[${requestId}] Sending message to SQS queue ${params.queueUrl}`) + + const client = createSqsClient({ + region: params.region, + accessKeyId: params.accessKeyId, + secretAccessKey: params.secretAccessKey, + }) + + try { + const result = await sendMessage( + client, + params.queueUrl, + params.data, + params.messageGroupId, + params.messageDeduplicationId + ) + + logger.info(`[${requestId}] Message sent to SQS queue ${params.queueUrl}`) + + return NextResponse.json({ + message: `Message sent to SQS queue ${params.queueUrl}`, + id: result?.id, + }) + } finally { + client.destroy() + } + } catch (error) { + if (error instanceof z.ZodError) { + logger.warn(`[${requestId}] Invalid request data`, { + errors: error.errors, + }) + return NextResponse.json( + { error: 'Invalid request data', details: error.errors }, + { status: 400 } + ) + } + + const errorMessage = error instanceof Error ? error.message : 'Unknown error occurred' + logger.error(`[${requestId}] SQS send message failed:`, error) + + return NextResponse.json({ error: `SQS send message failed: ${errorMessage}` }, { status: 500 }) + } +} diff --git a/apps/sim/app/api/tools/sqs/utils.ts b/apps/sim/app/api/tools/sqs/utils.ts new file mode 100644 index 000000000..e3853af13 --- /dev/null +++ b/apps/sim/app/api/tools/sqs/utils.ts @@ -0,0 +1,40 @@ +import { SendMessageCommand, type SendMessageCommandOutput, SQSClient } from '@aws-sdk/client-sqs' +import type { SqsConnectionConfig } from '@/tools/sqs/types' + +export function createSqsClient(config: SqsConnectionConfig): SQSClient { + return new SQSClient({ + region: config.region, + credentials: { + accessKeyId: config.accessKeyId, + secretAccessKey: config.secretAccessKey, + }, + }) +} + +export async function sendMessage( + client: SQSClient, + queueUrl: string, + data: Record, + messageGroupId?: string | null, + messageDeduplicationId?: string | null +): Promise | null> { + const command = new SendMessageCommand({ + QueueUrl: queueUrl, + MessageBody: JSON.stringify(data), + MessageGroupId: messageGroupId ?? undefined, + ...(messageDeduplicationId ? { MessageDeduplicationId: messageDeduplicationId } : {}), + }) + + const response = await client.send(command) + return parseSendMessageResponse(response) +} + +function parseSendMessageResponse( + response: SendMessageCommandOutput +): Record | null { + if (!response) { + return null + } + + return { id: response.MessageId } +} diff --git a/apps/sim/app/api/tools/stagehand/agent/route.ts b/apps/sim/app/api/tools/stagehand/agent/route.ts index 60341a4d1..1e5f480fc 100644 --- a/apps/sim/app/api/tools/stagehand/agent/route.ts +++ b/apps/sim/app/api/tools/stagehand/agent/route.ts @@ -1,4 +1,3 @@ -import { Stagehand } from '@browserbasehq/stagehand' import { type NextRequest, NextResponse } from 'next/server' import { z } from 'zod' import { env } from '@/lib/core/config/env' @@ -7,6 +6,8 @@ import { ensureZodObject, normalizeUrl } from '@/app/api/tools/stagehand/utils' const logger = createLogger('StagehandAgentAPI') +type StagehandType = import('@browserbasehq/stagehand').Stagehand + const BROWSERBASE_API_KEY = env.BROWSERBASE_API_KEY const BROWSERBASE_PROJECT_ID = env.BROWSERBASE_PROJECT_ID @@ -15,9 +16,13 @@ const requestSchema = z.object({ startUrl: z.string().url(), outputSchema: z.any(), variables: z.any(), + provider: z.enum(['openai', 'anthropic']).optional().default('openai'), apiKey: z.string(), }) +/** + * Extracts the inner schema object from a potentially nested schema structure + */ function getSchemaObject(outputSchema: Record): Record { if (outputSchema.schema && typeof outputSchema.schema === 'object') { return outputSchema.schema @@ -25,6 +30,9 @@ function getSchemaObject(outputSchema: Record): Record return outputSchema } +/** + * Formats a schema object as a string for inclusion in agent instructions + */ function formatSchemaForInstructions(schema: Record): string { try { return JSON.stringify(schema, null, 2) @@ -34,359 +42,55 @@ function formatSchemaForInstructions(schema: Record): string { } } -function extractActionDirectives(task: string): { - processedTask: string - actionDirectives: Array<{ index: number; action: string }> -} { - const actionRegex = /\[\[ACTION:(.*?)\]\]/g - const actionDirectives: Array<{ index: number; action: string }> = [] - let match - let processedTask = task +/** + * Processes variables from various input formats into a standardized key-value object + */ +function processVariables(variables: any): Record | undefined { + if (!variables) return undefined - while ((match = actionRegex.exec(task)) !== null) { - const actionText = match[1].trim() - const index = match.index + let variablesObject: Record = {} - actionDirectives.push({ - index, - action: actionText, + if (Array.isArray(variables)) { + variables.forEach((item: any) => { + if (item?.cells?.Key && typeof item.cells.Key === 'string') { + variablesObject[item.cells.Key] = item.cells.Value || '' + } }) - } - - if (actionDirectives.length > 0) { - let offset = 0 - for (let i = 0; i < actionDirectives.length; i++) { - const directive = actionDirectives[i] - const originalIndex = directive.index - const placeholder = `[SECURE ACTION ${i + 1}]` - - const adjustedIndex = originalIndex - offset - - const fullMatch = task.substring( - originalIndex, - originalIndex + task.substring(originalIndex).indexOf(']]') + 2 - ) - - processedTask = - processedTask.substring(0, adjustedIndex) + - placeholder + - processedTask.substring(adjustedIndex + fullMatch.length) - - offset += fullMatch.length - placeholder.length + } else if (typeof variables === 'object' && variables !== null) { + variablesObject = { ...variables } + } else if (typeof variables === 'string') { + try { + variablesObject = JSON.parse(variables) + } catch (_e) { + logger.warn('Failed to parse variables string as JSON', { variables }) + return undefined } } - return { processedTask, actionDirectives } + if (Object.keys(variablesObject).length === 0) { + return undefined + } + + return variablesObject } -async function processSecureActions( - message: string, - stagehand: Stagehand, - actionDirectives: Array<{ index: number; action: string }>, - variables: Record | undefined -): Promise<{ - modifiedMessage: string - executedActions: Array<{ action: string; result: { success: boolean; message: string } }> -}> { - const executedActions: Array<{ action: string; result: { success: boolean; message: string } }> = - [] - let modifiedMessage = message +/** + * Substitutes variable placeholders in text with their actual values + * Variables are referenced using %key% syntax + */ +function substituteVariables(text: string, variables: Record | undefined): string { + if (!variables) return text - const secureActionMatches = [...message.matchAll(/EXECUTE SECURE ACTION (\d+)/gi)] - - for (const match of secureActionMatches) { - const fullMatch = match[0] - const actionIndex = Number.parseInt(match[1], 10) - 1 - - if (actionDirectives[actionIndex]) { - const actionDirective = actionDirectives[actionIndex] - let resultMessage = '' - - try { - logger.info(`Executing secure action ${actionIndex + 1}`, { - action: actionDirective.action, - }) - - const result = await stagehand.act(actionDirective.action, { - variables: variables || {}, - }) - - executedActions.push({ - action: actionDirective.action, - result: { - success: result.success, - message: result.message, - }, - }) - - resultMessage = `\nSecure action ${actionIndex + 1} executed successfully.\n` - } catch (error) { - logger.error(`Error executing secure action ${actionIndex + 1}`, { - error, - action: actionDirective.action, - }) - - executedActions.push({ - action: actionDirective.action, - result: { - success: false, - message: error instanceof Error ? error.message : 'Unknown error', - }, - }) - - resultMessage = `\nError executing secure action ${actionIndex + 1}: ${error instanceof Error ? error.message : 'Unknown error'}\n` - } - - modifiedMessage = modifiedMessage.replace(fullMatch, resultMessage) - } else { - const errorMessage = `\nError: Secure action ${actionIndex + 1} does not exist.\n` - modifiedMessage = modifiedMessage.replace(fullMatch, errorMessage) - } - } - - return { modifiedMessage, executedActions } -} - -async function attemptDirectLogin( - stagehand: Stagehand, - variables: Record | undefined -): Promise<{ - attempted: boolean - success: boolean - message: string -}> { - if (!stagehand || !variables) { - return { - attempted: false, - success: false, - message: 'Login not attempted: missing stagehand or variables', - } - } - - const usernameKeys = ['username', 'email', 'user'] - const passwordKeys = ['password', 'pass', 'secret'] - - const usernameKey = usernameKeys.find((key) => variables[key] !== undefined) - const passwordKey = passwordKeys.find((key) => variables[key] !== undefined) - - if (!usernameKey || !passwordKey) { - logger.info('Direct login skipped: Missing username or password variable.') - return { - attempted: false, - success: false, - message: 'Login not attempted: Missing username or password variable.', - } - } - - const usernameValue = variables[usernameKey] - const passwordValue = variables[passwordKey] - - logger.info('Attempting direct login with provided variables.') - - try { - const page = stagehand.context.pages()[0] - - const usernameSelectors = [ - 'input[type="text"][name*="user"]', - 'input[type="email"]', - 'input[name*="email"]', - 'input[id*="user"]', - 'input[id*="email"]', - 'input[placeholder*="user" i]', - 'input[placeholder*="email" i]', - 'input[aria-label*="user" i]', - 'input[aria-label*="email" i]', - ] - - const passwordSelectors = [ - 'input[type="password"]', - 'input[name*="pass"]', - 'input[id*="pass"]', - 'input[placeholder*="pass" i]', - 'input[aria-label*="pass" i]', - ] - - const submitSelectors = [ - 'button[type="submit"]', - 'input[type="submit"]', - 'button:has-text("Login")', - 'button:has-text("Sign in")', - 'button[id*="login"]', - 'button[id*="submit"]', - 'button[name*="login"]', - 'button[name*="submit"]', - ] - - let usernameFilled = false - for (const selector of usernameSelectors) { - const input = page.locator(selector).first() - if ((await input.count()) > 0 && (await input.isVisible())) { - logger.info(`Found username field: ${selector}`) - await input.fill(usernameValue) - usernameFilled = true - break - } - } - - if (!usernameFilled) { - logger.warn('Could not find a visible username/email field for direct login.') - return { - attempted: false, - success: false, - message: 'Login not attempted: Could not find a username field.', - } - } - - let passwordFilled = false - for (const selector of passwordSelectors) { - const input = page.locator(selector).first() - if ((await input.count()) > 0 && (await input.isVisible())) { - logger.info(`Found password field: ${selector}`) - await input.fill(passwordValue) - passwordFilled = true - break - } - } - - if (!passwordFilled) { - logger.warn('Could not find a visible password field for direct login.') - return { - attempted: true, - success: false, - message: - 'Login attempt incomplete: Found and filled username but could not find password field.', - } - } - - let submitClicked = false - for (const selector of submitSelectors) { - const button = page.locator(selector).first() - if ((await button.count()) > 0 && (await button.isVisible())) { - logger.info(`Found submit button: ${selector}`) - await button.click() - await new Promise((resolve) => setTimeout(resolve, 3000)) - submitClicked = true - break - } - } - - if (!submitClicked) { - logger.warn('Could not find a visible/enabled submit button for direct login.') - return { - attempted: true, - success: false, - message: - 'Login attempt incomplete: Found and filled form fields but could not find submit button.', - } - } - - logger.info( - 'Direct login attempt completed (fields filled, submit clicked). Verifying result...' - ) - - const currentUrl = page.url() - const isStillOnLoginPage = - currentUrl.includes('login') || - currentUrl.includes('signin') || - currentUrl.includes('auth') || - currentUrl.includes('signup') || - currentUrl.includes('register') - - const hasLoginError = await page.evaluate(() => { - const errorSelectors = [ - '[class*="error" i]', - '[id*="error" i]', - '[role="alert"]', - '.alert-danger', - '.text-danger', - '.text-error', - '.notification-error', - ] - - for (const selector of errorSelectors) { - const elements = document.querySelectorAll(selector) - for (const element of elements) { - const text = element.textContent || '' - if ( - text.toLowerCase().includes('password') || - text.toLowerCase().includes('login failed') || - text.toLowerCase().includes('incorrect') || - text.toLowerCase().includes('invalid') || - text.toLowerCase().includes("doesn't match") || - text.toLowerCase().includes('does not match') - ) { - return true - } - } - } - - return false - }) - - const hasSuccessIndicators = await page.evaluate(() => { - const userMenuSelectors = [ - '[class*="avatar" i]', - '[class*="profile" i]', - '[class*="user-menu" i]', - '[class*="account" i]', - '[aria-label*="account" i]', - '[aria-label*="profile" i]', - ] - - for (const selector of userMenuSelectors) { - if (document.querySelector(selector)) { - return true - } - } - - return false - }) - - if (!isStillOnLoginPage && !hasLoginError && hasSuccessIndicators) { - logger.info('Login verification successful: Detected successful login.') - return { - attempted: true, - success: true, - message: 'Login successful. User is now authenticated.', - } - } - if (hasLoginError) { - logger.warn('Login verification failed: Detected login error message.') - return { - attempted: true, - success: false, - message: - 'Login attempted but failed: Detected error message on page. Likely invalid credentials.', - } - } - if (isStillOnLoginPage) { - logger.warn('Login verification inconclusive: Still on login page.') - return { - attempted: true, - success: false, - message: 'Login attempted but failed: Still on login/authentication page.', - } - } - logger.info('Login verification inconclusive. Proceeding as if login was successful.') - return { - attempted: true, - success: true, - message: 'Login likely successful, but could not verify with certainty.', - } - } catch (error) { - logger.error('Error during direct login attempt', { - error: error instanceof Error ? error.message : String(error), - }) - return { - attempted: true, - success: false, - message: `Login attempt encountered an error: ${error instanceof Error ? error.message : String(error)}`, - } + let result = text + for (const [key, value] of Object.entries(variables)) { + const placeholder = `%${key}%` + result = result.split(placeholder).join(value) } + return result } export async function POST(request: NextRequest) { - let stagehand: Stagehand | null = null + let stagehand: StagehandType | null = null try { const body = await request.json() @@ -408,70 +112,17 @@ export async function POST(request: NextRequest) { } const params = validationResult.data - let variablesObject: Record | undefined + const { task, startUrl: rawStartUrl, outputSchema, provider, apiKey } = params + const variablesObject = processVariables(params.variables) - if (params.variables) { - if (Array.isArray(params.variables)) { - variablesObject = {} - params.variables.forEach((item: any) => { - if (item?.cells?.Key && typeof item.cells.Key === 'string') { - variablesObject![item.cells.Key] = item.cells.Value || '' - } - }) - } else if (typeof params.variables === 'object' && params.variables !== null) { - variablesObject = { ...params.variables } - } else if (typeof params.variables === 'string') { - try { - variablesObject = JSON.parse(params.variables) - } catch (_e) { - logger.warn('Failed to parse variables string as JSON', { variables: params.variables }) - } - } - - if (!variablesObject || Object.keys(variablesObject).length === 0) { - logger.warn('Variables object is empty after processing', { - originalVariables: params.variables, - variablesType: typeof params.variables, - }) - - if (typeof params.variables === 'object' && params.variables !== null) { - variablesObject = {} - for (const key in params.variables) { - if (typeof params.variables[key] === 'string') { - variablesObject[key] = params.variables[key] - } - } - logger.info('Recovered variables from raw object', { - recoveredCount: Object.keys(variablesObject).length, - }) - } - } - - if (variablesObject) { - const safeVarKeys = Object.keys(variablesObject).map((key) => { - return key.toLowerCase().includes('password') - ? `${key}: [REDACTED]` - : `${key}: ${variablesObject?.[key]}` - }) - - logger.info('Collected variables for substitution', { - variableCount: Object.keys(variablesObject).length, - safeVariables: safeVarKeys, - }) - } - } - - const { task, startUrl: rawStartUrl, outputSchema, apiKey } = params - - let startUrl = rawStartUrl - - startUrl = normalizeUrl(startUrl) + const startUrl = normalizeUrl(rawStartUrl) logger.info('Starting Stagehand agent process', { rawStartUrl, startUrl, hasTask: !!task, - hasVariables: !!variablesObject && Object.keys(variablesObject).length > 0, + hasVariables: !!variablesObject, + provider, }) if (!BROWSERBASE_API_KEY || !BROWSERBASE_PROJECT_ID) { @@ -486,17 +137,38 @@ export async function POST(request: NextRequest) { ) } + if (!apiKey || typeof apiKey !== 'string') { + logger.error('API key is required') + return NextResponse.json({ error: 'API key is required' }, { status: 400 }) + } + + if (provider === 'openai' && !apiKey.startsWith('sk-')) { + logger.error('Invalid OpenAI API key format') + return NextResponse.json({ error: 'Invalid OpenAI API key format' }, { status: 400 }) + } + + if (provider === 'anthropic' && !apiKey.startsWith('sk-ant-')) { + logger.error('Invalid Anthropic API key format') + return NextResponse.json({ error: 'Invalid Anthropic API key format' }, { status: 400 }) + } + + const modelName = + provider === 'anthropic' ? 'anthropic/claude-3-7-sonnet-latest' : 'openai/gpt-4.1' + try { - logger.info('Initializing Stagehand with Browserbase (v3)') + logger.info('Initializing Stagehand with Browserbase (v3)', { provider, modelName }) + + const { Stagehand } = await import('@browserbasehq/stagehand') stagehand = new Stagehand({ env: 'BROWSERBASE', apiKey: BROWSERBASE_API_KEY, projectId: BROWSERBASE_PROJECT_ID, verbose: 1, + disableAPI: true, // Use local agent handler instead of Browserbase API logger: (msg) => logger.info(typeof msg === 'string' ? msg : JSON.stringify(msg)), model: { - modelName: 'anthropic/claude-3-7-sonnet-latest', + modelName, apiKey: apiKey, }, }) @@ -506,288 +178,47 @@ export async function POST(request: NextRequest) { logger.info('Stagehand initialized successfully') const page = stagehand.context.pages()[0] - logger.info(`Navigating to ${startUrl}`) await page.goto(startUrl, { waitUntil: 'networkidle' }) logger.info('Navigation complete') - const ensureLoginPage = async (): Promise => { - if (!stagehand) { - logger.error('Stagehand instance is null') - return false - } + const taskWithVariables = substituteVariables(task, variablesObject) - const currentPage = stagehand.context.pages()[0] - logger.info('Checking if we need to navigate to login page') + let agentInstructions = `You are a helpful web browsing assistant. Complete the following task: ${taskWithVariables}` - try { - const loginFormExists = await currentPage.evaluate(() => { - const usernameInput = document.querySelector( - 'input[type="text"], input[type="email"], input[name="username"], input[id="username"]' - ) - const passwordInput = document.querySelector('input[type="password"]') - return !!(usernameInput && passwordInput) - }) - - if (loginFormExists) { - logger.info('Already on login page with username/password fields') - return true - } - - const loginElements = await stagehand.observe('Find login buttons or links on this page') - - if (loginElements && loginElements.length > 0) { - for (const element of loginElements) { - if ( - element.description.toLowerCase().includes('login') || - element.description.toLowerCase().includes('sign in') - ) { - logger.info(`Found login element: ${element.description}`) - - if (element.selector) { - logger.info(`Clicking login element: ${element.selector}`) - await stagehand.act(`Click on the ${element.description}`) - - await new Promise((resolve) => setTimeout(resolve, 2000)) - - const loginPageAfterClick = await currentPage.evaluate(() => { - const usernameInput = document.querySelector( - 'input[type="text"], input[type="email"], input[name="username"], input[id="username"]' - ) - const passwordInput = document.querySelector('input[type="password"]') - return !!(usernameInput && passwordInput) - }) - - if (loginPageAfterClick) { - logger.info('Successfully navigated to login page') - return true - } - } - } - } - } - - logger.info('Trying direct navigation to /login path') - const currentUrl = currentPage.url() - const loginUrl = new URL('/login', currentUrl).toString() - - await currentPage.goto(loginUrl, { waitUntil: 'networkidle' }) - - const loginPageAfterDirectNav = await currentPage.evaluate(() => { - const usernameInput = document.querySelector( - 'input[type="text"], input[type="email"], input[name="username"], input[id="username"]' - ) - const passwordInput = document.querySelector('input[type="password"]') - return !!(usernameInput && passwordInput) - }) - - if (loginPageAfterDirectNav) { - logger.info('Successfully navigated to login page via direct URL') - return true - } - - logger.warn('Could not navigate to login page') - return false - } catch (error) { - logger.error('Error finding login page', { error }) - return false - } + if (variablesObject && Object.keys(variablesObject).length > 0) { + const safeVarKeys = Object.keys(variablesObject).map((key) => { + return key.toLowerCase().includes('password') ? `${key}: [REDACTED]` : key + }) + logger.info('Variables available for task', { variables: safeVarKeys }) } - let directLoginAttempted = false - let directLoginSuccess = false - let loginMessage = '' - let taskForAgent = task - let agentInstructions = '' - - const hasLoginVars = - variablesObject && - Object.keys(variablesObject).some((k) => - ['username', 'email', 'user'].includes(k.toLowerCase()) - ) && - Object.keys(variablesObject).some((k) => - ['password', 'pass', 'secret'].includes(k.toLowerCase()) - ) - - if (hasLoginVars) { - logger.info('Login variables detected, checking if login page navigation is needed.') - const isOnLoginPage = await ensureLoginPage() - - if (isOnLoginPage && stagehand) { - logger.info('Attempting direct login before involving the agent.') - const loginResult = await attemptDirectLogin(stagehand, variablesObject) - directLoginAttempted = loginResult.attempted - directLoginSuccess = loginResult.success - loginMessage = loginResult.message - - logger.info('Direct login attempt result', { - attempted: directLoginAttempted, - success: directLoginSuccess, - message: loginMessage, - }) - - if (directLoginAttempted) { - if (directLoginSuccess) { - taskForAgent = `Login has been completed programmatically and was successful. Please verify that you are logged in and then proceed with the original task: ${task}` - } else { - taskForAgent = `Login was attempted programmatically but failed (${loginMessage}). You will need to check the current state and either: -1. Try to login again if you see a login form -2. Or proceed with the task if login actually succeeded: ${task}` - } - logger.info('Task modified for agent after direct login attempt.') - } - } else { - logger.info('Skipping direct login attempt: Not on login page or stagehand unavailable.') - } - } else { - logger.info('Skipping direct login: No relevant username/password variables found.') + if (outputSchema && typeof outputSchema === 'object' && outputSchema !== null) { + const schemaObj = getSchemaObject(outputSchema) + agentInstructions += `\n\nIMPORTANT: You MUST return your final result in the following JSON format exactly:\n${formatSchemaForInstructions(schemaObj)}\n\nYour response should consist of valid JSON only, with no additional text.` } - const { processedTask, actionDirectives } = extractActionDirectives(task) - - logger.info('Extracted action directives', { - actionCount: actionDirectives.length, - hasActionDirectives: actionDirectives.length > 0, - }) - - if (directLoginAttempted) { - const loginInstructions = directLoginSuccess - ? 'Login was completed programmatically and appears successful. Please VERIFY if the login was successful by checking for elements that only appear when logged in.' - : `Login was attempted programmatically but appears to have FAILED (${loginMessage}). - IMPORTANT: Check if you see a login form, and if so: - 1. Username and password fields may already be filled (but may contain placeholder text if the login failed) - 2. If you need to attempt login again, make sure you use the actual variable placeholders (%username%, %password%) so they are properly substituted. - 3. Check for any error messages to understand why the login failed.` - - agentInstructions = `You are a helpful web browsing assistant. ${loginInstructions} -Once you've verified the login state, proceed with the following task: ${task} -${actionDirectives.length > 0 ? `\n\nNote on Secure Actions: You might see [SECURE ACTION X] placeholders. Handle these by outputting "EXECUTE SECURE ACTION X" when appropriate.` : ''} -${outputSchema && typeof outputSchema === 'object' && outputSchema !== null ? `\n\nIMPORTANT: You MUST return your final result in the following JSON format exactly:\n${formatSchemaForInstructions(getSchemaObject(outputSchema))}\n\nYour response should consist of valid JSON only, with no additional text.` : ''}` - } else { - agentInstructions = `You are a helpful web browsing assistant that will complete tasks on websites. Your goal is to accomplish the following task: ${processedTask}\n -${actionDirectives.length > 0 ? `\n\nYou'll see [SECURE ACTION X] placeholders in the task. These represent secure actions that will be handled automatically when you navigate to the appropriate page. When you reach a point where a secure action should be performed, output a line with exactly: "EXECUTE SECURE ACTION X" (where X is the action number). Then wait for confirmation before proceeding.` : ''}\n -IMPORTANT: For any form fields that require sensitive information like usernames or passwords: -1. If you see placeholders like %username% or %password% in the task, DO NOT ask for the actual values. -2. If you need to type in login forms, use the EXACT placeholder text (e.g., "%username%" or "%password%") UNLESS instructed otherwise. -3. The system will automatically substitute the real values when you use these placeholders IF direct login was not attempted. -4. Example correct approach: "type %username% in the username field".${ - variablesObject && Object.keys(variablesObject).length > 0 - ? `\n5. Available variables: ${Object.keys(variablesObject) - .map((k) => `%${k}%`) - .join(', ')}` - : '' - }\n -WEBSITE NAVIGATION GUIDANCE: -1. If you need to log in but don't see a login form, LOOK for login buttons or links (they might say "Login" or "Sign in"). -2. If you're on a login page but don't see a username/password form, try scrolling or looking for "Continue with email" or similar options. -3. Always TYPE carefully in form fields - use accurate coordinates for clicking if necessary. -4. Use specific actions like "type %username% in the username field". -5. After logging in, verify you've successfully authenticated before proceeding.\n -${outputSchema && typeof outputSchema === 'object' && outputSchema !== null ? `\n\nIMPORTANT: You MUST return your final result in the following JSON format exactly:\n${formatSchemaForInstructions(getSchemaObject(outputSchema))}\n\nYour response should consist of valid JSON only, with no additional text. Ensure the data in your response adheres strictly to the schema provided.` : ''}` - } - - logger.info('Creating Stagehand agent', { - directLoginAttempted, - directLoginSuccess, - loginMessage, - }) - - const additionalContext = directLoginAttempted - ? `Login was ${directLoginSuccess ? 'successfully completed' : 'attempted but failed'}. - ${loginMessage} - First check the current state of the page. - If login failed, you may need to click the login button again after ensuring fields are properly filled.` - : ` -This task may contain placeholder variables like %username% and %password%. -When you need to fill form fields, use these placeholders directly (e.g., type "%username%"). -The system will substitute actual values when these placeholders are used, keeping sensitive data secure. - `.trim() + logger.info('Creating Stagehand agent') const agent = stagehand.agent({ model: { - modelName: 'anthropic/claude-3-7-sonnet-latest', + modelName, apiKey: apiKey, }, executionModel: { - modelName: 'anthropic/claude-3-7-sonnet-latest', + modelName, apiKey: apiKey, }, - systemPrompt: `${agentInstructions}\n\n${additionalContext}`, + systemPrompt: agentInstructions, }) - const runAgentWithSecureActions = async (): Promise => { - let currentResult = await agent.execute({ instruction: taskForAgent }) - let allExecutedActions: Array<{ - action: string - result: { success: boolean; message: string } - }> = [] - let iterationCount = 0 - const maxIterations = 10 // Safety limit for iterations + logger.info('Executing agent task', { task: taskWithVariables }) - while (iterationCount < maxIterations && stagehand !== null) { - if (!currentResult.message) { - break - } - - if (!/EXECUTE SECURE ACTION \d+/i.test(currentResult.message)) { - break - } - - const { modifiedMessage, executedActions } = await processSecureActions( - currentResult.message, - stagehand, - actionDirectives, - variablesObject - ) - - allExecutedActions = [...allExecutedActions, ...executedActions] - - if (executedActions.length === 0) { - break - } - - iterationCount++ - - const hasStructuredOutput = /```json|^\s*{/.test(modifiedMessage) - if (hasStructuredOutput) { - currentResult.message = modifiedMessage - break - } - - logger.info( - `Continuing agent execution with processed actions, iteration ${iterationCount}` - ) - - try { - const continuationPrompt = `${modifiedMessage}\n\nPlease continue with the task.` - const nextResult = await agent.execute({ instruction: continuationPrompt }) - - currentResult = { - ...nextResult, - actions: [...currentResult.actions, ...nextResult.actions], - } - } catch (error) { - logger.error('Error continuing agent execution', { error }) - break - } - } - - return { - ...currentResult, - secureActions: allExecutedActions, - } - } - - logger.info('Executing agent task', { - task: taskForAgent, - actionDirectiveCount: actionDirectives.length, - directLoginAttempted, - directLoginSuccess, - loginMessage, + const agentExecutionResult = await agent.execute({ + instruction: taskWithVariables, + maxSteps: 20, }) - const agentExecutionResult = await runAgentWithSecureActions() - const agentResult = { success: agentExecutionResult.success, completed: agentExecutionResult.completed, @@ -798,7 +229,7 @@ The system will substitute actual values when these placeholders are used, keepi logger.info('Agent execution complete', { success: agentResult.success, completed: agentResult.completed, - executedActionCount: agentExecutionResult.secureActions?.length || 0, + actionCount: agentResult.actions?.length || 0, }) let structuredOutput = null @@ -849,7 +280,6 @@ The system will substitute actual values when these placeholders are used, keepi return NextResponse.json({ agentResult, structuredOutput, - secureActions: agentExecutionResult.secureActions || [], }) } catch (error) { logger.error('Stagehand agent execution error', { diff --git a/apps/sim/app/api/tools/stagehand/extract/route.ts b/apps/sim/app/api/tools/stagehand/extract/route.ts index b7a414892..7da282815 100644 --- a/apps/sim/app/api/tools/stagehand/extract/route.ts +++ b/apps/sim/app/api/tools/stagehand/extract/route.ts @@ -1,4 +1,3 @@ -import { Stagehand } from '@browserbasehq/stagehand' import { type NextRequest, NextResponse } from 'next/server' import { z } from 'zod' import { env } from '@/lib/core/config/env' @@ -7,6 +6,8 @@ import { ensureZodObject, normalizeUrl } from '@/app/api/tools/stagehand/utils' const logger = createLogger('StagehandExtractAPI') +type StagehandType = import('@browserbasehq/stagehand').Stagehand + const BROWSERBASE_API_KEY = env.BROWSERBASE_API_KEY const BROWSERBASE_PROJECT_ID = env.BROWSERBASE_PROJECT_ID @@ -15,12 +16,13 @@ const requestSchema = z.object({ schema: z.record(z.any()), useTextExtract: z.boolean().optional().default(false), selector: z.string().nullable().optional(), + provider: z.enum(['openai', 'anthropic']).optional().default('openai'), apiKey: z.string(), url: z.string().url(), }) export async function POST(request: NextRequest) { - let stagehand: Stagehand | null = null + let stagehand: StagehandType | null = null try { const body = await request.json() @@ -41,7 +43,7 @@ export async function POST(request: NextRequest) { } const params = validationResult.data - const { url: rawUrl, instruction, selector, apiKey, schema } = params + const { url: rawUrl, instruction, selector, provider, apiKey, schema } = params const url = normalizeUrl(rawUrl) logger.info('Starting Stagehand extraction process', { @@ -71,13 +73,28 @@ export async function POST(request: NextRequest) { ) } - if (!apiKey || typeof apiKey !== 'string' || !apiKey.startsWith('sk-')) { + if (!apiKey || typeof apiKey !== 'string') { + logger.error('API key is required') + return NextResponse.json({ error: 'API key is required' }, { status: 400 }) + } + + if (provider === 'openai' && !apiKey.startsWith('sk-')) { logger.error('Invalid OpenAI API key format') return NextResponse.json({ error: 'Invalid OpenAI API key format' }, { status: 400 }) } + if (provider === 'anthropic' && !apiKey.startsWith('sk-ant-')) { + logger.error('Invalid Anthropic API key format') + return NextResponse.json({ error: 'Invalid Anthropic API key format' }, { status: 400 }) + } + try { - logger.info('Initializing Stagehand with Browserbase (v3)') + const modelName = + provider === 'anthropic' ? 'anthropic/claude-3-7-sonnet-latest' : 'openai/gpt-4.1' + + logger.info('Initializing Stagehand with Browserbase (v3)', { provider, modelName }) + + const { Stagehand } = await import('@browserbasehq/stagehand') stagehand = new Stagehand({ env: 'BROWSERBASE', @@ -86,7 +103,7 @@ export async function POST(request: NextRequest) { verbose: 1, logger: (msg) => logger.info(typeof msg === 'string' ? msg : JSON.stringify(msg)), model: { - modelName: 'openai/gpt-4o', + modelName, apiKey: apiKey, }, }) diff --git a/apps/sim/app/api/workflows/middleware.ts b/apps/sim/app/api/workflows/middleware.ts index 5c1b94186..883e02125 100644 --- a/apps/sim/app/api/workflows/middleware.ts +++ b/apps/sim/app/api/workflows/middleware.ts @@ -42,7 +42,7 @@ export async function validateWorkflowAccess( } const internalSecret = request.headers.get('X-Internal-Secret') - if (internalSecret === env.INTERNAL_API_SECRET) { + if (env.INTERNAL_API_SECRET && internalSecret === env.INTERNAL_API_SECRET) { return { workflow } } diff --git a/apps/sim/app/api/workflows/public/[id]/route.ts b/apps/sim/app/api/workflows/public/[id]/route.ts deleted file mode 100644 index 74b2d6d86..000000000 --- a/apps/sim/app/api/workflows/public/[id]/route.ts +++ /dev/null @@ -1,69 +0,0 @@ -import { db } from '@sim/db' -import { marketplace, workflow } from '@sim/db/schema' -import { eq } from 'drizzle-orm' -import type { NextRequest } from 'next/server' -import { generateRequestId } from '@/lib/core/utils/request' -import { createLogger } from '@/lib/logs/console/logger' -import { createErrorResponse, createSuccessResponse } from '@/app/api/workflows/utils' - -const logger = createLogger('PublicWorkflowAPI') - -// Cache response for performance -export const revalidate = 3600 - -export async function GET(request: NextRequest, { params }: { params: Promise<{ id: string }> }) { - const requestId = generateRequestId() - - try { - const { id } = await params - - // First, check if the workflow exists and is published to the marketplace - const marketplaceEntry = await db - .select({ - id: marketplace.id, - workflowId: marketplace.workflowId, - state: marketplace.state, - name: marketplace.name, - description: marketplace.description, - authorId: marketplace.authorId, - authorName: marketplace.authorName, - }) - .from(marketplace) - .where(eq(marketplace.workflowId, id)) - .limit(1) - .then((rows) => rows[0]) - - if (!marketplaceEntry) { - // Check if workflow exists but is not in marketplace - const workflowExists = await db - .select({ id: workflow.id }) - .from(workflow) - .where(eq(workflow.id, id)) - .limit(1) - .then((rows) => rows.length > 0) - - if (!workflowExists) { - logger.warn(`[${requestId}] Workflow not found: ${id}`) - return createErrorResponse('Workflow not found', 404) - } - - logger.warn(`[${requestId}] Workflow exists but is not published: ${id}`) - return createErrorResponse('Workflow is not published', 403) - } - - logger.info(`[${requestId}] Retrieved public workflow: ${id}`) - - return createSuccessResponse({ - id: marketplaceEntry.workflowId, - name: marketplaceEntry.name, - description: marketplaceEntry.description, - authorId: marketplaceEntry.authorId, - authorName: marketplaceEntry.authorName, - state: marketplaceEntry.state, - isPublic: true, - }) - } catch (error) { - logger.error(`[${requestId}] Error getting public workflow: ${(await params).id}`, error) - return createErrorResponse('Failed to get public workflow', 500) - } -} diff --git a/apps/sim/app/api/workspaces/[id]/route.ts b/apps/sim/app/api/workspaces/[id]/route.ts index 516191579..7a77319b5 100644 --- a/apps/sim/app/api/workspaces/[id]/route.ts +++ b/apps/sim/app/api/workspaces/[id]/route.ts @@ -246,7 +246,7 @@ export async function DELETE( logger.info(`Deleted templates for workflows in workspace ${workspaceId}`) } else { // Set workflowId to null for templates to create "orphaned" templates - // This allows templates to remain in marketplace but without source workflows + // This allows templates to remain without source workflows await tx .update(templates) .set({ workflowId: null }) @@ -260,7 +260,7 @@ export async function DELETE( // Delete all workflows in the workspace - database cascade will handle all workflow-related data // The database cascade will handle deleting related workflow_blocks, workflow_edges, workflow_subflows, // workflow_logs, workflow_execution_snapshots, workflow_execution_logs, workflow_execution_trace_spans, - // workflow_schedule, webhook, marketplace, chat, and memory records + // workflow_schedule, webhook, chat, and memory records await tx.delete(workflow).where(eq(workflow.workspaceId, workspaceId)) // Clear workspace ID from knowledge bases instead of deleting them diff --git a/apps/sim/app/playground/page.tsx b/apps/sim/app/playground/page.tsx new file mode 100644 index 000000000..7a3804211 --- /dev/null +++ b/apps/sim/app/playground/page.tsx @@ -0,0 +1,566 @@ +'use client' + +import { useState } from 'react' +import { ArrowLeft, Bell, Folder, Key, Settings, User } from 'lucide-react' +import { notFound, useRouter } from 'next/navigation' +import { + Badge, + Breadcrumb, + BubbleChatPreview, + Button, + Card as CardIcon, + ChevronDown, + Code, + Combobox, + Connections, + Copy, + DocumentAttachment, + Duplicate, + Eye, + FolderCode, + FolderPlus, + HexSimple, + Input, + Key as KeyIcon, + Label, + Layout, + Library, + Modal, + ModalBody, + ModalContent, + ModalFooter, + ModalHeader, + ModalTabs, + ModalTabsContent, + ModalTabsList, + ModalTabsTrigger, + ModalTrigger, + MoreHorizontal, + NoWrap, + PanelLeft, + Play, + Popover, + PopoverBackButton, + PopoverContent, + PopoverFolder, + PopoverItem, + PopoverScrollArea, + PopoverSearch, + PopoverSection, + PopoverTrigger, + Redo, + Rocket, + SModal, + SModalContent, + SModalMain, + SModalMainBody, + SModalMainHeader, + SModalSidebar, + SModalSidebarHeader, + SModalSidebarItem, + SModalSidebarSection, + SModalSidebarSectionTitle, + SModalTrigger, + Switch, + Textarea, + Tooltip, + Trash, + Trash2, + Undo, + Wrap, + ZoomIn, + ZoomOut, +} from '@/components/emcn' +import { env, isTruthy } from '@/lib/core/config/env' + +function Section({ title, children }: { title: string; children: React.ReactNode }) { + return ( +
+

+ {title} +

+
{children}
+ + ) +} + +function VariantRow({ label, children }: { label: string; children: React.ReactNode }) { + return ( +
+ {label} +
{children}
+
+ ) +} + +const SAMPLE_CODE = `function greet(name) { + console.log("Hello, " + name); + return { success: true }; +}` + +const SAMPLE_PYTHON = `def greet(name): + print(f"Hello, {name}") + return {"success": True}` + +const COMBOBOX_OPTIONS = [ + { label: 'Option 1', value: 'opt1' }, + { label: 'Option 2', value: 'opt2' }, + { label: 'Option 3', value: 'opt3' }, +] + +export default function PlaygroundPage() { + const router = useRouter() + const [comboboxValue, setComboboxValue] = useState('') + const [switchValue, setSwitchValue] = useState(false) + const [activeTab, setActiveTab] = useState('profile') + + if (!isTruthy(env.NEXT_PUBLIC_ENABLE_PLAYGROUND)) { + notFound() + } + + return ( + +
+ + + + + Go back + +
+
+

+ EMCN Component Playground +

+

+ All emcn UI components and their variants +

+
+ + {/* Button */} +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + {/* Badge */} +
+ + Default + + + Outline + +
+ + {/* Input */} +
+ + + + + + +
+ + {/* Textarea */} +
+