Skip to content

2385 - add coda component #2705

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 4 commits into from
Jul 2, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
348 changes: 348 additions & 0 deletions docs/content/docs/reference/components/coda.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,348 @@
---
title: "Coda"
description: "Coda is a collaborative all-in-one productivity tool that combines documents, spreadsheets, apps, and databases into a single platform."
---

Coda is a collaborative all-in-one productivity tool that combines documents, spreadsheets, apps, and databases into a single platform.


Categories: Productivity and Collaboration


Type: coda/v1

<hr />



## Connections

Version: 1


### Bearer Token

#### Properties

| Name | Label | Type | Description | Required |
|:---------------:|:--------------:|:------------:|:-------------------:|:--------:|
| token | Token | STRING | | true |





<hr />



## Actions


### List Docs
Name: listDocs

`Returns a list of docs accessible by the user, and which they have opened at least once.`

#### Properties

| Name | Label | Type | Description | Required |
|:---------------:|:--------------:|:------------:|:-------------------:|:--------:|
| isOwner | Is Owner | BOOLEAN <details> <summary> Options </summary> true, false </details> | `Show only docs owned by the user.` | false |
| isPublished | Is Published | BOOLEAN <details> <summary> Options </summary> true, false </details> | `Show only published docs.` | false |
| limit | Limit | INTEGER | `Maximum number of results to return in this query.` | false |

#### Example JSON Structure
```json
{
"label" : "List Docs",
"name" : "listDocs",
"parameters" : {
"isOwner" : false,
"isPublished" : false,
"limit" : 1
},
"type" : "coda/v1/listDocs"
}
```

#### Output



Type: OBJECT


#### Properties

