> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://apidocs.polytomic.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://apidocs.polytomic.com/_mcp/server.

# Dropbox

Supports:
* ✅ Models
* ✅ Model sync destination
* ✅ Bulk sync source
* ✅ Bulk sync destination




## Connection

### Configuration
<table>
<thead>
<tr>
<th>Name</th><th>Type</th><th>Description</th><th>Required</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>app_key</code></td>
<td><code>string</code></td>
<td style="vertical-align: top;"></td>
<td><code>false</code></td>
</tr>
<tr>
<td><code>app_secret</code></td>
<td><code>string</code></td>
<td style="vertical-align: top;"></td>
<td><code>false</code></td>
</tr>
<tr>
<td><code>csv_has_headers</code></td>
<td><code>boolean</code></td>
<td style="vertical-align: top;">CSV files have headers<br/><br/>Whether CSV files have a header row with field names.</td>
<td><code>false</code></td>
</tr>
<tr>
<td><code>is_single_table</code></td>
<td><code>boolean</code></td>
<td style="vertical-align: top;">Files are time-based snapshots<br/><br/>Treat the files as a single table. <a href="#is-single-table">↓</a></td>
<td><code>false</code></td>
</tr>
<tr>
<td><code>oauth_refresh_token</code></td>
<td><code>string</code></td>
<td style="vertical-align: top;"></td>
<td><code>false</code></td>
</tr>
</tbody>
</table>

<h4 id="is-single-table">`is_single_table`</h4>

<h5 id="is-single-table-true">When `is_single_table` is `true`</h5>

<table>
<thead>
<tr>
<th>Name</th><th>Type</th><th>Description</th><th>Required</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>is_directory_snapshot</code></td>
<td><code>boolean</code></td>
<td style="vertical-align: top;">Multi-directory multi-table</td>
<td><code>false</code></td>
</tr>
</tbody>
</table>

<h5 id="is-single-table-true-is-directory-snapshot-false">When `is_single_table` is `true` AND `is_directory_snapshot` is `false`</h5>

<table>
<thead>
<tr>
<th>Name</th><th>Type</th><th>Description</th><th>Required</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>single_table_file_format</code></td>
<td><code>string</code></td>
<td style="vertical-align: top;">File format<br/><br/>Accepted values: `csv`, `json`, `parquet`</td>
<td><code>false</code></td>
</tr>
<tr>
<td><code>single_table_name</code></td>
<td><code>string</code></td>
<td style="vertical-align: top;">Collection name</td>
<td><code>false</code></td>
</tr>
</tbody>
</table>

<h5 id="is-single-table-true-is-directory-snapshot-true">When `is_single_table` is `true` AND `is_directory_snapshot` is `true`</h5>

<table>
<thead>
<tr>
<th>Name</th><th>Type</th><th>Description</th><th>Required</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>single_table_file_formats</code></td>
<td><code>array</code></td>
<td style="vertical-align: top;">File formats that may be present across different tables</td>
<td><code>false</code></td>
</tr>
</tbody>
</table>


<h4 id="is-directory-snapshot">`is_directory_snapshot`</h4>

<h5 id="is-directory-snapshot-true">When `is_directory_snapshot` is `true`</h5>

<table>
<thead>
<tr>
<th>Name</th><th>Type</th><th>Description</th><th>Required</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>directory_glob_pattern</code></td>
<td><code>string</code></td>
<td style="vertical-align: top;">Tables glob path</td>
<td><code>true</code></td>
</tr>
</tbody>
</table>


<h4 id="oauth-token-expiry">`oauth_token_expiry`</h4>

<h5 id="oauth-token-expiry-<nil>">When `oauth_token_expiry` has a value</h5>

<table>
<thead>
<tr>
<th>Name</th><th>Type</th><th>Description</th><th>Required</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>bucket</code></td>
<td><code>string</code></td>
<td style="vertical-align: top;">Folder</td>
<td><code>true</code></td>
</tr>
</tbody>
</table>


<h4 id="single-table-file-format">`single_table_file_format`</h4>

