{"templateId":"openapi_docs","sharedDataIds":{"openAPIDocsStore":"oas-openapi/content-intelligence.yaml","sidebar":"sidebar-sidebars.yaml"},"props":{"definitionId":"openapi/content-intelligence.yaml","dynamicMarkdocComponents":[],"baseSlug":"/openapi/content-intelligence","seo":{"title":"Channels","llmstxt":{"hide":false,"sections":[{"title":"Table of contents","includeFiles":["**/*"],"excludeFiles":[]}],"excludeFiles":[]},"description":"Channels are the integration layer for connecting to external content systems —\ncloud storage, DAM platforms, social media, enterprise file systems, and others. Each\nChannel is a configured, authenticated connection to one of these external sources that\nthe platform monitors, indexes, and keeps in sync.\n\nThe Channel Manager authenticates against external systems, scans for new and modified\ncontent, manages webhook subscriptions for real-time change notifications, and makes\nraw content available for retrieval — without managing the binary files directly.\nBinary retrieval is handled via pre-signed URLs delegated to [Content Storage](#tag/Content-Storage).\n\n**Channel categories:**\n\n| Category | Description |\n|---|---|\n| `ORIGIN` | External content source to pull from (Box, Google Drive, SharePoint, S3, DAMs, etc.) |\n| `OBSERVATION` | External system to observe for engagement events (Instagram, Facebook, Website, etc.) |\n| `DELIVERY` | Destination to push content to |\n\n**Currently available channel types:**\n\n*Origin (content pull):*\n| Channel | Group | Auth |\n|---|---|---|\n| Box | Cloud File Storage | OAuth |\n| Google Drive | Cloud File Storage | OAuth |\n| AWS S3 | Object Store | Service Credentials |\n| Tenovos DAM | DAM | OAuth |\n| Adobe AEM | DAM | Service Credentials |\n| Sitecore | DAM | OAuth |\n| Bynder | DAM | OAuth |\n| Brand Folder | DAM | OAuth |\n| Azure Blob | Object Store | OAuth |\n| Google Cloud Storage | Object Store | OAuth |\n| SharePoint | Cloud File Storage | OAuth |\n\n*Observation (engagement events):*\n| Channel | Group |\n|---|---|\n| Instagram | Social |\n| Facebook | Social |\n| Website | Content Management and Sites |\n\n**Authentication methods:**\n\n| Auth Type | Description |\n|---|---|\n| `OAUTH` | User-delegated OAuth 2.0 flow; use `retrieve-oauth-url` then `update-auth` |\n| `API_KEY` | Static API key submitted during channel creation |\n| `BASIC_AUTH` | Username and password credentials |\n| `SERVICE_CREDENTIALS` | Service account JSON or IAM role credentials (used by Adobe AEM, AWS S3) |\n\n**Channel status lifecycle:**\n\n| Status | Description |\n|---|---|\n| `DRAFT` | Channel created but not yet authenticated |\n| `AUTHENTICATED` | Credentials stored; not yet scanning |\n| `ENABLED` | Actively scanning and webhook-registered |\n| `DISABLED` | Paused; configuration and credentials retained |\n\n**Channel lifecycle endpoints:**\n- `list-channel-types / retrieve-channel-types` — discover available integrations and their configuration requirements\n- `create-channel` — configure a new connection (name, settings, auth)\n- `update-channel` — modify an existing channel's settings\n- `enable-channel` — activate scanning and webhook registration; channel begins syncing content\n- `disable-channel` — pause sync without deleting configuration; webhooks are torn down\n- `delete-channel / purge-channels` — remove channel(s) and all associated webhooks and scan state\n- `validate-channel-config` — test credentials and connectivity before enabling; returns `OK`, `AUTH_FAILURE`, or `CONFIG_FAILURE`\n\n**Authentication flow endpoints:**\n- `retrieve-oauth-url` — get the OAuth authorization URL to redirect a user through\n- `update-auth` — exchange an OAuth authorization code or service credentials for stored tokens\n\n**Content discovery endpoints:**\n- `retrieve-folders` — browse the folder, site, or library tree of a connected source\n- `get-config-description` — fetch the dynamic field schema for configuring a channel type; field types are `TREE`, `DROPDOWN`, or `TEXT`\n- `get-config-details` — retrieve selectable items (sites, folders, document libraries) for a specific channel instance\n- `scan-content` — manually trigger or resume a paginated content scan\n- `retrieve-content` — generate pre-signed download URLs for specific content items from the source\n- `retrieve-content-metadata` — fetch metadata for a specific item directly from the external source\n- `retrieve-content-data` — stream raw file content from the external source\n- `retrieve-channel-account` — return the authenticated account info (user profile, tenant ID, etc.) for a connected channel\n\n**Sync and operations:**\n- `resolve-webhook-payload` — parse an inbound push notification from an external system into a normalized platform event (used internally)\n- `channel-stats` — retrieve scan statistics and sync state (`ACTIVE`, `INACTIVE`, `SYNCING`, or `ERROR`) for a channel\n\n**Scan behavior:**\nEnabled channels run on an automatic schedule. Initial scans perform a full content crawl;\nsubsequent delta scans (default interval: 10 minutes) retrieve only changes since the last\nsuccessful scan using source-native change detection (e.g., Graph delta queries for SharePoint,\nchange tokens for Box). Failed scans retry up to 5 times with a 30-minute cooldown between attempts.\n"},"itemId":"channels","disableAutoScroll":true,"metadata":{"subType":"openapi-operation"},"compilationErrors":[],"markdown":{"partials":{},"variables":{"rbac":{"teams":["anonymous"]},"user":{},"remoteAddr":{"hostname":"api.tenovos.com","port":4000,"ipAddress":"216.73.217.51"},"lang":"default_locale","env":{"PUBLIC_REDOCLY_BRANCH_NAME":"main"}}},"pagePropGetterError":{"message":"","name":""}},"slug":"/openapi/content-intelligence/channels","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}