Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.userepo.com/llms.txt

Use this file to discover all available pages before exploring further.

A “source” in the API is the same thing as a “connector” in the console UI — one OAuth integration with one provider account.

List sources

GET https://api.userepo.com/v1/sources
Requires sources:read.
{
  "sources": [
    {
      "id": "uuid",
      "provider": "slack",
      "status": "active",
      "displayName": "Slack workspace T0B2W2YR44R",
      "externalAccountId": "T0B2W2YR44R",
      "lastSyncedAt": "2026-05-30T20:00:00Z",
      "errorMessage": null,
      "channelAllowlist": ["C0123456", "C0789ABC"],
      "sourceItemCount": 142,
      "policyHealth": null,
      "createdAt": "2026-05-22T14:00:00Z",
      "updatedAt": "2026-05-30T20:00:00Z"
    }
  ]
}
status
string
pending (just connected, first sync hasn’t finished) → active (syncing healthy) → error (last sync failed) → disabled (manually paused).
channelAllowlist
string[] | null
Slack only. If non-null, only listed channel IDs are ingested.
policyHealth
object | null
Drive only. Surfaces “X files need a full resync to preserve access policies” warnings.

Get Slack channels for a connector

GET https://api.userepo.com/v1/sources/{id}/channels
Requires sources:read. Slack connectors only — returns 400 for other providers.
{
  "channels": [
    { "id": "C0123456", "name": "brand", "isPrivate": false, "memberCount": 12 },
    { "id": "C0789ABC", "name": "dev-updates", "isPrivate": false, "memberCount": 8 }
  ],
  "channelAllowlist": ["C0123456"]
}
Use this to populate a UI before calling PATCH /v1/sources/:id with an updated allowlist.

Update a source

PATCH https://api.userepo.com/v1/sources/{id}
Requires sources:write. Currently only the Slack channel allowlist is editable.
channelAllowlist
string[] | null
required
Pass an array of channel IDs to restrict ingestion to those channels. Pass null to disable the allowlist (ingest all channels the bot is a member of).
{
  "id": "uuid",
  "provider": "slack",
  "displayName": "Slack workspace T0B2W2YR44R",
  "channelAllowlist": ["C0123456", "C0789ABC"]
}
Changing the allowlist takes effect on the next sync run. To force an immediate refresh, queue a sync via /v1/sync-runs with fullResync: true.