Redshift API Reference Guide

The redshift endpoint allows you to connect and manage Redshift data sources in Immuta.

Additional fields may be included in some responses you receive; however, these attributes are for internal purposes and are therefore undocumented.

Redshift workflow

Create a data source

**Duplicate data sources**: In order to avoid two data sources referencing the same table, users can not create duplicate data sources. If you attempt to create a duplicate data source using the API, you will encounter a warning stating "duplicate tables are specified in the payload."

POST /redshift/handler

Save the provided connection information as a data source.

Payload parameters

Response parameters

Request example

This request creates two Redshift data sources, which are specified in example-payload.json.

curl \
    --request POST \
    --header "Content-Type: application/json" \
    --header "Authorization: Bearer dea464c07bd07300095caa8" \
    --data @example-payload.json \
    https://demo.immuta.com/redshift/handler

Payload example

{
  "handler": [{
    "metadata": {
      "ssl": true,
      "userFiles": [],
      "port": 5439,
      "hostname": "redshift.database.example.io",
      "database": "test",
      "username": "user",
      "password": "yourpassword",
      "schemaProjectName": "Army",
      "staleDataTolerance": 86400,
      "bodataSchemaName": "army",
      "bodataTableName": "army_records",
      "dataSourceName": "Army Army Records",
      "table": "army_records",
      "schema": "army",
      "nativeViewName": "army_records_immuta",
      "nativeSchemaName": "army_immuta",
      "nativeWorkspaceName": "immuta_test"
    }
  }, {
    "metadata": {
      "ssl": true,
      "userFiles": [],
      "port": 5439,
      "hostname": "redshift.database.example.io",
      "database": "test",
      "username": "user",
      "password": "your-password",
      "schemaProjectName": "Army",
      "staleDataTolerance": 86400,
      "bodataSchemaName": "army",
      "bodataTableName": "data",
      "dataSourceName": "Army Data",
      "table": "data",
      "schema": "army",
      "nativeViewName": "data_immuta",
      "nativeSchemaName": "army_immuta",
      "nativeWorkspaceName": "immuta_test"
    }
  }],
  "dataSource": {
    "blobHandler": {
      "scheme": "https",
      "url": ""
    },
    "blobHandlerType": "Redshift",
    "recordFormat": "",
    "type": "queryable",
    "schemaEvolutionId": null,
    "columnEvolutionEnabled": true
  },
  "schemaEvolution": {
    "ownerProfileId": 2,
    "config": {
      "nameTemplate": {
        "nameFormat": "<Schema> <Tablename>",
        "tableFormat": "<tablename>",
        "sqlSchemaNameFormat": "<schema>",
        "schemaProjectNameFormat": "<Schema>"
      }
    },
    "schemas": []
  }
}

Response example

{
  "connectionString":"user@redshift.database.example.io:5439/test"
}

Get information about a data source

GET /redshift/handler/{handlerId}

Get the handler metadata associated with the provided handler ID.

Query parameters

Response parameters

Request example

This request returns metadata for the handler with the ID 41.

curl \
    --request GET \
    --header "Content-Type: application/json" \
    --header "Authorization: Bearer dea464c07bd07300095caa8" \
    https://demo.immuta.com/redshift/handler/41

Response Example

{
  "dataSourceId": 41,
  "metadata": {
    "ssl": true,
    "port": 5439,
    "query": null,
    "table": "data",
    "schema": "army",
    "database": "test",
    "hostname": "redshift.database.example.io",
    "username": "user",
    "eventTime": "fileinfo.creationtime",
    "userFiles": [],
    "dataSourceName": "Army Data",
    "bodataTableName": "data",
    "bodataSchemaName": "army",
    "columnsNormalized": false,
    "schemaProjectName": "Army",
    "staleDataTolerance": 86400
  },
  "type": "odbcHandler",
  "connectionString": "user@redshift.database.example.io:5439/test",
  "id": 41,
  "createdAt": "2021-10-01T18:15:09.139Z",
  "updatedAt": "2021-10-01T18:15:09.274Z",
  "dbms": {
    "name": "redshift"
  }
}

