|
1 | 1 | --- |
2 | 2 | title: Coda |
3 | | -description: Index Coda pages and tables with each teammate's source permissions |
| 3 | +description: Connect Coda documents while preserving each teammate's access |
4 | 4 | --- |
5 | 5 |
|
6 | | -import { Callout } from 'fumadocs-ui/components/callout' |
| 6 | +import { Step, Steps } from 'fumadocs-ui/components/steps' |
| 7 | +import { Image } from '@/components/ui/image' |
7 | 8 |
|
8 | | -An organization admin connects a Coda API token. Sim indexes the selected documents and matches their sharing permissions to teammates' verified Sim email addresses. Teammates do not need a personal OAuth connection for this source. |
| 9 | +An organization admin connects Coda once. Teammates search using their verified Sim email address; they do not need a personal Coda connection. Their email must match the address Coda reports. |
9 | 10 |
|
10 | | -## Set up the source |
| 11 | +## Connect Coda |
11 | 12 |
|
12 | | -1. In Coda, open **Account settings → API connections** and generate an API token for the account that will index your documents. Coda's current app may be labeled **Superhuman Docs**. The account must be able to read the documents and their sharing permissions. |
13 | | -2. In Sim, open **Settings → Sources → Add source → Coda**. Add or select a Coda service account credential and paste the API token when prompted. |
14 | | -3. Select **Documents**, or use the switch beside that field to enter **Document IDs**, separated by commas. In a Coda URL such as `https://coda.io/d/_dAbCDeFGH`, the document ID is `AbCDeFGH`. Select up to 100 documents per source. The picker shows documents the token owner can access and has opened; use IDs for other Enterprise organization documents. |
15 | | -4. Leave **Enterprise organization ID** empty for ordinary token-based access. For organization-wide access, use an Enterprise organization administrator's token and enter the organization ID returned by Coda's [Admin API](https://coda.io/developers/apis/admin/v1). |
16 | | -5. Select **Connect & Sync**. Open the source's **Documents** and **Sync history** to check its progress. |
| 13 | +<Steps> |
| 14 | +<Step> |
17 | 15 |
|
18 | | -API tokens do not refresh automatically. When rotating a token, add the replacement credential, update the source, and verify a sync before revoking the old token. Indexing only reads Coda content; a broadly authorized token may allow other operations in Coda. |
| 16 | +### Create an API token |
19 | 17 |
|
20 | | -## Document selection and content |
| 18 | +Sign in to Coda with a dedicated integration account that can read the documents and their sharing permissions. Open **Account settings → API connections → Generate API token**, name the token, and copy it. Coda's current app may be labeled **Superhuman Docs**. |
21 | 19 |
|
22 | | -Explicit document IDs provide the clearest sync scope and include accessible documents the token owner has not opened. If IDs are empty, ordinary discovery includes only accessible documents the token owner has previously opened. Enterprise discovery uses the organization's document list. |
| 20 | +Use a standard REST API token. Do not select the MCP restriction. |
23 | 21 |
|
24 | | -Discovery pages can change order while syncing. Sim therefore does not delete existing indexed content solely because it disappears from a discovery listing. Use explicit document IDs when reliable deletion reconciliation is required. Discovery runs may report incomplete reconciliation; this does not mean their returned content failed to index. |
| 22 | +<Image className="mx-auto h-auto w-full max-w-2xl" src="/static/search/coda-api-token.jpg" alt="Coda API connections with the Generate new token dialog" width={1280} height={720} /> |
25 | 23 |
|
26 | | -| Connection | Indexed content | |
27 | | -| --- | --- | |
28 | | -| Ordinary API token | Visible canvas page text and base tables, including all listed columns and rows. Hidden pages, embedded pages, synced pages, and duplicate table views are excluded. | |
29 | | -| Enterprise organization | Page content returned by the Admin API's `LossyPlainText` format. Tables are represented only to the extent included in that export; they are not separately read through the public table API. | |
| 24 | +</Step> |
| 25 | +<Step> |
30 | 26 |
|
31 | | -Comments, attachments, images, and arbitrary embedded applications are not extracted. The connector stops with an error rather than indexing truncated content when a provider response, document, or pagination limit is exceeded. If the Enterprise API omits a document revision timestamp, Sim refreshes that document on each crawl. |
| 27 | +### Add the source |
32 | 28 |
|
33 | | -Document edits invalidate the pages and tables within that document. A full resync also refreshes rendered content whose dependencies may have changed without changing the document revision. This costs more API calls and processing than a regular sync. Ordinary unchanged documents retain their indexed content while their permissions are refreshed. |
| 29 | +In Sim, open **Settings → Sources → Add source → Coda**. Add or select a Coda service account credential and enter the token when prompted. |
34 | 30 |
|
35 | | -## How teammate access works |
| 31 | +| Field | What to enter | |
| 32 | +|---|---| |
| 33 | +| Documents | Select documents, or switch to **Document IDs** and enter up to 100 IDs separated by commas. For `https://coda.io/d/_dAbCDeFGH`, the ID is `AbCDeFGH`. | |
| 34 | +| Enterprise organization ID | Leave blank for ordinary access. For organization-wide indexing, enter the ID from Coda's [List organizations API](https://coda.io/developers/apis/admin/v1#operation/listOrganizations) and use an Enterprise organization administrator's token. Workspace admin access alone is insufficient. | |
36 | 35 |
|
37 | | -| Coda permission | Ordinary token | Enterprise organization | |
38 | | -| --- | --- | --- | |
39 | | -| Owner or direct email share | Matches the verified Sim email | Matches active users in the organization directory | |
40 | | -| Group share | Excluded | Resolves group members through the Admin API | |
41 | | -| Workspace share | Excluded | Resolves that Coda workspace's members | |
42 | | -| Domain share | Excluded | Matches active organization-directory users in that exact domain | |
43 | | -| Anyone with the link | Does not grant Search access | Does not grant Search access | |
| 36 | +The picker shows accessible documents the token owner has opened. Use IDs for other accessible documents. With no selection, Sim discovers the token owner's opened documents, or the organization's documents in Enterprise mode. Use explicit IDs when deleted documents must reliably be removed from the index; discovery listings alone are not authoritative for deletion. |
| 37 | + |
| 38 | +</Step> |
| 39 | +<Step> |
| 40 | + |
| 41 | +### Sync and verify |
44 | 42 |
|
45 | | -Enterprise mode excludes deactivated or deleted organization users. Directly shared external guests absent from the organization directory are also excluded. A guest explicitly returned in a group's or workspace's membership can receive that group's or workspace's access, unless the organization directory marks them inactive. |
| 43 | +Select **Connect & Sync**. Open the source's **Documents** and **Sync history** to check indexing. Content and permission changes appear after synchronization. |
46 | 44 |
|
47 | | -Ordinary token mode cannot independently check organization-level Coda account deactivation. Manage the person's Sim membership as well, or use Enterprise directory synchronization when that check is required. |
| 45 | +To rotate the token, add the replacement credential, update the source, and verify a sync before revoking the old token. |
48 | 46 |
|
49 | | -Unknown permission types never become broad access. Sim admin status does not override Coda permissions, and a workspace API key does not inherit an individual's Coda access. A source created in **workspace access** mode inside an ordinary knowledge base intentionally shares its indexed content with that workspace; organization Search requires source permissions. |
| 47 | +</Step> |
| 48 | +</Steps> |
50 | 49 |
|
51 | | -<Callout type="info"> |
52 | | -Permission changes take effect after synchronization. Each sync reads sharing again, including for unchanged content. If sharing or directory data cannot be completely verified, the connector fails closed through Sim's permission-sync handling. A verified Sim email must match the address Coda reports; aliases are not inferred. |
53 | | -</Callout> |
| 50 | +## Content and access |
| 51 | + |
| 52 | +Ordinary connections index visible canvas text and base-table rows. Enterprise connections index the Admin API's plaintext page exports; tables are included only as represented in those exports. Attachments, comments, images, and remote embeds are not extracted. |
| 53 | + |
| 54 | +| Permission | Ordinary connection | Enterprise connection | |
| 55 | +|---|---|---| |
| 56 | +| Owner or direct email share | Matching verified Sim email | Matching active organization user | |
| 57 | +| Group, workspace, or domain share | Not expanded | Resolved through the Admin API | |
| 58 | +| Anyone with the link | Does not grant Search access | Does not grant Search access | |
54 | 59 |
|
55 | | -## Troubleshooting |
| 60 | +Enterprise mode excludes deactivated and deleted users. Direct-share guests absent from the organization directory are excluded; guests explicitly listed in a group or workspace may receive that membership's access. Ordinary connections cannot check Coda organization deactivation, so manage departing users' Sim membership too. |
56 | 61 |
|
57 | | -| Problem | What to check | |
58 | | -| --- | --- | |
59 | | -| No documents found | Open the documents as the token owner or enter their IDs explicitly. | |
60 | | -| Enterprise setup fails | Confirm the account is an Enterprise organization administrator and the organization ID is correct. An ordinary workspace admin token is insufficient. | |
61 | | -| Content exists but a teammate cannot search it | Check the verified Sim email, Coda share, selected scope, and sync history. Ordinary mode cannot resolve group, domain, or workspace-only shares. | |
62 | | -| Cross-domain sharing is prohibited | Coda's organization policy blocks that share. Use a permitted test account or an existing workspace that permits the intended share. | |
63 | | -| New document temporarily unavailable | Coda may return `409` while initializing its API snapshot. The connector retries; retry the sync if initialization takes longer. | |
64 | | -| Oversized or malformed response | The sync preserves its failure state instead of treating a partial response as complete. Narrow the scope or contact your operator. | |
| 62 | +Sim refreshes permissions even when content is unchanged. Unverified permissions never become broad access, and Sim admin status does not override Coda sharing. For setup failures or missing results, check the token's access, Enterprise admin role if applicable, the teammate's verified email, and **Sync history**. |
65 | 63 |
|
66 | | -The connector uses Coda's [public API](https://coda.io/developers/apis/v1) and optional [Enterprise Admin API](https://coda.io/developers/apis/admin/v1). It needs no additional OAuth app configuration on self-hosted Sim. |
| 64 | +See Coda's [public API](https://coda.io/developers/apis/v1) and [Enterprise Admin API](https://coda.io/developers/apis/admin/v1). |
0 commit comments