# Coda Routing Reference

**App name:** `coda`
**Base URL proxied:** `coda.io/apis/v1`

## API Path Pattern

```
/coda/apis/v1/{resource}
```

## Common Endpoints

### Account

#### Get Current User
```bash
GET /coda/apis/v1/whoami
```

### Docs

#### List Docs
```bash
GET /coda/apis/v1/docs
```

#### Create Doc
```bash
POST /coda/apis/v1/docs
```

#### Get Doc
```bash
GET /coda/apis/v1/docs/{docId}
```

#### Delete Doc
```bash
DELETE /coda/apis/v1/docs/{docId}
```

### Pages

#### List Pages
```bash
GET /coda/apis/v1/docs/{docId}/pages
```

#### Create Page
```bash
POST /coda/apis/v1/docs/{docId}/pages
```

#### Get Page
```bash
GET /coda/apis/v1/docs/{docId}/pages/{pageIdOrName}
```

#### Update Page
```bash
PUT /coda/apis/v1/docs/{docId}/pages/{pageIdOrName}
```

#### Delete Page
```bash
DELETE /coda/apis/v1/docs/{docId}/pages/{pageIdOrName}
```

### Tables

#### List Tables
```bash
GET /coda/apis/v1/docs/{docId}/tables
```

#### Get Table
```bash
GET /coda/apis/v1/docs/{docId}/tables/{tableIdOrName}
```

### Columns

#### List Columns
```bash
GET /coda/apis/v1/docs/{docId}/tables/{tableIdOrName}/columns
```

#### Get Column
```bash
GET /coda/apis/v1/docs/{docId}/tables/{tableIdOrName}/columns/{columnIdOrName}
```

### Rows

#### List Rows
```bash
GET /coda/apis/v1/docs/{docId}/tables/{tableIdOrName}/rows
```

#### Get Row
```bash
GET /coda/apis/v1/docs/{docId}/tables/{tableIdOrName}/rows/{rowIdOrName}
```

#### Insert/Upsert Rows
```bash
POST /coda/apis/v1/docs/{docId}/tables/{tableIdOrName}/rows
```

#### Update Row
```bash
PUT /coda/apis/v1/docs/{docId}/tables/{tableIdOrName}/rows/{rowIdOrName}
```

#### Delete Row
```bash
DELETE /coda/apis/v1/docs/{docId}/tables/{tableIdOrName}/rows/{rowIdOrName}
```

### Formulas

#### List Formulas
```bash
GET /coda/apis/v1/docs/{docId}/formulas
```

#### Get Formula
```bash
GET /coda/apis/v1/docs/{docId}/formulas/{formulaIdOrName}
```

### Controls

#### List Controls
```bash
GET /coda/apis/v1/docs/{docId}/controls
```

#### Get Control
```bash
GET /coda/apis/v1/docs/{docId}/controls/{controlIdOrName}
```

### Permissions

#### Get Sharing Metadata
```bash
GET /coda/apis/v1/docs/{docId}/acl/metadata
```

#### List Permissions
```bash
GET /coda/apis/v1/docs/{docId}/acl/permissions
```

#### Add Permission
```bash
POST /coda/apis/v1/docs/{docId}/acl/permissions
```

#### Delete Permission
```bash
DELETE /coda/apis/v1/docs/{docId}/acl/permissions/{permissionId}
```

### Categories

#### List Categories
```bash
GET /coda/apis/v1/categories
```

### Utilities

#### Resolve Browser Link
```bash
GET /coda/apis/v1/resolveBrowserLink?url={encodedUrl}
```

#### Get Mutation Status
```bash
GET /coda/apis/v1/mutationStatus/{requestId}
```

### Analytics

#### List Doc Analytics
```bash
GET /coda/apis/v1/analytics/docs
```

#### List Pack Analytics
```bash
GET /coda/apis/v1/analytics/packs
```

#### Get Analytics Update Time
```bash
GET /coda/apis/v1/analytics/updated
```

## Query Parameters

Common parameters across endpoints:
- `limit` - Page size (max: 200)
- `pageToken` - Cursor for pagination
- `query` - Search filter
- `useColumnNames` - Use column names vs IDs (rows)
- `valueFormat` - simple, simpleWithArrays, rich (rows)

## Notes

- Mutations (create/update/delete) return HTTP 202 with requestId
- Use `/mutationStatus/{requestId}` to check completion
- Newly created docs need a moment before child resources are accessible
- Table/column names can be used instead of IDs
- Row operations require base tables, not views
- Page-level analytics require Enterprise plan

## Resources

- [Coda API Documentation](https://coda.io/developers/apis/v1)
