> 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.

# Tigris

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>aws_access_key_id</code></td>
<td><code>string</code></td>
<td style="vertical-align: top;">Access key ID</td>
<td><code>required</code></td>
</tr>
<tr>
<td><code>aws_secret_access_key</code></td>
<td><code>string</code></td>
<td style="vertical-align: top;">Secret access key</td>
<td><code>required</code></td>
</tr>
<tr>
<td><code>bucket_name</code></td>
<td><code>string</code></td>
<td style="vertical-align: top;">Bucket name (folder optional); ex: polytomic/dataset</td>
<td><code>required</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>optional</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-true">↓</a></td>
<td><code>optional</code></td>
</tr>
</tbody>
</table>

<a id="is-single-table-true"></a>

#### `is_single_table` = `true`

<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 <a href="#is-directory-snapshot-true">↓</a></td>
<td><code>optional</code></td>
</tr>
</tbody>
</table>

```json
{
  "name": "Tigris connection",
  "type": "tigris",
  "configuration": {
    "aws_access_key_id": "tid_...",
    "aws_secret_access_key": "tsec_...",
    "bucket_name": "polytomic/dataset",
    "csv_has_headers": true,
    "is_directory_snapshot": false,
    "is_single_table": true,
    "single_table_file_format": "csv",
    "single_table_name": "collection",
    "skip_lines": 0
  }
}
```

<a id="is-directory-snapshot-true"></a>

##### `is_directory_snapshot`

When `is_directory_snapshot` is `true`:

<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>required</code></td>
</tr>
</tbody>
</table>

```json
{
  "name": "Tigris connection",
  "type": "tigris",
  "configuration": {
    "aws_access_key_id": "tid_...",
    "aws_secret_access_key": "tsec_...",
    "bucket_name": "polytomic/dataset",
    "csv_has_headers": true,
    "directory_glob_pattern": "",
    "is_directory_snapshot": true,
    "is_single_table": true,
    "single_table_file_formats": []
  }
}
```

<a id="is-single-table-true-is-directory-snapshot-false"></a>

#### `is_single_table` = `true` and `is_directory_snapshot` = `false`

<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` <a href="#single-table-file-format-csv">↓</a>, `json`, `parquet`</td>
<td><code>optional</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>optional</code></td>
</tr>
</tbody>
</table>

<a id="single-table-file-format-csv"></a>

##### `single_table_file_format`

When `single_table_file_format` is `csv` or `single_table_file_formats` contains `csv`:

<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>optional</code></td>
</tr>
</tbody>
</table>

<a id="is-single-table-true-is-directory-snapshot-true"></a>

#### `is_single_table` = `true` and `is_directory_snapshot` = `true`

<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>optional</code></td>
</tr>
</tbody>
</table>


#### Example

```json
{
  "name": "Tigris connection",
  "type": "tigris",
  "configuration": {
    "aws_access_key_id": "tid_...",
    "aws_secret_access_key": "tsec_...",
    "bucket_name": "polytomic/dataset",
    "csv_has_headers": true,
    "is_single_table": false
  }
}
```


## 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>optional</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>optional</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>required</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>optional</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>optional</code></td>
</tr>
</tbody>
</table>


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


### Target
Tigris 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>optional</code></td>
</tr>
</tbody>
</table>


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









## Bulk Sync
### Source
Tigris 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>optional</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>optional</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>optional</code></td>
</tr>
</tbody>
</table>


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