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

# Redshift Serverless

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>connection_method</code></td>
<td><code>string</code></td>
<td style="vertical-align: top;">Connection method<br/><br/>Accepted values: `data_api` <a href="#connection-method-data-api">↓</a>, `endpoint` <a href="#connection-method-endpoint">↓</a></td>
<td><code>true</code></td>
</tr>
<tr>
<td><code>database</code></td>
<td><code>string</code></td>
<td style="vertical-align: top;">Database</td>
<td><code>true</code></td>
</tr>
<tr>
<td><code>iam_role_arn</code></td>
<td><code>string</code></td>
<td style="vertical-align: top;">IAM role ARN</td>
<td><code>true</code></td>
</tr>
<tr>
<td><code>region</code></td>
<td><code>string</code></td>
<td style="vertical-align: top;">Region</td>
<td><code>false</code></td>
</tr>
<tr>
<td><code>s3_bucket_name</code></td>
<td><code>string</code></td>
<td style="vertical-align: top;">S3 bucket name (destination/unload support only)<br/><br/>(required if `use_unload` is "true")</td>
<td><code>false</code></td>
</tr>
<tr>
<td><code>s3_bucket_region</code></td>
<td><code>string</code></td>
<td style="vertical-align: top;">S3 bucket region (destination/unload support only)<br/><br/>(required if `use_unload` is "true")</td>
<td><code>false</code></td>
</tr>
<tr>
<td><code>use_bulk_sync_staging_schema</code></td>
<td><code>boolean</code></td>
<td style="vertical-align: top;">Use custom bulk sync staging schema <a href="#use-bulk-sync-staging-schema">↓</a></td>
<td><code>false</code></td>
</tr>
<tr>
<td><code>use_unload</code></td>
<td><code>boolean</code></td>
<td style="vertical-align: top;">Read data using unload</td>
<td><code>false</code></td>
</tr>
<tr>
<td><code>workgroup</code></td>
<td><code>string</code></td>
<td style="vertical-align: top;">Workgroup</td>
<td><code>true</code></td>
</tr>
</tbody>
</table>

<h4 id="use-bulk-sync-staging-schema">`use_bulk_sync_staging_schema`</h4>

<h5 id="use-bulk-sync-staging-schema-true">When `use_bulk_sync_staging_schema` is `true`</h5>

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


<h4 id="connection-method">`connection_method`</h4>

<h5 id="connection-method-endpoint">When `connection_method` is `endpoint`</h5>

<table>
<thead>
<tr>
<th>Name</th><th>Type</th><th>Description</th><th>Required</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>endpoint</code></td>
<td><code>string</code></td>
<td style="vertical-align: top;">Redshift Serverless endpoint</td>
<td><code>false</code></td>
</tr>
</tbody>
</table>

<h5 id="connection-method-data-api">When `connection_method` is `data_api`</h5>

<table>
<thead>
<tr>
<th>Name</th><th>Type</th><th>Description</th><th>Required</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>override_endpoint</code></td>
<td><code>boolean</code></td>
<td style="vertical-align: top;">Override Redshift Data API endpoint</td>
<td><code>false</code></td>
</tr>
</tbody>
</table>


<h4 id="override-endpoint">`override_endpoint`</h4>

<h5 id="override-endpoint-true">When `override_endpoint` is `true`</h5>

<table>
<thead>
<tr>
<th>Name</th><th>Type</th><th>Description</th><th>Required</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>data_api_endpoint</code></td>
<td><code>string</code></td>
<td style="vertical-align: top;">Redshift Data API endpoint<br/><br/>Example: https://redshift-data.us-west-2.amazonaws.com</td>
<td><code>false</code></td>
</tr>
</tbody>
</table>



#### Example

```json
{
  "name": "Redshift Serverless connection",
  "type": "redshiftserverless",
  "configuration": {
    "connection_method": "data_api",
    "database": "users",
    "iam_role_arn": "arn:aws:iam::012345678910:role/role",
    "override_endpoint": false,
    "region": "us-west-2",
    "s3_bucket_name": "my-bucket",
    "s3_bucket_region": "us-west-2",
    "use_bulk_sync_staging_schema": false,
    "use_unload": false,
    "workgroup": "default"
  }
}
```

### Read-only properties
<table>
<thead>
<tr>
<th>Name</th><th>Type</th><th>Description</th><th>Required</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>external_id</code></td>
<td><code>string</code></td>
<td style="vertical-align: top;">External ID</td>
<td><code>false</code></td>
</tr>
</tbody>
</table>


## 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>query</code></td>
<td><code>string</code></td>
<td style="vertical-align: top;"></td>
<td><code>false</code></td>
</tr>
<tr>
<td><code>schema</code></td>
<td><code>string</code></td>
<td style="vertical-align: top;">Schema</td>
<td><code>false</code></td>
</tr>
<tr>
<td><code>table</code></td>
<td><code>string</code></td>
<td style="vertical-align: top;">Table</td>
<td><code>false</code></td>
</tr>
<tr>
<td><code>view</code></td>
<td><code>string</code></td>
<td style="vertical-align: top;">View</td>
<td><code>false</code></td>
</tr>
</tbody>
</table>


#### Example
```json
{
  ...
  "configuration": {
    "query": "SELECT * FROM sampledata.users",
    "schema": "sampledata",
    "table": "users",
    "view": "active_users"
  }
}
```

