{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-docs/sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":[]},"type":"markdown"},"seo":{"title":"Workspace Connectors","projectTitle":"Frontline Documentation"},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"workspace-connectors","__idx":0},"children":["Workspace Connectors"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["A ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Workspace Connector"]}," is an account-scoped connected account — Gmail, Slack, Salesforce, Google Sheets, and so on. In the app these are called workspace connectors; in the Public API they live under ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["/integrations"]},"."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Each connector has a numeric ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["id"]}," that you pass as ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["connectedAccountId"]}," when wiring workflow/flow triggers and tool nodes. Setting up an automation almost always starts here: find the connector, confirm it is connected, and read its ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["id"]},"."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["These are ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["distinct from ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/concepts/max/connectors"},"children":["Max Connectors"]}]},", which belong to a single user and power that person's Max assistant."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The Public API is ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["read-only"]},". Connecting, renaming, visibility, and which tools a connector exposes are changed in the app — not via an API key. Requires a USER API key."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"identity","__idx":1},"children":["Identity"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Field"},"children":["Field"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Type"},"children":["Type"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Notes"},"children":["Notes"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["id"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["number"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Use as ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["connectedAccountId"]}," in triggers and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["TOOLS_AI"]}," nodes."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["toolkit"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["string"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Uppercase enum name, e.g. ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GMAIL"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SLACK"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SALESFORCE"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GOOGLESHEETS"]},"."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["alias"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["string?"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Display name."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["visibility"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["enum"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SHARED"]}," · ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["PRIVATE"]},"."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["isConnected"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["boolean"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Whether the OAuth grant is currently valid."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["isExpired"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["boolean"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Needs reconnect in the app."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["connectedEmail"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["string?"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Connected email/account identifier."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["allowedToolSlugs"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["array"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Currently enabled tool slugs."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["enabledToolsCount"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["number"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["availableToolsCount"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["number"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Discover valid ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["toolkit"]}," values with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GET /integrations/toolkits"]},". An unknown value on list filters returns 400."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"where-the-id-is-used","__idx":2},"children":["Where the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["id"]}," is used"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Event trigger nodes"]}," — a workflow ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["TRIGGER"]}," with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["triggerType: \"COMPOSIO_TRIGGER\""]}," needs ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["connectedAccountId"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["triggerToolkit"]},", and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["triggerSlug"]},", plus ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["triggerConfig"]},". When the trigger fires, the payload is available downstream as ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["{trigger_payload}"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["TOOLS_AI"]}," nodes"]}," — ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["data.connectedAccountConfigs"]}," is an array of ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["{ connectedAccountId, useAllTools, selectedToolSlugs }"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["References are validated server-side: a wrong ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["connectedAccountId"]}," returns 400."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["To resolve the ids a trigger config expects (spreadsheet, Drive folder, Gmail label, …), use ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Integration Resources"]}," (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GET /integrations/trigger-types"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GET /integrations/trigger-resources/..."]},"). Those are a separate tag from Workspace Connectors."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"operations","__idx":3},"children":["Operations"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Verb"},"children":["Verb"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Path"},"children":["Path"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Purpose"},"children":["Purpose"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GET"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["/public/v1/integrations"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["List (filters: ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["toolkit"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["filterText"]},", connection state)"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GET"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["/public/v1/integrations/toolkits"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Catalog of connectable toolkits + tool slugs"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GET"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["/public/v1/integrations/{integrationId}"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Detail"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GET"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["/public/v1/integrations/{integrationId}/tools"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Enabled vs available tools, with required-scope status"]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["hasRequiredScopes: false"]}," on a tool means the OAuth grant is missing scopes that tool needs — it will fail at runtime until the user reconnects in the app with broader permissions."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Full list in the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/reference/openapi"},"children":["API Reference"]}]}," under the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Workspace Connectors"]}," tag."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"cli","__idx":4},"children":["CLI"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"bash","header":{"controls":{"copy":{}}},"source":"frontline integrations list --toolkit GMAIL --connected --table\nfrontline integrations toolkits --table\nfrontline integrations get 42\nfrontline integrations tools 42 --table\n","lang":"bash"},"children":[]}]},"headings":[{"value":"Workspace Connectors","id":"workspace-connectors","depth":1},{"value":"Identity","id":"identity","depth":2},{"value":"Where the id is used","id":"where-the-id-is-used","depth":2},{"value":"Operations","id":"operations","depth":2},{"value":"CLI","id":"cli","depth":2}],"frontmatter":{"seo":{"title":"Workspace Connectors"}},"lastModified":"2026-10-02T13:31:57.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/docs/concepts/workspace-connectors","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}