<h5 id="single-table-file-format-csv">When `single_table_file_format` is `csv` OR `single_table_file_formats` contains `csv`</h5>

<table>
<thead>
<tr>
<th>Name</th><th>Type</th><th>Description</th><th>Required</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>skip_lines</code></td>
<td><code>integer</code></td>
<td style="vertical-align: top;">Skip first lines<br/><br/>Skip first N lines of each CSV file.</td>
<td><code>false</code></td>
</tr>
</tbody>
</table>



#### Example

```json
{
  "name": "Dropbox connection",
  "type": "dropbox",
  "configuration": {
    "app_key": "a45gadsfdsaf47byor2ugfbhsgllpf12gf56gfds",
    "app_secret": "ay8d5hdepz62px8lqeoakuea2ccl4rxm13i6tbyorxhu1i20kc8ruvksmzxq",
    "csv_has_headers": false,
    "is_single_table": false,
    "oauth_refresh_token": "dasfdasz62px8lqeoakuea2ccl4rxm13i6tbyorxhu1i20kc8ruvksmzxq"
  }
}
```

## Model Sync
### Source
#### Configuration
<table>
<thead>
<tr>
<th>Name</th><th>Type</th><th>Description</th><th>Required</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>file_format</code></td>
<td><code>string</code></td>
<td style="vertical-align: top;">File format<br/><br/>Accepted values: `csv`, `json`, `parquet`</td>
<td><code>false</code></td>
</tr>
<tr>
<td><code>key</code></td>
<td><code>string</code></td>
<td style="vertical-align: top;">Object key<br/><br/>The key of the object in the bucket to read from.</td>
<td><code>false</code></td>
</tr>
<tr>
<td><code>model_from</code></td>
<td><code>string</code></td>
<td style="vertical-align: top;">Files<br/><br/>The model is generated from a single file or a multi-file archive. Accepted values: `single_file`, `multi_file_archive`</td>
<td><code>true</code></td>
</tr>
<tr>
<td><code>skip_lines</code></td>
<td><code>integer</code></td>
<td style="vertical-align: top;">Skip first lines<br/><br/>Skip first N lines of each CSV file.</td>
<td><code>false</code></td>
</tr>
<tr>
<td><code>subfolder</code></td>
<td><code>string</code></td>
<td style="vertical-align: top;">Subfolder to read files from from (optional)</td>
<td><code>false</code></td>
</tr>
</tbody>
</table>


#### Example
```json
{
  ...
  "configuration": {
    "file_format": "",
    "key": "",
    "model_from": "",
    "skip_lines": 0,
    "subfolder": ""
  }
}
```

### Target
Dropbox connections may be used as the destination in a model sync.
#### All targets

##### Configuration
<table>
<thead>
<tr>
<th>Name</th><th>Type</th><th>Description</th><th>Required</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>format</code></td>
<td><code>string</code></td>
<td style="vertical-align: top;">Output format<br/><br/>Output file encoding. Accepted values: `csv`, `json-doc`, `json`, `parquet`</td>
<td><code>false</code></td>
</tr>
</tbody>
</table>


##### Example
```json
{
  ...
  "target": {
      "configuration": {
        "format": "csv"
    }
  }
}
```








## Bulk Sync
### Source
Dropbox connections may be used as a bulk sync source. No additional configuration options are required.

### Destination
#### Configuration
<table>
<thead>
<tr>
<th>Name</th><th>Type</th><th>Description</th><th>Required</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>advanced</code></td>
<td><code>object</code></td>
<td style="vertical-align: top;"></td>
<td><code>false</code></td>
</tr>
<tr>
<td><code>format</code></td>
<td><code>string</code></td>
<td style="vertical-align: top;">Output file encoding</td>
<td><code>false</code></td>
</tr>
<tr>
<td><code>subfolder</code></td>
<td><code>string</code></td>
<td style="vertical-align: top;">Subfolder to write to (optional)</td>
<td><code>false</code></td>
</tr>
</tbody>
</table>


#### Example
```json
{
  ...
  "destination_configuration": {
    "advanced": {
        "write_incremental": false
    },
    "format": "csv",
    "subfolder": "reports"
  }
}
```