Manage data sources

Update a specific data source

PUT /redshift/handler/{handlerId}

Update the data source metadata associated with the provided handler ID. This endpoint does not perform partial updates, but will allow the dictionary to be omitted. In this case, it uses the current dictionary.

Query parameters

Payload parameters

Response parameters

Request example

This request updates the metadata for the data source with the handler ID 41.

curl \
    --request PUT \
    --header "Content-Type: application/json" \
    --header "Authorization: Bearer dea464c07bd07300095caa8" \
    --data @example-payload.json \
    https://demo.immuta.com/redshift/handler/41

Payload example

The payload below removes the paragraph_count column from the data source.

{
  "handler": {
    "policyHandler": null,
    "dataSourceId": 41,
    "metadata": {
      "ssl": true,
      "port": 5439,
      "table": "data",
      "schema": "army",
      "database": "test",
      "hostname": "redshift.database.example.io",
      "username": "user",
      "eventTime": "fileinfo.creationtime",
      "userFiles": [],
      "dataSourceName": "Army Data",
      "bodataTableName": "data",
      "bodataSchemaName": "army",
      "columnsNormalized": false,
      "schemaProjectName": "Army",
      "staleDataTolerance": 86400,
      "columns": [{
        "name": "text",
        "dataType": "text",
        "remoteType": "string",
        "nullable": true
      }, {
        "name": "date",
        "dataType": "text",
        "remoteType": "string",
        "nullable": true
      }, {
        "name": "hashed_id",
        "dataType": "text",
        "remoteType": "string",
        "nullable": true
      }, {
        "name": "filename",
        "dataType": "text",
        "remoteType": "string",
        "nullable": true
      }, {
        "name": "storage_location",
        "dataType": "text",
        "remoteType": "string",
        "nullable": true
      }, {
        "name": "size",
        "dataType": "integer",
        "remoteType": "integer",
        "nullable": true
      }, {
        "name": "owner",
        "dataType": "text",
        "remoteType": "string",
        "nullable": true
      }, {
        "name": "dc:publisher",
        "dataType": "text",
        "remoteType": "string",
        "nullable": true
      }, {
        "name": "meta:page-count",
        "dataType": "text",
        "remoteType": "string",
        "nullable": true
      }, {
        "name": "publisher",
        "dataType": "text",
        "remoteType": "string",
        "nullable": true
      }, {
        "name": "author",
        "dataType": "text",
        "remoteType": "string",
        "nullable": true
      }, {
        "name": "extended-properties:template",
        "dataType": "text",
        "remoteType": "string",
        "nullable": true
      }, {
        "name": "application-version",
        "dataType": "text",
        "remoteType": "string",
        "nullable": true
      }, {
        "name": "revision-number",
        "dataType": "text",
        "remoteType": "string",
        "nullable": true
      }, {
        "name": "page-count",
        "dataType": "text",
        "remoteType": "string",
        "nullable": true
      }, {
        "name": "last-author",
        "dataType": "text",
        "remoteType": "string",
        "nullable": true
      }, {
        "name": "character-count-with-spaces",
        "dataType": "text",
        "remoteType": "string",
        "nullable": true
      }, {
        "name": "xmptpg:npages",
        "dataType": "text",
        "remoteType": "string",
        "nullable": true
      }, {
        "name": "creation-date",
        "dataType": "text",
        "remoteType": "string",
        "nullable": true
      }, {
        "name": "meta:last-author",
        "dataType": "text",
        "remoteType": "string",
        "nullable": true
      }, {
        "name": "extended-properties:application",
        "dataType": "text",
        "remoteType": "string",
        "nullable": true
      }, {
        "name": "meta:creation-date",
        "dataType": "text",
        "remoteType": "string",
        "nullable": true
      }, {
        "name": "meta:author",
        "dataType": "text",
        "remoteType": "string",
        "nullable": true
      }, {
        "name": "custom:contenttypeid",
        "dataType": "text",
        "remoteType": "string",
        "nullable": true
      }, {
        "name": "creator",
        "dataType": "text",
        "remoteType": "string",
        "nullable": true
      }, {
        "name": "x-parsed-by",
        "dataType": "text",
        "remoteType": "string",
        "nullable": true
      }, {
        "name": "content-type",
        "dataType": "text",
        "remoteType": "string",
        "nullable": true
      }, {
        "name": "modified",
        "dataType": "text",
        "remoteType": "string",
        "nullable": true
      }, {
        "name": "extended-properties:totaltime",
        "dataType": "text",
        "remoteType": "string",
        "nullable": true
      }, {
        "name": "application-name",
        "dataType": "text",
        "remoteType": "string",
        "nullable": true
      }, {
        "name": "meta:character-count-with-spaces",
        "dataType": "text",
        "remoteType": "string",
        "nullable": true
      }, {
        "name": "meta:save-date",
        "dataType": "text",
        "remoteType": "string",
        "nullable": true
      }, {
        "name": "line-count",
        "dataType": "text",
        "remoteType": "string",
        "nullable": true
      }, {
        "name": "template",
        "dataType": "text",
        "remoteType": "string",
        "nullable": true
      }, {
        "name": "meta:character-count",
        "dataType": "text",
        "remoteType": "string",
        "nullable": true
      }, {
        "name": "last-save-date",
        "dataType": "text",
        "remoteType": "string",
        "nullable": true
      }, {
        "name": "last-modified",
        "dataType": "text",
        "remoteType": "string",
        "nullable": true
      }, {
        "name": "dcterms:modified",
        "dataType": "text",
        "remoteType": "string",
        "nullable": true
      }, {
        "name": "meta:line-count",
        "dataType": "text",
        "remoteType": "string",
        "nullable": true
      }, {
        "name": "dcterms:created",
        "dataType": "text",
        "remoteType": "string",
        "nullable": true
      }, {
        "name": "word-count",
        "dataType": "text",
        "remoteType": "string",
        "nullable": true
      }, {
        "name": "extended-properties:company",
        "dataType": "text",
        "remoteType": "string",
        "nullable": true
      }, {
        "name": "dc:creator",
        "dataType": "text",
        "remoteType": "string",
        "nullable": true
      }, {
        "name": "meta:word-count",
        "dataType": "text",
        "remoteType": "string",
        "nullable": true
      }, {
        "name": "meta:paragraph-count",
        "dataType": "text",
        "remoteType": "string",
        "nullable": true
      }, {
        "name": "extended-properties:appversion",
        "dataType": "text",
        "remoteType": "string",
        "nullable": true
      }, {
        "name": "total-time",
        "dataType": "text",
        "remoteType": "string",
        "nullable": true
      }, {
        "name": "cp:revision",
        "dataType": "text",
        "remoteType": "string",
        "nullable": true
      }, {
        "name": "fileinfo.group",
        "dataType": "text",
        "remoteType": "string",
        "nullable": true
      }, {
        "name": "fileinfo.isdirectory",
        "dataType": "boolean",
        "remoteType": "boolean",
        "nullable": true
      }, {
        "name": "fileinfo.isother",
        "dataType": "boolean",
        "remoteType": "boolean",
        "nullable": true
      }, {
        "name": "fileinfo.permissions",
        "dataType": "text",
        "remoteType": "string",
        "nullable": true
      }, {
        "name": "fileinfo.issymboliclink",
        "dataType": "boolean",
        "remoteType": "boolean",
        "nullable": true
      }, {
        "name": "fileinfo.size",
        "dataType": "integer",
        "remoteType": "integer",
        "nullable": true
      }, {
        "name": "fileinfo.file",
        "dataType": "text",
        "remoteType": "string",
        "nullable": true
      }, {
        "name": "fileinfo.filename",
        "dataType": "text",
        "remoteType": "string",
        "nullable": true
      }, {
        "name": "fileinfo.filekey",
        "dataType": "text",
        "remoteType": "string",
        "nullable": true
      }, {
        "name": "fileinfo.isregularfile",
        "dataType": "boolean",
        "remoteType": "boolean",
        "nullable": true
      }, {
        "name": "fileinfo.creationtime",
        "dataType": "timestamp",
        "remoteType": "timestamp",
        "nullable": true
      }, {
        "name": "fileinfo.lastmodifiedtime",
        "dataType": "timestamp",
        "remoteType": "timestamp",
        "nullable": true
      }, {
        "name": "fileinfo.lastaccesstime",
        "dataType": "timestamp",
        "remoteType": "timestamp",
        "nullable": true
      }, {
        "name": "fileinfo.owner",
        "dataType": "text",
        "remoteType": "string",
        "nullable": true
      }, {
        "name": "topsecretboolean",
        "dataType": "double precision",
        "remoteType": "double precision",
        "nullable": true
      }, {
        "name": "secretboolean",
        "dataType": "text",
        "remoteType": "string",
        "nullable": true
      }, {
        "name": "confidentialsecretboolean",
        "dataType": "double precision",
        "remoteType": "double precision",
        "nullable": true
      }, {
        "name": "classificationlevel",
        "dataType": "text",
        "remoteType": "string",
        "nullable": true
      }, {
        "name": "releasability",
        "dataType": "text",
        "remoteType": "string",
        "nullable": true
      }, {
        "name": "compartment",
        "dataType": "text",
        "remoteType": "string",
        "nullable": true
      }],
      "password": "yourpassword"
    },
    "type": "odbcHandler",
    "connectionString": "user@redshift.database.example.io:5439/test",
    "id": 41,
    "createdAt": "2021-10-01T18:15:09.139Z",
    "updatedAt": "2021-10-01T18:15:09.274Z",
    "dbms": {
      "name": "redshift"
    }
  }
}