### Target
Redshift Serverless 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>created_column</code></td>
<td><code>string</code></td>
<td style="vertical-align: top;">'Created at' timestamp column</td>
<td><code>false</code></td>
</tr>
<tr>
<td><code>preserve_table_on_resync</code></td>
<td><code>boolean</code></td>
<td style="vertical-align: top;">Preserve destination table when resyncing</td>
<td><code>false</code></td>
</tr>
<tr>
<td><code>updated_column</code></td>
<td><code>string</code></td>
<td style="vertical-align: top;">'Updated at' timestamp column</td>
<td><code>false</code></td>
</tr>
<tr>
<td><code>write_record_timestamps</code></td>
<td><code>boolean</code></td>
<td style="vertical-align: top;">Write row timestamp metadata</td>
<td><code>false</code></td>
</tr>
</tbody>
</table>


##### Example
```json
{
  ...
  "target": {
      "configuration": {
        "created_column": "",
        "preserve_table_on_resync": false,
        "updated_column": "",
        "write_record_timestamps": false
    }
  }
}
```





### Target creation

Redshift Serverless connections may be used to create a new target for a model sync. The
following parameters are required to create a new target:

<table>
<thead>
<tr>
  <th>NAME</th>
  <th>DESCRIPTION</th>
  <th>ENUM</th>
</tr></thead>
<tbody>
<tr>
  <td>name</td>
  <td>Table name</td>
  <td>false</td>
</tr>

</tbody>
</table>




## Bulk Sync
### Source
Redshift Serverless 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>mirror_schemas</code></td>
<td><code>boolean</code></td>
<td style="vertical-align: top;">Mirror schemas</td>
<td><code>false</code></td>
</tr>
<tr>
<td><code>schema</code></td>
<td><code>string</code></td>
<td style="vertical-align: top;">Output schema</td>
<td><code>false</code></td>
</tr>
</tbody>
</table>


#### Example
```json
{
  ...
  "destination_configuration": {
    "advanced": {
        "empty_strings_null": false,
        "hard_deletes": false,
        "initial_execution": "",
        "table_prefix": "",
        "truncate_existing": false
    },
    "mirror_schemas": false,
    "schema": "schema"
  }
}
```



## Type handling
### Destination types
|       POLYTOMIC TYPE        |  REDSHIFT SERVERLESS TYPE  |
|-----------------------------|----------------------------|
| `array<>`                   | `SUPER`                    |
| `bigint`                    | `BIGINT`                   |
| `boolean`                   | `BOOL`                     |
| `date`                      | `DATE`                     |
| `datetime`                  | `TIMESTAMP`                |
| `decimal(precision, scale)` | `NUMERIC(precision,scale)` |
| `double`                    | `FLOAT8`                   |
| `int`                       | `INTEGER`                  |
| `json`                      | `SUPER`                    |
| `jsonarray`                 | `SUPER`                    |
| `number`                    | `NUMERIC(38,18)`           |
| `object{}`                  | `SUPER`                    |
| `single`                    | `FLOAT4`                   |
| `smallint`                  | `SMALLINT`                 |
| `string`                    | `VARCHAR(MAX)`             |
| `time`                      | `VARCHAR(255)`             |


### Source types
|   REDSHIFT SERVERLESS TYPE    |       POLYTOMIC TYPE        |
|-------------------------------|-----------------------------|
| `4000`                        | `json`                      |
| `BIGINT`                      | `bigint`                    |
| `BOOL`                        | `boolean`                   |
| `BOOLEAN`                     | `boolean`                   |
| `BPCHAR`                      | `string`                    |
| `CHAR`                        | `string`                    |
| `CHARACTER`                   | `string`                    |
| `CHARACTER VARYING`           | `string`                    |
| `DATE`                        | `date`                      |
| `DECIMAL`                     | `number`                    |
| `DECIMAL(precision, scale)`   | `decimal(precision, scale)` |
| `DOUBLE PRECISION`            | `double`                    |
| `FLOAT`                       | `double`                    |
| `FLOAT4`                      | `single`                    |
| `FLOAT8`                      | `double`                    |
| `INT`                         | `int`                       |
| `INT2`                        | `smallint`                  |
| `INT4`                        | `int`                       |
| `INT8`                        | `bigint`                    |
| `INTEGER`                     | `int`                       |
| `NCHAR`                       | `string`                    |
| `NUMERIC`                     | `number`                    |
| `NUMERIC(precision, scale)`   | `decimal(precision, scale)` |
| `NVARCHAR`                    | `string`                    |
| `REAL`                        | `single`                    |
| `SMALLINT`                    | `smallint`                  |
| `STRING`                      | `string`                    |
| `TEXT`                        | `string`                    |
| `TIME`                        | `time`                      |
| `TIME WITH TIME ZONE`         | `time`                      |
| `TIME WITHOUT TIME ZONE`      | `time`                      |
| `TIMESTAMP`                   | `datetime`                  |
| `TIMESTAMP WITH TIME ZONE`    | `datetime_tz`               |
| `TIMESTAMP WITHOUT TIME ZONE` | `datetime`                  |
| `TIMESTAMPTZ`                 | `datetime_tz`               |
| `TIMETZ`                      | `time`                      |
| `VARCHAR`                     | `string`                    |