Compare commits

...

24 Commits

Author SHA1 Message Date
Siddharth Ganesan
ef142d3ddc Stg 2025-12-12 12:28:07 -08:00
Waleed
ffcaa65590 feat(mcp): added the ability to refresh servers to grab new tools (#2335)
* feat(mcp): added the ability to refresh servers to grab new tools

* added tests
2025-12-12 11:22:57 -08:00
Adam Gough
cd66fa84d1 fix(tools): fixed trello and telegram operations (#2332)
* fixed trello output

* fixed telegram

---------

Co-authored-by: aadamgough <adam@sim.ai>
2025-12-11 23:42:10 -08:00
Waleed
045475b9fe feat(i18n): update translations (#2334)
Co-authored-by: waleedlatif1 <waleedlatif1@users.noreply.github.com>
2025-12-11 23:39:48 -08:00
Waleed
3334dfeefa fix(firecrawl): updated output for firecrawl extract (#2333)
* fix(firecrawl): fixed optional params for firecrawl

* fix(build): fixed firecrawl tools

* ack PR comments
2025-12-11 23:06:34 -08:00
Waleed
cb9b88127f fix(envvars): added industry standard dotenv parsing regex for adding envvars in settings (#2327)
* fix(envvars): added industry standard dotenv parsing regex for adding envvars in settings

* ack PR comments

* added more edge cases
2025-12-11 22:58:01 -08:00
Waleed
3c8478405c feat(i18n): update translations (#2331) 2025-12-11 21:12:23 -08:00
Waleed
c4fd39df54 fix(firecrawl): fixed optional params for firecrawl (#2329)
* fix(firecrawl): fixed optional params for firecrawl

* fix(typeform): fixed optional params and outputs for typeform

* ack PR comments
2025-12-11 20:39:15 -08:00
Emir Karabeg
06d2db78ff improvement(kb): modals, page layouts (#2330) 2025-12-11 20:35:26 -08:00
Waleed
516dee14b7 feat(i18n): update translations (#2328)
Co-authored-by: aadamgough <aadamgough@users.noreply.github.com>
2025-12-11 18:55:53 -08:00
Adam Gough
030ae5cc0a fix(tools): fixed tool outputs (#2325)
* fix for asana and apify

* fixed onedrive

* fixed confluence error throwing and added upload file

* fixed google vault tag dropdown and output

* fix google group tag dropdown, var reference

* fixed hubspot output

* fixed pipedrive output

* removed comments

* removed more comments

* consolidated file utils

* fixed hubspot json schema

* fix hubspot search tools

* minor change
2025-12-11 18:24:56 -08:00
Waleed
855e2c418c fix(kb): handle larger files in the kb (#2324)
* fix(kb): handle larger files in the kb

* fixed images on login page
2025-12-11 18:22:16 -08:00
Waleed
3bde9e853f fix(mistral): remove wrapped output from mistral parse for kb parsing pdfs (#2326) 2025-12-11 18:15:37 -08:00
Waleed
31b795f8b1 fix(tools): fixed webflow limit and offset params (#2323) 2025-12-11 17:07:25 -08:00
Waleed
57b6bc3684 feat(i18n): update translations (#2321)
Co-authored-by: waleedlatif1 <waleedlatif1@users.noreply.github.com>
2025-12-11 15:28:31 -08:00
Esteban Canela
8d4f2e0233 feat(tools): added sqs integration (#2310)
* feat(tools): added sqs integration

* remove console log

* fix linter issues
2025-12-11 15:14:39 -08:00
Waleed
4da5dd7f74 fix(nextjs): upgrade nextjs to patch security vuln (#2320) 2025-12-11 14:58:31 -08:00
Waleed
3b9cbeaa49 fix(tools): updated browser use and stagehand to use the latest models (#2319)
* fix(stagehand): incl stagehand in the standalone build

* fix(stagehand): updated browser use and stagehand to use the latest models
2025-12-11 14:39:25 -08:00
Waleed
c592e54118 fix(pg): for pg tools, use count isntead of length for number of rows impacted (#2317) 2025-12-11 14:03:00 -08:00
Waleed
d02499a915 fix(ollama): fixed messages array for ollama, added gpt-5.2 (#2315)
* fix(ollama): fixed messages array for ollama, added gpt-5.2

* ack PR comments
2025-12-11 13:51:51 -08:00
Siddharth Ganesan
c0bb85479d fix(parallel): variable resolution in collection (#2314)
* Fix var resolution in parallel

* Fix parallel

* Clean logs

* FIx loop error port
2025-12-11 13:51:22 -08:00
Waleed
b595273c3f fix(vuln): fix dns rebinding/ssrf vulnerability (#2316) 2025-12-11 13:42:28 -08:00
Emir Karabeg
193a15aca4 improvement(sidebar): auto-scroll (#2312)
* fix(sidebar): re-render auto-scroll

* improvement: sidebar-scrolling listener
2025-12-11 12:54:14 -08:00
Vikhyath Mondreti
39d5d797ec fix(workflow-changes): changes detected in autolayout (#2313) 2025-12-11 12:45:48 -08:00
222 changed files with 4711 additions and 2306 deletions

File diff suppressed because one or more lines are too long

View File

@@ -90,6 +90,7 @@ import {
ShopifyIcon,
SlackIcon,
SmtpIcon,
SQSIcon,
SshIcon,
STTIcon,
StagehandIcon,
@@ -145,6 +146,7 @@ export const blockTypeToIconMap: Record<string, IconComponent> = {
stagehand_agent: StagehandIcon,
stagehand: StagehandIcon,
ssh: SshIcon,
sqs: SQSIcon,
smtp: SmtpIcon,
slack: SlackIcon,
shopify: ShopifyIcon,

View File

@@ -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`

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -0,0 +1,63 @@
---
title: Amazon SQS
description: Verbindung zu Amazon SQS
---
import { BlockInfoCard } from "@/components/ui/block-info-card"
<BlockInfoCard
type="sqs"
color="linear-gradient(45deg, #2E27AD 0%, #527FFF 100%)"
/>
{/* MANUAL-CONTENT-START:intro */}
[Amazon Simple Queue Service (SQS)](https://aws.amazon.com/sqs/) ist ein vollständig verwalteter Message-Queuing-Dienst, der es ermöglicht, Microservices, verteilte Systeme und serverlose Anwendungen zu entkoppeln und zu skalieren. SQS beseitigt die Komplexität und den Aufwand, die mit der Verwaltung und dem Betrieb von nachrichtenorientierter Middleware verbunden sind, und ermöglicht Entwicklern, sich auf differenzierende Arbeit zu konzentrieren.
Mit Amazon SQS können Sie:
- **Nachrichten senden**: Veröffentlichen Sie Nachrichten in Warteschlangen für asynchrone Verarbeitung
- **Anwendungen entkoppeln**: Ermöglichen Sie eine lose Kopplung zwischen Komponenten Ihres Systems
- **Workloads skalieren**: Bewältigen Sie variable Arbeitslasten ohne Bereitstellung von Infrastruktur
- **Zuverlässigkeit gewährleisten**: Eingebaute Redundanz und hohe Verfügbarkeit
- **FIFO-Warteschlangen unterstützen**: Strikte Nachrichtenreihenfolge und genau einmalige Verarbeitung beibehalten
In Sim ermöglicht die SQS-Integration Ihren Agenten, Nachrichten sicher und programmatisch an Amazon SQS-Warteschlangen zu senden. Unterstützte Operationen umfassen:
- **Nachricht senden**: Senden Sie Nachrichten an SQS-Warteschlangen mit optionaler Nachrichtengruppen-ID und Deduplizierungs-ID für FIFO-Warteschlangen
Diese Integration ermöglicht es Ihren Agenten, Workflows zum Senden von Nachrichten ohne manuelle Eingriffe zu automatisieren. Durch die Verbindung von Sim mit Amazon SQS können Sie Agenten erstellen, die Nachrichten innerhalb Ihrer Workflows in Warteschlangen veröffentlichen alles ohne Verwaltung der Warteschlangen-Infrastruktur oder Verbindungen.
{/* MANUAL-CONTENT-END */}
## Nutzungsanweisungen
Integrieren Sie Amazon SQS in den Workflow. Kann Nachrichten an SQS-Warteschlangen senden.
## Tools
### `sqs_send`
Eine Nachricht an eine Amazon SQS-Warteschlange senden
#### Eingabe
| Parameter | Typ | Erforderlich | Beschreibung |
| --------- | ---- | -------- | ----------- |
| `region` | string | Ja | AWS-Region (z.B. us-east-1) |
| `accessKeyId` | string | Ja | AWS-Zugriffsschlüssel-ID |
| `secretAccessKey` | string | Ja | AWS-Geheimzugriffsschlüssel |
| `queueUrl` | string | Ja | Queue-URL |
| `data` | object | Ja | Zu sendender Nachrichtentext |
| `messageGroupId` | string | Nein | Nachrichtengruppen-ID (optional) |
| `messageDeduplicationId` | string | Nein | Nachrichtendeduplizierungs-ID (optional) |
#### Ausgabe
| Parameter | Typ | Beschreibung |
| --------- | ---- | ----------- |
| `message` | string | Statusmeldung der Operation |
| `id` | string | Nachrichten-ID |
## Hinweise
- Kategorie: `tools`
- Typ: `sqs`

View File

@@ -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`

View File

@@ -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`

View File

@@ -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 |

View File

@@ -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.

View File

@@ -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\) |

View File

@@ -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 |

View File

@@ -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 |

View File

@@ -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 |

View File

@@ -86,6 +86,7 @@
"shopify",
"slack",
"smtp",
"sqs",
"ssh",
"stagehand",
"stagehand_agent",

View File

@@ -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 |

View File

@@ -0,0 +1,68 @@
---
title: Amazon SQS
description: Connect to Amazon SQS
---
import { BlockInfoCard } from "@/components/ui/block-info-card"
<BlockInfoCard
type="sqs"
color="linear-gradient(45deg, #2E27AD 0%, #527FFF 100%)"
/>
{/* MANUAL-CONTENT-START:intro */}
[Amazon Simple Queue Service (SQS)](https://aws.amazon.com/sqs/) 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`

View File

@@ -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 |

View File

@@ -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`

View File

@@ -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

View File

@@ -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 | | 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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -0,0 +1,63 @@
---
title: Amazon SQS
description: Conectar a Amazon SQS
---
import { BlockInfoCard } from "@/components/ui/block-info-card"
<BlockInfoCard
type="sqs"
color="linear-gradient(45deg, #2E27AD 0%, #527FFF 100%)"
/>
{/* MANUAL-CONTENT-START:intro */}
[Amazon Simple Queue Service (SQS)](https://aws.amazon.com/sqs/) 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`

View File

@@ -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 |

View File

@@ -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`

View File

@@ -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

View File

@@ -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.

View File

@@ -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

View File

@@ -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

View File

@@ -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 cé |
### `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

View File

@@ -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

View File

@@ -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

View File

@@ -0,0 +1,63 @@
---
title: Amazon SQS
description: Se connecter à Amazon SQS
---
import { BlockInfoCard } from "@/components/ui/block-info-card"
<BlockInfoCard
type="sqs"
color="linear-gradient(45deg, #2E27AD 0%, #527FFF 100%)"
/>
{/* MANUAL-CONTENT-START:intro */}
[Amazon Simple Queue Service (SQS)](https://aws.amazon.com/sqs/) 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`

View File

@@ -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 |

View File

@@ -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`

View File

@@ -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 | コメント投稿者の詳細 |
## 注意事項

View File

@@ -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スペースに関する詳細を取得します。
#### 入力

View File

@@ -145,7 +145,6 @@ Firecrawlを使用してウェブ上の情報を検索します
| --------- | ---- | ----------- |
| `success` | boolean | 抽出操作が成功したかどうか |
| `data` | object | スキーマまたはプロンプトに従って抽出された構造化データ |
| `sources` | array | データソースshowSourcesが有効な場合のみ |
## 注意事項

View File

@@ -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 | ユーザーがグループのメンバーであるかどうか |
## 注意事項

View File

@@ -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 | 結果の次のページを取得するためのトークン |
## 注意事項

View File

@@ -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 | 取引データ |
## 注意事項

View File

@@ -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 | 削除結果 |
## 注意事項

View File

@@ -0,0 +1,63 @@
---
title: Amazon SQS
description: Amazon SQSに接続
---
import { BlockInfoCard } from "@/components/ui/block-info-card"
<BlockInfoCard
type="sqs"
color="linear-gradient(45deg, #2E27AD 0%, #527FFF 100%)"
/>
{/* MANUAL-CONTENT-START:intro */}
[Amazon Simple Queue Service (SQS)](https://aws.amazon.com/sqs/)は、マイクロサービス、分散システム、サーバーレスアプリケーションの分離とスケーリングを可能にする完全マネージド型のメッセージキューイングサービスです。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`

View File

@@ -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`

View File

@@ -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`

View File

@@ -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 | 评论作者的详细信息 |
## 注意事项

View File

@@ -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 空间的详细信息。
#### 输入

View File

@@ -145,7 +145,6 @@ import { BlockInfoCard } from "@/components/ui/block-info-card"
| --------- | ---- | ----------- |
| `success` | boolean | 提取操作是否成功 |
| `data` | object | 根据模式或提示提取的结构化数据 |
| `sources` | array | 数据来源(仅在启用 showSources 时) |
## 注意

View File

@@ -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 | 用户是否是该群组的成员 |
## 注意事项

View File

@@ -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 | 用于获取下一页结果的令牌 |
## 注意事项

View File

@@ -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 | 操作成功状态 |
## 注意事项

View File

@@ -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 | 删除结果 |
## 注意事项

View File

@@ -0,0 +1,63 @@
---
title: Amazon SQS
description: 连接到 Amazon SQS
---
import { BlockInfoCard } from "@/components/ui/block-info-card"
<BlockInfoCard
type="sqs"
color="linear-gradient(45deg, #2E27AD 0%, #527FFF 100%)"
/>
{/* MANUAL-CONTENT-START:intro */}
[Amazon Simple Queue Service (SQS)](https://aws.amazon.com/sqs/) 是一项完全托管的消息队列服务可帮助您解耦和扩展微服务、分布式系统和无服务器应用程序。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`

View File

@@ -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`

View File

@@ -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
@@ -3464,7 +3464,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 +3845,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 +5680,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 +5698,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:
@@ -6698,109 +6704,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 +6827,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 +6909,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 +47479,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
@@ -48948,67 +48954,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 +49311,25 @@ 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

View File

@@ -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",

View File

@@ -135,6 +135,7 @@ export default function Nav({ hideAuthButtons = false, variant = 'landing' }: Na
priority
loading='eager'
quality={100}
unoptimized
/>
) : (
<Image

View File

@@ -5,7 +5,7 @@ import path from 'path'
import binaryExtensionsList from 'binary-extensions'
import { type NextRequest, NextResponse } from 'next/server'
import { checkHybridAuth } from '@/lib/auth/hybrid'
import { validateExternalUrl } from '@/lib/core/security/input-validation'
import { createPinnedUrl, validateUrlWithDNS } from '@/lib/core/security/input-validation'
import { isSupportedFileType, parseFile } from '@/lib/file-parsers'
import { createLogger } from '@/lib/logs/console/logger'
import { isUsingCloudStorage, type StorageContext, StorageService } from '@/lib/uploads'
@@ -15,6 +15,7 @@ import {
extractCleanFilename,
extractStorageKey,
extractWorkspaceIdFromExecutionKey,
getMimeTypeFromExtension,
getViewerUrl,
inferContextFromKey,
} from '@/lib/uploads/utils/file-utils'
@@ -44,36 +45,6 @@ interface ParseResult {
}
}
const fileTypeMap: Record<string, string> = {
// 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
*/
@@ -270,7 +241,7 @@ async function handleExternalUrl(
logger.info('Fetching external URL:', url)
logger.info('WorkspaceId for URL save:', workspaceId)
const urlValidation = validateExternalUrl(url, 'fileUrl')
const urlValidation = await validateUrlWithDNS(url, 'fileUrl')
if (!urlValidation.isValid) {
logger.warn(`Blocked external URL request: ${urlValidation.error}`)
return {
@@ -346,8 +317,12 @@ async function handleExternalUrl(
}
}
const response = await fetch(url, {
const pinnedUrl = createPinnedUrl(url, urlValidation.resolvedIP!)
const response = await fetch(pinnedUrl, {
signal: AbortSignal.timeout(DOWNLOAD_TIMEOUT_MS),
headers: {
Host: urlValidation.originalHostname!,
},
})
if (!response.ok) {
throw new Error(`Failed to fetch URL: ${response.status} ${response.statusText}`)
@@ -378,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}`)
}
@@ -570,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,
@@ -705,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,
@@ -723,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,
@@ -764,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,
@@ -787,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
*/

View File

@@ -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', {

View File

@@ -4,7 +4,7 @@ import { z } from 'zod'
import { checkHybridAuth } from '@/lib/auth/hybrid'
import { generateInternalToken } from '@/lib/auth/internal'
import { isDev } from '@/lib/core/config/environment'
import { validateProxyUrl } from '@/lib/core/security/input-validation'
import { createPinnedUrl, validateUrlWithDNS } from '@/lib/core/security/input-validation'
import { generateRequestId } from '@/lib/core/utils/request'
import { getBaseUrl } from '@/lib/core/utils/urls'
import { createLogger } from '@/lib/logs/console/logger'
@@ -173,7 +173,7 @@ export async function GET(request: Request) {
return createErrorResponse("Missing 'url' parameter", 400)
}
const urlValidation = validateProxyUrl(targetUrl)
const urlValidation = await validateUrlWithDNS(targetUrl)
if (!urlValidation.isValid) {
logger.warn(`[${requestId}] Blocked proxy request`, {
url: targetUrl.substring(0, 100),
@@ -211,11 +211,13 @@ export async function GET(request: Request) {
logger.info(`[${requestId}] Proxying ${method} request to: ${targetUrl}`)
try {
const response = await fetch(targetUrl, {
const pinnedUrl = createPinnedUrl(targetUrl, urlValidation.resolvedIP!)
const response = await fetch(pinnedUrl, {
method: method,
headers: {
...getProxyHeaders(),
...customHeaders,
Host: urlValidation.originalHostname!,
},
body: body || undefined,
})

View File

@@ -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)

View File

@@ -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:', {

View File

@@ -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)

View File

@@ -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)

View File

@@ -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)

View File

@@ -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:', {

View File

@@ -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 })
}

View File

@@ -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 }
)
}
}

View File

@@ -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`
}

View File

@@ -33,9 +33,10 @@ export async function executeQuery(
params: unknown[] = []
): Promise<{ rows: unknown[]; rowCount: number }> {
const result = await sql.unsafe(query, params)
const rowCount = result.count ?? result.length ?? 0
return {
rows: Array.isArray(result) ? result : [result],
rowCount: Array.isArray(result) ? result.length : result ? 1 : 0,
rowCount,
}
}
@@ -107,9 +108,10 @@ export async function executeInsert(
const query = `INSERT INTO ${sanitizedTable} (${sanitizedColumns.join(', ')}) VALUES (${placeholders.join(', ')}) RETURNING *`
const result = await sql.unsafe(query, values)
const rowCount = result.count ?? result.length ?? 0
return {
rows: Array.isArray(result) ? result : [result],
rowCount: Array.isArray(result) ? result.length : result ? 1 : 0,
rowCount,
}
}
@@ -130,9 +132,10 @@ export async function executeUpdate(
const query = `UPDATE ${sanitizedTable} SET ${setClause} WHERE ${where} RETURNING *`
const result = await sql.unsafe(query, values)
const rowCount = result.count ?? result.length ?? 0
return {
rows: Array.isArray(result) ? result : [result],
rowCount: Array.isArray(result) ? result.length : result ? 1 : 0,
rowCount,
}
}
@@ -147,8 +150,9 @@ export async function executeDelete(
const query = `DELETE FROM ${sanitizedTable} WHERE ${where} RETURNING *`
const result = await sql.unsafe(query, [])
const rowCount = result.count ?? result.length ?? 0
return {
rows: Array.isArray(result) ? result : [result],
rowCount: Array.isArray(result) ? result.length : result ? 1 : 0,
rowCount,
}
}

View File

@@ -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 })
}
}

View File

@@ -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<string, unknown>,
messageGroupId?: string | null,
messageDeduplicationId?: string | null
): Promise<Record<string, unknown> | 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<string, unknown> | null {
if (!response) {
return null
}
return { id: response.MessageId }
}

View File

@@ -496,7 +496,7 @@ export async function POST(request: NextRequest) {
verbose: 1,
logger: (msg) => logger.info(typeof msg === 'string' ? msg : JSON.stringify(msg)),
model: {
modelName: 'claude-sonnet-4-20250514',
modelName: 'anthropic/claude-3-7-sonnet-latest',
apiKey: apiKey,
},
})
@@ -704,7 +704,14 @@ The system will substitute actual values when these placeholders are used, keepi
`.trim()
const agent = stagehand.agent({
model: 'anthropic/claude-sonnet-4-20250514',
model: {
modelName: 'anthropic/claude-3-7-sonnet-latest',
apiKey: apiKey,
},
executionModel: {
modelName: 'anthropic/claude-3-7-sonnet-latest',
apiKey: apiKey,
},
systemPrompt: `${agentInstructions}\n\n${additionalContext}`,
})
@@ -795,6 +802,9 @@ The system will substitute actual values when these placeholders are used, keepi
})
let structuredOutput = null
const hasOutputSchema =
outputSchema && typeof outputSchema === 'object' && outputSchema !== null
if (agentResult.message) {
try {
let jsonContent = agentResult.message
@@ -807,33 +817,31 @@ The system will substitute actual values when these placeholders are used, keepi
structuredOutput = JSON.parse(jsonContent)
logger.info('Successfully parsed structured output from agent response')
} catch (parseError) {
logger.error('Failed to parse JSON from agent message', {
error: parseError,
message: agentResult.message,
})
if (hasOutputSchema) {
logger.warn('Failed to parse JSON from agent message, attempting fallback extraction', {
error: parseError,
})
if (
outputSchema &&
typeof outputSchema === 'object' &&
outputSchema !== null &&
stagehand
) {
try {
logger.info('Attempting to extract structured data using Stagehand extract')
const schemaObj = getSchemaObject(outputSchema)
const zodSchema = ensureZodObject(logger, schemaObj)
if (stagehand) {
try {
logger.info('Attempting to extract structured data using Stagehand extract')
const schemaObj = getSchemaObject(outputSchema)
const zodSchema = ensureZodObject(logger, schemaObj)
structuredOutput = await stagehand.extract(
'Extract the requested information from this page according to the schema',
zodSchema
)
structuredOutput = await stagehand.extract(
'Extract the requested information from this page according to the schema',
zodSchema
)
logger.info('Successfully extracted structured data as fallback', {
keys: structuredOutput ? Object.keys(structuredOutput) : [],
})
} catch (extractError) {
logger.error('Fallback extraction also failed', { error: extractError })
logger.info('Successfully extracted structured data as fallback', {
keys: structuredOutput ? Object.keys(structuredOutput) : [],
})
} catch (extractError) {
logger.error('Fallback extraction also failed', { error: extractError })
}
}
} else {
logger.info('Agent returned plain text response (no schema provided)')
}
}
}

View File

@@ -86,7 +86,7 @@ export async function POST(request: NextRequest) {
verbose: 1,
logger: (msg) => logger.info(typeof msg === 'string' ? msg : JSON.stringify(msg)),
model: {
modelName: 'gpt-4o',
modelName: 'openai/gpt-4o',
apiKey: apiKey,
},
})

View File

@@ -466,7 +466,7 @@ export function KnowledgeBase({
*/
const checkForDeadProcesses = async () => {
const now = new Date()
const DEAD_PROCESS_THRESHOLD_MS = 150 * 1000
const DEAD_PROCESS_THRESHOLD_MS = 600 * 1000 // 10 minutes
const staleDocuments = documents.filter((doc) => {
if (doc.processingStatus !== 'processing' || !doc.processingStartedAt) {
@@ -928,9 +928,22 @@ export function KnowledgeBase({
Tags
</Button>
)}
<Button onClick={() => setShowDeleteDialog(true)} className='h-[32px] rounded-[6px]'>
<Trash className='h-[14px] w-[14px]' />
</Button>
<Tooltip.Root>
<Tooltip.Trigger asChild>
<Button
onClick={() => setShowDeleteDialog(true)}
disabled={!userPermissions.canEdit}
className='h-[32px] rounded-[6px]'
>
<Trash className='h-[14px] w-[14px]' />
</Button>
</Tooltip.Trigger>
{!userPermissions.canEdit && (
<Tooltip.Content>
Write permission required to delete knowledge base
</Tooltip.Content>
)}
</Tooltip.Root>
</div>
</div>
@@ -940,7 +953,7 @@ export function KnowledgeBase({
</p>
)}
<div className='mt-[12px] flex items-center gap-[8px]'>
<div className='mt-[16px] flex items-center gap-[8px]'>
<span className='text-[14px] text-[var(--text-muted)]'>
{pagination.total} {pagination.total === 1 ? 'document' : 'documents'}
</span>

View File

@@ -1,7 +1,7 @@
'use client'
import { useEffect, useRef, useState } from 'react'
import { AlertCircle, Loader2, RotateCcw, X } from 'lucide-react'
import { Loader2, RotateCcw, X } from 'lucide-react'
import { useParams } from 'next/navigation'
import {
Button,
@@ -283,11 +283,11 @@ export function AddDocumentsModal({
return (
<div
key={index}
className='flex items-center gap-2 rounded-[4px] border p-[8px]'
>
{isFailed && !isRetrying && (
<AlertCircle className='h-4 w-4 flex-shrink-0 text-[var(--text-error)]' />
className={cn(
'flex items-center gap-2 rounded-[4px] border p-[8px]',
isFailed && !isRetrying && 'border-[var(--text-error)]'
)}
>
<span
className={cn(
'min-w-0 flex-1 truncate text-[12px]',
@@ -301,29 +301,31 @@ export function AddDocumentsModal({
{formatFileSize(file.size)}
</span>
<div className='flex flex-shrink-0 items-center gap-1'>
{isFailed && !isRetrying && (
<Button
type='button'
variant='ghost'
className='h-4 w-4 p-0 text-[var(--text-muted)] hover:text-[var(--text-primary)]'
onClick={() => handleRetryFile(index)}
disabled={isUploading}
>
<RotateCcw className='h-3.5 w-3.5' />
</Button>
)}
{isProcessing ? (
<Loader2 className='h-4 w-4 animate-spin text-[var(--text-muted)]' />
) : (
<Button
type='button'
variant='ghost'
className='h-4 w-4 p-0'
onClick={() => removeFile(index)}
disabled={isUploading}
>
<X className='h-3.5 w-3.5' />
</Button>
<>
{isFailed && (
<Button
type='button'
variant='ghost'
className='h-4 w-4 p-0'
onClick={() => handleRetryFile(index)}
disabled={isUploading}
>
<RotateCcw className='h-3 w-3' />
</Button>
)}
<Button
type='button'
variant='ghost'
className='h-4 w-4 p-0'
onClick={() => removeFile(index)}
disabled={isUploading}
>
<X className='h-3.5 w-3.5' />
</Button>
</>
)}
</div>
</div>
@@ -336,30 +338,34 @@ export function AddDocumentsModal({
</div>
</ModalBody>
<ModalFooter className='flex-col items-stretch gap-[12px]'>
{uploadError && (
<p className='text-[11px] text-[var(--text-error)] leading-tight'>
{uploadError.message}
</p>
)}
<div className='flex justify-end gap-[8px]'>
<Button variant='default' onClick={handleClose} type='button' disabled={isUploading}>
Cancel
</Button>
<Button
variant='primary'
type='button'
onClick={handleUpload}
disabled={files.length === 0 || isUploading}
>
{isUploading
? uploadProgress.stage === 'uploading'
? `Uploading ${uploadProgress.filesCompleted}/${uploadProgress.totalFiles}...`
: uploadProgress.stage === 'processing'
? 'Processing...'
: 'Uploading...'
: 'Upload'}
</Button>
<ModalFooter>
<div className='flex w-full items-center justify-between gap-[12px]'>
{uploadError ? (
<p className='min-w-0 flex-1 truncate text-[11px] text-[var(--text-error)] leading-tight'>
{uploadError.message}
</p>
) : (
<div />
)}
<div className='flex flex-shrink-0 gap-[8px]'>
<Button variant='default' onClick={handleClose} type='button' disabled={isUploading}>
Cancel
</Button>
<Button
variant='primary'
type='button'
onClick={handleUpload}
disabled={files.length === 0 || isUploading}
>
{isUploading
? uploadProgress.stage === 'uploading'
? `Uploading ${uploadProgress.filesCompleted}/${uploadProgress.totalFiles}...`
: uploadProgress.stage === 'processing'
? 'Processing...'
: 'Uploading...'
: 'Upload'}
</Button>
</div>
</div>
</ModalFooter>
</ModalContent>

View File

@@ -2,7 +2,7 @@
import { useEffect, useRef, useState } from 'react'
import { zodResolver } from '@hookform/resolvers/zod'
import { AlertCircle, Loader2, RotateCcw, X } from 'lucide-react'
import { Loader2, RotateCcw, X } from 'lucide-react'
import { useParams } from 'next/navigation'
import { useForm } from 'react-hook-form'
import { z } from 'zod'
@@ -449,11 +449,11 @@ export function CreateBaseModal({
return (
<div
key={index}
className='flex items-center gap-2 rounded-[4px] border p-[8px]'
>
{isFailed && !isRetrying && (
<AlertCircle className='h-4 w-4 flex-shrink-0 text-[var(--text-error)]' />
className={cn(
'flex items-center gap-2 rounded-[4px] border p-[8px]',
isFailed && !isRetrying && 'border-[var(--text-error)]'
)}
>
<span
className={cn(
'min-w-0 flex-1 truncate text-[12px]',
@@ -467,32 +467,34 @@ export function CreateBaseModal({
{formatFileSize(file.size)}
</span>
<div className='flex flex-shrink-0 items-center gap-1'>
{isFailed && !isRetrying && (
<Button
type='button'
variant='ghost'
className='h-4 w-4 p-0 text-[var(--text-muted)] hover:text-[var(--text-primary)]'
onClick={() => {
setRetryingIndexes((prev) => new Set(prev).add(index))
removeFile(index)
}}
disabled={isUploading}
>
<RotateCcw className='h-3.5 w-3.5' />
</Button>
)}
{isProcessing ? (
<Loader2 className='h-4 w-4 animate-spin text-[var(--text-muted)]' />
) : (
<Button
type='button'
variant='ghost'
className='h-4 w-4 p-0'
onClick={() => removeFile(index)}
disabled={isUploading}
>
<X className='h-3.5 w-3.5' />
</Button>
<>
{isFailed && (
<Button
type='button'
variant='ghost'
className='h-4 w-4 p-0'
onClick={() => {
setRetryingIndexes((prev) => new Set(prev).add(index))
removeFile(index)
}}
disabled={isUploading}
>
<RotateCcw className='h-3 w-3' />
</Button>
)}
<Button
type='button'
variant='ghost'
className='h-4 w-4 p-0'
onClick={() => removeFile(index)}
disabled={isUploading}
>
<X className='h-3.5 w-3.5' />
</Button>
</>
)}
</div>
</div>
@@ -509,32 +511,40 @@ export function CreateBaseModal({
</div>
</ModalBody>
<ModalFooter className='flex-col items-stretch gap-[12px]'>
{(submitStatus?.type === 'error' || uploadError) && (
<p className='text-[11px] text-[var(--text-error)] leading-tight'>
{uploadError?.message || submitStatus?.message}
</p>
)}
<div className='flex justify-end gap-[8px]'>
<Button
variant='default'
onClick={() => handleClose(false)}
type='button'
disabled={isSubmitting}
>
Cancel
</Button>
<Button variant='primary' type='submit' disabled={isSubmitting || !nameValue?.trim()}>
{isSubmitting
? isUploading
? uploadProgress.stage === 'uploading'
? `Uploading ${uploadProgress.filesCompleted}/${uploadProgress.totalFiles}...`
: uploadProgress.stage === 'processing'
? 'Processing...'
: 'Creating...'
: 'Creating...'
: 'Create'}
</Button>
<ModalFooter>
<div className='flex w-full items-center justify-between gap-[12px]'>
{submitStatus?.type === 'error' || uploadError ? (
<p className='min-w-0 flex-1 truncate text-[11px] text-[var(--text-error)] leading-tight'>
{uploadError?.message || submitStatus?.message}
</p>
) : (
<div />
)}
<div className='flex flex-shrink-0 gap-[8px]'>
<Button
variant='default'
onClick={() => handleClose(false)}
type='button'
disabled={isSubmitting}
>
Cancel
</Button>
<Button
variant='primary'
type='submit'
disabled={isSubmitting || !nameValue?.trim()}
>
{isSubmitting
? isUploading
? uploadProgress.stage === 'uploading'
? `Uploading ${uploadProgress.filesCompleted}/${uploadProgress.totalFiles}...`
: uploadProgress.stage === 'processing'
? 'Processing...'
: 'Creating...'
: 'Creating...'
: 'Create'}
</Button>
</div>
</div>
</ModalFooter>
</form>

View File

@@ -1,4 +1,8 @@
import type React from 'react'
import {
SUPPORTED_AUDIO_EXTENSIONS,
SUPPORTED_VIDEO_EXTENSIONS,
} from '@/lib/uploads/utils/validation'
interface IconProps {
className?: string
@@ -223,13 +227,19 @@ export const DefaultFileIcon: React.FC<IconProps> = ({ className = 'w-6 h-6' })
export function getDocumentIcon(mimeType: string, filename: string): React.FC<IconProps> {
const extension = filename.split('.').pop()?.toLowerCase()
const audioExtensions = ['mp3', 'm4a', 'wav', 'webm', 'ogg', 'flac', 'aac', 'opus']
if (mimeType.startsWith('audio/') || (extension && audioExtensions.includes(extension))) {
if (
mimeType.startsWith('audio/') ||
(extension &&
SUPPORTED_AUDIO_EXTENSIONS.includes(extension as (typeof SUPPORTED_AUDIO_EXTENSIONS)[number]))
) {
return AudioIcon
}
const videoExtensions = ['mp4', 'mov', 'avi', 'mkv']
if (mimeType.startsWith('video/') || (extension && videoExtensions.includes(extension))) {
if (
mimeType.startsWith('video/') ||
(extension &&
SUPPORTED_VIDEO_EXTENSIONS.includes(extension as (typeof SUPPORTED_VIDEO_EXTENSIONS)[number]))
) {
return VideoIcon
}

View File

@@ -423,6 +423,10 @@ export function useKnowledgeUpload(options: UseKnowledgeUploadOptions = {}) {
return await uploadFileInChunks(file, presignedData, timeoutMs, fileIndex)
}
if (presignedOverride?.directUploadSupported && presignedOverride.presignedUrl) {
return await uploadFileDirectly(file, presignedOverride, timeoutMs, controller, fileIndex)
}
return await uploadFileThroughAPI(file, timeoutMs)
} finally {
clearTimeout(timeoutId)
@@ -510,7 +514,6 @@ export function useKnowledgeUpload(options: UseKnowledgeUploadOptions = {}) {
if (event.lengthComputable && fileIndex !== undefined && !isCompleted) {
const percentComplete = Math.round((event.loaded / event.total) * 100)
setUploadProgress((prev) => {
// Only update if this file is still uploading
if (prev.fileStatuses?.[fileIndex]?.status === 'uploading') {
return {
...prev,
@@ -638,7 +641,6 @@ export function useKnowledgeUpload(options: UseKnowledgeUploadOptions = {}) {
})
if (!partUrlsResponse.ok) {
// Abort the multipart upload if we can't get URLs
await fetch('/api/files/multipart?action=abort', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
@@ -822,9 +824,6 @@ export function useKnowledgeUpload(options: UseKnowledgeUploadOptions = {}) {
}
}
/**
* Upload files using batch presigned URLs (works for both S3 and Azure Blob)
*/
/**
* Uploads files in batches using presigned URLs
*/

View File

@@ -206,7 +206,30 @@ const generateOutputPaths = (outputs: Record<string, any>, prefix = ''): string[
paths.push(currentPath)
} else if (typeof value === 'object' && value !== null) {
if ('type' in value && typeof value.type === 'string') {
paths.push(currentPath)
const hasNestedProperties =
(value.type === 'object' && value.properties) ||
(value.type === 'array' && value.items?.properties) ||
(value.type === 'array' &&
value.items &&
typeof value.items === 'object' &&
!('type' in value.items))
if (!hasNestedProperties) {
paths.push(currentPath)
}
if (value.type === 'object' && value.properties) {
paths.push(...generateOutputPaths(value.properties, currentPath))
} else if (value.type === 'array' && value.items?.properties) {
paths.push(...generateOutputPaths(value.items.properties, currentPath))
} else if (
value.type === 'array' &&
value.items &&
typeof value.items === 'object' &&
!('type' in value.items)
) {
paths.push(...generateOutputPaths(value.items, currentPath))
}
} else {
const subPaths = generateOutputPaths(value, currentPath)
paths.push(...subPaths)

View File

@@ -70,7 +70,7 @@ const edgeTypes: EdgeTypes = {
// Memoized ReactFlow props to prevent unnecessary re-renders
const defaultEdgeOptions = { type: 'custom' }
const snapGrid: [number, number] = [20, 20]
const snapGrid: [number, number] = [50, 50]
const reactFlowFitViewOptions = { padding: 0.6 } as const
const reactFlowProOptions = { hideAttribution: true } as const
@@ -134,6 +134,9 @@ const WorkflowContent = React.memo(() => {
// Get copilot cleanup function
const copilotCleanup = useCopilotStore((state) => state.cleanup)
// Get snap to grid setting
const isSnapToGridEnabled = useGeneralStore((state) => state.isSnapToGridEnabled)
// Handle copilot stream cleanup on page unload and component unmount
useStreamCleanup(copilotCleanup)
@@ -2294,7 +2297,7 @@ const WorkflowContent = React.memo(() => {
onNodeDrag={effectivePermissions.canEdit ? onNodeDrag : undefined}
onNodeDragStop={effectivePermissions.canEdit ? onNodeDragStop : undefined}
onNodeDragStart={effectivePermissions.canEdit ? onNodeDragStart : undefined}
snapToGrid={false}
snapToGrid={isSnapToGridEnabled}
snapGrid={snapGrid}
elevateEdgesOnSelect={true}
// Performance optimizations

View File

@@ -10,6 +10,7 @@ import { useBrandConfig } from '@/lib/branding/branding'
import { cn } from '@/lib/core/utils/cn'
import { getTriggersForSidebar, hasTriggerCapability } from '@/lib/workflows/triggers/trigger-utils'
import { searchItems } from '@/app/workspace/[workspaceId]/w/components/sidebar/components/search-modal/search-utils'
import { SIDEBAR_SCROLL_EVENT } from '@/app/workspace/[workspaceId]/w/components/sidebar/sidebar'
import { getAllBlocks } from '@/blocks'
interface SearchModalProps {
@@ -430,6 +431,12 @@ export function SearchModal({
window.open(item.href, '_blank', 'noopener,noreferrer')
} else {
router.push(item.href)
// Scroll to the workflow in the sidebar after navigation
if (item.type === 'workflow') {
window.dispatchEvent(
new CustomEvent(SIDEBAR_SCROLL_EVENT, { detail: { itemId: item.id } })
)
}
}
}
break

View File

@@ -352,13 +352,48 @@ export function EnvironmentVariables({ registerBeforeLeaveHandler }: Environment
}, [])
const parseEnvVarLine = useCallback((line: string): UIEnvironmentVariable | null => {
const equalIndex = line.indexOf('=')
const trimmed = line.trim()
if (!trimmed || trimmed.startsWith('#')) return null
const withoutExport = trimmed.replace(/^export\s+/, '')
const equalIndex = withoutExport.indexOf('=')
if (equalIndex === -1 || equalIndex === 0) return null
const potentialKey = line.substring(0, equalIndex).trim()
const potentialKey = withoutExport.substring(0, equalIndex).trim()
if (!ENV_VAR_PATTERN.test(potentialKey)) return null
const value = line.substring(equalIndex + 1).trim()
let value = withoutExport.substring(equalIndex + 1)
const looksLikeBase64Key = /^[A-Za-z0-9+/]+$/.test(potentialKey) && !potentialKey.includes('_')
const valueIsJustPadding = /^=+$/.test(value.trim())
if (looksLikeBase64Key && valueIsJustPadding && potentialKey.length > 20) {
return null
}
const trimmedValue = value.trim()
if (
!trimmedValue.startsWith('"') &&
!trimmedValue.startsWith("'") &&
!trimmedValue.startsWith('`')
) {
const commentIndex = value.search(/\s#/)
if (commentIndex !== -1) {
value = value.substring(0, commentIndex)
}
}
value = value.trim()
if (
(value.startsWith('"') && value.endsWith('"')) ||
(value.startsWith("'") && value.endsWith("'")) ||
(value.startsWith('`') && value.endsWith('`'))
) {
value = value.slice(1, -1)
}
return { key: potentialKey, value, id: generateRowId() }
}, [])

View File

@@ -24,6 +24,7 @@ import { useProfilePictureUpload } from '@/app/workspace/[workspaceId]/w/compone
import { useGeneralSettings, useUpdateGeneralSetting } from '@/hooks/queries/general-settings'
import { useUpdateUserProfile, useUserProfile } from '@/hooks/queries/user-profile'
import { clearUserData } from '@/stores'
import { useGeneralStore } from '@/stores/settings/general/store'
const logger = createLogger('General')
@@ -56,6 +57,9 @@ export function General({ onOpenChange }: GeneralProps) {
const { data: settings, isLoading: isSettingsLoading } = useGeneralSettings()
const updateSetting = useUpdateGeneralSetting()
const isSnapToGridEnabled = useGeneralStore((state) => state.isSnapToGridEnabled)
const setSettings = useGeneralStore((state) => state.setSettings)
const isLoading = isProfileLoading || isSettingsLoading
const isTrainingEnabled = isTruthy(getEnv('NEXT_PUBLIC_COPILOT_TRAINING_ENABLED'))
@@ -232,6 +236,10 @@ export function General({ onOpenChange }: GeneralProps) {
}
}
const handleSnapToGridChange = (checked: boolean) => {
setSettings({ isSnapToGridEnabled: checked })
}
const handleTrainingControlsChange = async (checked: boolean) => {
if (checked !== settings?.showTrainingControls && !updateSetting.isPending) {
await updateSetting.mutateAsync({ key: 'showTrainingControls', value: checked })
@@ -412,6 +420,15 @@ export function General({ onOpenChange }: GeneralProps) {
/>
</div>
<div className='flex items-center justify-between'>
<Label htmlFor='snap-to-grid'>Snap to grid</Label>
<Switch
id='snap-to-grid'
checked={isSnapToGridEnabled}
onCheckedChange={handleSnapToGridChange}
/>
</div>
<div className='flex items-center justify-between'>
<Label htmlFor='error-notifications'>Run error notifications</Label>
<Switch

View File

@@ -20,6 +20,7 @@ import {
useDeleteMcpServer,
useMcpServers,
useMcpToolsQuery,
useRefreshMcpServer,
} from '@/hooks/queries/mcp'
import { useMcpServerTest } from '@/hooks/use-mcp-server-test'
import type { InputFieldType, McpServerFormData, McpServerTestResult } from './components'
@@ -89,27 +90,24 @@ export function MCP() {
} = useMcpToolsQuery(workspaceId)
const createServerMutation = useCreateMcpServer()
const deleteServerMutation = useDeleteMcpServer()
const refreshServerMutation = useRefreshMcpServer()
const { testResult, isTestingConnection, testConnection, clearTestResult } = useMcpServerTest()
const urlInputRef = useRef<HTMLInputElement>(null)
// Form state
const [showAddForm, setShowAddForm] = useState(false)
const [formData, setFormData] = useState<McpServerFormData>(DEFAULT_FORM_DATA)
const [isAddingServer, setIsAddingServer] = useState(false)
// Search and filtering state
const [searchTerm, setSearchTerm] = useState('')
const [deletingServers, setDeletingServers] = useState<Set<string>>(new Set())
// Delete confirmation dialog state
const [showDeleteDialog, setShowDeleteDialog] = useState(false)
const [serverToDelete, setServerToDelete] = useState<{ id: string; name: string } | null>(null)
// Server details view state
const [selectedServerId, setSelectedServerId] = useState<string | null>(null)
const [refreshStatus, setRefreshStatus] = useState<'idle' | 'refreshing' | 'refreshed'>('idle')
// Environment variable dropdown state
const [showEnvVars, setShowEnvVars] = useState(false)
const [envSearchTerm, setEnvSearchTerm] = useState('')
const [cursorPosition, setCursorPosition] = useState(0)
@@ -255,7 +253,6 @@ export function MCP() {
workspaceId,
}
// Test connection if not already tested
if (!testResult) {
const result = await testConnection(serverConfig)
if (!result.success) return
@@ -396,6 +393,25 @@ export function MCP() {
setSelectedServerId(null)
}, [])
/**
* Refreshes a server's tools by re-discovering them from the MCP server.
*/
const handleRefreshServer = useCallback(
async (serverId: string) => {
try {
setRefreshStatus('refreshing')
await refreshServerMutation.mutateAsync({ workspaceId, serverId })
logger.info(`Refreshed MCP server: ${serverId}`)
setRefreshStatus('refreshed')
setTimeout(() => setRefreshStatus('idle'), 2000)
} catch (error) {
logger.error('Failed to refresh MCP server:', error)
setRefreshStatus('idle')
}
},
[refreshServerMutation, workspaceId]
)
/**
* Gets the selected server and its tools for the detail view.
*/
@@ -412,12 +428,10 @@ export function MCP() {
const showEmptyState = !hasServers && !showAddForm
const showNoResults = searchTerm.trim() && filteredServers.length === 0 && servers.length > 0
// Form validation state
const isFormValid = formData.name.trim() && formData.url?.trim()
const isSubmitDisabled = serversLoading || isAddingServer || !isFormValid
const testButtonLabel = getTestButtonLabel(testResult, isTestingConnection)
// Show detail view if a server is selected
if (selectedServer) {
const { server, tools } = selectedServer
const transportLabel = formatTransportLabel(server.transport || 'http')
@@ -478,7 +492,18 @@ export function MCP() {
</div>
</div>
<div className='mt-auto flex items-center justify-end'>
<div className='mt-auto flex items-center justify-between'>
<Button
onClick={() => handleRefreshServer(server.id)}
variant='default'
disabled={refreshStatus !== 'idle'}
>
{refreshStatus === 'refreshing'
? 'Refreshing...'
: refreshStatus === 'refreshed'
? 'Refreshed'
: 'Refresh Tools'}
</Button>
<Button
onClick={handleBackToList}
variant='primary'

View File

@@ -14,6 +14,7 @@ import {
useItemDrag,
useItemRename,
} from '@/app/workspace/[workspaceId]/w/components/sidebar/hooks'
import { SIDEBAR_SCROLL_EVENT } from '@/app/workspace/[workspaceId]/w/components/sidebar/sidebar'
import { useDeleteFolder, useDuplicateFolder } from '@/app/workspace/[workspaceId]/w/hooks'
import { useCreateFolder, useUpdateFolder } from '@/hooks/queries/folders'
import { useCreateWorkflow } from '@/hooks/queries/workflows'
@@ -87,6 +88,10 @@ export function FolderItem({ folder, level, hoverHandlers }: FolderItemProps) {
if (result.id) {
router.push(`/workspace/${workspaceId}/w/${result.id}`)
// Scroll to the newly created workflow
window.dispatchEvent(
new CustomEvent(SIDEBAR_SCROLL_EVENT, { detail: { itemId: result.id } })
)
}
} catch (error) {
// Error already handled by mutation's onError callback
@@ -100,11 +105,17 @@ export function FolderItem({ folder, level, hoverHandlers }: FolderItemProps) {
*/
const handleCreateFolderInFolder = useCallback(async () => {
try {
await createFolderMutation.mutateAsync({
const result = await createFolderMutation.mutateAsync({
workspaceId,
name: 'New Folder',
parentId: folder.id,
})
if (result.id) {
// Scroll to the newly created folder
window.dispatchEvent(
new CustomEvent(SIDEBAR_SCROLL_EVENT, { detail: { itemId: result.id } })
)
}
} catch (error) {
logger.error('Failed to create folder:', error)
}

View File

@@ -1,6 +1,6 @@
'use client'
import { useCallback, useEffect, useMemo, useRef } from 'react'
import { useCallback, useEffect, useMemo } from 'react'
import clsx from 'clsx'
import { useParams, usePathname } from 'next/navigation'
import { FolderItem } from '@/app/workspace/[workspaceId]/w/components/sidebar/components/workflow-list/components/folder-item/folder-item'
@@ -144,11 +144,8 @@ export function WorkflowList({
[pathname, workspaceId]
)
// Track last scrolled workflow to avoid redundant scroll checks
const lastScrolledWorkflowRef = useRef<string | null>(null)
/**
* Auto-expand folders, select active workflow, and scroll into view if needed.
* Auto-expand folders and select active workflow.
*/
useEffect(() => {
if (!workflowId || isLoading || foldersLoading) return
@@ -164,25 +161,6 @@ export function WorkflowList({
if (!selectedWorkflows.has(workflowId)) {
selectOnly(workflowId)
}
// Skip scroll check if already handled for this workflow
if (lastScrolledWorkflowRef.current === workflowId) return
lastScrolledWorkflowRef.current = workflowId
// Scroll after render only if element is completely off-screen
requestAnimationFrame(() => {
const element = document.querySelector(`[data-item-id="${workflowId}"]`)
const container = scrollContainerRef.current
if (!element || !container) return
const { top: elTop, bottom: elBottom } = element.getBoundingClientRect()
const { top: ctTop, bottom: ctBottom } = container.getBoundingClientRect()
// Only scroll if completely above or below the visible area
if (elBottom <= ctTop || elTop >= ctBottom) {
element.scrollIntoView({ behavior: 'smooth', block: 'center' })
}
})
}, [workflowId, activeWorkflowFolderId, isLoading, foldersLoading, getFolderPath, setExpanded])
const renderWorkflowItem = useCallback(

View File

@@ -34,9 +34,13 @@ import { useSearchModalStore } from '@/stores/search-modal/store'
import { MIN_SIDEBAR_WIDTH, useSidebarStore } from '@/stores/sidebar/store'
const logger = createLogger('Sidebar')
// Feature flag: Billing usage indicator visibility (matches legacy sidebar behavior)
/** Feature flag for billing usage indicator visibility */
const isBillingEnabled = isTruthy(getEnv('NEXT_PUBLIC_BILLING_ENABLED'))
/** Event name for sidebar scroll operations - centralized for consistency */
export const SIDEBAR_SCROLL_EVENT = 'sidebar-scroll-to-item'
/**
* Sidebar component with resizable width that persists across page refreshes.
*
@@ -60,63 +64,79 @@ export function Sidebar() {
const fileInputRef = useRef<HTMLInputElement>(null)
const scrollContainerRef = useRef<HTMLDivElement>(null)
// Session data
const { data: sessionData, isPending: sessionLoading } = useSession()
// Sidebar state - use store's hydration tracking to prevent SSR mismatch
/**
* Sidebar state from store with hydration tracking to prevent SSR mismatch.
* Uses default (expanded) state until hydrated.
*/
const hasHydrated = useSidebarStore((state) => state._hasHydrated)
const isCollapsedStore = useSidebarStore((state) => state.isCollapsed)
const setIsCollapsed = useSidebarStore((state) => state.setIsCollapsed)
const setSidebarWidth = useSidebarStore((state) => state.setSidebarWidth)
// Use default (expanded) state until hydrated to prevent hydration mismatch
const isCollapsed = hasHydrated ? isCollapsedStore : false
// Determine if we're on a workflow page (only workflow pages allow collapse and resize)
const isOnWorkflowPage = !!workflowId
// Import state
const [isImporting, setIsImporting] = useState(false)
// Workspace import input ref
const workspaceFileInputRef = useRef<HTMLInputElement>(null)
// Workspace import hook
const { isImporting: isImportingWorkspace, handleImportWorkspace: importWorkspace } =
useImportWorkspace()
const { handleExportWorkspace: exportWorkspace } = useExportWorkspace()
// Workspace export hook
const { isExporting: isExportingWorkspace, handleExportWorkspace: exportWorkspace } =
useExportWorkspace()
// Workspace popover state
const [isWorkspaceMenuOpen, setIsWorkspaceMenuOpen] = useState(false)
// Footer navigation modal state
const [isHelpModalOpen, setIsHelpModalOpen] = useState(false)
const [isSettingsModalOpen, setIsSettingsModalOpen] = useState(false)
// Listen for external events to open help modal
/** Listens for external events to open help modal */
useEffect(() => {
const handleOpenHelpModal = () => setIsHelpModalOpen(true)
window.addEventListener('open-help-modal', handleOpenHelpModal)
return () => window.removeEventListener('open-help-modal', handleOpenHelpModal)
}, [])
// Global search modal state
/** Listens for scroll events and scrolls items into view if off-screen */
useEffect(() => {
const handleScrollToItem = (e: CustomEvent<{ itemId: string }>) => {
const { itemId } = e.detail
if (!itemId) return
const tryScroll = (retriesLeft: number) => {
requestAnimationFrame(() => {
const element = document.querySelector(`[data-item-id="${itemId}"]`)
const container = scrollContainerRef.current
if (!element || !container) {
if (retriesLeft > 0) tryScroll(retriesLeft - 1)
return
}
const { top: elTop, bottom: elBottom } = element.getBoundingClientRect()
const { top: ctTop, bottom: ctBottom } = container.getBoundingClientRect()
if (elBottom <= ctTop || elTop >= ctBottom) {
element.scrollIntoView({ behavior: 'smooth', block: 'center' })
}
})
}
tryScroll(10)
}
window.addEventListener(SIDEBAR_SCROLL_EVENT, handleScrollToItem as EventListener)
return () =>
window.removeEventListener(SIDEBAR_SCROLL_EVENT, handleScrollToItem as EventListener)
}, [])
const {
isOpen: isSearchModalOpen,
setOpen: setIsSearchModalOpen,
open: openSearchModal,
} = useSearchModalStore()
// Workspace management hook
const {
workspaces,
activeWorkspace,
isWorkspacesLoading,
fetchWorkspaces,
isWorkspaceValid,
switchWorkspace,
handleCreateWorkspace,
isCreatingWorkspace,
@@ -127,10 +147,8 @@ export function Sidebar() {
sessionUserId: sessionData?.user?.id,
})
// Sidebar resize hook
const { handleMouseDown } = useSidebarResize()
// Workflow operations hook
const {
regularWorkflows,
workflowsLoading,
@@ -138,17 +156,14 @@ export function Sidebar() {
handleCreateWorkflow: createWorkflow,
} = useWorkflowOperations({ workspaceId })
// Folder operations hook
const { isCreatingFolder, handleCreateFolder: createFolder } = useFolderOperations({
workspaceId,
})
// Duplicate workspace hook
const { handleDuplicateWorkspace: duplicateWorkspace } = useDuplicateWorkspace({
getWorkspaceId: () => workspaceId,
})
// Prepare data for search modal
const searchModalWorkflows = useMemo(
() =>
regularWorkflows.map((workflow) => ({
@@ -172,7 +187,6 @@ export function Sidebar() {
[workspaces, workspaceId]
)
// Footer navigation items
const footerNavigationItems = useMemo(
() => [
{
@@ -209,116 +223,85 @@ export function Sidebar() {
[workspaceId]
)
// Combined loading state
const isLoading = workflowsLoading || sessionLoading
const initialScrollDoneRef = useRef<string | null>(null)
/**
* Scrolls a newly created element into view if completely off-screen.
* Uses requestAnimationFrame to sync with render, then scrolls.
*/
const scrollToElement = useCallback((elementId: string) => {
/** Scrolls to active workflow on initial load or workspace switch */
useEffect(() => {
if (!workflowId || workflowsLoading || initialScrollDoneRef.current === workflowId) return
initialScrollDoneRef.current = workflowId
requestAnimationFrame(() => {
const element = document.querySelector(`[data-item-id="${elementId}"]`)
const container = scrollContainerRef.current
if (!element || !container) return
const { top: elTop, bottom: elBottom } = element.getBoundingClientRect()
const { top: ctTop, bottom: ctBottom } = container.getBoundingClientRect()
// Only scroll if element is completely off-screen
if (elBottom <= ctTop || elTop >= ctBottom) {
element.scrollIntoView({ behavior: 'smooth', block: 'center' })
}
window.dispatchEvent(
new CustomEvent(SIDEBAR_SCROLL_EVENT, { detail: { itemId: workflowId } })
)
})
}, [])
}, [workflowId, workflowsLoading])
/**
* Force sidebar to minimum width and ensure it's expanded when not on a workflow page
*/
/** Forces sidebar to minimum width and ensures it's expanded when not on a workflow page */
useEffect(() => {
if (!isOnWorkflowPage) {
// Ensure sidebar is always expanded on non-workflow pages
if (isCollapsed) {
setIsCollapsed(false)
}
// Force sidebar to minimum width
setSidebarWidth(MIN_SIDEBAR_WIDTH)
}
}, [isOnWorkflowPage, isCollapsed, setIsCollapsed, setSidebarWidth])
/**
* Handle create workflow - creates workflow and scrolls to it
*/
/** Creates a workflow and scrolls to it */
const handleCreateWorkflow = useCallback(async () => {
const workflowId = await createWorkflow()
if (workflowId) {
scrollToElement(workflowId)
window.dispatchEvent(
new CustomEvent(SIDEBAR_SCROLL_EVENT, { detail: { itemId: workflowId } })
)
}
}, [createWorkflow, scrollToElement])
}, [createWorkflow])
/**
* Handle create folder - creates folder and scrolls to it
*/
/** Creates a folder and scrolls to it */
const handleCreateFolder = useCallback(async () => {
const folderId = await createFolder()
if (folderId) {
scrollToElement(folderId)
window.dispatchEvent(new CustomEvent(SIDEBAR_SCROLL_EVENT, { detail: { itemId: folderId } }))
}
}, [createFolder, scrollToElement])
}, [createFolder])
/**
* Handle import workflow button click - triggers file input
*/
/** Triggers file input for workflow import */
const handleImportWorkflow = useCallback(() => {
if (fileInputRef.current) {
fileInputRef.current.click()
}
fileInputRef.current?.click()
}, [])
/**
* Handle workspace switch from popover menu
*/
/** Handles workspace switch from popover menu */
const handleWorkspaceSwitch = useCallback(
async (workspace: { id: string; name: string; ownerId: string; role?: string }) => {
if (workspace.id === workspaceId) {
setIsWorkspaceMenuOpen(false)
return
}
await switchWorkspace(workspace)
setIsWorkspaceMenuOpen(false)
},
[workspaceId, switchWorkspace]
)
/**
* Handle sidebar collapse toggle
*/
/** Toggles sidebar collapse state */
const handleToggleCollapse = useCallback(() => {
setIsCollapsed(!isCollapsed)
}, [isCollapsed, setIsCollapsed])
/**
* Handle click on sidebar elements to revert to active workflow selection
*/
/** Reverts to active workflow selection when clicking sidebar background */
const handleSidebarClick = useCallback(
(e: React.MouseEvent<HTMLElement>) => {
const target = e.target as HTMLElement
// Revert to active workflow selection if clicking on sidebar background, header, or search area
// But not on interactive elements like buttons or links
if (target.tagName === 'BUTTON' || target.closest('button, [role="button"], a')) {
return
}
const { selectOnly, clearSelection } = useFolderStore.getState()
workflowId ? selectOnly(workflowId) : clearSelection()
},
[workflowId]
)
/**
* Handle workspace rename
*/
/** Renames a workspace */
const handleRenameWorkspace = useCallback(
async (workspaceIdToRename: string, newName: string) => {
await updateWorkspaceName(workspaceIdToRename, newName)
@@ -326,9 +309,7 @@ export function Sidebar() {
[updateWorkspaceName]
)
/**
* Handle workspace delete
*/
/** Deletes a workspace */
const handleDeleteWorkspace = useCallback(
async (workspaceIdToDelete: string) => {
const workspaceToDelete = workspaces.find((w) => w.id === workspaceIdToDelete)
@@ -339,9 +320,7 @@ export function Sidebar() {
[workspaces, confirmDeleteWorkspace]
)
/**
* Handle workspace duplicate
*/
/** Duplicates a workspace */
const handleDuplicateWorkspace = useCallback(
async (_workspaceIdToDuplicate: string, workspaceName: string) => {
await duplicateWorkspace(workspaceName)
@@ -349,9 +328,7 @@ export function Sidebar() {
[duplicateWorkspace]
)
/**
* Handle workspace export
*/
/** Exports a workspace */
const handleExportWorkspace = useCallback(
async (workspaceIdToExport: string, workspaceName: string) => {
await exportWorkspace(workspaceIdToExport, workspaceName)
@@ -359,18 +336,12 @@ export function Sidebar() {
[exportWorkspace]
)
/**
* Handle workspace import button click
*/
/** Triggers file input for workspace import */
const handleImportWorkspace = useCallback(() => {
if (workspaceFileInputRef.current) {
workspaceFileInputRef.current.click()
}
workspaceFileInputRef.current?.click()
}, [])
/**
* Handle workspace import file change
*/
/** Handles workspace import file selection */
const handleWorkspaceFileChange = useCallback(
async (event: React.ChangeEvent<HTMLInputElement>) => {
const files = event.target.files
@@ -379,7 +350,6 @@ export function Sidebar() {
const zipFile = files[0]
await importWorkspace(zipFile)
// Reset file input
if (event.target) {
event.target.value = ''
}
@@ -387,12 +357,7 @@ export function Sidebar() {
[importWorkspace]
)
/**
* Resolve a workspace id from either params or the current URL path.
*
* This mirrors existing behavior but is wrapped in a helper to keep command
* handlers small and focused.
*/
/** Resolves workspace ID from params or URL path */
const resolveWorkspaceIdFromPath = useCallback((): string | undefined => {
if (workspaceId) return workspaceId
if (typeof window === 'undefined') return undefined
@@ -404,12 +369,7 @@ export function Sidebar() {
return parts[idx + 1]
}, [workspaceId])
/**
* Register global sidebar commands using the central commands registry.
*
* Only commands declared in the registry can be registered here. The
* registry owns ids and shortcut strings; this component supplies handlers.
*/
/** Registers global sidebar commands with the central commands registry */
useRegisterGlobalCommands(() =>
createCommands([
{

View File

@@ -287,6 +287,19 @@ export const AsanaBlock: BlockConfig<AsanaResponse> = {
},
outputs: {
success: { type: 'boolean', description: 'Operation success status' },
output: { type: 'string', description: 'Operation result (JSON)' },
ts: { type: 'string', description: 'Timestamp of the response' },
gid: { type: 'string', description: 'Resource globally unique identifier' },
name: { type: 'string', description: 'Resource name' },
notes: { type: 'string', description: 'Task notes or description' },
completed: { type: 'boolean', description: 'Whether the task is completed' },
text: { type: 'string', description: 'Comment text content' },
assignee: { type: 'json', description: 'Assignee details (gid, name)' },
created_by: { type: 'json', description: 'Creator details (gid, name)' },
due_on: { type: 'string', description: 'Due date (YYYY-MM-DD)' },
created_at: { type: 'string', description: 'Creation timestamp' },
modified_at: { type: 'string', description: 'Last modified timestamp' },
permalink_url: { type: 'string', description: 'URL to the resource in Asana' },
tasks: { type: 'json', description: 'Array of tasks' },
projects: { type: 'json', description: 'Array of projects' },
},
}

View File

@@ -32,11 +32,23 @@ export const BrowserUseBlock: BlockConfig<BrowserUseResponse> = {
title: 'Model',
type: 'dropdown',
options: [
{ label: 'gpt-4o', id: 'gpt-4o' },
{ label: 'gemini-2.0-flash', id: 'gemini-2.0-flash' },
{ label: 'gemini-2.0-flash-lite', id: 'gemini-2.0-flash-lite' },
{ label: 'claude-3-7-sonnet-20250219', id: 'claude-3-7-sonnet-20250219' },
{ label: 'llama-4-maverick-17b-128e-instruct', id: 'llama-4-maverick-17b-128e-instruct' },
{ label: 'Browser Use LLM', id: 'browser-use-llm' },
{ label: 'GPT-4o', id: 'gpt-4o' },
{ label: 'GPT-4o Mini', id: 'gpt-4o-mini' },
{ label: 'GPT-4.1', id: 'gpt-4.1' },
{ label: 'GPT-4.1 Mini', id: 'gpt-4.1-mini' },
{ label: 'O3', id: 'o3' },
{ label: 'O4 Mini', id: 'o4-mini' },
{ label: 'Gemini 2.5 Flash', id: 'gemini-2.5-flash' },
{ label: 'Gemini 2.5 Pro', id: 'gemini-2.5-pro' },
{ label: 'Gemini 3 Pro Preview', id: 'gemini-3-pro-preview' },
{ label: 'Gemini Flash Latest', id: 'gemini-flash-latest' },
{ label: 'Gemini Flash Lite Latest', id: 'gemini-flash-lite-latest' },
{ label: 'Claude 3.7 Sonnet', id: 'claude-3-7-sonnet-20250219' },
{ label: 'Claude Sonnet 4', id: 'claude-sonnet-4-20250514' },
{ label: 'Claude Sonnet 4.5', id: 'claude-sonnet-4-5-20250929' },
{ label: 'Claude Opus 4.5', id: 'claude-opus-4-5-20251101' },
{ label: 'Llama 4 Maverick', id: 'llama-4-maverick-17b-128e-instruct' },
],
},
{

View File

@@ -29,6 +29,7 @@ export const ConfluenceBlock: BlockConfig<ConfluenceResponse> = {
{ label: 'List Comments', id: 'list_comments' },
{ label: 'Update Comment', id: 'update_comment' },
{ label: 'Delete Comment', id: 'delete_comment' },
{ label: 'Upload Attachment', id: 'upload_attachment' },
{ label: 'List Attachments', id: 'list_attachments' },
{ label: 'Delete Attachment', id: 'delete_attachment' },
{ label: 'List Labels', id: 'list_labels' },
@@ -155,6 +156,28 @@ export const ConfluenceBlock: BlockConfig<ConfluenceResponse> = {
required: true,
condition: { field: 'operation', value: 'delete_attachment' },
},
{
id: 'attachmentFile',
title: 'File',
type: 'file-upload',
placeholder: 'Select file to upload',
required: true,
condition: { field: 'operation', value: 'upload_attachment' },
},
{
id: 'attachmentFileName',
title: 'File Name',
type: 'short-input',
placeholder: 'Optional custom file name',
condition: { field: 'operation', value: 'upload_attachment' },
},
{
id: 'attachmentComment',
title: 'Comment',
type: 'short-input',
placeholder: 'Optional comment for the attachment',
condition: { field: 'operation', value: 'upload_attachment' },
},
{
id: 'labelName',
title: 'Label Name',
@@ -185,6 +208,7 @@ export const ConfluenceBlock: BlockConfig<ConfluenceResponse> = {
'confluence_list_comments',
'confluence_update_comment',
'confluence_delete_comment',
'confluence_upload_attachment',
'confluence_list_attachments',
'confluence_delete_attachment',
'confluence_list_labels',
@@ -212,6 +236,8 @@ export const ConfluenceBlock: BlockConfig<ConfluenceResponse> = {
return 'confluence_update_comment'
case 'delete_comment':
return 'confluence_delete_comment'
case 'upload_attachment':
return 'confluence_upload_attachment'
case 'list_attachments':
return 'confluence_list_attachments'
case 'delete_attachment':
@@ -227,11 +253,19 @@ export const ConfluenceBlock: BlockConfig<ConfluenceResponse> = {
}
},
params: (params) => {
const { credential, pageId, manualPageId, operation, ...rest } = params
const {
credential,
pageId,
manualPageId,
operation,
attachmentFile,
attachmentFileName,
attachmentComment,
...rest
} = params
const effectivePageId = (pageId || manualPageId || '').trim()
// Operations that require pageId
const requiresPageId = [
'read',
'update',
@@ -240,9 +274,9 @@ export const ConfluenceBlock: BlockConfig<ConfluenceResponse> = {
'list_comments',
'list_attachments',
'list_labels',
'upload_attachment',
]
// Operations that require spaceId
const requiresSpaceId = ['create', 'get_space']
if (requiresPageId.includes(operation) && !effectivePageId) {
@@ -253,6 +287,18 @@ export const ConfluenceBlock: BlockConfig<ConfluenceResponse> = {
throw new Error('Space ID is required for this operation.')
}
if (operation === 'upload_attachment') {
return {
credential,
pageId: effectivePageId,
operation,
file: attachmentFile,
fileName: attachmentFileName,
comment: attachmentComment,
...rest,
}
}
return {
credential,
pageId: effectivePageId || undefined,
@@ -276,6 +322,9 @@ export const ConfluenceBlock: BlockConfig<ConfluenceResponse> = {
comment: { type: 'string', description: 'Comment text' },
commentId: { type: 'string', description: 'Comment identifier' },
attachmentId: { type: 'string', description: 'Attachment identifier' },
attachmentFile: { type: 'json', description: 'File to upload as attachment' },
attachmentFileName: { type: 'string', description: 'Custom file name for attachment' },
attachmentComment: { type: 'string', description: 'Comment for the attachment' },
labelName: { type: 'string', description: 'Label name' },
limit: { type: 'number', description: 'Maximum number of results' },
},
@@ -297,6 +346,9 @@ export const ConfluenceBlock: BlockConfig<ConfluenceResponse> = {
spaces: { type: 'array', description: 'List of spaces' },
commentId: { type: 'string', description: 'Comment identifier' },
attachmentId: { type: 'string', description: 'Attachment identifier' },
fileSize: { type: 'number', description: 'Attachment file size in bytes' },
mediaType: { type: 'string', description: 'Attachment MIME type' },
downloadUrl: { type: 'string', description: 'Attachment download URL' },
labelName: { type: 'string', description: 'Label name' },
spaceId: { type: 'string', description: 'Space identifier' },
name: { type: 'string', description: 'Space name' },

Some files were not shown because too many files have changed in this diff Show More