| Name | Type | Description |
|:------------:|:------------:|:-------------------:|
| items | ARRAY <details> <summary> Items </summary> [&#123;STRING\(id), STRING\(type), STRING\(href), STRING\(browserLink), STRING\(name), STRING\(owner), STRING\(ownerName), STRING\(createdAt), STRING\(updatedAt), &#123;STRING\(name), STRING\(type), STRING\(browserLink)&#125;\(icon), &#123;NUMBER\(totalRowCount), NUMBER\(tableAndViewCount), NUMBER\(pageCount), BOOLEAN\(overApiSizeLimit)&#125;\(docSize), &#123;STRING\(id), STRING\(type), STRING\(href), STRING\(browserLink)&#125;\(sourceDoc), STRING\(workspaceId), STRING\(folderId), &#123;STRING\(id), STRING\(type), STRING\(browserLink), STRING\(name)&#125;\(workspace), &#123;STRING\(id), STRING\(type), STRING\(browserLink), STRING\(name)&#125;\(folder)&#125;] </details> | |
| href | STRING | API link to these results. |




#### Output Example
```json
{
"items" : [ {
"id" : "",
"type" : "",
"href" : "",
"browserLink" : "",
"name" : "",
"owner" : "",
"ownerName" : "",
"createdAt" : "",
"updatedAt" : "",
"icon" : {
"name" : "",
"type" : "",
"browserLink" : ""
},
"docSize" : {
"totalRowCount" : 0.0,
"tableAndViewCount" : 0.0,
"pageCount" : 0.0,
"overApiSizeLimit" : false
},
"sourceDoc" : {
"id" : "",
"type" : "",
"href" : "",
"browserLink" : ""
},
"workspaceId" : "",
"folderId" : "",
"workspace" : {
"id" : "",
"type" : "",
"browserLink" : "",
"name" : ""
},
"folder" : {
"id" : "",
"type" : "",
"browserLink" : "",
"name" : ""
}
} ],
"href" : ""
}
```


### Copy Doc
Name: copyDoc

`Copies an existing doc.`

#### Properties

| Name | Label | Type | Description | Required |
|:---------------:|:--------------:|:------------:|:-------------------:|:--------:|
| title | Title | STRING | `Title of the new doc.` | true |
| sourceDoc | Source Doc | STRING | `A doc ID from which to create a copy.` | true |

#### Example JSON Structure
```json
{
"label" : "Copy Doc",
"name" : "copyDoc",
"parameters" : {
"title" : "",
"sourceDoc" : ""
},
"type" : "coda/v1/copyDoc"
}
```

#### Output



Type: OBJECT


#### Properties

| Name | Type | Description |
|:------------:|:------------:|:-------------------:|
| id | STRING | ID of the Coda doc. |
| type | STRING | The type of this resource. |
| href | STRING | API link to the Coda doc. |
| browserLink | STRING | Browser-friendly link to the Coda doc. |
| name | STRING | Name of the doc. |
| owner | STRING | Email address of the doc owner. |
| ownerName | STRING | Name of the doc owner. |
| createdAt | STRING | Timestamp for when the doc was created. |
| updatedAt | STRING | Timestamp for when the doc was last modified. |
| icon | OBJECT <details> <summary> Properties </summary> &#123;STRING\(name), STRING\(type), STRING\(browserLink)&#125; </details> | Info about the icon. |
| sourceDoc | OBJECT <details> <summary> Properties </summary> &#123;STRING\(id), STRING\(type), STRING\(href), STRING\(browserLink)&#125; </details> | Reference to a Coda doc from which this doc was copied, if any. |
| workspaceId | STRING | ID of the Coda workspace containing this doc. |
| folderId | STRING | ID of the Coda folder containing this doc. |
| workspace | OBJECT <details> <summary> Properties </summary> &#123;STRING\(id), STRING\(type), STRING\(browserLink), STRING\(name)&#125; </details> | Reference to a Coda workspace. |
| folder | OBJECT <details> <summary> Properties </summary> &#123;STRING\(id), STRING\(type), STRING\(browserLink), STRING\(name)&#125; </details> | Reference to a Coda folder. |
| requestId | STRING | An arbitrary unique identifier for this request. |




#### Output Example
```json
{
"id" : "",
"type" : "",
"href" : "",
"browserLink" : "",
"name" : "",
"owner" : "",
"ownerName" : "",
"createdAt" : "",
"updatedAt" : "",
"icon" : {
"name" : "",
"type" : "",
"browserLink" : ""
},
"sourceDoc" : {
"id" : "",
"type" : "",
"href" : "",
"browserLink" : ""
},
"workspaceId" : "",
"folderId" : "",
"workspace" : {
"id" : "",
"type" : "",
"browserLink" : "",
"name" : ""
},
"folder" : {
"id" : "",
"type" : "",
"browserLink" : "",
"name" : ""
},
"requestId" : ""
}
```


### Update Row
Name: updateRow

`Updates the specified row in the table.`

#### Properties

| Name | Label | Type | Description | Required |
|:---------------:|:--------------:|:------------:|:-------------------:|:--------:|
| docId | Doc ID | STRING | `ID of the doc.` | true |
| tableId | Table ID | STRING <details> <summary> Depends On </summary> docId </details> | `ID or name of the table.` | true |
| rowId | Row ID | STRING <details> <summary> Depends On </summary> docId, tableId </details> | `ID or name of the row.` | true |
| row | Row | OBJECT <details> <summary> Properties </summary> &#123;[&#123;STRING\(column), STRING\(value)&#125;]\(cells)&#125; </details> | `An edit made to a particular row.` | true |

#### Example JSON Structure
```json
{
"label" : "Update Row",
"name" : "updateRow",
"parameters" : {
"docId" : "",
"tableId" : "",
"rowId" : "",
"row" : {
"cells" : [ {
"column" : "",
"value" : ""
} ]
}
},
"type" : "coda/v1/updateRow"
}
```

#### Output



Type: OBJECT


#### Properties

| Name | Type | Description |
|:------------:|:------------:|:-------------------:|
| requestId | STRING | An arbitrary unique identifier for this request. |
| id | STRING | ID of the updated row. |




#### Output Example
```json
{
"requestId" : "",
"id" : ""
}
```


### Insert Row
Name: insertRow

`Inserts row into a table.`

#### Properties

| Name | Label | Type | Description | Required |
|:---------------:|:--------------:|:------------:|:-------------------:|:--------:|
| docId | Doc ID | STRING | `ID of the doc.` | true |
| tableId | Table ID | STRING <details> <summary> Depends On </summary> docId </details> | `ID of the table.` | true |
| rowValues | | DYNAMIC_PROPERTIES <details> <summary> Depends On </summary> docId, tableId </details> | | false |

#### Example JSON Structure
```json
{
"label" : "Insert Row",
"name" : "insertRow",
"parameters" : {
"docId" : "",
"tableId" : "",
"rowValues" : { }
},
"type" : "coda/v1/insertRow"
}
```

#### Output



Type: OBJECT


#### Properties

| Name | Type | Description |
|:------------:|:------------:|:-------------------:|
| requestId | STRING | An arbitrary unique identifier for this request. |
| addedRowIds | ARRAY <details> <summary> Items </summary> [STRING] </details> | Row IDs for rows that will be added. |




#### Output Example
```json
{
"requestId" : "",
"addedRowIds" : [ "" ]
}
```




1 change: 1 addition & 0 deletions server/apps/server-app/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -173,6 +173,7 @@ dependencies {
implementation(project(":server:libs:modules:components:capsule-crm"))
implementation(project(":server:libs:modules:components:chat"))
implementation(project(":server:libs:modules:components:clickup"))
implementation(project(":server:libs:modules:components:coda"))
implementation(project(":server:libs:modules:components:contiguity"))
implementation(project(":server:libs:modules:components:copper"))
implementation(project(":server:libs:modules:components:crypto-helper"))
Expand Down
1 change: 1 addition & 0 deletions server/ee/apps/worker-app/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -116,6 +116,7 @@ dependencies {
implementation(project(":server:libs:modules:components:calendly"))
implementation(project(":server:libs:modules:components:capsule-crm"))
implementation(project(":server:libs:modules:components:clickup"))
implementation(project(":server:libs:modules:components:coda"))
implementation(project(":server:libs:modules:components:contiguity"))
implementation(project(":server:libs:modules:components:copper"))
implementation(project(":server:libs:modules:components:crypto-helper"))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,11 +26,12 @@
import jakarta.servlet.ServletResponse;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpSession;
import org.springframework.boot.web.servlet.FilterRegistration;

import java.io.IOException;
import org.springframework.boot.web.servlet.FilterRegistration;

@FilterRegistration(name = "multi-tenant-internal-filter", urlPatterns = {"/api/*", "/graphql"})
@FilterRegistration(name = "multi-tenant-internal-filter", urlPatterns = {
"/api/*", "/graphql"
})
public class MultiTenantInternalFilter implements Filter {

@Override
Expand All @@ -49,11 +50,9 @@ public void doFilter(ServletRequest servletRequest, ServletResponse servletRespo
(authorizationHeader == null || !authorizationHeader.startsWith("Bearer "))) {

shouldRunAsTenantId = true;
}
else if (requestURI.equals("/graphql")) {
} else if (requestURI.equals("/graphql")) {
shouldRunAsTenantId = true;
}
else if (requestURI.contains("/api/account")) {
} else if (requestURI.contains("/api/account")) {
shouldRunAsTenantId = true;
}

Expand Down
Loading