Response example

{
  "id": 41,
  "ca": ["-----BEGIN CERTIFICATE-----\ncertificatedata\n-----END CERTIFICATE-----"],
  "metadata": {
    "columns": [{
      "name": "text",
      "dataType": "text",
      "remoteType": "string",
      "nullable": true
    }, {
      "name": "date",
      "dataType": "text",
      "remoteType": "string",
      "nullable": true
    }, {
      "name": "hashed_id",
      "dataType": "text",
      "remoteType": "string",
      "nullable": true
    }, {
      "name": "filename",
      "dataType": "text",
      "remoteType": "string",
      "nullable": true
    }, {
      "name": "storage_location",
      "dataType": "text",
      "remoteType": "string",
      "nullable": true
    }, {
      "name": "size",
      "dataType": "integer",
      "remoteType": "integer",
      "nullable": true
    }, {
      "name": "owner",
      "dataType": "text",
      "remoteType": "string",
      "nullable": true
    }, {
      "name": "dc:publisher",
      "dataType": "text",
      "remoteType": "string",
      "nullable": true
    }, {
      "name": "meta:page-count",
      "dataType": "text",
      "remoteType": "string",
      "nullable": true
    }, {
      "name": "publisher",
      "dataType": "text",
      "remoteType": "string",
      "nullable": true
    }, {
      "name": "author",
      "dataType": "text",
      "remoteType": "string",
      "nullable": true
    }, {
      "name": "extended-properties:template",
      "dataType": "text",
      "remoteType": "string",
      "nullable": true
    }, {
      "name": "application-version",
      "dataType": "text",
      "remoteType": "string",
      "nullable": true
    }, {
      "name": "revision-number"