openapi: 3.2.0
info:
title: Pipeshub Connector Control API
version: 1.0.0
contact:
name: API Support
email: support@pipeshub.com
description: 'Operations tagged Connector Control across 2 of this provider''s published API definitions: pipeshub-openapi.yaml, pipeshub-openapi.yml. Each path carries the servers of the definition it was published in.'
servers:
- url: '{instance_url}/api/v1'
description: Base API URL
variables:
instance_url:
default: https://app.pipeshub.com
description: Base server URL (without /api/v1)
- url: '{instance_url}'
description: Root URL (used for MCP endpoints mounted at /mcp)
variables:
instance_url:
default: https://app.pipeshub.com
description: Base server URL
security:
- bearerAuth: []
- oauth2: []
tags:
- name: Connector Control
description: Enable/disable connectors for sync or agent functionality
paths:
/connectors/{connectorId}/toggle:
post:
tags:
- Connector Control
summary: Toggle connector sync or agent
description: 'Enable or disable a connector for sync or agent functionality.
Toggle Types:
sync - Enable/disable data synchronization
agent - Enable/disable AI agent integration
Prerequisites for Enabling:
Connector must be configured (isConfigured: true)
For OAuth connectors: Must be authenticated (isAuthenticated: true)
For agent: Connector must support agent (supportsAgent: true)
Local FS: must be enabled from the owner device via the desktop app, which sends deviceId and deviceName. The first enable claims that device as owner.
Permissions:
Team scope: Requires admin
Personal scope: Only creator can toggle'
operationId: toggleConnector
security:
- bearerAuth: []
- oauth2:
- connector:write
parameters:
- name: connectorId
in: path
required: true
schema:
type: string
requestBody:
required: true
description: Request payload
content:
application/json:
schema:
$ref: '#/components/schemas/ConnectorToggleRequest'
responses:
'200':
description: Connector toggled
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
message:
type: string
example: Sync enabled successfully
connector:
$ref: '#/components/schemas/ConnectorInstance'
'400':
description: 'Cannot toggle. Possible reasons:
- Connector not configured
- OAuth not authenticated
- Agent not supported
'
'401':
description: Unauthorized
'403':
description: Permission denied
'404':
description: Connector not found
'409':
description: 'Local FS sync cannot be enabled. details.code is one of:
DESKTOP_OFFLINE - the owner device''s desktop app is not connected
DESKTOP_UNCLAIMED - the connector has no owner yet and no deviceId was sent
DESKTOP_OWNED_BY_OTHER_DEVICE - deviceId differs from ownerDeviceId; details.ownerDeviceName names the owner
'
content:
application/json:
schema:
$ref: '#/components/schemas/LocalFsDesktopRefusal'
servers:
- url: '{instance_url}/api/v1'
description: Base API URL
variables:
instance_url:
default: https://app.pipeshub.com
description: Base server URL (without /api/v1)
- url: '{instance_url}'
description: Root URL (used for MCP endpoints mounted at /mcp)
variables:
instance_url:
default: https://app.pipeshub.com
description: Base server URL
components:
schemas:
LocalFsDesktopRefusal:
type: object
description: '409 body returned when a Local FS connector cannot sync because of its
owner device.
'
required:
- success
- code
- message
- details
properties:
success:
type: boolean
example: false
code:
type: string
enum:
- DESKTOP_OFFLINE
- DESKTOP_UNCLAIMED
- DESKTOP_OWNED_BY_OTHER_DEVICE
message:
type: string
example: No desktop is connected for connector conn_abc123. Open the Pipeshub desktop app on the machine that owns this folder.
details:
type: object
required:
- code
- connectorId
- retryable
properties:
code:
type: string
enum:
- DESKTOP_OFFLINE
- DESKTOP_UNCLAIMED
- DESKTOP_OWNED_BY_OTHER_DEVICE
connectorId:
type: string
retryable:
type: boolean
ownerDeviceName:
type: string
description: Name of the owner device, when the connector has one.
ConnectorAuthType:
type: string
description: 'Authentication method required by the connector:
OAUTH - User OAuth consent flow
OAUTH_ADMIN_CONSENT - Admin OAuth with org-wide consent
API_TOKEN - API key or token authentication
USERNAME_PASSWORD - Username/password credentials
NONE - No authentication required
'
enum:
- OAUTH
- OAUTH_ADMIN_CONSENT
- API_TOKEN
- USERNAME_PASSWORD
- NONE
ConnectorInstance:
type: object
description: 'A configured connector instance. Represents an active or configured
connection to an external service.
'
properties:
connectorId:
type: string
description: Unique instance identifier
example: conn_abc123
connectorType:
type: string
description: Type of connector (from registry)
example: google-drive
instanceName:
type: string
description: User-defined name for this instance
example: Company Google Drive
scope:
$ref: '#/components/schemas/ConnectorScope'
authType:
$ref: '#/components/schemas/ConnectorAuthType'
createdBy:
type: string
description: User ID who created this instance
orgId:
type: string
description: Organization ID
isActive:
type: boolean
description: Whether connector is enabled for syncing/agent
desktopOnline:
type: boolean
description: 'Whether the owner device (`ownerDeviceId`) is currently connected.
Local FS only; omitted otherwise, and while the connector has no owner.
'
ownerDeviceId:
type: string
description: 'Local FS only. The desktop device that owns this connector, set when
sync is first enabled from the desktop app.
'
ownerDeviceName:
type: string
description: 'Local FS only. Display name of the desktop device that owns this
connector, set when sync is first enabled from the desktop app.
'
example: WIN-LAPTOP
isConfigured:
type: boolean
description: Whether all required configuration is complete
isAuthenticated:
type: boolean
description: Whether authentication is complete and valid
pendingFullSync:
type: boolean
description: Whether a full sync is pending due to filter changes or other configuration updates
syncEnabled:
type: boolean
description: Whether sync is enabled
agentEnabled:
type: boolean
description: Whether agent integration is enabled
lastSyncAt:
type: string
format: date-time
description: Timestamp of last successful sync
createdAt:
type: string
format: date-time
updatedAt:
type: string
format: date-time
ConnectorScope:
type: string
description: 'Scope determines visibility and access control for connectors:
team - Available to all users in the organization (admin-only creation)
personal - Private to the creating user only
'
enum:
- team
- personal
example: team
ConnectorToggleRequest:
type: object
description: Request to toggle connector active status
required:
- type
properties:
type:
type: string
enum:
- sync
- agent
description: 'Toggle type: ''sync'' for data synchronization, ''agent'' for AI agent integration'
deviceId:
type: string
description: 'Sent by the desktop app. Required when enabling sync on a Local FS
connector with no owner yet; must match `ownerDeviceId` afterwards.
'
deviceName:
type: string
description: 'Sent by the desktop app with `deviceId`. Stored as `ownerDeviceName`
when the device claims the connector.
'
securitySchemes:
bearerAuth:
type: http
scheme: bearer
bearerFormat: JWT
description: 'JWT Bearer token for authenticated requests.
A personal access token (see the **Personal Access Tokens** tag) is a
`phpat_`-prefixed variant of this same JWT — e.g. `phpat_eyJhbGci...`.
The prefix is display-only, added for secret-scanner detectability; the
gateway strips it before verifying the token, so send it exactly as
issued, prefix included.
'
scopedToken:
type: http
scheme: bearer
bearerFormat: JWT
description: 'Scoped JWT token for service-to-service authentication.
Format: "Bearer {scoped_token}"
Required scopes vary by endpoint.
'
oauth2:
type: oauth2
description: 'OAuth 2.0 authentication with fine-grained scopes.
Supports authorization_code (with PKCE) and client_credentials flows.
OAuth tokens are Bearer JWTs — use the same Authorization header as regular tokens.
For **client_credentials**, machine JWTs may use `userId === client_id`; the Node gateway resolves the OAuth app creator — see **OAuth Provider** tag.
'
flows:
authorizationCode:
authorizationUrl: /api/v1/oauth2/authorize
tokenUrl: /api/v1/oauth2/token
refreshUrl: /api/v1/oauth2/token
scopes:
openid: OpenID Connect authentication
profile: User profile information
email: User email address
offline_access: Offline access (refresh tokens)
org:read: Read organization information
org:write: Update organization settings
org:admin: Full organization administration
user:read: Read user profiles
user:write: Update user profiles
user:invite: Invite new users
user:delete: Delete users
usergroup:read: Read user groups
usergroup:write: Create and manage user groups
team:read: Read team information
team:write: Create and manage teams
kb:read: Read knowledge bases and records
kb:write: Create and update knowledge bases
kb:delete: Delete knowledge bases and records
kb:upload: Upload files to knowledge bases
semantic:read: Read semantic search results and history
semantic:write: Execute semantic search
semantic:delete: Delete semantic search history
conversation:read: Read conversations
conversation:write: Create and manage conversations
conversation:chat: Send messages in conversations
project:read: Read projects and their conversations
project:write: Create and manage projects
project:delete: Delete projects
agent:read: Read AI agents
agent:write: Create and manage AI agents
agent:execute: Execute AI agents
connector:read: Read connector configurations
connector:write: Create and update connectors
connector:sync: Trigger connector synchronization
connector:delete: Delete connectors
config:read: Read system configuration
config:write: Update system configuration
crawl:read: Read crawling jobs
crawl:write: Create and manage crawling jobs
crawl:delete: Delete crawling jobs
clientCredentials:
tokenUrl: /api/v1/oauth2/token
scopes:
openid: OpenID Connect authentication
profile: User profile information
email: User email address
offline_access: Offline access (refresh tokens)
org:read: Read organization information
org:write: Update organization settings
org:admin: Full organization administration
user:read: Read user profiles
user:write: Update user profiles
user:invite: Invite new users
user:delete: Delete users
usergroup:read: Read user groups
usergroup:write: Create and manage user groups
team:read: Read team information
team:write: Create and manage teams
kb:read: Read knowledge bases and records
kb:write: Create and update knowledge bases
kb:delete: Delete knowledge bases and records
kb:upload: Upload files to knowledge bases
semantic:write: Execute semantic search
semantic:read: Read semantic search results and history
semantic:delete: Delete semantic search history
conversation:read: Read conversations
conversation:write: Create and manage conversations
conversation:chat: Send messages in conversations
project:read: Read projects and their conversations
project:write: Create and manage projects
project:delete: Delete projects
agent:read: Read AI agents
agent:write: Create and manage AI agents
agent:execute: Execute AI agents
connector:read: Read connector configurations
connector:write: Create and update connectors
connector:sync: Trigger connector synchronization
connector:delete: Delete connectors
config:read: Read system configuration
config:write: Update system configuration
crawl:read: Read crawling jobs
crawl:write: Create and manage crawling jobs
x-refined-from:
- pipeshub-openapi.yaml
- pipeshub-openapi.yml