Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
This section includes guides for interacting with Immuta through the Immuta CLI and API.
The Immuta CLI allows users to interact with their Immuta tenant using the command line to manage data sources, projects, policies, and purposes. This feature allows you to have all of your Immuta tenant information in a Git repository and use the CLI to sync your Immuta tenant with the files in your Git repository.
This section includes reference and how-to guides for using the integrations API, Immuta V1 API, and Immuta V2 API.
Any endpoints or attributes that are not documented are for internal purposes and should not be used.
The integrations API allows you to integrate your remote data platform with Immuta so that Immuta can manage and enforce access controls on your data.
Version 2 of the Immuta API allows data engineers to manage their data sources, projects, and policies as code, providing a way to track, approve, and easily update data sources and their associated policies.
The benefits of the V2 API are outlined below:
Reduces complexity: The data source API has been simplified to only require the connection information in most instances and one endpoint for all database technologies.
Maintains less state: Whether updating or creating, the same endpoint is used, and the same data is passed. No IDs are required, so no additional state is required.
Requires fewer steps: Only an API key is required; no additional authentication step is required before using the API.
Version 1 of the Immuta API is still supported and can be accessed through the Immuta CLI. However, users are encouraged to use Version 2 of Immuta's API because of all the benefits outlined above.
The integrations API is a REST API that allows you to integrate your remote data platform with Immuta so that Immuta can manage and enforce access controls on your data.
This task-based guide includes end-to-end instructions for implementing your integration - from authenticating with the API to mapping your users into Immuta so that they can access policy-enforced data. A basic request and payload example is provided for configuring each integration.
These guides provide step-by-step instructions for creating and managing your integration and include configuration setting examples that vary in complexity.
These guides define request and body parameters, response schema, and common error messages.
The Immuta CLI allows users to interact with their Immuta tenant using the command line to manage data sources, projects, policies, and purposes. This feature allows you to have all of your Immuta tenant information in a Git repository and use the CLI to sync your Immuta tenant with the files in your Git repository. To install the Immuta CLI, follow this installation guide.
You can navigate this section of documentation in two different ways: by workflow or by command.
The navigation in the left pane is organized by major workflows you would use in Immuta. Each workflow contains relevant commands. Follow this chronological outline to find commands relevant to your workflow.
.
.
.
.
Below is a list of major commands available in the Immuta CLI. Click a command to navigate to its corresponding page that details subcommands, options, and arguments.
: Interact with your Immuta tenant to create data sources, projects, policies, and purposes.
: Make an authenticated Immuta API request. This command will let you hit any endpoint in the Immuta API, including . For example, immuta api /tag will hit the v1 endpoint to list tags. This allows you to use the immuta api command instead of something like Postman or cURL to interact with the V1 API.
: Clone all data sources, projects, purposes, and policies information into files.
immuta completion: Generate shell completion scripts.
immuta configure: Specify an Immuta tenant url and API key to be saved to the Immuta configuration file.
immuta datasource: Manage data sources.
immuta policy: Manage Global Policies.
immuta project: Manage projects.
immuta purpose: Manage purposes.
immuta audit exportConfig: Manage the audit export.
immuta sddThis command allows you to customize and run SDD in your instance of Immuta. The table below illustrates subcommands and arguments.
Use these options to get more details about the sdd command or any of its subcommands:
-h
--help
Two common workflows for using SDD are outlined below. The first illustrates how to apply a global framework to all data sources, while the second outlines how users can create and apply frameworks to data sources they own.
The tutorials linked below show how to use the CLI to complete this workflow. For an overview of how sensitive data discovery works, see .
Data governor using one or more identifiers.
.
.
Data governor creates one or more .
.
and resulting tags are applied to columns where criteria were met.
This page details the immuta purpose command, its subcommands and arguments, and the workflow for creating and deleting purposes.
immuta purposeThis command allows you to list, save, and delete purposes in your instance of Immuta. The table below illustrates subcommands and arguments.
The reference guides in this section define the integrations API endpoints, request and body parameters, and response schema.
The integrations API endpoints allow you to create, update, get, and delete integrations and generate scripts to run in your data platform to manually set up or remove Immuta-managed resources.
Consult this guide for endpoint descriptions and examples.
The integrations API request payloads accept JSON or YAML format, and each integration has parameters and objects specific to the data platform.
Consult this guide for parameter value types, requirements, definitions, and accepted values.
The response returns the status of the integration configuration in JSON format.
Consult this guide for response schema definitions and integration state definitions.
The integrations API uses standard HTTP status codes. Status codes specific to the integrations API are described in this reference guide.
Consult this guide for a list of status codes, integration states, common error messages, and troubleshooting guidance.
Manage SDD identifiers.
Run SDD on specific data sources or all data sources.
Manage SDD frameworks.
Use these options to get more details about the sdd run command or any of its subcommands:
-h
--help
Run immuta sdd run <dataSourceName> [flags], naming the data source you want to run SDD on. The options you can specify include
-d, --dryRun: No updates will actually be made.
-f, --force: Do not prompt for confirmation when attempting to run SDD on all data sources.
-h or --help: Get more information about the command.
-o or --output json | yaml: Specify the output format.
--outputTemplate string: Format the response using a Go template.
-t, --outputTemplate string: Run SDD with this framework. This flag can only be used with the dryRun flag.
-w, --wait int: The number of seconds to wait for the SDD job(s) to finish. Default is until the SDD job(s) finish (default -1).
The example below illustrates a user running SDD on a single data source.
Run immuta sdd run. The options you can specify include
-d, --dryRun: No updates will actually be made.
-f, --force: Do not prompt for confirmation when attempting to run SDD on all data sources.
-h or --help: Get more information about the command.
-o or --output json | yaml: Specify the output format.
--outputTemplate string: Format the response using a Go template.
-t, --outputTemplate string: Run SDD with this framework. This flag can only be used with the dryRun flag.
-w, --wait int: The number of seconds to wait for the SDD job(s) to finish. Default is until the SDD job(s) finish (default -1).
Confirm that you want to run SDD on all data sources.
$ immuta sdd -h
Manage Sensitive Data Discovery
Usage:
immuta sdd [command]
Available Commands:
classifier Manage Sensitive Data Discovery Classifiers
run Run Sensitive Data Discovery with provided options
template Manage Sensitive Data Discovery Templates
Flags:
-h, --help Help for sdd
Global Flags:
--config string Config file (default $HOME/.immutacfg.yaml)
-p, --profile string Specifies the profile for what instance/api the cli will use (default "default")
Use "immuta sdd [command] --help" for more information about a command.$ immuta sdd -h
Run Sensitive Data Discovery with provided options
Usage:
immuta sdd run [datasourceName(s)] [flags]
Examples:
# run SDD as a dry run on the specified data sources
$ immuta sdd run "Datasource One" "Datasource Two" --dryRun --template "someFramework"
# run SDD on ALL data sources in immuta
$ immuta sdd run
Flags:
-d, --dryRun No updates will actually be made
-f, --force Do not prompt for confirmation when attempting to run sdd on all data sources
-h, --help Help for run
-o, --output json | yaml Output format
--outputTemplate string Format the response using a Go template
-t, --template string Run SDD with this template, can only be used with the dryRun flag
-w, --wait int The number of seconds to wait for the SDD job(s) to finish. Default is until the SDD job(s) finish (default -1)
Global Flags:
--config string Config file (default $HOME/.immutacfg.yaml)
-p, --profile string Specifies the profile for what instance/api the cli will use (default "default")$ immuta sdd run "Credit Accounts"
Running SDD
Credit Accounts 06b71830-aebc-11ec-970b-51ffefcbfd0c completed$ immuta sdd run
Running SDD
Started 8 SDD jobsdelete
Delete a purpose by name.
purpose name
list
List all purposes.
n/a
save
Create or update a purpose in Immuta.
filepath
Use these options to get more details about the purpose command or any of its subcommands:
-h
--help
Add your purpose information in a valid YAML file for the V2 API. Additional payload examples for creating purposes can be found here.
Run immuta purpose save <filepath> [--dryRun] [--reAcknowledge], referencing the file you just created. The options you can specify include
--reAcknowledge: Require all users of any projects using this purpose to re-acknowledge any updated acknowledgement statements.
-d or --dryRun: No updates will be made.
-h or --help: Get more information about the command.
The example below illustrates a user creating a purpose called Demo Purpose.
Opt to list all purposes to determine which purpose you would like to delete by running immuta purpose list. Options you can specify include
-h or --help: Get more information about the command.
-v or --verbose: Print response as JSON.
Delete a purpose by running immuta purpose delete <purpose name> [--dryRun], enclosing the purpose name in quotation marks. Options you can specify include
-d or --dryRun: No updates will be made.
-h or --help
The example below illustrates a user deleting the purpose Demo Purpose.
This page details how to install the Immuta CLI and tab completions.
macOS CLI Binary Warning: When installing the macOS CLI binary, macOS displays the warning "could not verify that this app is free from malware" when the binary is run. Navigate to the Security & Privacy section in your System Preferences to allow the binary to be run.
Download the binary that corresponds to your operating system.
The latest stable binaries can be found here:
Linux x86_64 (amd64)
Linux ARMv8 (arm64)
The latest stable binaries can be found here:
Darwin x86_64 (amd64)
Darwin ARMv8 (arm64)
The latest stable binary can be found here: .
Download and add the binary to a directory in your system's $PATH as immuta.exe.
The SHA 256 checksum is available to verify the file at .
Run immuta configure.
Enter the URL of your Immuta tenant in the interactive prompt.
Enter your Immuta API Key in the interactive prompt:
Below is the configuration file that will be saved at ~/.immutacfg.yaml:
To generate shell completion scripts for Immuta CLI commands, run immuta completion [bash|zsh|fish|powershell]. You can opt to specify -h or --help for instructions on installing tab completions for Bash, Zsh, Fish, and PowerShell commands and flags.
Use the tabs below for specific instructions for each of these shells.
Install bash-completion https://github.com/scop/bash-completion.
Add this to your ~/.bash_profile:
Generate an _immuta completion script and save it in your $fpath
The exact configuration file locations might vary based on your system. Make sure to restart your shell before you test whether completions are working.
Use these audit export configuration commands to manage exporting your audit logs to S3 and ADLS Gen2, including intervals the events are exported and the S3 bucket or ADLS container they are exported to.
immuta audit exportConfig {command} <arguments> [flags]Inspect, disable, enable, and delete configurations for exporting your audit events to S3 and ADLS Gen 2.
The Immuta Audit CLI supports a number of flags for every command.
--config string: Specifies the configuration file name and where it will be saved. (The default is $HOME/.immutacfg.yaml.)
-h, --help: Gets more information about the command.
-p, --profile string
This section outlines the endpoints and parameters of the V1 API and provides examples of requests, payloads, and responses. The endpoints documented in this section are for the V1 API. The V2 API is documented in the previous section.
Any endpoints or attributes that are not documented are for internal purposes and should not be used.
The endpoints throughout this section are organized by workflow.
.
.
.
.
This page details the immuta policy command, its subcommands and arguments, and the workflow for creating, renaming, cloning, and deleting Global Policies.
immuta policyThis command allows you to list, save, delete, and rename Global Policies in your instance of Immuta. The table below illustrates subcommands and arguments.
Audience: All Immuta Users
Content Summary: Calls to the Immuta API require authentication. This page includes the API key authentication endpoint, request and response parameters, and example requests and responses for API authentication.
There are two methods for making an authenticated request to the Immuta API.
Manage Purposes
Usage:
immuta purpose [command]
Available Commands:
delete Delete a purpose by name
list List all purposes
save Create/update a purpose in Immuta
Flags:
-h, --help help for purpose
Global Flags:
--config string config file (default $HOME/.immutacfg.yaml)
-p, --profile string specifies the profile for what instance/api the cli will use (default "default")
Use "immuta purpose [command] --help" for more information about a command.name: Demo Purpose
acknowledgement: You promise not to share this data outside the project.
description: This project is only to be used for departmental data.$ immuta purpose list
Re-identification Prohibited
Re-identification Prohibited.CCPA
Re-identification Prohibited.Safe Harbor Method
Use Case Outside De-identification
$ immuta purpose save test-purpose.yml
{"dryRun":false,"creating":true,"updating":false,"purposeId":8}
$ immuta purpose list
Demo Purpose
Re-identification Prohibited
Re-identification Prohibited.CCPA
Re-identification Prohibited.Safe Harbor Method
Use Case Outside De-identification$ immuta purpose list
Demo Purpose
Re-identification Prohibited
Re-identification Prohibited.CCPA
Re-identification Prohibited.Safe Harbor Method
Use Case Outside De-identification
$ immuta purpose delete "Demo Purpose"
{"dryRun":false,"deleting":["Demo Purpose"]}
$ immuta purpose list
Re-identification Prohibited
Re-identification Prohibited.CCPA
Re-identification Prohibited.Safe Harbor Method
Use Case Outside De-identificationname: Purpose Hierarchy
acknowledgement: The root acknowledgement
subpurposes:
- name: Purpose Hierarchy.Child 1
acknowledgement: Override the root acknowledgement
- name: Purpose Hierarchy.Child 2
- name: Purpose Hierarchy.Child 1.Grandchild 1
- name: Purpose Hierarchy.Child 1.Grandchild 2
- name: Purpose Hierarchy.Child 2.Grandchild 1
- name: Purpose Hierarchy.Child 2.Grandchild 2Ensure that the following is present in your ~/.zshrc:
Generate an immuta.fish completion script:
Run immuta completion powershell | Out-String | Invoke-Expression.
To load completions for every new session, run
Source this immuta.ps1 from your PowerShell profile.
curl -Lo immuta https://immuta-platform-artifacts.s3.amazonaws.com/cli/latest/immuta_cli_linux_amd64 && chmod +x immutacurl -Lo immuta https://immuta-platform-artifacts.s3.amazonaws.com/cli/latest/immuta_cli_linux_arm64 && chmod +x immutacurl -Lo immuta https://immuta-platform-artifacts.s3.amazonaws.com/cli/latest/immuta_cli_darwin_amd64 && chmod +x immutacurl -Lo immuta https://immuta-platform-artifacts.s3.amazonaws.com/cli/latest/immuta_cli_darwin_arm64 && chmod +x immutaclone
Clone and save all Global Policies to files.
filepath
delete
Delete a Global Policy by policy key.
policy key
list
List all Global Policy keys.
n/a
rename
Rename the Global Policy key.
new policy key
save
Create or update a Global Policy in Immuta.
filepath
Use these options to get more details about the policy command or any of its subcommands:
-h
--help
Add your policy information in a valid YAML file for the V2 API. Additional payload examples for creating policies can be found here:
Run immuta policy save <filepath> [--dryRun] [--reCertify], referencing the file you just created. The options you can specify include
-d or --dryRun: No updates will actually be made.
-h or --help: Get more information about the command.
--reCertify: If the certification has changed, someone will need to re-certify this policy on all impacted data sources.
The example below illustrates a user listing all policies and then creating a policy called data conditional masking.
Opt to list all policy keys to identify which policy you would like to rename by running immuta policy list. Options you can specify include
-h or --help: Get more information about the command.
-v or --verbose: Print response as JSON.
Rename the policy key by running immuta policy rename <old policy key> <new policy key>, enclosing the name of the policy key in quotation marks. Options you can specify to get more information about this command include -h or --help.
The example below illustrates a user renaming the data conditional masking policy key to Data Masking.
Clone and save all Global Policies to a file by running immuta policy clone <filepath>. Options you can specify include
--force: Overwrite existing output directory targets. If this flag is omitted, you will receive an error when the output directory exists and is not empty.
-h, --help: Get more information about the command.
-v or --verbose: Print response as JSON.
The example below illustrates cloning and saving all Global Policies to a policy folder. In this example, only one Global Policy existed: Test.
Opt to list all policy keys to determine which policy key you would like to delete by running immuta policy list. Options you can specify include
-h or --help: Get more information about the command.
-v or --verbose: Print response as JSON.
Delete a policy key by running immuta policy delete <policy key> [--dryRun]. Options you can specify include
-d or --dryRun: No updates will be made.
-h or --help: Get more information about the command.
The example below illustrates a user deleting the Data Masking policy.
GET /organizations
Search for organizations.
searchText
string A string used to filter returned organizations. The query is executed with a wildcard prefix and suffix.
No
name
string The name of the organization.
The following request searches for organizations that contain Immuta in their name.
autoload -U compinit
compinit -iimmuta completion fish > ~/.config/fish/completions/immuta.fishimmuta completion powershell > immuta.ps1$ immuta configure
? What is the url of the immuta instance you use?: https://your.instance.url.com/
? What is the api key of your immuta user account?: ***************************Updated the config at /Users/user/.immutacfg.yamldefault:
api_key: <apiKey>
host: https://your.immuta.url.comeval "$(immuta completion bash)"immuta completion zsh > /usr/local/share/zsh/site-functions/_immutaname: Conditional Masking
policyKey: data conditional masking
type: data
actions:
- rules:
- type: Masking
config:
fields:
- type: columnTags
columnTag: Discovered.Passport
conditionalPredicate: "@columnTagged('Discovered.Country') = 'USA'"
maskingConfig:
type: Hash
circumstanceOperator: all
circumstances:
- type: columnTags
columnTag: Discovered.Passport
- type: columnTags
columnTag: Discovered.Country$ immuta policy list
New Column Added
$ immuta policy save ./test-policy.yml
{"dryRun":false,"creating":true,"updating":false,"policyId":4}
$ immuta policy list
New Column Added
data conditional masking$ immuta policy list
New Column Added
data conditional masking
$ immuta policy rename "data conditional masking" "Data Masking"
{"oldPolicyKey":"data conditional masking","newPolicyKey":"Data Masking"}
$ immuta policy list
Data Masking
New Column Added$ immuta policy clone ./your-file-path/policy-folder
Cloning all global policies...
Cloning: Test to Desktop/clone-policies/policy/Test.yaml$ immuta policy list
Data Masking
New Column Added
$ immuta policy delete "Data Masking" --dryRun
{"dryRun":true,"deleting":"Data Masking"}
$ immuta policy delete "Data Masking"
{"dryRun":false,"deleting":"Data Masking"}
$ immuta policy list
New Column Addedcurl \
--request GET \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
https://your-immuta-url.com/organizations?searchText=immuta{
"values": [
{
"name": "Immuta"
}
]
}get <export configuration ID> [flags]: Gets an audit export configuration based on the provided ID. See example .
The ID of the export configuration.
-o, `--output json
list [flags]: Lists all export configurations.
Example: $ immuta audit exportConfig list
-o, `--output json
create <technology> [flags]: Configures a time interval and location to export your audit logs to. Options for <technology> are s3 and adls.
Example: $ immuta audit exportConfig create:s3 ./exportConfig.json
The filepath to the JSON or YAML file that configures the location and time interval for exporting your audit logs to S3 and ADLS Gen2.
-o, `- -output json
delete <export configuration ID> [flags]: Deletes an audit export configuration based on the provided ID.
Example: $ immuta audit exportConfig delete f7f9e289-f37b-4942-a18d-66d6de6e7cb2
The ID of the export configuration.
-o, `--output json
disable <export configuration ID> [flags]: Disables an audit export configuration based on the provided ID.
Example: $ immuta audit exportConfig disable f7f9e289-f37b-4942-a18d-66d6de6e7cb2
The ID of the export configuration.
-o, `--output json
enable <export configuration ID> [flags]: Enables an audit export configuration based on the provided ID.
Example: $ immuta audit exportConfig enable f7f9e289-f37b-4942-a18d-66d6de6e7cb2
The ID of the export configuration.
-o, `--output json
Amazon S3 API reference guide: Create an Amazon S3 data source.
Azure blob storage API reference guide: Create an Azure blob storage data source.
Azure Synapse Analytics API reference guide: Create an Azure Synapse Analytics data source.
Databricks API reference guide: Create a Databricks data source.
: Create a Redshift data source.
: Create a Snowflake data source.
: Create a Starburst (Trino) data source.
: Manage the data dictionary.
Generate an API key.
Pass your API key in the Authorization header when making a request.
Generate an API key.
Make a request to the authentication endpoint to receive a bearer token.
Include the bearer token in the Authorization header when making a request. This token should be used for multiple requests until it expires. Once a token expires, users must authenticate again to get a new token. When a request uses an expired token, the request will return with a 401 status code.
Generate your API key on the API Keys tab on your profile page and save the API key somewhere secure.
You will pass this API key in the authorization header when you make a request, as illustrated in the example below:
Generate your API key on the API Keys tab on your profile page and save the API key somewhere secure.
Save your API key in a .json file.
Make the following request to the authentication endpoint:
You will receive a response that includes your bearer token. Pass that bearer token in the Authorization header when you make a request, as illustrated in the example below:
This page details the immuta datasource command, its subcommands and arguments, and the workflow for creating, renaming, and deleting data sources.
immuta datasourceThis command allows you to list, save, delete, and rename data sources in your instance of Immuta. The table below illustrates subcommands and arguments.
Use these options to get more details about the datasource command or any of its subcommands:
-h
--help
immuta datasource saveAdd your remote database's connection information in a valid YAML file for the V2 API. Additional payload examples for creating data sources can :
Run immuta datasource save <filepath> [--wait int] [--dryRun], referencing the file you just created. The options you can specify include
-d or --dryRun: No updates will actually be made to the data source(s).
The following example illustrates a user saving an updated datasourceInfo.yaml file, first as a dry run and then by specifying that the data sources wait 5 seconds to be created.
immuta datasource renameRun immuta datasource list keys to view a list of data source connection keys. Options you can specify include
-h or --help: Get more information about the command.
-v or --verbose
The following example illustrates a user renaming a data source connection key to demonstration.
immuta datasource deleteThis command will delete all data sources for the connection key you specify.
Run immuta datasource list keys to view a list of data source connection keys. Options you can specify include
-h or --help: Get more information about the command.
-v or --verbose
The following example illustrates a user deleting the demonstration connection key and all its data sources.
This page details the immuta command, its subcommands and arguments, and the workflow for cloning a tenant and using the Immuta API.
immutaThis command allows you to manage your Immuta tenant by creating data sources, projects, policies, and purposes. The table below illustrates the immuta subcommands and arguments.
To view a list of the commands available in your current Immuta CLI version, run immuta with no additional arguments.
Options you can specify with the immuta command include
--config string: Specify the configuration file name and where it will be saved. (The default is $HOME/.immutacfg.yaml.)
-h or --help: Get more information about the command.
-p or --profile string
immuta cloneIf you have an Immuta tenant that was set up without using the API, you can use the immuta clone command to save all your data sources, projects, policies, and purposes as payloads:
This command will create valid V2 API YAML files for all your data sources, projects, policies, and purposes. Within these files, database passwords and user files (such as a BigQuery auth file) will be removed; instead passwords will appear as {{EnvVar "dbPass"}}. The CLI will then read the environment variable dbPass to fill in the password if you use the cloned payload to create or update a data source. File contents will appear as {{ReadFile "<filePath>"}}, and then the CLI will read the file at the path and replace the value when commands are run.
--force: Overwrite existing output directory targets. If this flag is omitted, you will receive an error when the output directory exists and is not empty.
-h or --help: Get details about the command.
Tags for data sources and projects are not returned.
Data sources will not have the sources field, so if these payloads are used in create commands, all possible tables will be created as data sources.
immuta apiThis command makes an authenticated HTTP(s) request to the Immuta API and prints the response. The default HTTP request method is GET, but POST is used if any parameters were added. You can override the method with --method:
-b, --body string: Unmodified string to be sent as payload body.
-d, --data key=value: Add a typed parameter in key=value format. The --data flag behaves like --raw-data, with type conversion based on the format of the value. Literal values, true
The documentation below provides descriptions and examples of immuta api options.
This page details the immuta project command, its subcommands and arguments, and the workflow for creating, renaming, and deleting projects.
immuta projectThis command allows you to list, save, delete, and rename projects in your instance of Immuta. The table below illustrates subcommands and arguments.
Use these options to get more details about the project command or any of its subcommands:
-h
--help
immuta project saveAdd your project information in a valid YAML file for the V2 API. Additional payload examples for creating projects can :
Run the following referencing the file you just created: immuta project save <filepath> [--dryRun] [--deleteWorkSpaceDataSources] The options you can specify include
--deleteWorkSpaceDataSources: Delete all data and the data sources associated with a project workspace when the workspace is deleted.
The example below illustrates a user listing all projects and then creating the project demo project.
immuta project renameOpt to list all project keys to identify which project you would like to rename by running immuta project list. Options you can specify include
-h or --help: Get more information about the command.
-v or --verbose
The example below illustrates a user renaming the demo project project key to data analytics team.
immuta project deleteOpt to list all project keys to determine which project key you would like to delete by running immuta project list. Options you can specify include
-h or --help: Get more information about the command.
-v or --verbose
The example below illustrates a user first disabling and then deleting the project Data Analytics Team.
Fingerprint API reference guide
This page illustrates how to check the status of the Fingerprint service using the fingerprint endpoint.
GET /fingerprint/status
Get the status of the Fingerprint service.
The following request gets the status of the Fingerprint service.
The how-to guides in this section illustrate how to integrate your remote data platform with Immuta so you can manage and enforce access controls on your data.
Immuta's Amazon S3 integration allows users to apply subscription policies to data in S3 to restrict what prefixes, buckets, or objects users can access. To enforce access controls on this data, Immuta creates S3 grants that are administered by S3 Access Grants, an AWS feature that defines access permissions to data in S3.
Follow this guide to configure and manage your Amazon S3 integration. Example requests and responses are provided throughout the guide so that you can quickly copy and update them with your own settings.
In this integration, Immuta generates policy-enforced views in a schema in your configured Azure Synapse Analytics Dedicated SQL pool for tables registered as Immuta data sources.
Follow this guide to configure and manage your Azure Synapse Analytics integration. Example requests and responses are provided throughout the guide so that you can quickly copy and update them with your own settings.
Immuta’s integration with Unity Catalog allows you to manage multiple Databricks workspaces through Unity Catalog while protecting your data with Immuta policies. Instead of manually creating UDFs or granting access to each table in Databricks, you can author your policies in Immuta and have Immuta manage and enforce Unity Catalog access-control policies on your data in Databricks clusters or SQL warehouses.
Follow this guide to configure and manage your Databricks Unity Catalog integration. Example requests and responses are provided throughout the guide so that you can quickly copy and update them with your own settings.
In this integration, Immuta generates policy-enforced views in your configured Google BigQuery dataset for tables registered as Immuta data sources.
Follow this guide to configure and manage your Google BigQuery integration. Example requests and responses are provided throughout the guide so that you can quickly copy and update them with your own settings.
Immuta generates policy-enforced views in your configured Redshift schema for tables registered as Immuta data sources.
Follow this guide to configure and manage your Redshift integration. Example requests and responses are provided throughout the guide so that you can quickly copy and update them with your own settings.
Immuta manages access to Snowflake tables by administering Snowflake row access policies and column masking policies on those tables, allowing users to query tables directly in Snowflake while dynamic policies are enforced.
Follow this guide to configure and manage your Snowflake integration. Example requests and responses are provided throughout the guide so that you can quickly copy and update them with your own settings.
Immuta policies are translated into Starburst rules and permissions and applied directly to tables within users’ existing catalogs.
Follow this guide to configure and manage your Starburst (Trino) integration. Example requests and responses are provided throughout the guide so that you can quickly copy and update them with your own settings.
$ immuta audit exportConfig get f7f9e289-f37b-4942-a18d-66d6de6e7cb2
$
{
"id": "f7f9e289-f37b-4942-a18d-66d6de6e7cb2",
"interval": "EVERY_12_HOURS",
"enabled": true,
"endpointConfiguration": {
"__typename": "S3EndpointConfiguration",
"bucket": "your-s3-bucket",
"path": "hr-data",
"region": "us-east-1",
"accessKeyId": "accessKey"
},
"createdAt": "2022-10-23T23:03:11.466Z",
"createdBy": {
"name": "John Doe",
"identityProvider": "okta",
"id": "[email protected]",
"type": "USER"
},
"updatedAt": "2022-10-23T23:03:11.466Z",
"updatedBy": {
"name": "John Doe",
"identityProvider": "okta",
"id": "[email protected]",
"type": "USER"
}
}curl \
--request GET \
--header "Content-Type: application/json" \
--header "Authorization: 846e9e43c86a4ct1be14290d95127d13f" \
https://your-immuta-url.immuta.com/audit{
"apikey": "846e9e43c86a4ct1be14290d95127d13f"
}curl \
--request POST \
--header "Content-Type: application/json" \
--data @example_payload.json \
https://your-immuta-url.immuta.com/bim/apikey/authenticateData and subscription policies: Manage and review data and subscription policies in Immuta.
Write access policies: Author policies to manage write access to data sources.
Domains reference guide: Create and manage a domain.
Manage access requests: View and manage data source and project access requests.
Policy handler object: View examples of policy handler objects.
Search audit logs: Search Immuta audit logs.
Search connection strings: Search by connection string.
Search for organizations: Search by organization.
Search schemas: Search by schema.
IAMs: Manage users and their permissions, groups, and attributes.
Licenses: Manage and view licenses in Immuta.
Sensitive data discovery: Configure custom sensitive data discovery identifiers and tags.
Tags: Create and search for tags.
Webhooks: Create webhooks that are triggered by events that happen in the system.
Manage Purposes: Create purposes that can be applied to projects and used in policies.
-h or --help: Get more information about the command.
-w or --wait int: Specify how long to wait for data source creation.
To rename one of your data source connection keys, run immuta datasource rename <old connection key> <new connection key>. You can include the -h or --help options to get more information about this command.
Opt to view a list of the data sources in this connection key by running immuta datasource list sources <connection key>.
Run immuta datasource delete <connection key> [--dryRun] to delete all of these data sources. Options you can specify include
-d or --dryRun: No updates will actually be made.
-h or --help: Get more information about the command.
list keys
List all data source connection keys.
n/a
list sources
List all data sources for a given connection key.
connection key
save
Create or update all specified data sources in Immuta given connection information to the remote database.
filepath
delete
Delete all data sources for the given connection key.
connection key
rename
Rename the data source connection key.
connection key
-d or --dryRun: No updates will be made.
-h or --help: Get more information about the command.
Rename the project key by running immuta project rename <old project key> <new project key>, enclosing the name of the project key in quotation marks. Options you can specify to get more information about this command include -h or --help.
Delete a project key by running immuta project delete <project key> [--dryRun] [--hardDelete, enclosing the project key in quotation marks. Options you can specify include
-d or --dryRun: No updates will be made.
--hardDelete: If this is set, it will delete everything related to the project in Immuta. If not set, it will only disable the project.
-h or --help: Get more information about the command.
delete
Delete a project by project key.
project key
list
List all project keys.
n/a
rename
Rename the project key.
new project key
save
Create or update a project in Immuta.
filepath
healthy
boolean If true, the fingerprint status is healthy.
POST /jobs/statusesGet the status and output of the provided jobs.
jobIds
string List of job IDs.
Yes
wait
integer Number of seconds to wait before returning if all jobs have not yet completed. Use -1 to wait indefinitely. The default is 0.
No
pollInterval
integer Number of seconds to wait between subsequent polls. Ignored if not using wait. The default is 1. The minimum is 1.
No
id
string The job's globally unique identifier.
state
array[string] The job state: active, cancelled, completed, created, expired, failed, or retry.
output
string The output of the job, if it exists.
The following request checks the status of the job specified in the payload.
GET /connectionStrings
Search across all connection strings in the handler table.
searchText
string A string used to filter returned connection strings. The query is executed with a wildcard prefix and suffix.
No
values
array Details regarding connection strings, including name and count.
The following request searches across all connection strings in the handler table.
curl \
--request GET \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
https://demo.immuta.com/auditManage Data Sources
Usage:
immuta datasource [command]
Available Commands:
delete Delete all datasources for the given connection key
list List Data Source keys and sources
rename Rename the connection key
save Create/Update all specified data sources in Immuta given connection info to the remote data base
Flags:
-h, --help help for datasource
Global Flags:
--config string config file (default $HOME/.immutacfg.yaml)
-p, --profile string specifies the profile for what instance/api the cli will use (default "default")
Use "immuta datasource [command] --help" for more information about a command.connectionKey: 'a connection key'
connection:
ssl: true
port: 5432
hostname: immuta.db.com
database: public
schema: public
username: user
password: '{{EnvVar "myPassword"}}'
handler: Snowflake$ immuta datasource save test.yml --dryRun
{"dryRun":true,"creating":["Public Credit Accounts","Public Credit Transactions","Public Fake Medical Claims 2017","Public Uciml Census Income Enriched"],"updating":[],"deleting":[],"noChange":[],"detectionRunning":false,"tagsUpdated":false,"connectionString":null}
$ immuta datasource save test.yml --wait 5
{"dryRun":false,"creating":["Public Credit Accounts","Public Credit Transactions","Public Fake Medical Claims 2017","Public Uciml Census Income Enriched"],"updating":[],"deleting":[],"noChange":[],"detectionRunning":false,"tagsUpdated":false,"connectionString":"[email protected]:3306/public"}$ immuta datasource list keys
snowflake.demo-databases.your.url.com:3306/public/public
$ immuta datasource rename snowflake.demo-databases.your.url.com:3306/public/public demonstration
{"oldConnectionKey":"snowflake.demo-databases.your.url.com:3306/public/public","newConnectionKey":"demonstration"}
$ immuta datasource list keys
demonstration$ immuta datasource list keys
demonstration
$ immuta datasource delete demonstration
{"dryRun":false,"deleting":["Public Credit Transactions","Public Credit Accounts","Public Uciml Census Income Enriched","Public Fake Medical Claims 2017"]}
$ immuta datasource list sources demonstration
Error: status code: 404 message: The connection key "demonstration" was not foundManage Projects
Usage:
immuta project [command]
Available Commands:
delete Delete a project by project key
list List all policy keys
rename Rename the project key
save Create/Update a Project in Immuta
Flags:
-h, --help help for project
Global Flags:
--config string config file (default $HOME/.immutacfg.yaml)
-p, --profile string specifies the profile for what instance/api the cli will use (default "default")
Use "immuta project [command] --help" for more information about a command.name: Demo Project
projectKey: demo project
description: "Users need approval to join this project"
allowMaskedJoins: true
subscriptionPolicy:
type: approval
approvals:
- requiredPermission: GOVERNANCE
specificApproverRequired: false
- requiredPermission: ADMIN
specificApproverRequired: false$ immuta project list
Public
$ immuta project save test-project.yml
{"dryRun":false,"creating":true,"updating":false,"numberOfDataSourcesAdded":0,"numberOfDataSourcesRemoved":0,"creatingWorkspace":false,"deletingWorkspace":false,"projectId":3}
$ immuta project list
Public
demo project$ immuta project list
Public
demo project
$ immuta project rename "demo project" "Data Analytics Team"
{"oldProjectKey":"demo project","newProjectKey":"Data Analytics Team"}
$ immuta project list
Data Analytics Team
Public$ immuta project list
Data Analytics Team
Public
$ immuta project delete "Data Analytics Team"
{"dryRun":false,"deleting":"Data Analytics Team"}
$ immuta project list
Data Analytics Team
Public
$ immuta project delete "Data Analytics Team" --hardDelete
{"dryRun":false,"deleting":"Data Analytics Team"}
$ immuta project list
Publiccurl \
--request GET \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
https://your-immuta-url.com/fingerprint/status{
"healthy": true
}curl \
--request POST \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
--data @example_payload.json
https://your-immuta-url.com/jobs/statuses{
"jobIds": [
"cefb58a0-cd71-11ec-8e29-81c20d280994"
],
"wait": 0,
"pollInterval": 1
}{
"cefb58a0-cd71-11ec-8e29-81c20d280994": {
"id": "cefb58a0-cd71-11ec-8e29-81c20d280994",
"state": "completed",
"output": null
}
}curl \
--request GET \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
https://your-immuta-url.com/connectionStrings{
"values": [
{
"name": "[email protected]:???/TEST",
"count": 5
}
]
}list, delete, rename, and save
Manage projects.
list, delete, rename, and save
Manage purposes.
list, delete, and save
version
The version of the Immuta CLI.
n/a
falsenull--data-raw key=value: Add a string parameter in key=value format. The --data flag behaves like --raw-data, with type conversion based on the format of the value. Literal values, true, false, null, and integers are converted to appropriate JSON types. This will be sent in as the request payload.
-H, --header key:value: Add an HTTP request header in key:value format.
-h, --help: Get details about the command.
--input <filepath>: A raw request body may be passed from the outside via the file specified to use as body for the HTTP request. Pass in '-' for standard input.
-X, --method string: The HTTP method for the request (default GET).
-P, --path-param key=value: Add a string parameter in key=value format. Will replace {key} in the url with value.
-q, --query key=value: Add a string parameter in key=value format. The key value pairs are serialized into URL query parameters.
-t, --outputTemplate string: Format the response using a Go template. The provided Go template is rendered using the JSON data as input. For the syntax of Go templates, see this document.
Make an authenticated Immuta API request.
endpoint
Clone all data sources, projects, purposes, and policies information into files.
directory path
Generate shell completion scripts for Immuta CLI commands.
bash, zsh, fish, or powershell
Specify an Immuta tenant URL and API Key to be saved to the Immuta configuration file.
instance url and Immuta API key
Manage data sources.
list, delete, rename, and save
Manage Global Policies.
immuta clone <outputDirPath>immuta api <endPoint> [--method httpMethod] [--input <filePath>] [--body body] [--data key=value] [--raw-data key=value] [--header key:value] [--query key=value] [--path-param key=value] [--outputTemplate string]# list tags
$ immuta api tag
# list tags use query string to filter results
$ immuta api tag -q searchText=Discovered -q limit=10
# template the response using a Go template. This will print all tags new line separated.
$ immuta api tag -q limit=10 --template \
'{{range .}}{{.name}}{{"\n"}}{{end}}'
# Run column detection on specified table
$ immuta api dataSource/detectRemoteChanges -X PUT -d table=tableName -d schema=schemaName
# the above command is the same as
$ immuta api dataSource/detectRemoteChanges -X PUT --body '{"table": "tableName", "schema", "schemaName"}'
# set a user's current project - replace templated values in path
$ immuta api project/current/{projectId} -P projectId=1 -X POST
# the above command is the same as
$ immuta api project/current/1 -X POSTname: Anyone Project
projectKey: Anyone project
documentation: "# Anyone Can See This"
description: "Anyone can join this project"
allowMaskedJoins: false
subscriptionPolicy:
type: anyone
automaticSubscription: true
description: "Auto-subscribe everyone"
tags:
- Discovered.Person Name
purposes:
- Use Purposes
- Purpose Hierarchy.Child 2.Grandchild 2name: Approval Project
projectKey: Approval project
description: "Need approval to join this project"
allowMaskedJoins: true
subscriptionPolicy:
type: approval
approvals:
- requiredPermission: GOVERNANCE
specificApproverRequired: true
- requiredPermission: ADMIN
specificApproverRequired: falsename: Entitlement Project
projectKey: entitlement project
description: "Need specific entitlements to join this project"
subscriptionPolicy:
type: entitlements
automaticSubscription: false
allowDiscovery: true
entitlements:
operator: any
groups:
- Engineers
- Founders
attributes:
- name: Auth1
value: super secretname: Databricks Spark Project
projectKey: databricks spark project
datasources:
- Crime Data
- Databricks Credit Card Transactions
- Databricks Hipaa Data
purposes:
- Use Purposes
workspace:
type: databricks
config:
database: native
directory: native
workspaceConfigurationName: S3name: Snowflake Project
projectKey: snowflake project
datasources:
- Snowflake Case
- Snowflake Customer
- Snowflake Web Sales
workspace:
type: snowflake
config:
schema:
SNOWFLAKE_NATIVE
warehouses:
- DEMO_WH
tags:
- Discovered.PassportNot found
Example: "No Integration found with ID 5." The request failed because the integration with the given ID was not found. Use the to list all integration configurations to find the correct ID.
The table below provides the HTTP code, the error code, an example message, and troubleshooting guidance for each error.
400
Bad request
Example: "Credentials are not required for disable unless the integration was configured automatically. If you need to update your integration credentials, use PUT to update the integration before disabling." The request failed because the payload provided authentication credentials for a manually bootstrapped integration. Remove the authentication credentials from the payload.
400
Bad request
Example: "Integrations that are automatically configured require privileged credentials to disable. Please provide them in your payload." The request failed because the integration was created with autoBootstrap set to true, and privileged credentials were not provided in the request payload to delete the integration. Provide the credentials you used to configure your , , or integration.
400
Bad request
Example: "Credentials are not required to disable a Databricks Unity Catalog integration. If you need to update your integration credentials, use PUT to update the integration before disabling." The request failed because the payload provided authentication credentials for a Databricks Unity Catalog integration. Remove the authentication credentials from the payload.
404
Not found
Example: "No integration found with ID 5." The request failed because the integration with the given ID was not found. Use the to list all integration configurations to find the correct ID.
The table below provides the HTTP code, the error code, an example message, and troubleshooting guidance for each error.
400
Bad Request
Example: "Use PUT /integrations/1 endpoint to update connection information for Snowflake integration on host test-account.snowflakecomputing.com (id = 1) that previously failed to create." The request failed because the integration previously failed to create. The message you receive includes the ID and host of the integration that failed. Use the to update the connection information for that integration to create it.
409
Conflict
Example: "Snowflake integration already exists on test-account.snowflakecomputing.com (id = 1)." The request failed because an integration already exists on the host. Use the integration ID provided in the error message to delete or modify the existing integration. Ensure that the name and config parameters in the new configuration do not conflict with your existing integration.
422
Unprocessable entity
Example: "Validation of prerequisite setup failed. Unable to create integration." The request failed because a validation test failed. See the documentation for a list of validation test messages and errors to address the issue.
422
Unprocessable entity
Example: "Processing Error: Error trying to get the current metastore info." The request failed because Immuta could not find the Databricks metastore information.
The table below provides the HTTP code, the error code, an example message, and troubleshooting guidance for each error.
400
Bad request
Example: "Unable to edit integration due to changes of non-editable attribute(s)." The request failed because an attribute was changed that cannot be edited. The error message includes a list of the attributes that the request attempted to change.
404
Not found
Example: "No integration found with ID 5." The request failed because the integration with the given ID was not found. Use the to list all integration configurations to find the correct ID.
409
Conflict
Example: "Unable to edit integration with ID 10 in current state editing." The request failed because the integration is currently being modified or deleted. Use the to determine when the integration has finished updating. Then, modify the integration. If the integration has been deleted, use the to re-create the integration.
422
Unprocessable entity
Example: "Unable to edit integration with ID 7, validation failed." The request failed because a validation test failed. See the documentation for a list of validation test messages and errors to address the issue.
404
Search filter API reference guide
This page describes the searchFilter endpoint.
POST /searchFilter
Save a new search filter.
Required Immuta permission: CREATE_FILTER
The following request saves a new search filter.
GET /searchFilter
Retrieve saved search filters.
The following request retrieves all saved search filters.
DELETE /searchFilter/{searchFilterName}
Delete a search filter by name.
Required Immuta permission: CREATE_FILTER
The following request deletes the Medical Claims search filter.
Schemas API reference guide
This page describes the schemas endpoint of the Immuta API and its request and response parameters.
GET /schemas
Search across all schemas in the handler table.
This example request gets all of the schemas with the string "medical" in their name.
409
Conflict
Example: "Unable to edit integration with ID 10 in current state editing." The request failed because the integration is currently being modified or deleted. Use the GET /integrations/{id}/status endpoint to determine when the integration has finished updating. Then, delete the integration.
422
Unprocessable entity
Example: "Unable to delete integration with ID 7, validation failed." The request failed because a validation test failed. See the validation results object documentation for a list of validation test messages and errors to address the issue.
filter
array Includes facets to use in the search filter, such as searchText (the base search string for data sources/projects), tag, column, connectionString, schema, and type (type of models to search for: datasource or project).
Yes
name
string Name to be used for the search filter.
No
filter
array The facets used in the search filter, such as searchText (the base search string for data sources/projects), tag, column, connectionString, schema, and type (type of models used in the filter: datasource or project).
name
string The name of the search filter.
searchText
string A string used to filter returned saved filters. The query is executed with a wildcard prefix and suffix.
No
values
array Details regarding the search filters, including name, filter, searchText (the base search string for data sources/projects), tag, column, connectionString, schema, and type (type of models used in the filter: datasource or project).
searchFilterName
string The name of the specific search filter.
Yes
values
array Details regarding the search filters, including name, filter, searchText (the base search string for data sources/projects), tag, column, connectionString, schema, and type (type of models used in the filter: datasource or project).
searchText
string Used to filter returned schemas. The query is executed with a wildcard prefix and suffix.
No
values
metadata The name and count for each result.
name
string The name of the schema.
count
integer The total number of data sources attached to that schema.
Your nativeSchemaFormat must contain _immuta to avoid schema name conflicts.
curl \
--request POST \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
--data @example_payload.json
https://your-immuta-url.com/searchFilter{
"name": "Medical Claims",
"filter": {
"searchText": "",
"column": ["income_greater_than_50k"],
"type": "datasource",
"tag": ["Discovered.Entity.Medicare Number"]
}
}{
"name": "Medical Claims",
"filter": {
"searchText": "",
"column": ["income_greater_than_50k"],
"type": "datasource",
"tag": ["Discovered.Entity.Medicare Number"]
}
}curl \
--request GET \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
https://your-immuta-url.com/searchFilter{
"values": [{
"name": "States",
"filter": {
"type": "datasource",
"column": ["state"],
"searchText": ""
}
}]
}curl \
--request DELETE \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
https://your-immuta-url.com/searchFilter/Medical%20Claims{
"name": "Medical Claims",
"filter": {
"tag": ["Discovered.Entity.Medicare Number"],
"type": "datasource",
"column": ["income_greater_than_50k"],
"searchText": ""
}
}curl \
--request GET \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
https://demo.immuta.com/schemas?searchText=medical{
"values": [
{
"name": "medical_records",
"count": 1
}
]
}connectionKey: my-databricks
connection:
hostname: your.databricks.hostname.com
port: 443
ssl: true
database: tpc
username: token
password: "${DATABRICKS_PASSWORD}"
httpPath: sql/protocolv1/o/0/11101101
handler: DatabricksconnectionKey: my-databricks
nameTemplate:
dataSourceFormat: Databricks <Tablename>
tableFormat: <tablename>
schemaFormat: databricks
connection:
hostname: your.databricks.hostname.com
port: 443
ssl: true
database: data
username: token
password: "${DATABRICKS_PASSWORD}"
httpPath: sql/protocolv1/o/0/1110-11123
handler: Databricks
sources:
- table: credit_card_transactions
schema: data
tags:
table:
- PCI
- SENSITIVE
columns:
- columnName: transaction_date
tags:
- PCI
- DATE
- table: crime_data
schema: data
naming:
datasource: Crime Data
table: crime_data
schema: databricksconnectionKey: my-databricks
nameTemplate:
dataSourceFormat: Databricks <Tablename>
tableFormat: <tablename>
schemaFormat: databricks
schemaProjectNameFormat: <schema>
connection:
hostname: your.databricks.hostname.com
port: 443
ssl: true
database: data
authenticationMethod: oAuthM2M
useCertificate: false
clientId: "${service_principal_clientId}"
audience: https://your.databricks.hostname.com/oidc/v1/token
scope: all-apis
clientSecret: "${clientSecret}"
httpPath: sql/protocolv1/o/0/1110-11123
handler: DatabricksconnectionKey: ebock-databricks
nameTemplate:
dataSourceFormat: Databricks <Tablename>
tableFormat: <tablename>
schemaFormat: databricks
connection:
hostname: your.databricks.hostname.com
port: 443
ssl: true
database: ebock
username: token
password: "${DATABRICKS_PASSWORD}"
httpPath: sql/protocolv1/o/0/1110-185737-wove
handler: Databricks
sources:
- table: credit_card_transactions
schema: ebock
- table: crime_data_delta
schema: ebock
naming:
datasource: Crime Data
table: crime_data
schema: databricks
- table: hipaa_data
schema: ebockconnectionKey: cdh-impala
nameTemplate:
dataSourceFormat: Impala <Tablename>
tableFormat: <tablename>
schemaFormat: impala
connection:
hostname: your.hadoop.hostname.example.com
port: 21050
ssl: true
database: default
handler: Apache Impala
authenticationMethod: kerberos
username: usera
userFiles:
- keyName: TrustedCerts
content: <Base64 encoded contents of file go here>
userFilename: tls-ca-bundle.pem
sources:
- table: medical_records_parquet
schema: default
- table: nyc_taxi_fare_parquet
schema: default
- table: nyc_taxi_trip_parquet
schema: defaultconnectionKey: redshift
connection:
hostname: your-redshift-cluster.djie25k.us-east-1.redshift.amazonaws.com
port: 5439
ssl: true
database: your_database_with_external_schema
username: awsuser
password: your_password
handler: Redshift
schema: external_schema
nameTemplate:
dataSourceFormat: <Tablename>
schemaFormat: <schema>
tableFormat: <tablename>
schemaProjectNameFormat: <Schema>
nativeSchemaFormat: <schema>_immuta
nativeViewFormat: <tablename>
sources:
- all: trueconnectionKey: tpc-snowflake
nameTemplate:
dataSourceFormat: Snowflake <Tablename>
tableFormat: <tablename>
schemaFormat: snowflake
connection:
hostname: example.hostname.snowflakecomputing.com
port: 443
ssl: true
database: TPC
username: USERA
password: "${SNOWFLAKE_PASSWORD}"
schema: PUBLIC
warehouse: IT_WH
handler: Snowflake
sources:
- table: CASE
schema: PUBLIC
- table: CASE2
schema: PUBLIC
- table: CUSTOMER
schema: PUBLIC
- table: WEB_SALES
schema: PUBLICsave
Create an identification framework.
None
Delete the passed identification framework.
None
Get an identification framework.
None
Use these options to get more details about the sdd template command or any of its subcommands:
-h
--help
Save your framework to a valid YAML or JSON file using these attributes:
name
string Unique, request-friendly framework name.
Yes
displayName
string Unique, human-readable framework name.
Yes
description
An example is provided below.
Run immuta sdd template create <filepath> [flags], referencing the file you just created. The options you can specify include
-h or --help: Get more information about the command.
-o or --output json | yaml
Run immuta sdd template get <frameworkName> [flags], specifying the name of the framework you would like to get. Options you can specify include
-h or --help: Get more information about the command.
-o or --output json | yaml: Specify the output format.
--outputTemplate string: Format the response using a Go template.
The example below illustrates a user getting a framework named ACCOUNT_NUMBERS_FRAMEWORK.
Run immuta sdd template global [flags], to get the global framework that has been configured for sensitive data discovery. Options you can specify include
-h or --help: Get more information about the command.
-o or --output json | yaml: Specify the output format.
--outputTemplate string: Format the response using a Go template.
The example below illustrates a user getting the global framework that had been configured in the Immuta UI by an administrator.
Run immuta sdd template search [string] [flags] to list all identification frameworks or search identification frameworks by name. Options you can specify include
--classifiers strings: Limit results to only frameworks that contain the specified identifiers.
-h, --help: Help for search.
--limit int The search limit for pagination (default 25).
--offset int: The search offset for pagination.
--order asc | desc: The sort order.
-o, --output json | yaml: The output format.
--outputTemplate string: Format the response using a Go template.
-s, --sort id | name | displayName | type | createdAt | updatedAt: Field to sort by.
The example below illustrates a user searching all frameworks containing the ACCOUNT_NUMBER_IDENTIFIER.
Update your framework in a valid YAML or JSON file using these attributes:
name
string Unique, request-friendly framework name.
Yes
displayName
string Unique, human-readable framework name.
Yes
description
Run immuta sdd template update <frameworkName> <filepath> [flags], referencing the file you just updated. The options you can specify include
-h or --help: Get more information about the command.
-o or --output json | yaml
The example below illustrates a user updating a framework named ACCOUNT_NUMBERS_FRAMEWORK.
Run immuta sdd template delete <frameworkName> [flags] to delete the framework. The options you can specify include
-h or --help: Get more information about the command.
-o or --output json | yaml: Specify the output format.
--outputTemplate string: Format the response using a Go template.
This page describes the native-s3 (Amazon S3 data sources) endpoint.
.
.
.
POST /native-s3/handler
Save the provided connection information as a data source.
The table below outlines the parameters for creating an S3 data source.
The table below outlines the response schema for successful requests.
The following request saves the provided connection information as a data source.
The response returns the ID, name, and prefix of the data source. See the response schema above for details about the response schema. An unsuccessful response returns the status code and an error message.
GET /native-s3/handler/{handlerId}
Get the handler metadata associated with the provided handler ID.
The following request returns the handler metadata associated with the provided handler ID.
DELETE /dataSource/{dataSourceId}
Delete a data source. This will perform a soft delete on the first call and a hard delete the second time.
The following request disables the data source 1.
$ immuta sdd template -h
Manage Sensitive Data Discovery Templates
Usage:
immuta sdd template [command]
Available Commands:
create Create an SDD template
delete Delete the passed SDD template
get Get an SDD template
global Get the SDD global template
search Search all templates
update Update an SDD template
Flags:
-h, --help Help for template
Global Flags:
--config string Config file (default $HOME/.immutacfg.yaml)
-p, --profile string Specifies the profile for what instance/api the cli will use (default "default")
Use "immuta sdd template [command] --help" for more information about a command.$ immuta sdd template create ./account-template.json -o json
{
"name": "ACCOUNT_NUMBERS_FRAMEWORK",
"displayName": "Account Numbers Framework",
"description": "This framework contains the identifier that recognizes account numbers.",
"createdBy": {
"id": 1,
"name": "Example User",
"email": "[email protected]"
},
"id": 2,
"createdAt": "2022-03-28T15:48:02.977Z",
"updatedAt": "2022-03-28T15:48:02.977Z",
"classifiers": [
{
"name": "ACCOUNT_NUMBER_IDENTIFIER",
"overrides": {}
}
]
}$ immuta sdd template get ACCOUNT_NUMBERS_FRAMEWORK
Getting template ACCOUNT_NUMBERS_FRAMEWORK...
{
"name": "ACCOUNT_NUMBERS_FRAMEWORK",
"displayName": "Account Numbers Framework",
"description": "This framework contains the identifier that recognizes account numbers.",
"createdBy": {
"id": 1,
"name": "Example User",
"email": "[email protected]"
},
"id": 2,
"createdAt": "2022-03-28T15:48:02.977Z",
"updatedAt": "2022-03-28T15:48:02.977Z",
"classifiers": [
{
"name": "ACCOUNT_NUMBER_IDENTIFIER",
"overrides": {}
}
]
}$ immuta sdd template global
Getting global template...
{
"name": "ACCOUNT_NUMBERS_FRAMEWORK",
"displayName": "Account Numbers Framework",
"description": "This framework contains the identifier that recognizes account numbers.",
"createdBy": {
"id": 1,
"name": "Example User",
"email": "[email protected]"
},
"id": 3,
"createdAt": "2022-03-28T17:10:48.507Z",
"updatedAt": "2022-03-28T17:10:48.507Z",
"classifiers": [
{
"name": "ACCOUNT_NUMBER_IDENTIFIER",
"overrides": {}
}
]
}$ immuta sdd template search --classifiers="ACCOUNT_NUMBER_IDENTIFIER"
Searching all templates...
ACCOUNT_NUMBERS_FRAMEWORK This framework contains the identifier that recognizes account numbers.
Displaying 1 of 1 templates$ immuta sdd template update ACCOUNT_NUMBERS_FRAMEWORK ./account-template -o json
{
"name": "ACCOUNT_NUMBERS_FRAMEWORK",
"displayName": "Account Numbers Framework",
"description": "This framework contains the identifier that recognizes account numbers.",
"createdBy": {
"id": 1,
"name": "Example User",
"email": "[email protected]"
},
"id": 2,
"createdAt": "2022-03-28T15:48:02.977Z",
"updatedAt": "2022-03-28T16:15:01.791Z",
"classifiers": [
{
"name": "ACCOUNT_NUMBER_IDENTIFIER",
"overrides": {}
}
]
}$ immuta sdd template delete ACCOUNT_NUMBERS_FRAMEWORK -o json
{
"name": "ACCOUNT_NUMBERS_FRAMEWORK",
"displayName": "Account Numbers Framework",
"description": "This framework contains the identifier that recognizes account numbers.",
"createdBy": {
"id": 1,
"name": "Example User",
"email": "[email protected]"
},
"id": 2,
"createdAt": "2022-03-28T15:48:02.977Z",
"updatedAt": "2022-03-28T16:15:01.791Z",
"classifiers": [
{
"name": "ACCOUNT_NUMBER_FRAMEWORK",
"overrides": {}
}
]
}--outputTemplate string: Format the response using a Go template.
--outputTemplate string: Format the response using a Go template.
Get the global framework.
ls, list
Search all identification frameworks.
None
Update an identification framework.
string The framework description.
Yes
classifiers
array Includes each identifier's name and overrides for minConfidence and tags.
Yes
string The framework description.
Yes
classifiers
array Includes each identifier's name and overrides for minConfidence and tags.
Yes
dataSources.prefix string
The S3 prefix that creates a data source for the prefix, bucket, or object provided in the path.
Required
-
type string
The type of integration.
Required
Native S3
integrationId number
The unique identifier of the S3 integration.
Required
-
dataSources.dataSourceName string
The name of the S3 data source you want to create.
Required
dataSourceId integer
The unique identifier of the data source.
prefix string
The S3 path of the prefix, bucket, or object used to create the data source.
dataSourceName string
The name of the data source.
handlerId integer
The specific handler ID.
Required
id integer
The data source ID.
metadata.prefix string
The S3 path of the prefix, bucket, or object used to create the data source.
metadata.integrationId integer
The unique identifier of the integration.
metadata.dataSourceName string
The name of the data source.
type string
The handler type (nativeS3Handler).
awsLocationPath string
The base S3 location prefix that Immuta used to register the S3 data source.
dataSourceId
integer The data source ID.
Yes
success boolean
If true, the request to disable or delete the data source was successful.
id integer
The data source ID.
schemaEvolutionId integer
The schema evolution ID.
name string
The data source name.
disabled boolean
If true, the data source is disabled.
handlerDeleteErrorMessage string
The delete error message.
-
{
"name": "ACCOUNT_NUMBERS_FRAMEWORK",
"displayName": "Account Numbers Framework",
"description": "This framework contains the identifier that recognizes account numbers.",
"classifiers": [
{
"name": "ACCOUNT_NUMBER_IDENTIFIER"
}
]
}curl -X 'POST' \
'https://<your-immuta-url.com>/native-s3/handler' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: <your-api-key>' \
-d '{
"type": "Native S3",
"integrationId": <id-of-your-s3-integration>,
"dataSources": [
{
"dataSourceName": "<name-of-data-source>",
"prefix": "</data-source-prefix>"
}
]
}'{
"dataSourceId": 1,
"prefix": "research-data-source",
"dataSourceName": "s3://research-data-source (64*****50499/us-east-2)"
}curl \
--request GET \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
https://your-immuta-url.com/native-s3/handler/1{
"id": 1,
"metadata": {
"prefix": "research-data-source",
"integrationId": 2,
"dataSourceName": "s3://research-data-source (64*****50499/us-east-2)"
},
"type": "nativeS3Handler",
"awsLocationPath": "s3://"
}curl \
--request DELETE \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
https://your-immuta-url.com/dataSource/1{
"success": true,
"id": 1,
"schemaEvolutionId": 1,
"name": "s3://research-data-source (64*****50499/us-east-2)",
"disabled": true,
"handlerDeleteErrorMessage": null
}save
Create an identifier.
None
Delete the passed identifier.
None
Get an identifier.
ls, list
Use these options to get more details about the sdd classifier command or any of its subcommands:
-h
--help
Save your identifier to a valid YAML or JSON file using these attributes.
name
string Unique, request-friendly identifier name.
Yes
displayName
string Unique, human-readable identifier name.
Yes
description
Examples are provided below.
Run immuta sdd classifier create <filepath> [flags], referencing the file you just created. The options you can specify include
-h or --help: Get more information about the command.
-o or --output json | yaml
Run immuta sdd classifier get <classifierName> [flags], specifying the name of the identifier you would like to get. Options you can specify include
-h or --help: Get more information about the command.
-o or --output json | yaml: Specify the output format.
--outputTemplate string: Format the response using a Go template.
The example below illustrates a user getting an identifier called ACCOUNT_NUMBER_IDENTIFIER.
Run immuta sdd classifier search [string] [flags] to list all identifiers or search identifiers by name. Options you can specify include
-h, --help: Help for search.
--limit int The search limit for pagination (default 25).
--offset int: The search offset for pagination.
--order asc | desc: The sort order.
-o, --output json | yaml: The output format.
--outputTemplate string: Format the response using a Go template.
-s, --sort id | name | displayName | type | createdAt | updatedAt: Field to sort by.
--type regex | columnNameRegex | dictionary | builtIn: Limit results to the specified criteria type.
The example below illustrates a user searching all identifiers containing account.
Update your identifier in a valid YAML or JSON file using these attributes:
name
string Unique, request-friendly identifier name.
Yes
displayName
string Unique, human-readable identifier name.
Yes
description
Run immuta sdd classifier update <classifierName> <filepath> [flags], referencing the file you just updated. The options you can specify include
-h or --help: Get more information about the command.
-o or --output json | yaml
The example below illustrates a user updating an identifier named ACCOUNT_NUMBER_IDENTIFIER.
Run immuta sdd classifier delete <classifierName> [flags] to delete the identifier. The options you can specify include
-h or --help: Get more information about the command.
-o or --output json | yaml: Specify the output format.
--outputTemplate string: Format the response using a Go template.
The Starburst (Trino) resource allows you to create and manage your Starburst (Trino) integration. In this integration, Immuta policies are translated into Starburst rules and permissions and applied directly to tables within users’ existing catalogs.
Use the /integrations endpoint to
APPLICATION_ADMIN Immuta permission
A valid
To configure the Starburst (Trino) integration, complete the following steps:
Copy the request example. The example provided uses JSON format, but the request also accepts YAML.
Replace the Immuta URL and with your own.
The response returns the status of the Starburst (Trino) integration configuration connection. See the for details about the response schema.
A successful response includes the validation tests statuses.
An unsuccessful request returns the status code and an error message. See the for a list of statuses, error messages, and troubleshooting guidance.
Navigate to the Immuta App Settings page and click the Integrations tab.
Click your enabled Starburst (Trino) integration and copy the configuration snippet displayed.
Follow the steps in the configure the Immuta system access control plugin in or section to add the configuration in the appropriate immuta-access-control.properties file to finish configuring your cluster.
Copy the request example.
Replace the Immuta URL and with your own.
Replace the {id} request parameter with the unique identifier of the integration you want to get. Alternatively, you can get a list of all integrations and their IDs with the .
The response returns a Starburst (Trino) integration configuration and the Immuta API key used to configure the Starburst cluster. See the for details about the response schema. An unsuccessful request returns the status code and an error message. See the for a list of statuses, error messages, and troubleshooting guidance.
Copy the request example.
Replace the Immuta URL and with your own.
The response returns the configuration for all integrations. See the for details about the response schema. An unsuccessful request returns the status code and an error message. See the for a list of statuses, error messages, and troubleshooting guidance.
Cluster restart required
To update your API key in Starburst (Trino), you must shut down your cluster, generate and update the API key, and then restart your cluster. If you do not shut down your cluster, generating a new API key using the endpoint below will cause downtime for your deployment.
.
Copy the request example below and replace these values:
Replace the Immuta URL and with your own.
Replace the {id} request parameter with the unique identifier of the Starburst (Trino) integration you want to regenerate the Immuta API key for.
The response includes your new Immuta API key.
Copy the request example.
Replace the Immuta URL and with your own.
Replace the {id} request parameter with the unique identifier of the integration you want to delete.
The response returns the status of the Starburst (Trino) integration configuration that has been deleted. See the for details about the response schema. An unsuccessful request returns the status code and an error message. See the for a list of statuses, error messages, and troubleshooting guidance.
Write policies API endpoint reference guide
The policies resource allows you to manage and apply policies to your data sources. The endpoints and examples provided in this guide are specific to creating global write policies.
POST
POST /dataSource/{dataSourceId}/accessManually grants write access to a user.
The request accepts a JSON or YAML payload. See the for parameter details.
The response returns the following JSON object. See the for details about the response schema.
POST /policy/globalCreates a global policy.
The example below grants write access to users with the attribute has.write and applies the global policy to all data sources.
The example below grants users write access when they are individually selected by data owners and applies the policy to data sources with columns tagged Discovered.Person Name.
The request accepts a JSON or YAML payload. See the for parameter details.
The response returns the global policy configuration. See the for details about the response schema.
DELETE /policy/global/{policyId}Deletes the specified policy.
The response returns the deleted global policy configuration. See the for details about the response schema.
GET /policy/global/{policyId}Gets the specified policy.
The response returns the global policy configuration. See the for details about the response schema.
PUT /policy/global/{policyId}Updates the specified policy.
The request accepts a JSON or YAML payload. See the for parameter details.
The response returns the updated global policy configuration. See the for details about the response schema.
Activity API reference guide
This page describes the activity endpoint of the Immuta API, which allows you to view your activity notifications.
GET /activity
View your activity notification feed.
This example request gets 5 activities for the current user and sorts them in descending order.
GET /activity/hasUnread
Determine whether you have unread activity notifications.
This request determines whether or not the requesting user has unread activities.
{
"name": "MY_REGEX_IDENTIFIER",
"displayName": "My Regex Identifier",
"description": "A regex identifier",
"type": "regex",
"config": {
"regex": "^[A-Z][a-z]+",
"tags": ["Discovered.regex-example"]
}
}{
"name": "MY_DICTIONARY_IDENTIFIER",
"displayName": "My Dictionary Identifier",
"description": "A dictionary identifier",
"type": "dictionary",
"config": {
"values": ["Bob", "Eve"],
"caseSensitive": true,
"tags": ["Discovered.dictionary-example", "Discovered.dictionary-example"]
}
}{
"name": "MY_COLUMN_NAME_REGEX_IDENTIFIER",
"displayName": "My Column Name Regex Identifier",
"description": "A column name regex identifier",
"type": "columnNameRegex",
"config": {
"columnNameRegex": "ssn|social ?security",
"tags": ["Discovered.column-name-regex-example"]
}
}$ immuta sdd classifier -h
Manage Sensitive Data Discovery Classifiers
Usage:
immuta sdd classifier [command]
Available Commands:
create Create an SDD classifier
delete Delete the passed SDD classifier
get Get an SDD classifier
search Search all classifiers
update Update an SDD classifier
Flags:
-h, --help Help for classifier
Global Flags:
--config string Config file (default $HOME/.immutacfg.yaml)
-p, --profile string Specifies the profile for what instance/api the cli will use (default "default")
Use "immuta sdd classifier [command] --help" for more information about a command.$ immuta sdd classifier create ./account-classifier.json
Creating classifier from ./account-classifier...
Create successful.$ immuta sdd classifier get ACCOUNT_NUMBER_IDENTIFIER
Getting classifier ACCOUNT_NUMBER_IDENTIFIER...
{
"createdBy": {
"id": 1,
"name": "Example User",
"email": "[email protected]"
},
"name": "ACCOUNT_NUMBER_IDENTIFIER",
"displayName": "Account Number Identifier",
"description": "This identifier recognizes account numbers using a regex critiera",
"type": "regex",
"config": {
"tags": [
"Discovered.account-number"
],
"regex": "^[0-9]{9}-[0-9]{3}-[0-9]{1}$"
},
"id": 69,
"createdAt": "2022-03-28T14:52:14.004Z",
"updatedAt": "2022-03-28T14:52:14.004Z"
}$ immuta sdd classifier search account
Searching all classifiers...
ACCOUNT_NUMBER_IDENTIFIER This identifier recognizes account numbers using a regex criteria.$ immuta sdd classifier update ACCOUNT_NUMBER_IDENTIFIER ./account-classifier -o json
{
"createdBy": {
"id": 1,
"name": "Example User",
"email": "[email protected]"
},
"name": "ACCOUNT_NUMBER_IDENTIFIER",
"displayName": "Account Number Identifier",
"description": "This identifier recognizes account numbers using a regex criteria.",
"type": "regex",
"config": {
"tags": [
"Discovered.account-number"
],
"regex": "^[0-9]{9}-[0-9]{3}-[0-9]{1}$"
},
"id": 69,
"createdAt": "2022-03-28T14:52:14.004Z",
"updatedAt": "2022-03-28T15:25:28.575Z"
}$ immuta sdd classifier delete ACCOUNT_NUMBER_IDENTIFIER -o json
{
"createdBy": {
"id": 1,
"name": "Example User",
"email": "[email protected]"
},
"name": "ACCOUNT_NUMBER_IDENTIFIER",
"displayName": "Account Number Identifier",
"description": "This identifier recognizes account numbers using a regex criteria.",
"type": "regex",
"config": {
"tags": [
"Discovered.account-number"
],
"regex": "^[0-9]{9}-[0-9]{3}-[0-9]{1}$"
},
"id": 69,
"createdAt": "2022-03-28T14:52:14.004Z",
"updatedAt": "2022-03-28T15:25:28.575Z"
}--outputTemplate string: Format the response using a Go template.
--outputTemplate string: Format the response using a Go template.
Search all identifiers.
None
Update an identifier.
string The identifier description.
Yes
type
string The type of criteria: regex, dictionary, columnNameRegex, or builtIn.
Yes
config
object The configuration of the identifier, which may include config.values, config.caseSensitive, config.regex, config.columnNameRegex, and config.tags.
Yes
config.tags
array[string] The name of the tags to apply to the data source.
Yes
config.regex
string A case-insensitive regular expression to match against column values.
No
config.columnNameRegex
string A case-insensitive regular expression to match against column names.
No
config.values
array[string] The list of words to include in the dictionary.
No
config.caseSensitive
boolean Indicates whether or not values are case sensitive. Defaults to false.
No
string The identifier description.
Yes
type
string The type of criteria: regex, dictionary, columnNameRegex, or builtIn.
Yes
config
object The configuration of the identifier, which may include config.values, config.caseSensitive, config.regex, config.columnNameRegex, and config.tags.
Yes
config.tags
array[string] The name of the tags to apply to the data source.
Yes
config.regex
string A case-insensitive regular expression to match against column values.
No
config.columnNameRegex
string A case-insensitive regular expression to match against column names.
No
config.values
array[string] The list of words to include in the dictionary.
No
config.caseSensitive
boolean Indicates whether or not values are case sensitive. Defaults to false.
No
Manually grants write access to a user
POST
Creates a global write access policy
DELETE
Deletes the specified global write access policy
GET
Gets the global policy with the given policy ID
PUT
Updates the specified global policy
dataSourceId integer
The unique identifier of the data source.
policyId integer
The unique identifier of the policy.
policyId integer
The unique identifier of the policy.
size
integer The number of records to return in this query.
No
modelType
string The type of object to get activity for (i.e., data source, script, etc.).
No
modelId
string The ID for the model (i.e., the data source ID).
No
sortField
string The field to use for sorting.
No
sortOrder
string The sort order to use. The default is desc.
No
searchText
string If set, will use text to search through notification types and return all matched types.
No
notificationType
string If set, will only return activities of this type.
No
permission
string If set, will only return activities from users with a given permission if current user has it as well.
No
GET
/activity
GET
/activity/hasUnread
excludeMine
boolean If true, excludes activities that were initiated by the calling user.
No
nonRequestActivity
boolean If true, excludes data source access requests from the returned activities.
No
new
boolean If true, excludes activities that are marked as 'read'.
No
offset
integer Used in combination with size to fetch pages.
count
integer The total number of results available.
unread
integer The number of unread activities.
activities
metadata The information about the individual activities.
unread
boolean If true, the user has unread activities.
No
curl -X 'POST' \
'https://www.organization.immuta.com/dataSource/6/access' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f' \
-d '{
"profileId": 3,
"state": "subscribed",
"accessGrant": "WRITE"
}'{
"isSubscriptionOverride": true,
"id": 23,
"modelId": "6",
"modelType": "datasource",
"state": "subscribed",
"metadata": {},
"admin": 2,
"denialReasoning": null,
"profile": 3,
"group": null,
"policy": false,
"expiration": null,
"acknowledgeRequired": false,
"createdAt": "2023-10-11T14:43:00.726Z",
"updatedAt": "2023-10-11T14:43:00.726Z",
"accessGrant": "WRITE",
"approved": true
}curl -X 'POST' \
'https://www.organization.immuta.com/policy/global' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f' \
-d '{
"type": "subscription",
"name": "Allow users with specific entitlements to have write access",
"actions": [{
"type": "subscription",
"subscriptionType": "policy",
"accessGrant": "WRITE",
"exceptions": {
"operator": "and",
"conditions": [{
"type": "authorizations",
"authorization": {
"auth": "has",
"value": "write"
}
}]
},
}],
"staged": false
}'curl -X 'POST' \
'https://www.organization.immuta.com/policy/global' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f' \
-d '{
"type": "subscription",
"name": "Data owners grant specific users write access",
"actions": [{
"type": "subscription",
"subscriptionType": "manual",
"accessGrant": "WRITE"
}],
"staged": false,
"circumstances": [{
"type": "columnTags",
"columnTag": {
"name": "Discovered.Person Name",
"displayName": "Discovered . Person Name",
"hasLeafNodes": false
}
}]
}'{
"policyKey": "Manual global write policy",
"name": "Manual global write policy",
"type": "subscription",
"template": true,
"staged": false,
"systemGenerated": false,
"deleted": false,
"certification": null,
"actions": [
{
"type": "subscription",
"accessGrant": "WRITE",
"description": null,
"allowDiscovery": false,
"subscriptionType": "manual",
"shareResponsibility": false,
"automaticSubscription": false
}
],
"circumstances": null,
"metadata": null,
"clonedFrom": null,
"createdBy": 2,
"id": 4,
"createdAt": "2023-10-10T13:18:37.270Z",
"updatedAt": "2023-10-10T13:18:37.270Z",
"createdByName": "Taylor",
"ownerRestrictions": null
}{
"policyKey": "Manual global write policy",
"name": "Manual global write policy",
"type": "subscription",
"template": true,
"staged": false,
"systemGenerated": false,
"deleted": false,
"certification": null,
"actions": [
{
"type": "subscription",
"accessGrant": "WRITE",
"description": null,
"allowDiscovery": false,
"subscriptionType": "manual",
"shareResponsibility": false,
"automaticSubscription": false
}
],
"circumstances": [{
"type": "columnTags",
"columnTag": {
"name": "Discovered.Person Name",
"displayName": "Discovered . Person Name",
"hasLeafNodes": false
}
}],
"metadata": null,
"clonedFrom": null,
"createdBy": 2,
"id": 4,
"createdAt": "2023-10-10T13:18:37.270Z",
"updatedAt": "2023-10-10T13:18:37.270Z",
"createdByName": "Taylor",
"ownerRestrictions": null
}curl -X 'DELETE' \
'https://www.organization.immuta.com/policy/global/4' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f'curl -X 'GET' \
'https://www.organization.immuta.com/policy/global/4' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f'curl -X 'PUT' \
'https://www.organization.immuta.com/policy/global/4' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f' \
-d '{
"type": "subscription",
"name": "Manual global write policy",
"template": true,
"actions": [{
"type": "subscription",
"subscriptionType": "manual",
"description": "This updated policy only applies to data sources tagged Discovered.Healthcare NPI.",
"accessGrant": "WRITE"
}],
"staged": false,
"circumstances": [{
"operator": "or",
"type": "columnTags",
"columnTag": {
"name": "Discovered.Healthcare NPI",
"displayName": "Discovered . Healthcare NPI",
"hasLeafNodes": false
}
}]
}curl \
--request GET \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
https://demo.immuta.com/activity?size=5&sortOrder=desc{
"count": 210,
"activities": [
{
"modelType": "datasource",
"modelId": "105",
"createdAt": "2021-05-04T18:39:08.712Z",
"notificationType": "modelUserDeleted",
"metadata": {
"dataSourceName": "Public Uciml Census Income Enriched",
"activity": "access",
"action": "revoked"
},
"read": false,
"id": 1255,
"updatedAt": "2021-05-04T18:39:08.712Z",
"actionBy": {
"id": 2,
"name": "John",
"email": "[email protected]"
},
"targetUser": {
"id": 2,
"name": "John",
"email": "[email protected]"
}
},
{
"modelType": "datasource",
"modelId": "106",
"createdAt": "2021-05-04T18:39:08.696Z",
"notificationType": "modelUserDeleted",
"metadata": {
"dataSourceName": "Public Fake Medical Claims 2017",
"activity": "access",
"action": "revoked"
},
"read": false,
"id": 1254,
"updatedAt": "2021-05-04T18:39:08.696Z",
"actionBy": {
"id": 2,
"name": "John",
"email": "[email protected]"
},
"targetUser": {
"id": 2,
"name": "John",
"email": "[email protected]"
}
},
{
"modelType": "datasource",
"modelId": "105",
"createdAt": "2021-05-04T18:39:08.649Z",
"notificationType": "modelDeleted",
"metadata": {
"dataSourceName": "Public Uciml Census Income Enriched",
"fields": {
"deleted": true
}
},
"read": false,
"id": 1253,
"updatedAt": "2021-05-04T18:39:08.649Z",
"actionBy": {
"id": 2,
"name": "John",
"email": "[email protected]"
},
"targetUser": {
"id": 2,
"name": "John",
"email": "[email protected]"
}
},
{
"modelType": "datasource",
"modelId": "106",
"createdAt": "2021-05-04T18:39:08.650Z",
"notificationType": "modelDeleted",
"metadata": {
"dataSourceName": "Public Fake Medical Claims 2017",
"fields": {
"deleted": true
}
},
"read": false,
"id": 1252,
"updatedAt": "2021-05-04T18:39:08.650Z",
"actionBy": {
"id": 2,
"name": "John",
"email": "[email protected]"
},
"targetUser": {
"id": 2,
"name": "John",
"email": "[email protected]"
}
},
{
"modelType": "datasource",
"modelId": "103",
"createdAt": "2021-05-04T18:39:08.555Z",
"notificationType": "modelUserDeleted",
"metadata": {
"dataSourceName": "Public Credit Transactions",
"activity": "access",
"action": "revoked"
},
"read": false,
"id": 1251,
"updatedAt": "2021-05-04T18:39:08.555Z",
"actionBy": {
"id": 2,
"name": "John",
"email": "[email protected]"
},
"targetUser": {
"id": 2,
"name": "John",
"email": "[email protected]"
}
}
],
"unread": 210,
"next": "1251_2021-05-04T18:39:08.555Z"
}curl \
--request GET \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
https://demo.immuta.com/activity/hasUnread{
"unread": false
}Once you make this request, your old Immuta API key will be deleted and will no longer be valid.
The response includes your new Immuta API key. Replace the old immuta.apikey value in the Immuta access control properties file with this new key.
curl -X 'POST' \
'https://www.organization.immuta.com/integrations' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f' \
-d '{
"type": "Trino"
}'{
"id": "123456789",
"status": "creating",
"validationResults": {
"status": "passed",
"validationTests": [ ]
}
}{
"statusCode": 422,
"error": "Unprocessable entity",
"message": "Validation of prerequisite setup failed. Unable to create integration."
}curl -X 'GET' \
'https://www.organization.immuta.com/integrations/{id}' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f'{
"id": "123456789",
"status": "enabled",
"type": "Trino",
"config": {
"apiKey": "3ea2cde7******461b02ebaa"
}
}curl -X 'GET' \
'https://www.organization.immuta.com/integrations' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f'[
{
"id": "1",
"status": "enabled",
"validationResults": {
"status": "passed",
"validationTests": [
{
"name": "Initial Validation: Basic Connection Test",
"status": "passed"
},
{
"name": "Initial Validation: Default Warehouse Access Test",
"status": "passed",
"result": []
},
{
"name": "Initial Validation: Validate access to Privileged Role",
"status": "passed",
"result": []
},
{
"name": "Validate Automatic: Database Does Not Exist",
"status": "passed"
},
{
"name": "Validate Automatic: Impersonation Role Does Not Exist",
"status": "skipped"
},
{
"name": "Validate Automatic Bootstrap User Grants",
"status": "passed"
}
]
},
"type": "Snowflake",
"autoBootstrap": true,
"config": {
"host": "organization.us-east-1.snowflakecomputing.com",
"warehouse": "SAMPLE_WAREHOUSE",
"database": "SNOWFLAKE_SAMPLE_DATA",
"port": 443,
"audit": {
"enabled": false
},
"workspaces": {
"enabled": false
},
"impersonation": {
"enabled": false
},
"lineage": {
"enabled": false
},
"authenticationType": "userPassword",
"username": "<REDACTED>",
"password": "<REDACTED>",
"role": "ACCOUNTADMIN"
}
},
{
"id": "2",
"status": "enabled",
"type": "Databricks",
"validationResults": {
"status": "passed",
"validationTests": [
{
"name": "Metastore validation",
"status": "passed"
},
{
"name": "Basic Connection Test",
"result": [
{
"1": 1
}
],
"status": "passed"
}
]
},
"autoBootstrap": true,
"config": {
"workspaceUrl": "www.example-workspace.cloud.databricks.com",
"httpPath": "sql/protocolv1/o/0/0000-00000-abc123",
"token": "REDACTED",
"audit": {
"enabled": false
},
"catalog": "immuta"
}
}
]{ "newKey": "5bb6cae9******300c21acbb" }curl -X 'DELETE' \
'https://www.organization.immuta.com/integrations/{id}' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f'{
"id": "123456789",
"status": "deleting",
"validationResults": {
"status": "passed",
"validationTests": []
}
}curl -X 'POST' \
'https://www.organization.immuta.com/integrations/{id}/regenerate' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f'Reduces complexity: The data source API has been simplified to only require the connection information in most instances and one endpoint for all database technologies.
Maintains less state: Whether updating or creating, the same endpoint is used, and the same data is passed. No ids are required, so no additional state is required.
Requires fewer steps: Only an API key is required; no additional authentication step is required before using the API.
Integrates with Git: Define data sources and policies in files that can be tracked in Git and easily pushed to Immuta. Both JSON and YAML are supported for more flexibility. (For example, use YAML to add comments in files.)
Before using the Immuta API, users need to authenticate with an API key. To generate an API key, complete the following steps in the Immuta UI.
Click your initial in the top right corner of the screen and select Profile.
Go to the API Keys tab and then click Generate Key.
Complete the required fields in the modal and click Create.
Pass the key that is provided in the Authorization header:
All of the API endpoints described below take either JSON or YAML, and the endpoint and payload are the same for both creating and updating data sources, policies, projects, and purposes.
The V2 API is built to easily enable an “as-code” approach to managing your data sources, so each time you POST data to this endpoint, you are expected to provide complete details of what you want in Immuta. The two examples below illustrate this design:
If you POST once explicitly defining a single table under sources, and then POST a second time with a different table, this will result in a single data source in Immuta pointing to the second table and the first data source will be deleted or disabled (depending on the value specified for ).
If you POST once with two tableTags specified (e.g., Tag.A and Tag.B) and do a follow-up POST with tableTags: [Tag.C], only Tag.C will exist on all of the tables specified; tags Tag.A and Tag.B
Through this endpoint, you can create or update all data sources for a given schema or database.
POST /api/v2/data
Note: See for more details about these attributes.
POST /api/v2/policy
Requirements:
Immuta permission GOVERNANCE
Note: See for payload details.
Data Policies:
POST /api/v2/project
Note: See for payload details.
POST /api/v2/purpose
Note: See for payload details.
Register in a schema by enabling . Schema monitoring will negate the need to re-call the /data endpoint when you have new tables because schema monitoring will automatically recognize and register them.
To frequently update data tags on a data source, instead of the/data endpoint.
Use the . Rather than relying on re-calling the /data endpoint after a dbt run to update your data sources, follow the dbt and transform workflow and use schema monitoring to recognize changes to your data sources and reapply policies.
The integrations API is a REST API that allows you to integrate your remote data platform with Immuta so that Immuta can manage and enforce access controls on your data.
To configure an integration using the API, you must have the APPLICATION_ADMIN Immuta permission.
There are two methods for making an authenticated request to the integrations API. Select a tab below for instructions.
Audit API reference guide
This endpoint has been deprecated and replaced by .
This page describes the audit endpoint API. The audit API allows users to programmatically search for audit records in Immuta.
circumstanceOperator (optional)
all or any Specify whether "all" of the circumstances must be met for the policy to be applied, or just "any" of them.
staged (optional)
boolean Whether or not this global policy is in a staged. status. Default: false
certification (optional)
object Certification information for the global policy.
datasources (optional)
string[] The list of data sources to add to this project.
subscriptionPolicy (optional)
object The policy for which users can subscribe to this project. Default: manual subscription policy
workspace (optional)
object If this is a workspace project, this is the workspace configuration. The project will automatically be equalized.
equalization (optional)
boolean If true, will normalize all users to the same entitlements so that everyone sees the same data. Default: false
tags (optional)
string[] Tags to add to the project.
dryRun
boolean If true, no updates will actually be made. Default: false
wait
number The number of seconds to wait for data sources to be created before returning. Anything less than 0 will wait indefinitely. Default: 0
connectionKey
string A key/name to uniquely identify this collection of data sources.
object Connection information.
object Supply a template to override naming conventions. Immuta will use the system default if not supplied.
object Override options for these sources. If not provided, system defaults will all be used.
object Specify owners for all data sources created. If an empty array is provided, all data owners (other than the calling user) will be removed from the data source. To allow for an external process (or the UI) to control data owners, if the element is completely missing from the payload, data owners will not be modified.
object Configure which sources are created. If not provided, all sources from the given connection will be created.
dryRun
boolean If true, no updates will actually be made. Default: false
reCertify
boolean If true (and if the certification has changed), someone will need to re-certify this policy on all impacted data sources. Default: false
policyKey
string A key/name to uniquely identify this policy.
name
string The name of the policy.
type
subscription or data The type of policy.
actions
object The actual rules for this policy (see examples).
ownerRestrictions (optional)
object[] Object identifying the entities to which this global policy should be restricted.
circumstances (optional)
object When this policy should get applied
dryRun
boolean If true, no updates will actually be made. Default: false
deleteDataSourcesOnWorkspaceDelete
boolean If true, will delete all data and the data sources associated with a project workspace when the workspace is deleted. Default: false
projectKey
string A key/name to uniquely identify this project.
name
string The name of the project.
description (optional)
string A short description for the project.
documentation (optional)
object Markdown-supported documentation for this project.
allowedMaskedJoins (optional)
boolean If true, will allow joining on masked columns between data sources in this project. Only certain policies allow masked join. Default: false
purposes (optional)
string[] The list of purposes to add to this project.
dryRun
boolean If true, no updates will actually be made. Default: false
reAcknowledgeRequired
boolean If true, will require all users of any projects using this purpose to re-acknowledge any updated acknowledgement statements. Default: false
name
string The name of the purpose.
description (optional)
string A short description for the purpose.
acknowledgement (optional)
string The acknowledgement that users must agree to when joining a project with this purpose. If not provided, the system default will be used.
kAnonNoiseReduction (optional)
string The level of reduction allowed when doing policy adjustments on data sources in projects with this purpose.
curl --data-binary project.yaml -H "Authorization: ${IMMUTA_API_KEY}" -H "Content-Type: text/plain" https:/<immuta-url>/api/v2/projectYou will pass this API key in the authorization header when you make a request, as illustrated in the example below:
curl \
--request GET \
--header "Content-Type: application/json" \
--header "Authorization: 846e9e43c86a4ct1be14290d95127d13f" \
https://www.organization.immuta.com/integrationsGenerate your API key on the API Keys tab on your profile page and save the API key somewhere secure.
Save your API key in a .json file.
{
"apikey": "846e9e43c86a4ct1be14290d95127d13f"
}Make the following request to the authentication endpoint:
curl \
--request POST \
--header "Content-Type: application/json" \
--data @example_payload.json \
https://www.organization.immuta.com/bim/apikey/authenticateYou will receive a response that includes your bearer token. Pass that bearer token in the Authorization header when you make a request, as illustrated in the example below:
Use the POST /integrations endpoint to configure the integration so that Immuta can enforce access controls on tables registered as Immuta data sources. See a section below for a sample request and details about configuring your integration.
Copy the request example.
Replace the values in the request with your Immuta URL and API key or bearer token.
Change the config values to your own, where
name is the name for the integration that is unique across all Amazon S3 integrations configured in Immuta.
awsAccountId is the ID of your AWS account.
awsRegion is the account's AWS region (such as us-east1).
awsLocationRole is the AWS IAM role ARN assigned to the base access grants location. This is the role the AWS Access Grants service assumes to vend credentials to the grantee.
awsLocationPath is the base S3 location prefix that Immuta will use for this connection when registering S3 data sources. This path must be unique across all S3 integrations configured in Immuta.
awsAccessKeyId is the AWS access key ID of the AWS account configuring the integration.
awsSecretAccessKey is the AWS secret access key of the AWS account configuring the integration.
For more configuration examples, see the Configure an Amazon S3 integration guide. For information about the configuration payload, see the Integration payload reference guide.
Replace the values in the request with your Immuta URL and API key or bearer token, and change the config values to your own, where
host is the URL of your Azure Synapse Analytics account.
schema is the name of the Immuta-managed schema where all your secure views will be created and stored.
database is the name of an existing database where the Immuta system user will store all Immuta-generated schemas and views.
username and password are the username and password of the system account that can act on Azure Synapse Analytics objects and configure the integration.
The example sets autoBootstrap to true, which grants Immuta one-time access to credentials to configure the resources in your Azure Synapse Analytics environment for you. If you set autoBootstrap to false, you must manually run the bootstrap script in your Azure Synapse Analytics environment yourself before making the request.
For more configuration examples, see the Configure an Azure Synapse Analytics integration guide. For information about the configuration payload, see the Integration payload reference guide.
Replace the values in the request with your Immuta URL and API key or bearer token, and change the config values to your own, where
workspaceUrl is your Databricks workspace URL.
httpPath is the HTTP path of your Databricks cluster or SQL warehouse.
token is the Databricks personal access token. This is the access token for the Immuta service principal.
catalog is the name of the Databricks catalog Immuta will create to store internal entitlements and other user data specific to Immuta. This catalog will only be readable for the Immuta service principal and should not be granted to other users. The catalog name may only contain letters, numbers, and underscores and cannot start with a number.
For more configuration examples, see the Configure a Databricks Unity Catalog integration guide. For information about the configuration payload, see the Integration payload reference guide.
Create a Google Cloud service account and role by either using the Google Cloud console or the provided Immuta script.
Copy the request example. The example uses JSON format, but the request also accepts YAML.
Replace the Immuta URL and API key with your own.
Change the config values to your own, where
role is the Google Cloud role used to connect to Google BigQuery.
datasetSuffix is the suffix to postfix to the name of each dataset created to store secure views. This string must start with an underscore.
dataset is the name of the BigQuery dataset to provision inside of the project for Immuta metadata storage.
location is the dataset's location, which can be any valid GCP location (such as us-east1
For more configuration examples, see the Configure a Google BigQuery integration guide. For information about the configuration payload, see the Integration payload reference guide.
Replace the values in the request with your Immuta URL and API key or bearer token, and change the config values to your own, where
host is the URL of your Redshift account.
database is the name of a new empty database that the Immuta system user will manage and store metadata in.
initialDatabase is the name of an existing database in Redshift that Immuta initially connects to and creates the Immuta-managed database.
authenticationType is the type of authentication to use when connecting to Redshift.
username and password are the credentials for the system account that can act on Redshift objects and configure the integration.
The example sets autoBootstrap to true, which grants Immuta one-time access to credentials to configure the resources in your Redshift environment for you. If you set autoBootstrap to false, you must manually run the bootstrap script in your Redshift environment yourself before making the request.
For more configuration examples, see the Configure a Redshift integration guide. For information about the configuration payload, see the Integration payload reference guide.
Replace the values in the request with your Immuta URL and API key or bearer token, and change the config values to your own, where
host is the URL of your Snowflake account.
warehouse is the default pool of Snowflake compute resources the Immuta system user will use to run queries and perform other Snowflake operations.
database is the name of a new empty database that the Immuta system user will manage and store metadata in.
authenticationType is the type of authentication to use when connecting to Snowflake.
username and password are the credentials for the system account that can act on Snowflake objects and configure the integration.
The example sets autoBootstrap to true, which grants Immuta one-time access to credentials to configure the resources in your Snowflake environment for you. If you set autoBootstrap to false, you must manually run the bootstrap script in your Snowflake environment yourself before making the request.
For more configuration examples, see the Configure a Snowflake integration guide. For information about the configuration payload, see the Integration payload reference guide.
Replace the values in the request with your Immuta URL and API key or bearer token.
Navigate to the Immuta App Settings page and click the Integrations tab.
Click your enabled Starburst (Trino) integration and copy the configuration snippet displayed.
Follow the steps in the configure the Immuta system access control plugin in or section to add the configuration in the appropriate immuta-access-control.properties file to finish configuring your cluster.
Map usernames and create policies before you register your metadata to ensure that policies are enforced on tables and views immediately.
Map usernames to Immuta to ensure Immuta properly enforces policies and audits user queries.
Build global policies in Immuta to enforce access controls:
Register your metadata using the API or Immuta UI:
API how-to guides
UI how-to guide:
See the following how-to guides for configuration examples and steps for creating, managing, or disabling your integration:
See the following reference guides for information about the integrations API endpoints, payloads, and responses:
GET /audit
Search for audit records.
dataSourceId
array[integer] The data source ID.
No
projectId
array[integer] The project ID.
No
profileId
array[integer] The user profile ID.
No
recordType
array[integer] The type of audit event being captured. This also corresponds to the additional information in the record field.
hits
metadata Details regarding the returned list of audits.
The following request searches for all audit records.
GET /audit/{recordId}
Retrieve a specific audit record.
recordId
string The audit record ID.
Yes
hits
metadata Details regarding the returned audit record.
The following request retrieves a specific audit record.
GET /audit/apikey/activity
Queries for the recent activity using the API key.
recordId
string The audit record ID.
Yes
value
metadata regarding the recent activity.
The following request queries for the recent activity using the API key.
GET /audit/queries/dataSource/{dataSourceId}/mine
Returns the list of the current user's distinct queries for the specified data source.
dataSourceId
array[integer] The data source ID.
Yes
offset
integer Used in combination with size to fetch pages.
No
size
integer Pages results by default; size is the number of results to return per page. Default 50
No
sortField
string Sorts results by field. Default dateTime
auditId
array[integer] The audit ID.
lastRun
integer The date and time the query was last run in Unix.
timesRun
integer The number of times the audit has been run.
name
string The name of the query.
The following request returns the list of the current user's distinct queries.
Azure Blob Storage data source API reference guide
The azureblob endpoint allows you to connect and manage Azure Blob Storage data sources in Immuta.
.
.
.
POST /azureblob/handler
Save the provided connection for an Azure Blob Storage data source.
The following request saves the provided connection information (in example-payload.json) as a data source.
GET /azureblob/handler/{handlerId}
Return the handler metadata associated with the provided handler ID.
The following request returns the handler metadata associated with the provided handler ID.
PUT /azureblob/handler/{handlerId}
Update the provided information for an Azure Blob Storage data source.
The following request with the payload below updates the metadata for the data source with the handler ID 18.
Payload example
PUT /azureblob/bulk
Update the data source metadata associated with the provided connection string.
The following request updates the autoIngest value to true for data sources with the connection string specified in the payload below.
Payload example
PUT /azureblob/handler/{handlerId}/crawl
Re-crawls the data source and updates the metadata.
The response returns a string of characters that identify the job run.
The following request re-crawls the data source.
The table below outlines the response schema for all integration configurations.
curl -X 'POST' \
'https://www.organization.immuta.com/integrations' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f' \
-d '{
"type": "Trino"
}'curl -X 'POST' \
'https://www.organization.immuta.com/integrations' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f' \
-d '{
"type": "Native S3",
"autoBootstrap": false,
"config": {
"name": "S3 integration",
"awsAccountId": "123456789",
"awsRegion": "us-east-1",
"awsLocationRole": "arn:aws:iam::123456789:role/access-grants-instance-role",
"awsLocationPath": "s3://",
"authenticationType": "accessKey",
"awsAccessKeyId": "123456789",
"awsSecretAccessKey": "123456789"
}
}'curl -X 'POST' \
'https://www.organization.immuta.com/integrations' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f' \
-d '{
"type": "Azure Synapse Analytics",
"autoBootstrap": true,
"config": {
"host": "organization.azure.com",
"schema": "immuta",
"database": "sample_database",
"username": "[email protected]",
"password": "abc1234",
"authenticationType": "userPassword"
}
}'curl -X 'POST' \
'https://www.organization.immuta.com/integrations' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f' \
-d '{
"type": "Databricks",
"autoBootstrap": true,
"config": {
"workspaceUrl": "www.example-workspace.cloud.databricks.com",
"httpPath": "sql/protocolv1/o/0/0000-00000-abc123",
"authenticationType": "token",
"token": "REDACTED",
"catalog": "immuta"
}
}'curl -X 'POST' \
'https://www.organization.immuta.com/integrations' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f' \
-d '{
"type": "Google BigQuery",
"autoBootstrap": false,
"config": {
"role": "immuta",
"datasetSuffix": "_secureView",
"dataset": "immuta",
"location": "us-east1",
"credential": "{\"type\":\"service_account\",\"project_id\":\"innate-conquest-123456\",\"private_key_id\":\"9163c12345690924f5dd218ff39\",\"private_key\":\"-----BEGIN PRIVATE KEY-----\nXXXXXXXro0s\n/yQlPQijowkccmrmWJyr93kdLnwJzBvLHCto/+W\ncvF2ygX9oM/dyUK//z//4nptMp+Ck//Yw3D4rIBwGu4DWiR1qRnf\nDoGyXfThPTQ==\n-----END PRIVATE KEY-----\n\",\"client_email\":\"service-account-id@innate-conquest-123456.iam.gserviceaccount.com\",\"client_id\":\"1166290***432952487857\",\"auth_uri\":\"https://accounts.google.com/o/oauth2/auth\",\"token_uri\":\"https://oauth2.googleapis.com/token\",\"auth_provider_x509_cert_url\":\"https://www.googleapis.com/oauth2/v1/certs\",\"client_x509_cert_url\":\"https://www.googleapis.com/robot/v1/metadata/x509/service-accound-id%40innate-conquest-123456.iam.gserviceaccount.com\",\"universe_domain\":\"googleapis.com\"}"
}
}'curl -X 'POST' \
'https://www.organization.immuta.com/integrations' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f' \
-d '{
"type": "Redshift",
"autoBootstrap": true,
"config": {
"host": "organization.aws.amazon.com",
"database": "immuta",
"initialDatabase": "REDSHIFT_SAMPLE_DATA",
"authenticationType": "userPassword",
"username": "[email protected]",
"password": "abc1234"
}
}'curl -X 'POST' \
'https://www.organization.immuta.com/integrations' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f' \
-d '{
"type": "Snowflake",
"autoBootstrap": true,
"config": {
"host": "organization.us-east-1.snowflakecomputing.com",
"warehouse": "SAMPLE_WAREHOUSE",
"database": "SNOWFLAKE_SAMPLE_DATA",
"authenticationType": "userPassword",
"username": "[email protected]",
"password": "abc1234",
"role": "ACCOUNTADMIN"
}
}'curl \
--request GET \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
https://your-immuta-url.com/audit?size=2&sortField=dateTime&sortOrder=desc{
"hits": [
{
"dateTime": "1632756753272",
"dataSourceName": null,
"projectName": null,
"recordType": "auditQuery",
"blobId": null,
"userId": "[email protected]",
"profileId": 2,
"purposeIds": null,
"success": true,
"failureReason": null,
"id": "480d9d3f-4128-445d-8eec-3cccb34f9935",
"fingerprintVersionName": null,
"email": "[email protected]"
},
{
"dateTime": "1632755783628",
"dataSourceName": null,
"projectName": null,
"recordType": "authenticate",
"blobId": null,
"userId": "[email protected]",
"profileId": 2,
"purposeIds": null,
"success": true,
"failureReason": null,
"id": "d143719b-6af9-4af3-aa99-8055be40e877",
"fingerprintVersionName": null,
"email": "[email protected]"
}
],
}curl \
--request GET \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
https://your-immuta-url.com/audit/480d9d3f-4128-445d-8eec-3cccb34f9935{
"id": "480d9d3f-4128-445d-8eec-3cccb34f9935",
"dateTime": "1632756753272",
"month": 1460,
"profileId": 2,
"userId": "[email protected]",
"dataSourceId": null,
"dataSourceName": null,
"projectId": null,
"projectName": null,
"purposeIds": null,
"policyId": null,
"policyName": null,
"fingerprintVersionId": null,
"fingerprintVersionName": null,
"count": 1,
"recordType": "auditQuery",
"success": true,
"failureReason": null,
"failureDetails": null,
"subscriptionState": null,
"accessedId": null,
"accessedIdType": null,
"accessedIamId": null,
"accessedUserId": null,
"groupAccessType": null,
"groupIamId": null,
"accessedGroupId": null,
"component": "audit",
"accessType": null,
"blobId": null,
"queryId": null,
"extra": {
"params": {
"size": 50,
"sortField": "dateTime",
"sortOrder": "desc",
"offset": 0
}
},
"dataSourceSchemaName": null,
"dataSourceTableName": null,
"featureKey": null,
"sqlUser": null,
"action": null,
"blobSize": null,
"hardDelete": null,
"keyAction": null,
"keyId": null,
"keyIamId": null,
"keyUserId": null,
"createdAt": "2021-09-27T15:32:33.274Z",
"updatedAt": "2021-09-27T15:32:33.274Z"
}curl \
--request GET \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
https://your-immuta-url.com/audit/apikey/activity?keyid=650&count=1{
"id": "480d9d3f-4128-445d-8eec-3cccb34f9935",
"dateTime": "1632756753272",
"month": 1460,
"profileId": 2,
"userId": "[email protected]",
"dataSourceId": null,
"dataSourceName": null,
"projectId": null,
"projectName": null,
"purposeIds": null,
"policyId": null,
"policyName": null,
"fingerprintVersionId": null,
"fingerprintVersionName": null,
"count": 1,
"recordType": "auditQuery",
"success": true,
"failureReason": null,
"failureDetails": null,
"subscriptionState": null,
"accessedId": null,
"accessedIdType": null,
"accessedIamId": null,
"accessedUserId": null,
"groupAccessType": null,
"groupIamId": null,
"accessedGroupId": null,
"component": "audit",
"accessType": null,
"blobId": null,
"queryId": null,
"extra": {
"params": {
"size": 50,
"sortField": "dateTime",
"sortOrder": "desc",
"offset": 0
}
},
"dataSourceSchemaName": null,
"dataSourceTableName": null,
"featureKey": null,
"sqlUser": null,
"action": null,
"blobSize": null,
"hardDelete": null,
"keyAction": null,
"keyId": null,
"keyIamId": null,
"keyUserId": null,
"createdAt": "2021-09-27T15:32:33.274Z",
"updatedAt": "2021-09-27T15:32:33.274Z"
}curl \
--request GET \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
https://your-immuta-url.com/audit/queries/dataSource/23/mine?size=10&sortField=lastrun&sortOrder=desc{
"hits": [
{
"auditId": "ff264e8e-2ccc-468f-9129-bb0995c9cdf5",
"lastrun": "1631627763345",
"timesrun": "5",
"name": "Name"
},
{
"auditId": "f722042f-f0f3-4c83-bd33-7672892d918f",
"lastrun": "1631200121550",
"timesrun": "3",
"name": null
}
],
"count": 2
}No
outcome
Array[integer]
No
minDate
timestamp The minimum date.
No
maxDate
timestamp The maximum date.
No
blobId
string The blob ID.
No
offset
integer Used in combination with size to fetch pages.
No
size
integer Pages results by default; size is the number of results to return per page. Default 50
No
sortField
string Sorts results by field. Default dateTime
No
sortOrder
string Sorts results by order, which must be asc or desc. Default desc
No
No
sortOrder
string Sorts results by order, which must be asc or desc. Default desc
No
type
string The type of data source: ingested (metadata will exist in Immuta) or queryable (metadata is dynamically queried).
Yes
name
string The name of the data source. It must be unique within the Immuta instance.
Yes
sqlTableName
string A string that represents this data source's table in Immuta.
Yes
organization
string The organization that owns the data source.
Yes
category
string The category of the data source.
No
description
string The description of the data source.
No
hasExamples
boolean When true, the data source contains examples.
No
private
boolean When false, the data source will be publicly available in the Immuta UI.
Yes
blobHandler
array[object] A list of full URLs providing the locations of all blob store handlers to use with this data source.
Yes
blobHandlerType
string Describes the type of underlying blob handler that will be used with this data source (e.g., MS SQL).
Yes
recordFormat
string The data format of blobs in the data source, such as json, xml, html, or jpeg.
id
integer The handler ID.
dataSourceId
integer The ID of the data source.
warnings
string This message describes issues with the created data source, such as the data source being unhealthy.
connectionString
string The connection string used to connect the data source to Immuta.
handlerId
integer The specific handler ID.
Yes
skipCache
boolean If true, the handler cache will be skipped when retrieving the handler data.
No
dataSourceId
integer The data source ID.
value
array Details regarding the handler, including container, accountname, sasTokenURL, ingestUserId, tagAttributes, dataSourceName, refreshInterval, eventTimeAttribute, useDirectoryForTags.
PUT
/azureblob/handler/{handlerId}
PUT
/azureblob/bulk
PUT
/azureblob/handler/{handlerId}/crawl
handlerId
integer The specific handler ID.
Yes
skipCache
boolean When true, will skip the handler cache when retrieving metadata.
No
id
integer The ID of the handler.
dataSourceId
integer The data source ID.
metadata
array Details regarding the updated information.
handler
metadata Includes metadata about the handler, such as ssl, port, database, hostname, username, and password.
Yes
connectionString
string The connection string used to connect to the data sources.
Yes
bulkId
string The ID of the bulk data source update.
connectionString
string The connection string shared by the data sources bulk updated.
jobsCreated
integer The number of jobs that ran to update the data sources; this number corresponds to the number of data sources updated.
HandlerId
integer The specific handler ID.
Yes
Yes
curl \
--request POST \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
--data @example-payload.json \
https://your-immuta-url.com/azureblob/handler{
"handler": {
"metadata": {
"tagAttributes": [],
"eventTimeAttribute": "",
"useDirectoryForTags": false,
"sasToken": "?sv=your=sas?token",
"sasTokenUrl": "https://your.blob.example.windows.net/sastoken-url",
"container": "demodata"
}
},
"dataSource": {
"blobHandler": {
"scheme": "https",
"url": ""
},
"blobHandlerType": "Azure Blob Storage",
"recordFormat": "",
"type": "ingested",
"name": "dev",
"sqlTableName": "dev"
}
}{
"id": 18,
"dataSourceId": 18
}curl \
--request GET \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
https://your-immuta-url.com/azureblob/handler/67{
"dataSourceId": 427,
"metadata": {
"container": "integration",
"accountName": "integration-tests",
"sasTokenUrl": "https://your.blob.example.windows.net/",
"ingestUserId": "azure blob storage_indexer_example",
"tagAttributes": [],
"dataSourceName": "Test",
"refreshInterval": 0,
"eventTimeAttribute": "",
"useDirectoryForTags": false
},
"type": "azureBlobStorageHandler",
"connectionString": "integration-tests/integration",
"id": 427,
"createdAt": "2021-09-22T18:45:47.744Z",
"updatedAt": "2021-09-22T18:45:47.969Z"
}curl \
--request PUT \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
--data @example-payload.json \
https://your-immuta-url.com/azureblob/handler/18{
"dataSourceId": 18,
"metadata": {
"container": "testdata",
"accountName": "integration-tests",
"sasTokenUrl": "https://your.blob.example.windows.net/",
"ingestUserId": "azure blob storage_indexer_example",
"tagAttributes": [],
"dataSourceName": "dev",
"refreshInterval": 0,
"eventTimeAttribute": "",
"useDirectoryForTags": false
},
"type": "azureBlobStorageHandler",
"connectionString": "your/testdata",
"id": 18,
"createdAt": "2021-09-23T18:47:52.976Z",
"updatedAt": "2021-09-23T18:47:53.194Z"
}{
"id": 18,
"dataSourceId": 18,
"metadata": {
"sasToken": "2:your?sastoken==",
"container": "testdata",
"accountName": "your-account-name",
"sasTokenUrl": "2:your?sastokenurlTS",
"ingestAPIKey": "996samplee89c1apia7ckey9",
"ingestUserId": "azure blob storage_indexer_example",
"tagAttributes": [],
"dataSourceName": "dev",
"refreshInterval": 0,
"eventTimeAttribute": "",
"useDirectoryForTags": false
}
}curl \
--request PUT \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
--data @example-payload.json \
https://your-immuta-url.com/azureblob/bulk{
"ids": [
5, 6
],
"connectionString": "integration-tests/integration",
"handler": {
"metadata": {
"autoIngest": true
}
}
}{
"bulkId": "bulk_ds_update_dd2600809bf8418dbea2706d6f456636",
"connectionString": "integration-tests/integration",
"jobsCreated": 0
}curl \
--request PUT \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
https://your-immuta-url.com/azureblob/hanfler/427/crawla4de5af0-1be1-11ec-8131-6fe77107bfa9credential is the Google BigQuery service account JSON keyfile credential content. See the Google documentation for guidance on generating and downloading this keyfile.
curl \
--request GET \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
https://demo.immuta.com/integrationsThe status property in the response schema shows the status of the integration. The table below provides definitions for each status and the state of the integration configuration.
createError
Error occurred during creation of the integration.
In use
creating
Integration is in the process of being created and set up.
In use
deleted
Integration is deleted.
Not in use
deleteError
Error occurred while deleting the integration. The integration has been rolled back to the previous state.
In use
The validationResults object provides details about the status of each test Immuta runs to validate the integration configuration.
status string
Whether or not the connection validation passed.
passed
failed
warning
validationTests array[]
This array includes the validation tests run on the integration connection.
-
validationTests.name string
The name of the validation test.
See the section corresponding to your integration type for a list of test names and messages:
validationTests.status string
The status of the validation test.
The table below provides the errors and messages for validation tests that fail when configuring or updating the integration.
There is no existing integration matching this configuration
Verifies that the integration configuration does not match an existing one.
-
The provided integration name is unique across Immuta S3 integrations
Verifies that the name of the integration does not match an existing S3 integration name.
"The Immuta service account does not end with expected value."
The provided access grants location role is a valid ARN format
Verifies that the access grants location role is in the correct format.
"The specified access grants location role is not a valid ARN format."
The provided AWS credentials allow fetching the caller's identity via the AWS STS API
Verifies that the integration can use the AWS STS API to get the caller's identity using the provided credentials.
The table below provides the errors and messages for validation tests that fail when configuring or updating the integration.
Initial validation: connect
Verifies that Immuta can connect to Azure Synapse Analytics.
"Unable to connect to host."
Initial validation: delimiters test
Verifies that the delimiters are unique.
"Hash delimiter and array delimiter must not have the same value."
Validate automatic: impersonation role does not exist
Verifies that the user impersonation role specified in the request payload does not already exist.
"Impersonation role already exists. If this role can be safely dropped please do so and try again. Alternatively, specify a different role name."
Validate Immuta system user can manage database
Verifies that the specified user can manage the database.
The table below provides the errors and messages for validation tests that fail when configuring or updating the integration.
Basic connection test
Verifies that Immuta can connect to Databricks Unity Catalog.
"Could not connect to host, please confirm you are using valid connection parameters."
Manual catalog setup
Verifies that the catalog and tables used by Immuta are present and have the correct permissions. This test is run when autoBootstrap is false in the Databricks Unity Catalog integration configuration.
"Encountered an error looking up catalog metadata for catalog."
Metastore validation
Verifies that the Unity Catalog metastore is assigned to the specified workspace.
"No metastore is assigned to workspace."
The table below provides the errors and messages for validation tests that fail when configuring or updating the integration.
Basic validation: connection can be made to BigQuery
Verifies that Immuta can connect to Google BigQuery.
"Could not connect to the remote BigQuery connection."
Basic validation: Immuta service account postfix
Verifies that the service account ends with the expected value of @<projectId>.iam.gserviceaccount.com.
"The Immuta service account does not end with expected value."
Basic validation: non-matching service account in key file
Verifies that the service account matches the one provided in the keyfile.
"The service account does not match the service account in the provided key file."
Basic validation: verify service account not being used for data source connection credentials
Verifies that credentials that have been used to create Google BigQuery data sources are not the same credentials used to configure the Google BigQuery integration.
The table below provides the errors and messages for validation tests that fail when configuring or updating the integration.
Initial validation: basic connection test
Verifies that Immuta can connect to Redshift.
"Unable to connect to host."
Validate automatic: database does not exist
Verifies that the database specified in the request payload does not already exist.
"The database already exists. If this database can be safely dropped, please do so and try again. Alternatively, specify a different database name."
Validate automatic: impersonation role does not exist
Verifies that the user impersonation role specified in the request payload does not already exist.
"Impersonation role already exists. If this role can be safely dropped please do so and try again. Alternatively, specify a different role name."
The table below provides the errors and messages for validation tests that fail when configuring or updating the integration.
Initial validation: basic connection test
Verifies that Immuta can connect to the Snowflake database.
"Unable to connect to host."
Initial validation: default warehouse access test
Verifies that the default warehouse exists and that the Immuta system account user has permissions to act on the default warehouse specified.
"Unable to access default warehouse. If this was a manual installation, ensure that the user has been granted usage on the specified warehouse."
Initial validation: table grants role prefix is unique
Verifies that the prefix for Snowflake table grants does not already exist. If this prefix already exists, navigate to the Integration Settings section on the Immuta app settings page to .
"The Snowflake table grants role prefix IMMUTA is used by another Immuta instance connected to the same Snowflake host. Please update the table grants role prefix for this Immuta instance and try again."
Initial validation: validate access to privileged role
Verifies that the privileged role exists and that it has been assigned to the Immuta system account user.
id number
The unique identifier of the integration.
The status of the integration. Statuses include createError, creating, deleteError, deleting, editError, editing, enabled, migrateError, and migrating. See the statuses table below for descriptions.
The results of the validation tests. See the object description for details.
config object
The integration configuration. See the integration configuration payload for Amazon S3, Azure Synapse Analytics, Databricks Unity Catalog, Google BigQuery, Redshift, or Snowflake for details.
The parameters for manually granting write access to a data source without using a policy are outlined in the table below.
The parameters for creating a global write policy are outlined in the table below.
The actions array specifies the policy access type and restriction level. Its child parameters are outlined in the table below.
The circumstances object specifies the conditions under which the policy applies to a data source. Its child parameters are outlined in the table below.
Admin API reference guide
This page outlines the admin endpoint, which allows you to manage and review licenses in Immuta.
.
.
.
.
POST /admin/license
Add a license key to the Immuta tenant to increase the number of seats or enable features.
Required Immuta permission: APPLICATION_ADMIN
This example request adds a license key (saved in the example-payload.json file) to the Immuta tenant.
GET /admin/license
Get a list of all license keys.
Required Immuta permission: APPLICATION_ADMIN
This example request gets the license key for the https://www.organization.immuta.com Immuta tenant.
GET /admin/license/licenseStatus
Get the status of a license key's features and seat capacity.
This example request gets the number of seats and active users for the license key associated with the https://www.organization.immuta.com Immuta tenant.
GET /admin/license/usage
Get the license usage summary. This endpoint returns a summary of the number of active and inactive users and a list of users.
Required Immuta permission: APPLICATION_ADMIN
This request gets the license usage for 5 users in the https://www.organization.immuta.com Immuta tenant.
DELETE /admin/license/{licenseId}
Delete the specified license key.
Required Immuta permission: APPLICATION_ADMIN
This example request deletes the license key with the ID 1.
This page describes how to update policies using the Policy Handler API.
POST
/policy/handler
The create policy handler endpoint must be a .
The update policy handler endpoint must be a .
dataSourceId (integer): ID of the data source the policy will be applied to.
Example: 1
jsonRules (array[object]): Array of JSON rules objects.
The jsonRules array contains rules objects. The following types of policy rules are supported:
Not all combination of policy rules are valid. The examples below are supported policy rule combinations:
Prerequisite, Visibility, Masking
Prerequisite, Masking, Minimization
Prerequisite policies are used to limit usage to one or more purposes.
type (string): Policy rule type. Must be prerequisite for prerequisite policy rules.
Example: "prerequisite"
operator (string
Example:
In this example, users will only have access to data from this data source when they are acting under the purpose named Purpose Name.
Visibility policies are used to enforce row-level security.
type (string): Policy rule type. Must be visibility for row-level security policy rules.
Example: "visibility"
operator (string
Note: When adding conditions to a visibility policy rule, the field is required, and the condition value should be left empty. For example, for a group policy condition, the group name is not specified.
The user must possess the group, attribute, or purpose that matches the value stored in the field.
Example:
In this example, users will only see rows when they have an authorization that matches the value in the field department and they belong to a group that matches the value in the field organization.
Masking policy rules will mask the value in one or more columns.
type (string): Policy rule type. Must be masking for masking policy rules.
Example: "masking"
fields (array[string]
Note: When adding conditions to a masking policy rule, the field will be left blank, and the condition value should be populated.
When using a masking rule, there is an additional field that needs to be sent in the in the policyHandler.maskingConfiguration array field.
name (string): Name of the field being masked.
Example: "social"
type (string): Type of masking to apply. Supported values are "Consistent Value"
Consistent value
constant (string|null): Constant value to mask to. If this field is not defined, the value will be hashed.
Example: "REDACTED"
Regular expression
regex (string): Regex to match against when masking columns.
Example: "[0-9]{3}-[0-9]{2}"
replacement (string): String used to replace the matched regex.
Grouping
bucketSize (integer): For number fields. Size of buckets to round numbers to.
Example: 100
timePrecision (string): For time fields. Time precision to round to. Possible values: "MIN"
Example policy handler update with masking configuration metadata:
Example:
In this example, the fields email and location will be masked unless the user belongs to the group admins.
Minimization policy rules will show a limited percentage of the data, based on a high cardinality column, for everyone unless the user fulfills the policy conditions.
type (string): Policy rule type. Must be additional for minimization policy rules.
Example: "additional"
name (string
Note: When adding conditions to a minimization policy rule the field will be left blank.
When using a minimization rule, there is an additional field that needs to be sent in the in the policyHandler.additionalFilters.minimization field.
percent (integer): Percentage of the data to show to the users. This percentage will be based off of unique values in the hashPhrase column.
Example: 50
hashPhrase
Example policy handler rule:
In this example, 50 percent of the data, based on the name field, will be visible to users unless they fulfill the policy conditions.
Example data source update (partial):
Time-based rules will make a limited portion of the data available based on event time. The data source must contain an event time column in order for this policy type to be valid. For instance, users who do not fulfill the policy conditions will only see data from within the defined time window.
type (string): Policy rule type. Must be additional for minimization policy rules.
Example: "additional"
name (string
Note: When adding conditions to a time based policy rule the field will be left blank.
When using a time based rule, there is an additional field that needs to be sent in the in the policyHandler.additionalFilters field.
time (integer): Age in seconds of the oldest data a user will be allowed to see. This counts backward from the present.
Example: 14400
Example policy handler rule:
In this example, only data from the last 4 hours will be visible to users unless they fulfill the policy conditions.
Example data source update (partial):
There are three types of policy conditions:
The group policy condition restricts access to the condition when a user is a member of a group.
type (string): Type of policy condition. Must be "groups" for the group policy condition.
Example: "groups"
group (object
Example:
name (string): Name of group user must belong to in order to satisfy the policy condition.
Example: "users"
iam (string): ID of the IAM containing the group.
The attribute policy condition restricts access to the condition when a user possesses an attribute.
type (string): Type of policy condition. Must be "authorizations" for the attribute policy condition.
Example: "authorizations"
authorization (
Example:
auth (string): Name of attribute to check for attribute value.
Example: "accesses"
value (string): Value of attribute user must possess in order to satisfy the policy condition.
The purpose policy condition restricts access to the condition when a user is acting under a purpose.
type (string): Type of policy condition. Must be "purposes" for the purpose policy condition.
Example: "purpopses"
value (string
Example:
seats
integer The number of user seats available.
createdAt
timestamp The date the license key was generated.
notice
string This notice appears on the login page.
noticeOnExpire
string This notice appears on the login page after the license expires.
createdAt
timestamp The date the license key was generated.
notice
string This notice appears on the login page.
noticeOnExpire
string This notice appears on the login page after the license expires.
users.active
boolean If true, the user is active. This is determined by whether Immuta has tracked any activity by the user in the last year.
summary
object The summary of license usage that covers all users, not just the subset returned by a call to this endpoint.
summary.dataConsumers
array Includes a summary of the dataConsumers type.
summary.dataConsumers.totalCount
integer The total number of users of this type known to Immuta.
summary.dataConsumers.activeCount
integer The number of active data consumers known to Immuta, determined by whether Immuta has tracked any activity by the user in the last year. Minimum value is 0.
summary.dataConsumers.inactiveCount
integer The number of inactive data consumers known to Immuta, determined by whether Immuta has tracked any activity by the user in the last year. Minimum value is 0.
summary.policyOwners
object Includes a summary of the policyOwners type.
summary.policyOwners.totalCount
integer The total number of users of this type known to Immuta.
deleted
boolean If true, the license key has been deleted.
features
array The features included in the license.
handlers
array The data handlers included in the license.
hardExpiration
boolean When true, all data access is blocked when the license expires.
notice
string This notice appears on the login page.
noticeOnExpire
string This notice appears on the login page after the license expires.
createdAt
timestamp The date the license key was generated.
updatedAt
timestamp The date the license key was deleted.
hardDelete
boolean If true, the license key cannot be re-added after it is deleted.
expired
boolean If true, the license has expired.
licenseKey
string The license key, as a payload.
Yes
licenseKey
string The license key.
id
integer The ID of the license.
uuid
string The unique universal identifier.
features
array The features included in the license.
handlers
array The data handlers included in the license.
expires
timestamp The date the license expires.
GET
/admin/license
GET
/admin/license/licenseStatus
id
integer The ID of the license.
uuid
string The unique universal identifier.
features
array The features included in the license.
handlers
array The data handlers included in the license.
expires
timestamp The date the license expires.
seats
integer The number of user seats available.
activeUserCount
integer The number of active users in the Immuta tenant.
licenseSeats
integer The total number of seats available in the license.
canAddUser
boolean When true, the administrator can add user accounts to the Immuta tenant.
hardSeats
integer The number of licensed seats available.
offset
integer The start index of the records to return. You can combine the offset and size parameters to return a specific set of user records. For example, to return the second and third user records in the response, you would set offset=1 and size=2. The default start index is 0.
No
size
integer The number of user records to return. The default size is 10.
No
users
array[] An array of user records.
users.userType
string The type of user. Value can be dataConsumer or policyOwner.
users.name
string The name of the user.
users.email
string The user's email address.
users.iamid
string The IAM the user belongs to.
users.userid
string The user's username.
licenseId
integer The ID of the license key you want to delete.
Yes
id
integer The license key ID.
licenseKey
string The license key.
seats
integer The number of seats in the license.
softSeats
integer The number of users that can be added beyond seats without access being blocked.
expires
timestamp The date the license expires.
uuid
string The unique universal identifier.
Example: See defining policy rules
Example: "or"
conditions (array[object]): Conditions to be applied for the rule. Multiple values will be evaluated according to the operator.
Example: See purpose condition object
Example: "or"
conditions (array[object]): Conditions to be applied for the rule. Multiple values will be evaluated according to the operator.
Example: See policy conditions
Example: ["email", "location"]
operator (string): Operator to be applied on conditions. Possible values: and, or.
Example: "or"
conditions (array[object]): Conditions to be applied for the rule. Multiple values will be evaluated according to the operator.
Example: See policy conditions
"Grouping""Regular Expression"Example: "Consistent Value"
metadata (object): Extra metadata used when masking the value.
Example: See masking configuration metadata
Example: "xxx-xx"
"HOUR""DAY""WEEK""MONTH""YEAR"Example: "HOUR"
minimizationExample: "minimization"
operator (string): Operator to be applied on conditions. Possible values: and, or.
Example: "or"
conditions (array[object]): Conditions to be applied for the rule. Multiple values will be evaluated according to the operator.
Example: See policy conditions
Example: "name"
timeExample: "time"
operator (string): Operator to be applied on conditions. Possible values: and, or.
Example: "or"
conditions (array[object]): Conditions to be applied for the rule. Multiple values will be evaluated according to the operator.
Example: See policy conditions
Example: See group object
field (string): Data field to match group name against when checking policy.
Example: "department"
Example: "active_directory"
Example: See group object
field (string): Data field to match attribute value against when checking policy.
Example: "department"
Example: "PII"
iam (string): ID of the IAM user must receive the attribute from.
Example: "active_directory"
Example: "Purpose"
field (string): Data field to match purpose name against when checking policy.
Example: "department"
200
PUT
/policy/handler
200
curl \
--request POST \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8"
--data @example-payload.json \
https://www.organization.immuta.com/admin/license{
"licensekey": "licensekey0123456789abcdefghijklstring"
}{
"id": 1,
"licenseKey": "licensekey0123456789abcdefghijklstring",
"seats": 20,
"softSeats": 0,
"expires": "2022-09-09T00:00:00.000Z",
"uuid": "4ceaf808-the-u-u--id4a753fc5a",
"deleted": false,
"invalidated": false,
"features": {
"FPE": {
"enabled": true
}
},
"handlers": {},
"hardExpiration": false,
"renewalToken": null,
"notice": null,
"noticeOnExpire": null,
"classifyUsername": null,
"classifyToken": null,
"createdAt": "2021-09-09T13:47:02.473Z",
"updatedAt": "2021-10-07T17:55:54.806Z",
"expired": false
}curl \
--request GET \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
https://www.organization.immuta.com/admin/license[
{
"id": 1,
"uuid": "4cthe808-uniq-uec9-univ-ersal753fcid",
"features": {
"FPE": {
"enabled": true
}
},
"handlers": {},
"expires": "2022-09-09T00:00:00.000Z",
"seats": 20,
"createdAt": "2021-09-09T13:47:02.473Z",
"notice": null,
"noticeOnExpire": null
}
]curl \
--request GET \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
https://www.organization.immuta.com/admin/license/licenseStatus{
"activeUserCount": 1,
"licenseSeats": 20,
"canAddUser": true,
"hardSeats": 20
}curl \
--request GET \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
https://www.organization.immuta.com/admin/license/usage?offset=0&size=5{
"summary": {
"dataConsumers": {
"totalCount": 25,
"activeCount": 10,
"inactiveCount": 25
},
"policyOwners": {
"totalCount": 1
}
},
"users": [{
"userType": "policyOwner",
"name": "Kris",
"email": "[email protected]",
"userid": "[email protected]",
"iamid": "bim"
},
{
"userType": "dataConsumer",
"active": true,
"name": "Taylor",
"email": "[email protected]",
"userid": "[email protected]",
"iamid": "AzureOIDC"
},
{
"userType": "dataConsumer",
"active": true,
"name": "Deepu",
"email": "[email protected]",
"userid": "[email protected]",
"iamid": "AzureSAML"
},
{
"userType": "dataConsumer",
"active": false,
"name": "Marc",
"email": "[email protected]",
"userid": "[email protected]",
"iamid": "OIDC"
},
{
"userType": "dataConsumer",
"active": true,
"name": "Mandeep",
"email": "[email protected]",
"userid": "[email protected]",
"iamid": "SAML"
}
]
}curl \
--request GET \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
https://www.organization.immuta.com/admin/license/1{
"id": 1,
"licenseKey": "<your-license-key>",
"seats": 20,
"softSeats": 0,
"expires": "2022-09-09T00:00:00.000Z",
"uuid": "4cthe808-uniq-uec9-univ-ersal753fcid",
"deleted": true,
"invalidated": false,
"features": {
"FPE": {
"enabled": true
}
},
"handlers": {},
"hardExpiration": false,
"notice": null,
"noticeOnExpire": null,
"createdAt": "2021-09-09T13:47:02.473Z",
"updatedAt": "2021-09-13T16:53:39.280Z",
"hardDelete": false,
"expired": false
}{
"type": "prerequisite",
"operator": "or",
"conditions": [{
"type": "purposes",
"value": "Purpose Name"
}]
}{
"type": "groups",
"field": "organization",
"group": {
"iam": "active_directory"
}
}{
"type": "visibility",
"operator": "and",
"conditions": [{
"type": "authorizations",
"field": "department",
"authorization": {
"auth": "accesses",
"iam": "active_directory"
}
}, {
"type": "groups",
"field": "organization",
"group": {
"iam": "active_directory"
}
}]
}{
"type": "groups",
"group": {
"name": "users",
"iam": "active_directory"
}{
"policyHandler": {
"maskingConfiguration": [{
"type": "Consistent Value",
"name": "age",
"metadata": {
"constant": "REDACTED"
}
}]
}
}{
"type":"masking",
"fields": ["email", "location"],
"operator":"or",
"conditions":[{
"type":"groups",
"group":{
"name":"admins",
"iam":"active_directory"
}
}]
}{
"type": "groups",
"group": {
"name": "users",
"iam": "active_directory"
}{
"type": "additional",
"name": "minimization",
"operator": "or",
"conditions": {
"type":"groups",
"group":{
"name":"admins",
"iam":"active_directory"
}
}
}{
"policyHandler": {
"additionalFilters": {
"minimization": {
"percent": 50,
"hashPhrase": "name"
}
}
}
}{
"type": "groups",
"group": {
"name": "users",
"iam": "active_directory"
}{
"type": "additional",
"name": "time",
"operator": "or",
"conditions": {
"type":"groups",
"group":{
"name":"admins",
"iam":"active_directory"
}
}
}{
"policyHandler": {
"additionalFilters": {
"time": 14400
}
}
}{
"type": "groups",
"group": {
"name": "users",
"iam": "active_directory"
},
"field": "department"
}{
"type": "authorizations",
"authorization": {
"auth": "accesses",
"value": "PII",
"iam": "active_directory"
},
"field": "department"
}{
"type": "purposes",
"value": "Purpose",
"field": "department"
}template boolean
Specifies whether or not the policy should be available as a template.
Optional
false
true
false
Specifies the policy access type and restriction level. See the for details.
Required
-
staged boolean
When true, the policy is not active or applied to any data sources.
Required
-
true
false
This object specifies the conditions under which the policy applies to a data source. Set the value to null to enforce the policy only when it is applied by data owners. Do not include this object in your payload to apply the policy to all data sources. See the for additional parameters and details.
Optional
By default, the policy applies to all data sources.
-
description string
The description of the policy.
Optional
null
-
subscriptionType string
The restriction level of the subscription policy.
Required
-
approval: Users are granted access when approved by a specified user
automatic: Anyone is granted access
manual: Individually selected users are granted access
columnRegex object
This object indicates that the policy should apply to data sources with column names that match the regular expression. Its child parameters are outlined below.
Required when type is columnRegex.
-
-
columnRegex.regex string
A regular expression that matches names of columns.
Required when type is columnRegex.
-
-
columnRegex.caseInsensitive boolean
When true, the regular expression is case insensitive.
Optional
false
true
false
columnTag object
This object specifies the column tags required for the policy to apply to the data source. Child parameters are outlined below.
Required if type is columnTags.
-
-
columnTag.name string
The name of the tag.
Required if type is columnTags
-
-
columnTag.displayName string
The display name of the tag.
Optional
-
-
columnTag.hasLeafNodes boolean
When true, the tag applied has child tags.
Optional
-
-
server string
The server that contains the data sources the policy should be applied to.
Required when type is server.
-
-
startDate string
Applies the policy to data sources created on or after this startDate and before the endDate (if the endDate is specified).
Required when type is time.
-
-
endDate string
Applies the policy to data sources created on or before this endDate and after the startDate.
Optional
null
-
deleted boolean
When true, the policy has been deleted.
id integer
The unique identifier of the policy.
type string
The type of policy. For write access policies, the type is subscription.
name string
The name of the policy.
template boolean
Specifies whether or not the policy is available as a template.
certification object
The certification object only applies to data policies, not write access policies.
actions array[]
Specifies the policy access type and restriction level.
actions.type string
The type of policy. For write access policies, the type is subscription.
actions.accessGrant string
The type of access the user is granted. For write access policies, actions.accessGrant is WRITE.
actions.description string
The description of the policy.
actions.allowDiscovery boolean
When true, users can still see that the data source exists in Immuta, even if they do not have the attributes and groups specified by the policy.
actions.subscriptionType string
The restriction level of the subscription policy.
actions.shareResponsibility boolean
When true, users need to meet the conditions in this policy OR another share responsibility policy that applies to the data source. This parameter is not applicable to policies with actions.subscriptionType with a value of manual.
actions.automaticSubscription boolean
When true, users will automatically be subscribed to the data source when they meet the conditions specified in the policy. This parameter is not applicable to policies with actions.subscriptionType with a value of manual.
staged boolean
When true, the policy is staged and not active on any data sources.
circumstances array[]
Specifies the conditions under which the policy applies to a data source. See the for child parameters.
denialReasoning string
If the user was denied access to the data source, this field contains the reason entered by the owner who denied access.
profile integer
The unique identifier of the user who has been granted write access.
group string
The name of the group that has been granted write access, when applicable.
policy boolean
When true, the access has been granted by a policy on the data source.
expiration string
The date the user's access expires.
acknowledgeRequired boolean
When true, the users must manually request access to the data source.
createdAt string
The date and time the user's access to the data source was granted.
updatedAt string
The date and time the user's access to the data source was updated.
accessGrant string
The type of access the user has to the data source: READ or WRITE.
approved boolean
When true, the user's access to the data source has been approved.
profileId integer
The unique identifier of the user to whom you are granting write access.
Required
-
-
state string
The user's role on the data source.
Required
-
expert
owner
subscribed
accessGrant string
The type of access to grant the user.
Required
-
READ
WRITE
type string
The type of policy to create.
Required
-
subscription
name string
The name of the policy.
Required
-
-
type string
The type of policy. For write access policies, the type is subscription.
Required
-
data
subscription
accessGrant string
The type of access the user is granted.
Required
-
WRITE
operator string
Specifies how to combine the conditions of the policy.
Required
-
and
or
type string
The type of condition under which to apply the policy.
Required
-
anyTag
columnRegex
columnTags
noTags
server
tags
time
policyKey string
The unique name of the policy.
createdBy integer
The unique identifier of the user who created the policy.
createdByName string
The username of the user who created the policy.
createdAt string
The date the policy was created.
clonedFrom integer
The unique identifier of the policy that the new policy was cloned from.
systemGenerated boolean
Indicates whether or not the policy is system-generated.
isSubscriptionOverride boolean
When true, the user was manually granted write access by a data owner instead of being granted access by a policy on the data source.
id integer
The unique identifier of the user's subscription to the data source.
modelId integer
The unique identifier of the data source.
modelType string
The type of model the subscription policy applies to. For write policies, modelType is dataSource.
state string
The type of role the user has, such as expert, owner, or subscribed.
admin integer
The unique identifier of the user who granted write access to the data source subscriber.
skippeddeleting
Integration is in the process of being disabled or deleted.
In use
disabled
Integration was force disabled and no cleanup was performed on the remote platform.
Not in use
editError
Error occurred while editing the integration. The integration has been rolled back to the previous state.
In use
editing
The integration is in the process of being edited.
In use
enabled
The integration is enabled and active.
In use
migrateError
Error occurred while performing a migration of the integration. The integration has been rolled back to the previous state.
In use
migrating
Migration is being performed on the integration. An example of a migration is a stored procedure update.
In use
recurringValidationError
Validation has failed during the periodic check and the integration may be misconfigured.
In use
passed
failed
warning
skipped
validationTests.message string
When a test fails, the message provides context and guidance for addressing the failure.
See the section corresponding to your integration type for a list of test names and messages:
"Found user ID [], ARN [] using STS."
An AWS Access Grants instance is configured in the provided AWS account and region
Verifies that an Access Grants instance has been created in the specified AWS account and region.
"AccessDenied: Unable to retrieve the access grants instance for account, region: AWS responded with code [403], name [AccessDenied] and message [Access Denied] for request ID []."
The provided S3 path exists and Immuta can list prefixes
Verifies that Immuta can access and list prefixes for the provided S3 path.
"Immuta does not have access to the requested path [s3://]. Without access, Immuta will be unable to assist with S3 path discovery during data source creation."
An AWS Access Grants location does not yet exist for the provided path
Verifies that an Access Grants location has not already been registered for the specified S3 path.
"AccessDenied: Unable to list S3 access grants locations for account [], location scope []: AWS responded with code [403], name [AccessDenied] and message [Access Denied] for request ID []."
"User does not have permission to manage database."
"BigQuery doesn't support the reuse of service accounts for integrations that are currently being used for data sources."
Validate manual: [dataset - create]
Verifies that the custom role assigned to the service account has the permissions to create the dataset.
Message includes a permission warning.
Validate manual: [dataset - delete]
Verifies that the custom role assigned to the service account has the permissions to delete the Immuta-managed dataset.
Message includes a permission warning.
Initialize validation: [dataset - exists]
Verifies that this dataset does not already exist.
"An existing Immuta instance exists. Delete this dataset to continue."
Validate manual: [table - create]
Verifies that the custom role assigned to the service account has the permissions to create Immuta-managed tables.
Message includes a permission warning.
Validate manual: [table - delete]
Verifies that the custom role assigned to the service account has the permissions to delete Immuta-managed tables.
Message includes a permission warning.
Validate manual: [table - get]
Verifies that the custom role assigned to the service account has the permissions to get Immuta-managed tables.
Message includes a permission warning.
Validate manual: [table - insert]
Verifies that the custom role assigned to the service account has the permissions to insert rows in Immuta-managed tables.
Message includes a permission warning.
Validate manual: [table - update]
Verifies that the custom role assigned to the service account has the permissions to update Immuta-managed tables.
Message includes a permission warning.
"User does not have access to the privileged role."
Validate automatic bootstrap user grants
Verifies the credentials of the user executing the Immuta bootstrap script in Snowflake.
-
Validate automatic: database does not exist
Verifies that the database specified in the request payload does not already exist.
"The database already exists. If this database can be safely dropped, please do so and try again. Alternatively, specify a different database name."
Validate automatic: impersonation role does not exist
Verifies that the user impersonation role specified in the request payload does not already exist.
"Impersonation role already exists. If this role can be safely dropped please do so and try again. Alternatively, specify a different role name."
GET
Get pending access requests the calling user can approve.
GET
Get pending request information for specified model and requesting user (or specified entity).
GET /subscription/getPendingRequestsForUser
Get pending access requests the calling user can approve.
groupByEntity
boolean If true, group request results by user/group.
No
profileId
integer Match against profile ID.
No
groupId
integer Match against group ID.
No
name
string A partial name to match against user or group names.
hits
array Metadata details regarding the access requests.
count
integer The number of access requests.
The following request gets pending access requests the calling user can approve.
GET /subscription/requestInfo/{modelType}/{modelId}
Get pending request information for specified model and requesting user (or specified entity).
modelType
string The model that a pending request is out for. Options are datasource or project.
Yes
modelId
integer The data source or project ID.
Yes
profileId
integer A user ID if you want to get pending requests for another user.
No
groupId
integer A group ID if you want to get pending requests for a whole group.
records
array Details about each of the pending access requests, including subscriptionId, requiredPermission, state, approverId, ownerModelId, approver, and ownerModelName.
The following request gets pending access requests for the data source with the ID 6 for the current user.
POST
Approve specified access requests.
POST
Bulk approve access requests.
POST /subscription/approve
Approve specified access requests.
id
integer The subscription ID of the request to approve.
Yes
expiration
date The date to expire this user's access.
No
id
integer If the request fails, the response includes the ID of the access request.
model
array[object] If the request fails, the response includes details about the data source or project.
entity
array[object] If the request fails, the response includes details about the user making the subscription request.
The following request approves the subscription request.
POST /subscription/approve/bulk
Bulk approve access requests.
requestIds
integer A list of the access request IDs to be approved. If requestIds is provided, jobs will only be created for the IDs listed. Otherwise, the id and type values will be used to find and create jobs for all approval requests.
Yes
id
integer The ID for the type. If requestIds is provided, jobs will only be created for the IDs listed. Otherwise, the id and type values will be used to find and create jobs for all approval requests.
Yes
type
string The type of ID: profile. If requestIds is provided, jobs will only be created for the IDs listed. Otherwise, the id and type values will be used to find and create jobs for all approval requests.
Yes
success
boolean If true, all of the access requests have been successfully approved.
The following request approves all of the subscription requests.
POST
Deny specified access requests.
POST
Bulk deny access requests.
POST /subscription/deny
Deny specified access requests.
id
integer The subscription ID of the request to deny.
Yes
denialReasoning
string The reason the user is denied access to the data source or project.
Yes
id
integer If the request fails, the response includes the ID of the access request.
model
array[object] If the request fails, the response includes details about the data source or project.
entity
array[object] If the request fails, the response includes details about the user making the subscription request.
The following request denies the subscription request.
POST /subscription/deny/bulk
Bulk deny access requests.
requestIds
integer A list of the access request IDs to be approved. If requestIds is provided, jobs will only be created for the IDs listed. Otherwise, the id and type values will be used to find and create jobs for all denial requests.
Yes
id
integer The ID for the type you select. If requestIds is provided, jobs will only be created for the IDs listed. Otherwise, the id and type values will be used to find and create jobs for all denial requests.
Yes
type
string The type of ID: profile. If requestIds is provided, jobs will only be created for the IDs listed. Otherwise, the id and type values will be used to find and create jobs for all denial requests.
Yes
denialReasoning
string The reason that you are denying the access requests.
success
boolean If true, all of the access requests have been successfully denied.
The following request with the payload below denies the subscription requests with the IDs 40 and 41.
The Google BigQuery resource allows you to create, configure, and manage your Google BigQuery integration. In this integration, Immuta generates policy-enforced views in your configured Google BigQuery dataset for tables registered as Immuta data sources.
Use the /integrations endpoint to
APPLICATION_ADMIN Immuta permission
Google BigQuery integration enabled in Immuta (work with your Immuta representative to enable this integration)
To execute the Immuta script from your command line to , you must be authenticated to the gcloud CLI utility as a user with all of the following roles:
by either using the Google Cloud console or the provided Immuta script.
Copy the request example. The example uses JSON format, but the request also accepts YAML.
Replace the Immuta URL and with your own.
Change the config values to your own, where
role is the Google Cloud role used to connect to Google BigQuery.
See the for parameter definitions, value types, and additional configuration options.
The response returns the status of the Google BigQuery integration configuration connection. See the for details about the response schema.
A successful response includes the validation tests statuses.
An unsuccessful request returns the status code and an error message. See the for a list of statuses, error messages, and troubleshooting guidance.
Copy the request example.
Replace the Immuta URL and with your own.
Replace the {id} request parameter with the unique identifier of the integration you want to get. Alternatively, you can get a list of all integrations and their IDs with the .
The response returns a Google BigQuery integration configuration. See the for details about the response schema. An unsuccessful response returns the status code and an error message. See the for a list of statuses, error messages, and troubleshooting guidance.
Copy the request example.
Replace the Immuta URL and with your own.
The response returns the configuration for all integrations. See the for details about the response schema. An unsuccessful request returns the status code and an error message. See the for a list of statuses, error messages, and troubleshooting guidance.
Copy the request example, which updates the private key. The example uses JSON format, but the request also accepts YAML.
Replace the Immuta URL and with your own.
Replace the {id} request parameter with the unique identifier of the integration you want to update.
Change the config values to your own, where
See the for parameter definitions, value types, and additional configuration options.
The response returns the status of the Google BigQuery integration configuration connection. See the for details about the response schema.
A successful response includes the validation tests statuses.
An unsuccessful request returns the status code and an error message. See the for a list of statuses, error messages, and troubleshooting guidance.
Copy the request example.
Replace the Immuta URL and with your own.
Replace the {id} request parameter with the unique identifier of the integration you want to delete.
The response returns the status of the Google BigQuery integration configuration that has been deleted. See the for details about the response schema. An unsuccessful request returns the status code and an error message. See the for a list of statuses, error messages, and troubleshooting guidance.
Sample data is processed during computation of k-anonymization policies
When a k-anonymization policy is applied to a data source, the columns targeted by the policy are queried under a fingerprinting process that generates rules enforcing k-anonymity. The results of this query, which may contain data that is subject to regulatory constraints such as GDPR or HIPAA, are stored in Immuta's metadata database.
The location of the metadata database depends on your deployment:
Self-managed Immuta deployment: The metadata database is located in the server where you have your external metadata database deployed.
SaaS Immuta deployment: The metadata database is located in the AWS global segment you have chosen to deploy Immuta.
To ensure this process does not violate your organization's data localization regulations, you need to first activate this masking policy type before you can use it in your Immuta tenant. To enable k-anonymization for your account, see the .
Sample data is processed during computation of k-anonymization policies
When a k-anonymization policy is applied to a data source, the columns targeted by the policy are queried under a fingerprinting process that generates rules enforcing k-anonymity. The results of this query, which may contain data that is subject to regulatory constraints such as GDPR or HIPAA, are stored in Immuta's metadata database.
The location of the metadata database depends on your deployment:
Self-managed Immuta deployment: The metadata database is located in the server where you have your external metadata database deployed.
SaaS Immuta deployment: The metadata database is located in the AWS global segment you have chosen to deploy Immuta.
To ensure this process does not violate your organization's data localization regulations, you need to first activate this masking policy type before you can use it in your Immuta tenant. To enable k-anonymization for your account, see the .
Sample data is processed during computation of k-anonymization policies
When a k-anonymization policy is applied to a data source, the columns targeted by the policy are queried under a fingerprinting process that generates rules enforcing k-anonymity. The results of this query, which may contain data that is subject to regulatory constraints such as GDPR or HIPAA, are stored in Immuta's metadata database.
The location of the metadata database depends on your deployment:
Self-managed Immuta deployment: The metadata database is located in the server where you have your external metadata database deployed.
SaaS Immuta deployment: The metadata database is located in the AWS global segment you have chosen to deploy Immuta.
To ensure this process does not violate your organization's data localization regulations, you need to first activate this masking policy type before you can use it in your Immuta tenant. To enable k-anonymization for your account, see the .
curl \
--request POST \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
https://your-immuta-url.com/subscription/getPendingRequestsForUser?size=15&sortOrder=asc{
"hits": [
{
"id": 652,
"createdAt": "2021-10-14T14:25:16.509Z",
"metadata": {},
"model": {
"type": "datasource",
"id": 544,
"name": "Gp Toolkit Gp Is Append Only"
},
"entity": {
"type": "profile",
"id": 2,
"name": "First Last",
"email": "[email protected]"
},
"approvals": [
{
"requiredPermission": "OWNER",
"state": "pending",
"approverId": null,
"ownerModelId": null,
"approver": null,
"ownerModelName": null
}
]
}
],
"count": 1
}curl -X 'GET' \
'https://demo.immuta.com/subscription/requestInfo/datasource/6' \
-H 'accept: application/json' \
-H 'Authorization: Bearer 2533855fddf14b688df4483a30e7d57f'{
"records": [
{
"subscriptionId": 36,
"requiredPermission": "OWNER",
"state": "pending",
"approverId": null,
"ownerModelId": null,
"approver": null,
"ownerModelName": null
}
]
}curl \
--request POST \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
--data @example-payload.json \
https://your-immuta-url.com/subscription/approve{
"requests": [
{
"id": 652,
"expiration": "2021-10-14"
}
]
}{
"failures": []
}curl \
--request POST \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
--data @example-payload.json \
https://your-immuta-url.com/subscription/approve/bulk{
"id": 4,
"type": "profile"
}{
"success": true
}curl \
--request POST \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
--data @example-payload.json \
https://your-immuta-url.com/subscription/deny{
"requests": [
{
"id": 652,
"denialReasoning": "testdenial"
}
]
}{
"failures": []
}curl \
--request POST \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
--data @example-payload.json \
https://your-immuta-url.com/subscription/deny/bulk{
"requestIds": [
40,
41
],
"denialReasoning": "The users do not have the right attributes."
}{
"success": true
}name: Anyone
policyKey: subscription anyone
type: subscription
actions:
type: anyone
automaticSubscription: false
description: Rationale
circumstances:
- type: tags
tag: Discoveredpolicy: Users with specified entitlements are granted access
No
string A partial email address to match against user or group email addresses.
No
modelName
string A partial name to match against model names.
No
modelTypes
array[string] Model types to include.
No
size
integer The max number of matches to return. Default 15.
No
sortField
string The field to sort results on. Defaults to name.
No
sortOrder
string The order that the results will be sorted in. Default asc.
No
offset
integer Offset to start returning values.
No
No
Yes
name: Approval
policyKey: subscription approval
type: subscription
actions:
type: approval
approvals:
- specificApproverRequired: false
requiredPermission: OWNER
- specificApproverRequired: true
requiredPermission: GOVERNANCE
description: Rationale
circumstances:
- type: columnTags
columnTag: Discoveredname: Entitlement
policyKey: subscription entitlements
type: subscription
actions:
type: entitlements
entitlements:
operator: any
groups:
- Employee
attributes:
- name: auth1
value: SOMETHING_ELSE
automaticSubscription: true
allowDiscovery: false
description: Some description here
circumstances:
- type: columnRegex
regex: ssn
caseInsensitive: false
staged: falsename: Advanced Entitlement
policyKey: subscription entitlements advanced boolean
type: subscription
actions:
type: entitlements
advanced: "@isInGroups('Engineers', 'Founders'') AND @hasAttribute('Auth1', 'Super Secret')"
automaticSubscription: true
allowDiscovery: false
description: Some description here
circumstances:
- type: columnRegex
regex: ssn
caseInsensitive: false
staged: falsename: Manual
policyKey: subscription manual
type: subscription
actions:
type: manual
description: Rationalename: Owner Restricted Policy
policyKey: data owner restriction
type: data
ownerRestrictions:
users:
- iamid: bim
username: [email protected]
groups:
- engineers
actions:
- rules:
- type: Masking
config:
fields:
- type: columnTags
columnTag: Discovered.Passport
maskingConfig:
type: Hash
circumstances:
- type: columnTags
columnTag: Discovered.Passportname: Conditional Masking
policyKey: data conditional masking
type: data
actions:
- rules:
- type: Masking
config:
fields:
- type: columnTags
columnTag: Discovered.Passport
conditionalPredicate: "@columnTagged('Discovered.Country') = 'USA'"
maskingConfig:
type: Hash
circumstanceOperator: all
circumstances:
- type: columnTags
columnTag: Discovered.Passport
- type: columnTags
columnTag: Discovered.Countryname: Conditional
policyKey: data mask otherwise
type: data
actions:
- rules:
- type: Masking
config:
fields:
- type: columnTags
columnTag: Discovered.Country
maskingConfig:
type: "Null"
inclusions:
groups:
- Employee
- type: Masking
exceptions:
purposes:
- Re-identification Prohibited
config:
fields:
- type: columnTags
columnTag: Discovered.Country
maskingConfig:
type: Hash
circumstances:
- type: columnTags
columnTag: Discovered.Countryname: Mask with Constant
policyKey: data mask constant
type: data
actions:
- rules:
- type: Masking
exceptions:
operator: any
attributes:
- name: auth
value: SOMETHING_ELSE
- name: auth1
value: super secret
config:
fields:
- type: columnTags
columnTag: Discovered.Country
- type: columnTags
columnTag: Discovered.Passport
maskingConfig:
type: Constant
constant: REDACTED
circumstanceOperator: any
circumstances:
- type: columnTags
columnTag: Discovered.Country
- type: columnTags
columnTag: Discovered.Passportname: Format Preserving Masking
policyKey: data mask fpe
type: data
actions:
- rules:
- type: Masking
config:
fields:
- type: columnTags
columnTag: Discovered
maskingConfig:
type: Format Preserving Masking
circumstances:
- type: columnTags
columnTag: Discoveredname: Hashing
policyKey: data mask hashing
type: data
actions:
- rules:
- type: Masking
config:
fields:
- type: noTags
maskingConfig:
type: Hash
circumstances:
- type: noTagsname: K-Anonymization Using Fingerprint on any tags
policyKey: masking kanon using fingerprint
type: data
actions:
- rules:
- type: Masking
config:
fields:
- type: anyTag
maskingConfig:
type: K-Anonymization
circumstances:
- type: anyTagname: K-Anonymization using kLevel
policyKey: data mask kanon specifying k
type: data
actions:
- rules:
- type: Masking
config:
fields:
- type: anyTag
maskingConfig:
type: K-Anonymization
kLevel: 5
circumstances:
- type: anyTagname: K-Anonymization using reIdProbability
policyKey: data mask kanon specifying re-id
type: data
actions:
- rules:
- type: Masking
config:
fields:
- type: anyTag
maskingConfig:
type: K-Anonymization
reIdProbability: 15
circumstances:
- type: anyTagname: Null using column regex
policyKey: data mask null
type: data
actions:
- rules:
- type: Masking
config:
fields:
- type: columnRegex
regex: ssn
caseInsensitive: true
maskingConfig:
type: "Null"
circumstances:
- type: columnRegex
regex: ssn
caseInsensitive: truename: Random Categorical
policyKey: data mask random response
type: data
actions:
- rules:
- type: Masking
config:
fields:
- type: allColumns
maskingConfig:
type: Randomized Response
replacementRatePercent: 10name: Random Numeric
policyKey: data mask random response specifying stddev
type: data
actions:
- rules:
- type: Masking
config:
fields:
- type: allColumns
maskingConfig:
type: Randomized Response
stddev: 2
clip: falsename: Regex
policyKey: data mask regex
type: data
actions:
- rules:
- type: Masking
config:
fields:
- type: columnTags
columnTag: Discovered.Entity.Postal Code
maskingConfig:
type: Regular Expression
regex: "(\\d{4})(\\d)"
replacement: "$1X"
caseInsensitive: true
global: true
circumstances:
- type: columnTags
columnTag: Discovered.Entity.Postal Codename: Mask using Reversible
policyKey: data mask reversible
type: data
actions:
- rules:
- type: Masking
config:
fields:
- type: columnTags
columnTag: Discovered.Entity.Social Security Number
maskingConfig:
type: Reversible
exceptions:
groups:
- founders
circumstances:
- type: columnTags
columnTag: Discovered.Entity.Social Security Numbername: RoundingDate
policyKey: data mask rounding by date
type: data
actions:
- rules:
- type: Masking
exceptions:
config:
fields:
- type: columnTags
columnTag: Discovered.Entity.Date
maskingConfig:
type: Grouping
timePrecision: MONTH
circumstances:
- type: columnTags
columnTag: Discovered.Entity.Datename: RoundingFingerprint
policyKey: data mask round using fingerprint
type: data
actions:
- rules:
- type: Masking
config:
fields:
- type: columnTags
columnTag: Discovered.Entity.Date
maskingConfig:
type: Grouping
circumstances:
- type: columnTags
columnTag: Discovered.Entity.Datename: RoundingNumeric
policyKey: data mask round numeric
type: data
actions:
- rules:
- type: Masking
config:
fields:
- type: columnTags
columnTag: Discovered.Entity.Date
maskingConfig:
type: Grouping
bucketSize: 10
circumstances:
- type: columnTags
columnTag: Discovered.Entity.Datename: Minimize
policyKey: data minimize
type: data
actions:
- rules:
- type: Minimization
config:
percent: 15
circumstances:
- type: time
startDate: '2020-12-01T16:23:54.734Z'
endDate: '2020-12-31T16:23:54.745Z'name: Purpose
policyKey: data purpose restriction
type: data
actions:
- rules:
- type: Purpose Restriction
config:
operator: any
purposes:
- "<ANY PURPOSE>"name: Purpose in a specific server
policyKey: data server circumstance
type: data
actions:
- rules:
- type: Purpose Restriction
config:
purposes:
- Re-identification Prohibited
circumstances:
- type: server
server: [email protected]:5432/tpcname: Row Level By Time
policyKey: data row-level
type: data
actions:
- rules:
- type: Time Restriction
config:
isOlderOrNewer: newer
time: 2592000
circumstances:
- type: tags
tag: Discovered.PCIname: Row Level Where User
policyKey: data where user
type: data
actions:
- rules:
- type: Row Restriction By User Entitlements
config:
operator: all
matches:
type: group
tag: Discovered.Entity
circumstanceOperator: ANY
circumstances:
- type: columnTags
columnTag: Discovered.Entityname: Row Level Where
policyKey: data custom where
type: data
actions:
- rules:
- type: Row Restriction by Custom Where Clause
config:
predicate: "@columnTagged('Discovered.Country') in ('USA', 'CANADA', 'MEXICO')"
circumstances:
- type: tags
tag: Discovered.Countryname: Multiple
policyKey: data multiple
type: data
actions:
- rules:
- type: Masking
config:
fields:
- type: columnTags
columnTag: Discovered.Passport
maskingConfig:
type: Hash
description: 'Passport Rule'
- rules:
- type: Minimization
config:
percent: 25
description: 'Passport Rule, also'
- rules:
- type: Masking
config:
fields:
- type: columnTags
columnTag: Discovered.Healthcare NPI
maskingConfig:
type: "Null"
description: 'Healthcare NPI Rule'
circumstanceOperator: any
circumstances:
- type: columnTags
columnTag: Discovered.Passport
- type: columnTags
columnTag: Discovered.Person Nameroles/iam.roleAdminroles/iam.serviceAccountAdmin
roles/serviceusage.serviceUsageAdmin
datasetSuffix is the suffix to postfix to the name of each dataset created to store secure views. This string must start with an underscore.
dataset is the name of the BigQuery dataset to provision inside of the project for Immuta metadata storage.
location is the dataset's location, which can be any valid GCP location (such as us-east1).
credential is the Google BigQuery service account JSON keyfile credential content. See the Google documentation for guidance on generating and downloading this keyfile.
role is the Google Cloud role used to connect to Google BigQuery.
datasetSuffix is the suffix to postfix to the name of each dataset created to store secure views. This string must start with an underscore.
dataset is the name of the BigQuery dataset to provision inside of the project for Immuta metadata storage.
location is the dataset's location, which can be any valid GCP location (such as us-east1).
credential is the Google BigQuery service account JSON keyfile credential content. See the for guidance on generating and downloading this keyfile.
POST
/dictionary/{dataSourceId}
.
PUT
/dictionary/{dataSourceId}
.
POST /dictionary/{dataSourceId}
Create the dictionary for the specified data source.
dataSourceId
integer The ID of the data source that will contain the data dictionary.
Yes
body
array[object] Data dictionary metadata, including column names, data types, description and tags.
Yes
metadata
array[string] Metadata for each column in the dictionary.
Yes
metadata.name
string The name of the column.
Yes
metadata.dataType
string The type of data in the column.
Yes
metadata.remoteType
string The type of data in the remote column.
createdAt
timestamp When the object was created.
dataSource
integer The ID of the data source the dictionary is associated with.
id
integer The ID of the dictionary object.
metadata
array[string] Metadata for the individual fields in the dictionary, including name, dataType, and remoteType.
types
array[string] A list of all data types the dictionary contains, such as text, integer, json, or timestamp with time zone.
The following request creates a data dictionary (saved in example-payload.json) for the data source with ID 1.
Payload example
Other status codes returned include:
400
Bad request: (detailed reason).
401
A valid Authorization token must be provided.
403
User must have one of the following roles to delete dictionary: owner,expert.
404
Data source not found.
PUT /dictionary/{dataSourceId}
Update the dictionary for the specified data source.
dataSourceId
integer The ID of the data source that will contain the data dictionary.
Yes
body
array[object] Data dictionary metadata, including column names, data types, description and tags.
Yes
metadata
array[string] Metadata for each column in the dictionary.
Yes
metadata.name
string The name of the column.
Yes
metadata.dataType
string The type of data in the column.
Yes
metadata.remoteType
string The type of data in the remote column.
createdAt
timestamp When the object was created.
dataSource
integer The ID of the data source the dictionary is associated with.
id
integer The ID of the dictionary object.
metadata
array[string] Metadata for the individual fields in the dictionary, including name, dataType, and remoteType.
types
array[string] A list of all data types the dictionary contains, such as text, integer, json, or timestamp with time zone.
The request below updates the data dictionary for the data source with the ID 1.
Payload example
Other status codes returned include
400
Bad request: (detailed reason).
401
A valid Authorization token must be provided.
403
User must have one of the following roles to delete dictionary: owner,expert.
404
Data source not found.
GET
/dictionary/{dataSourceId}
.
GET
/dictionary/columns
.
GET /dictionary/{dataSourceId}
Get the dictionary for the specified data source.
dataSourceId
integer The ID of the data source that contains the data dictionary.
Yes
createdAt
timestamp When the object was created.
dataSource
integer The ID of the data source the dictionary is associated with.
id
integer The ID of the dictionary object.
metadata
array[string] Metadata for the individual fields in the dictionary, including name, dataType, and remoteType.
types
array[string] A list of all data types the dictionary contains, such as text, integer, json, or timestamp with time zone.
The request below gets the data dictionary for the data source with the ID 1.
GET /dictionary/columns
Search across all dictionary columns.
searchText
string A string used to filter returned columns. The query is executed with a wildcard prefix and suffix.
No
limit
integer The maximum number of search results that will be returned. Default is 10.
No
columnName
string The name of the column.
The following request searches for columns in all dictionaries that contain the text address in their name, with a limit of 10 results.
DELETE /dictionary/{dataSourceId}
Delete the data dictionary for the specified data source.
dataSourceId
integer The ID of the data source.
Yes
The request below deletes the data dictionary for the data source with ID 1.
This endpoint returns {} on success.
Other status codes returned include
401
A valid Authorization token must be provided.
403
User must have one of the following roles to delete dictionary: owner,expert.
404
Data source not found.
curl -X 'POST' \
'https://www.organization.immuta.com/integrations' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f' \
-d '{
"type": "Google BigQuery",
"autoBootstrap": false,
"config": {
"role": "immuta",
"datasetSuffix": "_secureView",
"dataset": "immuta",
"location": "us-east1",
"credential": "{\"type\":\"service_account\",\"project_id\":\"innate-conquest-123456\",\"private_key_id\":\"9163c12345690924f5dd218ff39\",\"private_key\":\"-----BEGIN PRIVATE KEY-----\nXXXXXXXro0s\n/yQlPQijowkccmrmWJyr93kdLnwJzBvLHCto/+W\ncvF2ygX9oM/dyUK//z//4nptMp+Ck//Yw3D4rIBwGu4DWiR1qRnf\nDoGyXfThPTQ==\n-----END PRIVATE KEY-----\n\",\"client_email\":\"service-account-id@innate-conquest-123456.iam.gserviceaccount.com\",\"client_id\":\"1166290***432952487857\",\"auth_uri\":\"https://accounts.google.com/o/oauth2/auth\",\"token_uri\":\"https://oauth2.googleapis.com/token\",\"auth_provider_x509_cert_url\":\"https://www.googleapis.com/oauth2/v1/certs\",\"client_x509_cert_url\":\"https://www.googleapis.com/robot/v1/metadata/x509/service-accound-id%40innate-conquest-123456.iam.gserviceaccount.com\",\"universe_domain\":\"googleapis.com\"}"
}
}'{
"id": "123456789",
"status": "creating",
"validationResults": {
"status": "passed",
"validationTests": [
{
"name": "Basic Validation: Verify service account not being used for data source connection credentials",
"status": "passed"
},
{
"name": "Basic Validation: Immuta Service Account postfix",
"status": "passed"
},
{
"name": "Basic Validation: Non-matching service account in key file",
"status": "passed"
},
{
"name": "Basic Validation: Connection can be made to BigQuery",
"status": "passed"
},
{
"name": "Initialize Validation: [Dataset - exists] innate-conquest-123456.immuta",
"status": "passed"
},
{
"name": "Validate Manual: [Dataset - create] innate-conquest-123456.IMMUTA_VERIFY_DATASET_144",
"status": "passed"
},
{
"name": "Validate Manual: [Table - create] innate-conquest-123456.IMMUTA_VERIFY_DATASET_144.IMMUTA_VERIFY_TABLE",
"status": "passed"
},
{
"name": "Validate Manual: [Table - insert] innate-conquest-123456.IMMUTA_VERIFY_DATASET_144.IMMUTA_VERIFY_TABLE",
"status": "warning",
"message": "Billing has not been enabled for this project. Enable billing at https://console.cloud.google.com/billing. DML queries are not allowed in the free tier. Set up a billing account to remove this restriction.. Confirm that the bootstrap script was executed without any modifications. This warning will not prevent the connection but continue at your own risk as some features may not function."
},
{
"name": "Validate Manual: [Table - get] innate-conquest-123456.IMMUTA_VERIFY_DATASET_144.IMMUTA_VERIFY_TABLE (After insert)",
"status": "skipped"
},
{
"name": "Validate Manual: [Table - update] innate-conquest-123456.IMMUTA_VERIFY_DATASET_144.IMMUTA_VERIFY_TABLE",
"status": "skipped"
},
{
"name": "Validate Manual: [Table - get] innate-conquest-123456.IMMUTA_VERIFY_DATASET_144.IMMUTA_VERIFY_TABLE (After update)",
"status": "skipped"
},
{
"name": "Validate Manual: [Table - delete] innate-conquest-123456.IMMUTA_VERIFY_DATASET_144.IMMUTA_VERIFY_TABLE",
"status": "passed"
},
{
"name": "Validate Manual: [Dataset - delete] innate-conquest-123456.IMMUTA_VERIFY_DATASET_144",
"status": "passed"
}
]
}
}{
"statusCode": 409,
"error": "Conflict",
"message": "Google BigQuery integration already exists on host organization.cloud.google.com (id = 123456789)"
}curl -X 'GET' \
'https://www.organization.immuta.com/integrations/{id}' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f'{
"id": "123456789",
"status": "enabled",
"validationResults": {
"status": "passed",
"validationTests": [
{
"name": "Basic Validation: Verify service account not being used for data source connection credentials",
"status": "passed"
},
{
"name": "Basic Validation: Immuta Service Account postfix",
"status": "passed"
},
{
"name": "Basic Validation: Non-matching service account in key file",
"status": "passed"
},
{
"name": "Basic Validation: Connection can be made to BigQuery",
"status": "passed"
},
{
"name": "Initialize Validation: [Dataset - exists] innate-conquest-123456.immuta",
"status": "passed"
},
{
"name": "Validate Manual: [Dataset - create] innate-conquest-123456.IMMUTA_VERIFY_DATASET_144",
"status": "passed"
},
{
"name": "Validate Manual: [Table - create] innate-conquest-123456.IMMUTA_VERIFY_DATASET_144.IMMUTA_VERIFY_TABLE",
"status": "passed"
},
{
"name": "Validate Manual: [Table - insert] innate-conquest-123456.IMMUTA_VERIFY_DATASET_144.IMMUTA_VERIFY_TABLE",
"status": "warning",
"message": "Billing has not been enabled for this project. Enable billing at https://console.cloud.google.com/billing. DML queries are not allowed in the free tier. Set up a billing account to remove this restriction.. Confirm that the bootstrap script was executed without any modifications. This warning will not prevent the connection but continue at your own risk as some features may not function."
},
{
"name": "Validate Manual: [Table - get] innate-conquest-123456.IMMUTA_VERIFY_DATASET_144.IMMUTA_VERIFY_TABLE (After insert)",
"status": "skipped"
},
{
"name": "Validate Manual: [Table - update] innate-conquest-123456.IMMUTA_VERIFY_DATASET_144.IMMUTA_VERIFY_TABLE",
"status": "skipped"
},
{
"name": "Validate Manual: [Table - get] innate-conquest-123456.IMMUTA_VERIFY_DATASET_144.IMMUTA_VERIFY_TABLE (After update)",
"status": "skipped"
},
{
"name": "Validate Manual: [Table - delete] innate-conquest-123456.IMMUTA_VERIFY_DATASET_144.IMMUTA_VERIFY_TABLE",
"status": "passed"
},
{
"name": "Validate Manual: [Dataset - delete] innate-conquest-123456.IMMUTA_VERIFY_DATASET_144",
"status": "passed"
}
]
},
"type": "Google BigQuery",
"autoBootstrap": false,
"config": {
"port": 443,
"role": "immuta",
"datasetSuffix": "_secureView",
"dataset": "immuta",
"location": "us-east1",
"credential": {
"type": "service_account",
"project_id": "innate-conquest-123456",
"private_key_id": "9163c12345690924f5dd218ff39",
"private_key": "-----BEGIN PRIVATE KEY-----\nXXXXXXXro0s\n/yQlPQijowkccmrmWJyr93kdLnwJzBvLHCto/+W\ncvF2ygX9oM/dyUK//z\//4nptMp+Ck//Yw3D4rIBwGu4DWiR1qRnf\nDoGyXfThPTQ==\n-----END PRIVATE KEY-----\n",
"client_email": "service-account-id@innate-conquest-123456.iam.gserviceaccount.com",
"client_id": "1166290***432952487857",
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
"token_uri": "https://oauth2.googleapis.com/token",
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
"client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/service-accound-id%40innate-conquest-123456.iam.gserviceaccount.com",
"universe_domain": "googleapis.com"
}
}
}curl -X 'GET' \
'https://www.organization.immuta.com/integrations' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f'[
{
"id": "1",
"status": "enabled",
"validationResults": {
"status": "passed",
"validationTests": [
{
"name": "Initial Validation: Basic Connection Test",
"status": "passed"
},
{
"name": "Initial Validation: Default Warehouse Access Test",
"status": "passed",
"result": []
},
{
"name": "Initial Validation: Validate access to Privileged Role",
"status": "passed",
"result": []
},
{
"name": "Validate Automatic: Database Does Not Exist",
"status": "passed"
},
{
"name": "Validate Automatic: Impersonation Role Does Not Exist",
"status": "skipped"
},
{
"name": "Validate Automatic Bootstrap User Grants",
"status": "passed"
}
]
},
"type": "Snowflake",
"autoBootstrap": true,
"config": {
"host": "organization.us-east-1.snowflakecomputing.com",
"warehouse": "SAMPLE_WAREHOUSE",
"database": "SNOWFLAKE_SAMPLE_DATA",
"port": 443,
"audit": {
"enabled": false
},
"workspaces": {
"enabled": false
},
"impersonation": {
"enabled": false
},
"lineage": {
"enabled": false
},
"authenticationType": "userPassword",
"username": "<REDACTED>",
"password": "<REDACTED>",
"role": "ACCOUNTADMIN"
}
},
{
"id": "2",
"status": "enabled",
"type": "Databricks",
"validationResults": {
"status": "passed",
"validationTests": [
{
"name": "Metastore validation",
"status": "passed"
},
{
"name": "Basic Connection Test",
"result": [
{
"1": 1
}
],
"status": "passed"
}
]
},
"autoBootstrap": true,
"config": {
"workspaceUrl": "www.example-workspace.cloud.databricks.com",
"httpPath": "sql/protocolv1/o/0/0000-00000-abc123",
"token": "REDACTED",
"audit": {
"enabled": false
},
"catalog": "immuta"
}
}
]curl -X 'PUT' \
'https://www.organization.immuta.com/integrations/{id}' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f' \
-d '{
"type": "Google BigQuery",
"autoBootstrap": false,
"config": {
"role": "immuta",
"datasetSuffix": "_secureView",
"dataset": "immuta",
"location": "us-east1",
"credential": "{\"type\":\"service_account\",\"project_id\":\"innate-conquest-123456\",\"private_key_id\":\"9163c12345690924f5dd218ff39\",\"private_key\":\"-----BEGIN PRIVATE KEY-----\nXXXXXXXro0s\n/yQlPQijowkccmrmWJyr93kdLnwJzBvLHCto/+W\ncvF2ygX9oM/dyUK//z//4nptMp+Ck//Yw3D4rIBwGu4DWiR1qRnf\nDoGyXfThPTQ==\n-----END PRIVATE KEY-----\n\",\"client_email\":\"service-account-id@innate-conquest-123456.iam.gserviceaccount.com\",\"client_id\":\"1166290***432952487857\",\"auth_uri\":\"https://accounts.google.com/o/oauth2/auth\",\"token_uri\":\"https://oauth2.googleapis.com/token\",\"auth_provider_x509_cert_url\":\"https://www.googleapis.com/oauth2/v1/certs\",\"client_x509_cert_url\":\"https://www.googleapis.com/robot/v1/metadata/x509/service-accound-id%40innate-conquest-123456.iam.gserviceaccount.com\",\"universe_domain\":\"googleapis.com\"}"
}
}'{
"id": "123456789",
"status": "editing",
"validationResults": {
"status": "passed",
"validationTests": [
{
"name": "Basic Validation: Verify service account not being used for data source connection credentials",
"status": "passed"
},
{
"name": "Basic Validation: Immuta Service Account postfix",
"status": "passed"
},
{
"name": "Basic Validation: Non-matching service account in key file",
"status": "passed"
},
{
"name": "Basic Validation: Connection can be made to BigQuery",
"status": "passed"
},
{
"name": "Initialize Validation: [Dataset - exists] innate-conquest-123456.immuta",
"status": "passed"
},
{
"name": "Validate Manual: [Dataset - create] innate-conquest-123456.IMMUTA_VERIFY_DATASET_144",
"status": "passed"
},
{
"name": "Validate Manual: [Table - create] innate-conquest-123456.IMMUTA_VERIFY_DATASET_144.IMMUTA_VERIFY_TABLE",
"status": "passed"
},
{
"name": "Validate Manual: [Table - insert] innate-conquest-123456.IMMUTA_VERIFY_DATASET_144.IMMUTA_VERIFY_TABLE",
"status": "warning",
"message": "Billing has not been enabled for this project. Enable billing at https://console.cloud.google.com/billing. DML queries are not allowed in the free tier. Set up a billing account to remove this restriction.. Confirm that the bootstrap script was executed without any modifications. This warning will not prevent the connection but continue at your own risk as some features may not function."
},
{
"name": "Validate Manual: [Table - get] innate-conquest-123456.IMMUTA_VERIFY_DATASET_144.IMMUTA_VERIFY_TABLE (After insert)",
"status": "skipped"
},
{
"name": "Validate Manual: [Table - update] innate-conquest-123456.IMMUTA_VERIFY_DATASET_144.IMMUTA_VERIFY_TABLE",
"status": "skipped"
},
{
"name": "Validate Manual: [Table - get] innate-conquest-123456.IMMUTA_VERIFY_DATASET_144.IMMUTA_VERIFY_TABLE (After update)",
"status": "skipped"
},
{
"name": "Validate Manual: [Table - delete] innate-conquest-123456.IMMUTA_VERIFY_DATASET_144.IMMUTA_VERIFY_TABLE",
"status": "passed"
},
{
"name": "Validate Manual: [Dataset - delete] innate-conquest-123456.IMMUTA_VERIFY_DATASET_144",
"status": "passed"
}
]
}
}{
"statusCode": 409,
"error": "Conflict",
"message": "Unable to edit integration with ID 123456789 in current state editing."
}curl -X 'DELETE' \
'https://www.organization.immuta.com/integrations/{id}' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f'{
"id": "123456789",
"status": "deleting",
"validationResults": {
"status": "passed",
"validationTests": [
{
"name": "Basic Validation: Verify service account not being used for data source connection credentials",
"status": "passed"
},
{
"name": "Basic Validation: Immuta Service Account postfix",
"status": "passed"
},
{
"name": "Basic Validation: Non-matching service account in key file",
"status": "passed"
},
{
"name": "Basic Validation: Connection can be made to BigQuery",
"status": "passed"
}
]
}
}curl \
--request POST \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
--header "Content-Type: application/json" \
--data @example-payload.json \
https://demo.immuta.com/dictionary/1{
"metadata": [
{
"name": "notificationType",
"dataType": "text",
"remoteType": "text"
},
{
"name": "actionBy",
"dataType": "text",
"remoteType": "integer"
},
{
"name": "targetUser",
"dataType": "integer",
"remoteType": "integer"
},
{
"name": "metadata",
"dataType": "json",
"remoteType": "json"
},
{
"name": "id",
"dataType": "integer",
"remoteType": "integer"
},
{
"name": "notifyInitiator",
"dataType": "text",
"remoteType": "boolean"
},
{
"name": "eventTime",
"dataType": "timestamp with time zone",
"remoteType": "timestamp with time zone"
}
]
}{
"createdAt": "2018-03-21T10:52:30.535Z",
"dataSource": 1,
"id": 1,
"metadata": [
{
"name": "notificationType",
"dataType": "text",
"remoteType": "text"
},
{
"name": "actionBy",
"dataType": "text",
"remoteType": "integer"
},
{
"name": "targetUser",
"dataType": "integer",
"remoteType": "integer"
},
{
"name": "metadata",
"dataType": "json",
"remoteType": "json"
},
{
"name": "id",
"dataType": "integer",
"remoteType": "integer"
},
{
"name": "notifyInitiator",
"dataType": "text",
"remoteType": "boolean"
},
{
"name": "eventTime",
"dataType": "timestamp with time zone",
"remoteType": "timestamp with time zone"
}
],
"types": [
"text",
"integer",
"json",
"timestamp with time zone"
],
"updatedAt": "2018-03-21T12:18:25.531Z"
}curl \
--request PUT \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
--header "Content-Type: application/json" \
--data @example-payload.json \
https://demo.immuta.com/dictionary/1{
"metadata": [
{
"name": "notificationType",
"dataType": "text",
"remoteType": "text"
},
{
"name": "actionBy",
"dataType": "text",
"remoteType": "integer"
},
{
"name": "targetUser",
"dataType": "integer",
"remoteType": "integer"
},
{
"name": "metadata",
"dataType": "json",
"remoteType": "json"
},
{
"name": "id",
"dataType": "integer",
"remoteType": "integer"
},
{
"name": "notifyInitiator",
"dataType": "text",
"remoteType": "boolean"
},
{
"name": "eventTime",
"dataType": "timestamp with time zone",
"remoteType": "timestamp with time zone"
}
]
}{
"createdAt": "2018-03-21T10:52:30.535Z",
"dataSource": 1,
"id": 1,
"metadata": [
{
"name": "notificationType",
"dataType": "text",
"remoteType": "text"
},
{
"name": "actionBy",
"dataType": "text",
"remoteType": "integer"
},
{
"name": "targetUser",
"dataType": "integer",
"remoteType": "integer"
},
{
"name": "metadata",
"dataType": "json",
"remoteType": "json"
},
{
"name": "id",
"dataType": "integer",
"remoteType": "integer"
},
{
"name": "notifyInitiator",
"dataType": "text",
"remoteType": "boolean"
},
{
"name": "eventTime",
"dataType": "timestamp with time zone",
"remoteType": "timestamp with time zone"
}
],
"types": [
"text",
"integer",
"json",
"timestamp with time zone"
],
"updatedAt": "2018-03-21T12:18:25.531Z"
}curl \
--request GET \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
--header "Content-Type: application/json" \
https://demo.immuta.com/dictionary/1{
"createdAt": "2018-03-21T10:52:30.535Z",
"dataSource": 1,
"id": 1,
"metadata": [
{
"name": "notificationType",
"dataType": "text",
"remoteType": "text"
},
{
"name": "actionBy",
"dataType": "text",
"remoteType": "integer"
},
{
"name": "targetUser",
"dataType": "integer",
"remoteType": "integer"
},
{
"name": "metadata",
"dataType": "json",
"remoteType": "json"
},
{
"name": "id",
"dataType": "integer",
"remoteType": "integer"
},
{
"name": "notifyInitiator",
"dataType": "text",
"remoteType": "boolean"
},
{
"name": "eventTime",
"dataType": "timestamp with time zone",
"remoteType": "timestamp with time zone"
}
],
"types": [
"text",
"integer",
"json",
"timestamp with time zone"
],
"updatedAt": "2018-03-21T12:18:25.531Z"
}curl \
--request GET \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
--header "Content-Type: application/json" \
https://demo.immuta.com/dictionary/columns?searchText=address&limit=10[
"address_city",
"address_state",
"address_street"
]curl \
--request DELETE \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
--header "Content-Type: application/json" \
https://demo.immuta.com/dictionary/1Yes
Yes
Snowflake imported databases
Immuta does not support Snowflake tables from imported databases. Instead, create a view of the table and register that view as a data source.
POST /snowflake/handler
Save the provided connection information as a data source.
private
boolean When false, the data source will be publicly available in the Immuta UI.
Yes
blobHandler
array[object] The parameters for this array include scheme ("https") and url (an empty string).
Yes
blobHandlerType
string Describes the type of underlying blob handler that will be used with this data source (e.g., MS SQL).
Yes
recordFormat
string The data format of blobs in the data source, such as json, xml, html, or jpeg.
id
integer The handler ID.
dataSourceId
integer The ID of the data source.
warnings
string This message describes issues with the created data source, such as the data source being unhealthy.
connectionString
string The connection string used to connect the data source to Immuta.
This request creates a Snowflake data source.
GET /snowflake/handler/{handlerId}
Get the handler metadata associated with the provided handler ID.
handlerId
integer The ID of the handler.
Yes
skipCache
boolean When true, will skip the handler cache when retrieving metadata.
No
body
array[object] Metadata about the data source, including the data source ID, schema, database, and connection string.
This request returns metadata for the handler with the ID 30.
PUT
/snowflake/handler/{handlerId}
. This endpoint does not perform partial updates, but will allow the dictionary to be omitted. In this case, it uses the current dictionary.
PUT
/snowflake/bulk
.
PUT
/snowflake/handler/{handlerId}/triggerHighCardinalityJob
.
PUT /snowflake/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.
handlerId
integer The ID of the handler.
Yes
skipCache
boolean When true, will skip the handler cache when retrieving metadata.
No
handler
metadata Includes metadata about the handler, such as ssl, port, database, hostname, username, and password.
Yes
connectionString
string The connection string used to connect to the data source.
Yes
id
integer The ID of the handler.
ca
string The certificate authority.
columns
array[object] This is a Data Dictionary object, which provides metadata about the columns in the data source, including the name and data type of the column.
This request updates the metadata for the data source with the handler ID 30.
Payload example
The payload below updates the eventTime to MOST_RECENT_ORDER.
PUT /snowflake/bulk
Update the data source metadata associated with the provided connection string.
handler
metadata Includes metadata about the handler, such as ssl, port, database, hostname, username, and password.
Yes
connectionString
string The connection string used to connect to the data sources.
Yes
bulkId
string The ID of the bulk data source update.
connectionString
string The connection string shared by the data sources bulk updated.
jobsCreated
integer The number of jobs that ran to update the data sources; this number corresponds to the number of data sources updated.
This request updates the metadata for all data sources with the connection string specified in example-payload.json.
Payload example
The payload below updates the database to ANALYST_DEMO for the provided connection string.
PUT /snowflake/handler/{handlerId}/triggerHighCardinalityJob
Recalculate the high cardinality column for the specified data source.
handlerId
integer The ID of the handler.
Yes
The response returns a string of characters that identify the high cardinality job run.
This request re-runs the job that calculates the high cardinality column for the data source with the handler ID 30.
Gets all the frameworks
POST
Creates a new framework
DELETE
Deletes a framework
GET
Gets the framework with the given framework ID
PUT
Updates a framework
POST
Clones a framework
GET
Gets all versions of the framework with the given framework ID
Get all the frameworks in Immuta.
The response returns all the frameworks in Immuta. See the framework reference section for details about the response schema.
Create a new framework. This example creates a framework that will tag all columns in a data source with the tag "HR Framework . Internal Employee Data" when a single column within the data source has the tag "Employee Name". Then subscription and data policies can be built to only allow HR to access this sensitive employee data.
The request accepts a JSON or YAML payload. See the framework payload description for parameter details.
The response returns the framework that was created. See the framework reference section for details about the response schema.
Deletes the framework you specify in the request.
id number
The unique identifier of the framework.
Required
The response returns a 204 response code if the request was successful.
Gets the framework you specify in the request.
id number
The unique identifier of the framework.
Required
The response returns the framework specified in the request. See the framework reference section for details about the response schema.
Update a framework. This example updates a framework to be inactive.
id number
The unique identifier of the framework.
Required
The request accepts a JSON or YAML payload. See the framework payload description for parameter options; partial updates are supported.
The response returns the framework that was updated. See the framework reference section for details about the response schema.
Clone a framework from an existing framework.
id number
The unique identifier of the framework.
Required
The response returns the framework that was created as a clone. See the framework reference section for details about the response schema.
Gets every version of the framework you specify in the request.
id number
The unique identifier of the framework.
Required
The response returns a copy of every version of the framework specified in the request. See the framework reference section for details about the response schema.
The framework payload is used when creating or updating a framework. See the parameters below.
shortName string
The short, human-readable name for the framework.
Required
-
-
name string
The official, human-readable name for the framework.
Required
-
-
The tags object specifies the tags created for and used in the framework. It includes metadata for the tags, like sensitivity and descriptions. The table below outlines its child parameters.
name string
The fully rendered name of the tag, including any parent tags.
Required
-
-
source string
The catalog the tag is from. curated is any tag in Immuta.
Required
-
curated
The external catalog ID
The rules object specifies the rules used in the framework. The table below outlines its child parameters.
name string
The short, human-readable name for the rule.
Required
-
-
classificationTag object
The tag to apply to the data source based on the criteria.
Required
-
-
The framework reference is the response for many /frameworks requests. See the parameters described below.
id string
The Immuta-assigned unique ID for the framework.
version string
The Immuta-assigned unique ID for the version of this framework. This can be useful when auditing the changes to frameworks.
shortName string
The short, human-readable name for the framework.
name string
The official, human-readable name for the framework.
description string
A description of the framework.
createdBy integer
The unique ID of the user who created the framework.
GET
Tag API reference guide
This page describes the tag endpoint, which can be used to manage tags on data sources, columns, and projects.
.
.
POST /tag
The following request creates a new tag.
The payload below creates the parent tag Address with 3 child tags: email, work, home.
The payload below changes the names of the existing child tags of the Address parent tag to state, city, zip.
GET /tag
The following request searches all tags.
POST /tag/refresh
The following request refreshes external tags.
POST /tag/{modelType}/{modelId}
No tags will be processed if any invalid tags are found in the payload.
No tags will be processed if any invalid tags are found in the payload.
Request example
The following request adds a tag to the data source with the data source ID 22.
Request payload example
Response example
Request example
The following request adds a tag to the project with the project ID 2.
Request payload example
Response example
Request example
The following request adds a tag to the countrycode column of the data source with the data source ID 6.
Request payload example
Response example
DELETE /tag/{tag}
The following request deletes a tag.
DELETE /tag/{modelType}/{modelId}/{tag}
The following request deletes a tag.
Immuta’s integration with Unity Catalog allows you to manage multiple Databricks workspaces through Unity Catalog while protecting your data with Immuta policies. Instead of manually creating UDFs or granting access to each table in Databricks, you can author your policies in Immuta and have Immuta manage and enforce Unity Catalog access-control policies on your data in Databricks clusters or SQL warehouses.
Use the /integrations endpoint to
APPLICATION_ADMIN Immuta permission
The Databricks user running the installation script must have the following privileges:
Account admin
See the for more details about Unity Catalog privileges and securable objects.
Access token authentication: If using this method, generate a personal access token for the service principal that Immuta will use to manage policies in Unity Catalog. This service principal must have the for the metastore associated with the Databricks workspace.
OAuth machine-to-machine (M2M) authentication: If using this method, follow for the Immuta service principal. This service principal must have the for the metastore associated with the Databricks workspace.
Click the App Settings icon in the left sidebar.
Scroll to the Global Integrations Settings section and check the Enable Databricks Unity Catalog support in Immuta checkbox.
In Databricks, with the privileges below. Immuta uses this service principal continuously to orchestrate Unity Catalog policies and maintain state between Immuta and Databricks.
USE CATALOG and MANAGE on all catalogs containing securables registered as Immuta data sources and USE SCHEMA on all schemas containing securables registered as Immuta data sources.
MODIFY
Required permissions: When performing an automatic setup, the credentials provided must have the .
Copy the request example, and replace the values with your own as directed to configure the integration settings. The examples provided use JSON format, but the request also accepts YAML.
See the for parameter definitions, value types, and additional configuration options.
```shell curl -X 'POST' \ 'https://www.organization.immuta.com/integrations' \ -H 'accept: application/json' \ -H 'Content-Type: application/json' \ -H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f' \ -d '{ "type": "Databricks", "autoBootstrap": true, "config": { "workspaceUrl": "www.example-workspace.cloud.databricks.com", "httpPath": "sql/protocolv1/o/0/0000-00000-abc123", "authenticationType": "token", "token": "REDACTED", "catalog": "immuta" } }' ```
Replace the Immuta URL and with your own.
Change the config values to your own, where
The response returns the status of the Databricks Unity Catalog integration configuration connection. See the for details about the response schema.
A successful response includes the validation tests statuses.
An unsuccessful request returns the status code and an error message. See the for a list of statuses, error messages, and troubleshooting guidance.
Required permissions: When performing a manual setup, the Databricks user running the script must have the .
To manually configure the integration, complete the following steps:
Copy the request example, and replace the values with your own as directed to configure the integration settings. The examples provided use JSON format, but the request also accepts YAML.
See the for parameter definitions, value types, and additional configuration options.
```shell curl -X 'POST' \ 'https://www.organization.immuta.com/integrations/scripts/create' \ -H 'accept: application/json' \ -H 'Content-Type: application/json' \ -H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f' \ -d '{ "type": "Databricks", "autoBootstrap": false, "config": { "workspaceUrl": "www.example-workspace.cloud.databricks.com", "httpPath": "sql/protocolv1/o/0/0000-00000-abc123", "authenticationType": "token", "token": "REDACTED", "catalog": "immuta" } }' ```
Replace the Immuta URL and with your own.
Change the config values to your own, where
Response
The response returns the script for you to run in your environment.
Copy the request example, and replace the values with your own as directed to configure the integration settings. The examples provided use JSON format, but the request also accepts YAML. The payload you provide must match the payload sent when .
See the for parameter definitions, value types, and additional configuration options.
```shell curl -X 'POST' \ 'https://www.organization.immuta.com/integrations' \ -H 'accept: application/json' \ -H 'Content-Type: application/json' \ -H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f' \ -d '{ "type": "Databricks", "autoBootstrap": false, "config": { "workspaceUrl": "www.example-workspace.cloud.databricks.com", "httpPath": "sql/protocolv1/o/0/0000-00000-abc123", "authenticationType": "token", "token": "REDACTED", "catalog": "immuta" } }' ```
Replace the Immuta URL and with your own.
Pass the same payload you sent when , where
The response returns the status of the Databricks Unity Catalog integration configuration connection. See the for details about the response schema.
A successful response includes the validation tests statuses.
An unsuccessful request returns the status code and an error message. See the for a list of statuses, error messages, and troubleshooting guidance.
Copy the request example.
Replace the Immuta URL and with your own.
Replace the {id} request parameter with the unique identifier of the integration you want to get. Alternatively, you can get a list of all integrations and their IDs with the .
The response returns a Databricks Unity Catalog integration configuration. See the for details about the response schema. An unsuccessful request returns the status code and an error message. See the for a list of statuses, error messages, and troubleshooting guidance.
Copy the request example.
Replace the Immuta URL and with your own.
The response returns the configuration for all integrations. See the for details about the response schema. An unsuccessful request returns the status code and an error message. See the for a list of statuses, error messages, and troubleshooting guidance.
Copy the request example, and replace the values with your own as directed to configure the integration settings. The examples provided use JSON format, but the request also accepts YAML.
See the for parameter definitions, value types, and additional configuration options.
This example updates the access token.
Replace the Immuta URL and with your own.
Replace the {id} request parameter with the unique identifier of the integration you want to update.
Change the config values to your own, where
workspaceUrl
The response returns the status of the Databricks Unity Catalog integration configuration connection. See the for details about the response schema.
A successful response includes the validation tests statuses.
An unsuccessful request returns the status code and an error message. See the for a list of statuses, error messages, and troubleshooting guidance.
Copy the request example.
Replace the Immuta URL and with your own.
Replace the {id} request parameter with the unique identifier of the integration you want to delete.
The response returns the status of the Databricks Unity Catalog integration configuration that has been deleted. See the for details about the response schema. An unsuccessful request returns the status code and an error message. See the for a list of statuses, error messages, and troubleshooting guidance.
curl \
--request POST \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
--data @example-payload.json \
https://demo.immuta.com/snowflake/handler{
"handler": {
"metadata": {
"ssl": true,
"userFiles": [],
"authenticationMethod": "userPassword",
"username": "user",
"password": "yourpassword",
"port": 443,
"hostname": "demo.us-east-1.snowflakecomputing.com",
"warehouse": "YOUR_WH",
"database": "ANALYTICS",
"schema": "TEST",
"table": "CUSTOMERS",
"nativeViewName": "customers_immuta",
"nativeSchemaName": "test_immuta",
"nativeWorkspaceName": "immuta_analytics",
"schemaProjectName": "Test",
"bodataSchemaName": "test",
"columns": [{
"name": "CUSTOMER_ID",
"dataType": "numeric(38,0)",
"remoteType": "number(38,0)",
"isPrimaryKey": false,
"nullable": true
}, {
"name": "FIRST_NAME",
"dataType": "text",
"remoteType": "varchar(16777216)",
"isPrimaryKey": false,
"nullable": true
}, {
"name": "LAST_NAME",
"dataType": "text",
"remoteType": "varchar(16777216)",
"isPrimaryKey": false,
"nullable": true
}, {
"name": "FIRST_ORDER",
"dataType": "date",
"remoteType": "date",
"isPrimaryKey": false,
"nullable": true
}, {
"name": "MOST_RECENT_ORDER",
"dataType": "date",
"remoteType": "date",
"isPrimaryKey": false,
"nullable": true
}, {
"name": "NUMBER_OF_ORDERS",
"dataType": "numeric(18,0)",
"remoteType": "number(18,0)",
"isPrimaryKey": false,
"nullable": true
}, {
"name": "TOTAL_ORDER_AMOUNT",
"dataType": "numeric",
"remoteType": "number(38,6)",
"isPrimaryKey": false,
"nullable": true
}],
"eventTime": "FIRST_ORDER",
"staleDataTolerance": 86400,
"bodataTableName": "customers",
"dataSourceName": "Customers"
}
},
"dataSource": {
"blobHandler": {
"scheme": "https",
"url": ""
},
"blobHandlerType": "Snowflake",
"recordFormat": "",
"type": "queryable",
"schemaEvolutionId": null,
"columnEvolutionEnabled": true,
"name": "Customers",
"sqlTableName": "customers"
},
"schemaEvolution": {
"ownerProfileId": 2,
"config": {
"nameTemplate": {
"nameFormat": "<Schema> <Tablename>",
"tableFormat": "<tablename>",
"sqlSchemaNameFormat": "<schema>",
"schemaProjectNameFormat": "<Schema>"
}
},
"schemas": []
}
}{
"id": 30,
"dataSourceId": 30,
"warnings": []
}curl \
--request GET \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
https://demo.immuta.com/snowflake/handler/30{
"dataSourceId": 30,
"metadata": {
"ssl": true,
"port": 443,
"query": null,
"table": "CUSTOMERS",
"schema": "TEST",
"database": "ANALYTICS",
"hostname": "demo.us-east-1.snowflakecomputing.com",
"username": "user",
"eventTime": "FIRST_ORDER",
"userFiles": [],
"warehouse": "YOUR_WH",
"dataSourceName": "Customers",
"bodataTableName": "customers",
"highCardinality": "CUSTOMER_ID",
"bodataSchemaName": "test",
"columnsNormalized": true,
"schemaProjectName": "Test",
"staleDataTolerance": 86400,
"authenticationMethod": "userPassword"
},
"type": "odbcHandler",
"connectionString": "[email protected]:443/ANALYTICS",
"id": 30,
"createdAt": "2021-10-01T16:19:23.562Z",
"updatedAt": "2021-10-01T16:19:28.556Z",
"dbms": {
"name": "snowflake"
}
}curl \
--request PUT \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
--data @example-payload.json \
https://demo.immuta.com/snowflake/handler/30{
"handler": {
"policyHandler": null,
"dataSourceId": 30,
"metadata": {
"ssl": true,
"port": 443,
"table": "CUSTOMERS",
"schema": "TEST",
"database": "ANALYTICS",
"hostname": "demo.us-east-1.snowflakecomputing.com",
"username": "user",
"eventTime": "MOST_RECENT_ORDER",
"userFiles": [],
"warehouse": "YOUR_WH",
"dataSourceName": "Customers",
"bodataTableName": "customers",
"highCardinality": "CUSTOMER_ID",
"bodataSchemaName": "test",
"columnsNormalized": true,
"schemaProjectName": "Test",
"staleDataTolerance": 86400,
"authenticationMethod": "userPassword",
"columns": [{
"name": "CUSTOMER_ID",
"dataType": "numeric(38,0)",
"nullable": true,
"remoteType": "number(38,0)",
"isPrimaryKey": false,
"remoteColumn": "CUSTOMER_ID"
}, {
"name": "FIRST_NAME",
"dataType": "text",
"nullable": true,
"remoteType": "varchar(16777216)",
"isPrimaryKey": false,
"remoteColumn": "FIRST_NAME"
}, {
"name": "LAST_NAME",
"dataType": "text",
"nullable": true,
"remoteType": "varchar(16777216)",
"isPrimaryKey": false,
"remoteColumn": "LAST_NAME"
}, {
"name": "FIRST_ORDER",
"dataType": "date",
"nullable": true,
"remoteType": "date",
"isPrimaryKey": false,
"remoteColumn": "FIRST_ORDER"
}, {
"name": "MOST_RECENT_ORDER",
"dataType": "date",
"nullable": true,
"remoteType": "date",
"isPrimaryKey": false,
"remoteColumn": "MOST_RECENT_ORDER"
}, {
"name": "NUMBER_OF_ORDERS",
"dataType": "numeric(18,0)",
"nullable": true,
"remoteType": "number(18,0)",
"isPrimaryKey": false,
"remoteColumn": "NUMBER_OF_ORDERS"
}, {
"name": "TOTAL_ORDER_AMOUNT",
"dataType": "numeric",
"nullable": true,
"remoteType": "number(38,6)",
"isPrimaryKey": false,
"remoteColumn": "TOTAL_ORDER_AMOUNT"
}]
},
"type": "odbcHandler",
"connectionString": "[email protected]:443/ANALYTICS",
"id": 30,
"createdAt": "2021-10-01T16:19:23.562Z",
"updatedAt": "2021-10-01T17:19:35.853Z",
"dbms": {
"name": "snowflake"
}
}
}{
"id": 30,
"ca": ["-----BEGIN CERTIFICATE-----\ncertificatedata\n-----END CERTIFICATE-----"],
"metadata": {
"columns": [{
"name": "customer_id",
"dataType": "numeric(38,0)",
"remoteType": "number(38,0)",
"isPrimaryKey": false,
"nullable": true,
"remoteColumn": "CUSTOMER_ID"
}, {
"name": "first_name",
"dataType": "text",
"remoteType": "varchar(16777216)",
"isPrimaryKey": false,
"nullable": true,
"remoteColumn": "FIRST_NAME"
}, {
"name": "last_name",
"dataType": "text",
"remoteType": "varchar(16777216)",
"isPrimaryKey": false,
"nullable": true,
"remoteColumn": "LAST_NAME"
}, {
"name": "first_order",
"dataType": "date",
"remoteType": "date",
"isPrimaryKey": false,
"nullable": true,
"remoteColumn": "FIRST_ORDER"
}, {
"name": "most_recent_order",
"dataType": "date",
"remoteType": "date",
"isPrimaryKey": false,
"nullable": true,
"remoteColumn": "MOST_RECENT_ORDER"
}, {
"name": "number_of_orders",
"dataType": "numeric(18,0)",
"remoteType": "number(18,0)",
"isPrimaryKey": false,
"nullable": true,
"remoteColumn": "NUMBER_OF_ORDERS"
}, {
"name": "total_order_amount",
"dataType": "numeric",
"remoteType": "number(38,6)",
"isPrimaryKey": false,
"nullable": true,
"remoteColumn": "TOTAL_ORDER_AMOUNT"
}]
}
}curl \
--request PUT \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
--data @example-payload.json \
https://demo.immuta.com/snowflake/bulk{
"handler": {
"metadata": {
"ssl": true,
"port": 443,
"database": "ANALYST_DEMO",
"hostname": "demo.us-east-1.snowflakecomputing.com",
"username": "yourusername",
"userFiles": [],
"warehouse": "YOUR_WH",
"authenticationMethod": "userPassword",
"password": "yourpassword"
}
},
"connectionString": "demo.us-east-1.snowflakecomputing.com:443/ANALYST_DEMO"
}{
"bulkId": "bulk_ds_update_54ada6bhashedvaluea0c80cecd9d62",
"jobsCreated": 5
}curl \
--request PUT \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
https://demo.immuta.com/snowflake/handler/30/triggerHighCardinalityJobc12fd320-22d8-11ec-b2b8-874838eeef05curl -X 'GET' \
'https://www.organization.immuta.com/frameworks' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f'curl -X 'POST' \
'https://www.organization.immuta.com/frameworks' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f' \
-d '{
"active": true,
"shortName": "HR Information",
"name": "HR Information Framework",
"description": "This framework finds internal employee information and tags it for HR.",
"tags": [
{
"name": "HR Framework.Internal Employee Data",
"source": "curated",
"sensitivities": []
}],
"rules": [
{ "name": "HR Rule 1",
"classificationTag": {
"name": "HR Framework.Internal Employee Data",
"source": "curated"
},
"columnTags": [],
"neighborColumnTags": [
{
"name": "Employee Name",
"source": "curated"
}
],
"tableTags": []
}
]}'{
"id": "9a6bf3b1-823c-4b2e-aef9-570dac6793cc",
"version": "4e823e0b-8e38-455d-b23c-1f03200d203a",
"shortName": "HR Information",
"name": "HR Information Framework",
"description": "This framework finds internal employee information and tags it for HR.",
"createdBy": 2,
"createdAt": "2023-10-19T16:14:39.109Z",
"tags": [
{
"name": "HR Framework.Internal Employee Data",
"source": "curated",
"sensitivities": []
}
],
"rules": [
{ "name": "HR Rule 1",
"classificationTag": {
"name": "HR Framework.Internal Employee Data",
"source": "curated"
},
"columnTags": [],
"neighborColumnTags": [
{
"name": "Employee Name",
"source": "curated"
}
],
"tableTags": []
}
],
"active": true
}curl -X 'DELETE' \
'https://www.organization.immuta.com/frameworks/123456' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f'curl -X 'GET' \
'https://www.organization.immuta.com/frameworks/123456' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f'curl -X 'PUT' \
'https://www.organization.immuta.com/frameworks/123456' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f' \
-d '{
"active": false
}'{
"id": "123456",
"version": "4e823e0b-8e38-455d-b23c-1f03200d203a",
"shortName": "HR Information",
"name": "HR Information Framework",
"description": "This framework finds internal employee information and tags it for HR.",
"createdBy": 2,
"createdAt": "2023-10-19T16:14:39.109Z",
"tags": [
{
"name": "HR Framework.Internal Employee Data",
"source": "curated",
"sensitivities": []
}
],
"rules": [
{ "name": "HR Rule 1",
"classificationTag": {
"name": "HR Framework.Internal Employee Data",
"source": "curated"
},
"columnTags": [],
"neighborColumnTags": [
{
"name": "Employee Name",
"source": "curated"
}
],
"tableTags": []
}
],
"active": false
}curl -X 'POST' \
'https://www.organization.immuta.com/frameworks/123456/clone' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f'{
"id": "123456",
"version": "4e823e0b-8e38-455d-b23c-1f03200d203a",
"shortName": "HR Information",
"name": "HR Information Framework",
"description": "This framework finds internal employee information and tags it for HR.",
"createdBy": 2,
"createdAt": "2023-10-19T16:14:39.109Z",
"tags": [
{
"name": "HR Framework.Internal Employee Data",
"source": "curated",
"sensitivities": []
}
],
"rules": [
{ "name": "HR Rule 1",
"classificationTag": {
"name": "HR Framework.Internal Employee Data",
"source": "curated"
},
"columnTags": [],
"neighborColumnTags": [
{
"name": "Employee Name",
"source": "curated"
}
],
"tableTags": []
}
],
"active": false
}curl -X 'GET' \
'https://www.organization.immuta.com/frameworks/123456/versions' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f'Yes
type
string The type of data source: ingested (metadata will exist in Immuta) or queryable (metadata is dynamically queried).
Yes
name
string The name of the data source. It must be unique within the Immuta tenant.
Yes
sqlTableName
string A string that represents this data source's table in Immuta.
Yes
organization
string The organization that owns the data source.
Yes
category
string The category of the data source.
No
description
string The description of the data source.
No
hasExamples
boolean When true, the data source contains examples.
No
description string
A description of the framework.
Required
-
-
tags array[]
The tags used in the framework and the sensitivity attached to them. Each tag used must have a tags object. See the tags object description for child parameters.
Required
-
-
rules array[]
The rules used to apply the tags in the framework. See the rules object description for child parameters.
Required
-
-
active boolean
When true, the framework will be actively used on data sources in Immuta.
Required
-
true
false
description string
A description of the classification tag.
Required
-
-
sensitivities object
The sensitivity assigned to the tag. This sensitivity can drive the Detect dashboards and monitors.
Optional
[]
-
sensitivities.dimension string
The type of sensitivity assigned to the tag.
Required if adding sensitivities
-
confidentiality
sensitivities.sensitivity integer
The sensitivity assigned to the tag.
Required if adding sensitivities
-
0 - This tag signifies non-sensitive data.
1 - This tag signifies sensitive data.
2 - This tag signifies highly-sensitive data.
classificationTag.name string
The name of the tag to apply.
Required
-
-
classificationTag.source string
The catalog the tag is from. curated is any tag in Immuta.
Required
-
curated
The external catalog ID
columnTags object
The criteria for applying tags. Tags will be applied to a column when these tags are found on the same column.
Optional
[]
-
columnTags.name string
The name of the column tag. When matched, the classification tag will be applied to the same column.
Required if using columnTags criteria
-
-
columnTags.source string
The catalog the column tag is from. curated is any tag in Immuta.
Required if using columnTags criteria
-
curated
The external catalog ID
neighborColumnTags object
The criteria for applying tags. Tags will be applied to all columns within a data source if this tag is found already applied to any column within the data source.
Optional
[]
-
neighborColumnTags.name string
The name of the neighboring column tag. When matched, the classification tag will be applied to all columns within that data source.
Required if using neighborColumnTags criteria
-
-
neighborColumnTags.source string
The catalog the neighboring column tag is from. curated is any tag in Immuta.
Required if using neighborColumnTags criteria
-
curated
The external catalog ID
tableTags object
The criteria for applying tags. Tags will be applied to all columns in a data source when this tag is found applied to the data source.
Optional
[]
-
tableTags.name string
The name of the data source tag. When matched, the classification tag will be applied to all columns within that data source.
Required if using tableTags criteria
-
-
tableTags.source string
The catalog the data source tag is from. curated is any tag in Immuta.
Required if using tableTags criteria
-
curated
The external catalog ID
createdAt timestamp
A timestamp of when the framework was created.
tags array[]
The tags used in the framework and the sensitivity attached to them. See the tags object description for child parameters.
rules array[]
The rules used to apply the tags in the framework. See the rules object description for child parameters.
active boolean
If true, the framework is actively being used on data sources in Immuta.
rootTag.name
string The name of the parent tag to update.
Required if rootTag is provided.
rootTag.source
string The source from which the parent tag was created. Acceptable value is curated.
No
rootTag.deleteHierarchy
boolean When true, all of the existing child tags will be deleted and replaced with the new child tags you include in the tags array.
If this value is false, the existing child tags will remain.
No
displayName
string The tag name that will display in the console.
protected
boolean When true, indicates the tag cannot be updated. Tags created by Immuta will always be protected. This value will be false for tags you create.
systemCreated
boolean When you create a tag, this value will be false, which indicates that this tag was not created by Immuta.
excludedHierarchies
array[string] A string used to filter returned tags. The query is executed with a wildcard prefix and suffix.
No
limit
integer The maximum number of search results that will be returned.
No
systemCreated
boolean When true, the tag was created by Immuta.
systemCreated
boolean When true, the tag was created by Immuta.
No
addedBy
integer The profile ID of the user who added the tag to the data source, column, or project.
No
deleted
boolean When true, the tag has been deleted.
No
hasLeafNodes
boolean When true, parent tags exist within the tag hierarchy that have no child tags.
No
createdBy
integer The profile ID of the user who created the tag.
No
createdAt
date When the tag was created.
No
updatedAt
date When the tag was last updated.
No
systemCreated
boolean When true, the tag was created by Immuta.
createdBy
string The profile ID of the creator.
createdAt
timestamp The date and time of the tag creation.
updatedAt
timestamp The date and time of the tag update.
tags
array[string] A list of tags to create or update.
Yes
tags.name
string The fully-qualified tag name. The name of the parent tag and its child tags are delimited by a .. See the payload example below.
If you are updating an existing parent tag with new child tags, the parent value for this attribute should be the same as the value of rootTag.name.
Yes
tags.id
integer The unique identifier of the tag you want to update.
Required for updating an existing tag. This attribute should not be included when creating a new tag.
rootTag
object When provided, allows the requestor to update an existing parent tag.
id
integer The tag ID.
name
string The fully-qualified tag name.
source
string The system the tag was created by. When curated, the tag was created in Immuta.
createdBy
integer The profile ID of the creator.
createdAt
timestamp The date and time of the tag creation.
updatedAt
timestamp The date and time of the tag update.
searchText
string A string used to filter returned tags. The query is executed with a wildcard prefix and suffix.
No
source
string Filter tags by the source that created them.
No
excludedSource
string Only return tags that do not have this source.
No
includeAllSystemTags
boolean If true, includes all system tags even if they have been deleted. Otherwise, set to false to filter out all system-created tags.
id
integer The tag ID.
name
string The fully-qualified tag name.
color
string An uneditable tag field.
description
string An uneditable tag field that appears as a tag description in the UI. Built-in tags come with descriptions pre-populated.
source
string The system the tag was created by. When curated, the tag was created in Immuta.
deleted
boolean If true, the tag has been deleted.
modelType
string The Immuta component to add the tag to: datasource, column, or project.
Yes
modelId
string The ID of the column, data source, or project. Note: The modelId for a column is the data source ID followed by _OBJECTID (For example, 49_OBJECTID).
Yes
name
string The fully-qualified name of the tag.
Yes
id
integer The tag ID.
No
displayName
string The tag's name that is displayed in the console.
No
source
string The name of the system that created the tag. When curated, the tag was created in Immuta.
name
string The fully-qualified name of the tag.
source
string The system the tag was created by. When curated, the tag was created in Immuta.
addedBy
integer The profile ID of the user who added the tag.
deleted
boolean When true, the tag has been deleted.
/tag/{tag}
/tag/{modelType}/{modelId}/{tag}
tag
string The fully-qualified name of the tag.
Yes
deleteHierarchy
boolean If true it will delete the entire tag hierarchy.
No
id
integer The tag ID.
name
string The fully-qualified tag name.
color
string An uneditable tag field.
description
string An uneditable tag field that appears as a tag description in the UI. Built-in tags come with descriptions pre-populated.
source
string The system the tag was created by. When curated, the tag was created in Immuta.
deleted
boolean If true, the tag has been deleted.
tag
string The name of the tag.
Yes
modelType
string The Immuta component to remove the tag from: datasource, column, or project.
Yes
modelId
string The ID of the column, data source, or project. Note: The modelId for a column is the data source ID followed by _OBJECTID (For example, 49_OBJECTID).
Yes
No
No
No
curl \
--request POST \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
--data @example_payload.json \
https://your-immuta-url.com/tag{
"tags": [{
"name": "Address.email"
}, {
"name": "Address.work"
}, {
"name": "Address.home"
}]
}{
"rootTag": {
"name": "Address",
"deleteHierarchy": false
},
"tags": [{
"id": 129,
"name": "Address.state"
}, {
"id": 130,
"name": "Address.city"
}, {
"id": 131,
"name": "Address.zip"
}]
}[{
"id": 129,
"name": "Address.email",
"color": null,
"description": null,
"source": "curated",
"deleted": false,
"systemCreated": false,
"createdBy": 2,
"createdAt": "2021-10-08T20:53:22.946Z",
"updatedAt": "2021-10-08T20:53:22.946Z"
}, {
"id": 130,
"name": "Address.work",
"color": null,
"description": null,
"source": "curated",
"deleted": false,
"systemCreated": false,
"createdBy": 2,
"createdAt": "2021-10-08T20:53:22.946Z",
"updatedAt": "2021-10-08T20:53:22.946Z"
}, {
"id": 131,
"name": "Address.home",
"color": null,
"description": null,
"source": "curated",
"deleted": false,
"systemCreated": false,
"createdBy": 2,
"createdAt": "2021-10-08T20:53:22.946Z",
"updatedAt": "2021-10-08T20:53:22.946Z"
}][{
"id": 129,
"name": "Address.state",
"source": "curated",
"deleted": false,
"systemCreated": false,
"createdBy": 2,
"createdAt": "2025-08-25T19:23:06.709Z",
"updatedAt": "2025-08-25T19:23:54.860Z",
"color": null,
"description": null,
"displayName": "state",
"protected": false
},
{
"id": 130,
"name": "Address.city",
"source": "curated",
"deleted": false,
"systemCreated": false,
"createdBy": 2,
"createdAt": "2025-08-25T19:23:06.709Z",
"updatedAt": "2025-08-25T19:23:54.863Z",
"color": null,
"description": null,
"displayName": "city",
"protected": false
},
{
"id": 131,
"name": "Address.zip",
"source": "curated",
"deleted": false,
"systemCreated": false,
"createdBy": 2,
"createdAt": "2025-08-25T19:23:06.709Z",
"updatedAt": "2025-08-25T19:23:54.867Z",
"color": null,
"description": null,
"displayName": "zip",
"protected": false
}
]curl \
--request GET \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
https://your-immuta-url.com/tag[
{
"id": 114,
"name": "DataProperties.Cross-Sectional",
"color": null,
"description": null,
"source": "curated",
"deleted": false,
"systemCreated": true
},
{
"id": 2,
"name": "Discovered.Country.Argentina",
"color": null,
"description": null,
"source": "curated",
"deleted": false,
"systemCreated": true
},
{
"id": 9,
"name": "Discovered.Country.Australia",
"color": null,
"description": null,
"source": "curated",
"deleted": false,
"systemCreated": true
}
]curl \
--request POST \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
https://your-immuta-url.com/tag/refreshcurl \
--request POST \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
--data @example_payload.json \
https://your-immuta-url.com/tag/datasource/22[{
"name": "Discovered.Passport",
"source": "curated"
}][{
"name": "Discovered.Passport",
"source": "curated",
"addedBy": 2,
"deleted": false
}]curl \
--request POST \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
--data @example_payload.json \
https://your-immuta-url.com/tag/project/2[{
"name": "Confidential",
"source": "curated"
}][{
"name": "Confidential",
"source": "curated",
"context": "manual",
"addedBy": 2,
"deleted": false
}]curl \
--request POST \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
--data @example_payload.json \
https://your-immuta-url.com/tag/column/6_countrycode[{
"name": "Discovered.Passport",
"source": "curated"
}][{
"name":"Discovered.Passport",
"source":"curated",
"context":"manual",
"addedBy":2,
"deleted":false
}]curl \
--request DELETE \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
https://your-immuta-url.com/tag/DataProperties.Cross-Sectional[
{
"id": 114,
"name": "DataProperties.Cross-Sectional",
"color": null,
"description": null,
"source": "curated",
"deleted": true,
"systemCreated": true,
"createdBy": null,
"createdAt": "2021-06-24T15:08:53.119Z",
"updatedAt": "2021-09-27T19:00:38.828Z"
}
]curl \
--request DELETE \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
https://your-immuta-url.com/tag/datasource/523/Discovered.Country.CanadaCREATE CATALOG privilege on the Unity Catalog metastore to create an Immuta-owned catalog and tables
Metastore admin (only required if enabling query audit)
SELECTMANAGEMODIFYSELECTUSE CATALOGUSE SCHEMAMODIFYSELECTMODIFYSELECTMANAGEOpt to enable query audit for Unity Catalog:
If you will configure the integration using the manual setup option, the Immuta script you will generate includes the SQL statements for granting required privileges to the service principal, so you can skip this step and continue to the manual setup section. Otherwise, manually grant the Immuta service principal access to the Databricks Unity Catalog system tables. For Databricks Unity Catalog audit to work, the service principal must have the following access at minimum:
USE CATALOG on the system catalog
USE SCHEMA on the system.access schema
SELECT on the following system tables:
You have two options for configuring your Databricks Unity Catalog integration. Select the method you prefer below to navigate to configuration instructions:
Automatic setup: Immuta creates the catalogs, schemas, tables, and functions using the service principal you created.
Manual setup: Run the Immuta script in Databricks yourself to create the catalog. You can also modify the script to customize your storage location for tables, schemas, or catalogs. The user running the script must have the Databricks privileges listed above.
httpPath is the HTTP path of your Databricks cluster or SQL warehouse.
token is the Databricks personal access token. This is the access token for the Immuta service principal.
catalog is the name of the Databricks catalog Immuta will create to store internal entitlements and other user data specific to Immuta. This catalog will only be readable for the Immuta service principal and should not be granted to other users. The catalog name may only contain letters, numbers, and underscores and cannot start with a number.
{% hint style="warning" %} Create a separate Immuta catalog for each Immuta tenant
If multiple Immuta tenants are connected to your Databricks environment, create a separate Immuta catalog for each of those tenants. Having multiple Immuta tenants use the same Immuta catalog causes failures in policy enforcement. {% endhint %}
```shell curl -X 'POST' \ 'https://www.organization.immuta.com/integrations' \ -H 'accept: application/json' \ -H 'Content-Type: application/json' \ -H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f' \ -d '{ "type": "Databricks", "autoBootstrap": true, "config": { "workspaceUrl": "www.example-workspace.cloud.databricks.com", "httpPath": "sql/protocolv1/o/0/0000-00000-abc123", "authenticationType": "oAuthM2M", "oAuthClientConfig": { "clientId": "123456abc", "clientSecret": "secret", "authorityUrl": "example.authority.com" }, "catalog": "immuta" } }' ```
Replace the Immuta URL and API key with your own.
Change the config values to your own, where
workspaceUrl is your Databricks workspace URL.
httpPath is the HTTP path of your Databricks cluster or SQL warehouse.
oAuthClientConfig specifies your client ID, client secret, and authority URL. See the for details about child parameters.
catalog is the name of the Databricks catalog Immuta will create to store internal entitlements and other user data specific to Immuta. This catalog will only be readable for the Immuta service principal and should not be granted to other users. The catalog name may only contain letters, numbers, and underscores and cannot start with a number.
{% hint style="warning" %} Create a separate Immuta catalog for each Immuta tenant
If multiple Immuta tenants are connected to your Databricks environment, create a separate Immuta catalog for each of those tenants. Having multiple Immuta tenants use the same Immuta catalog causes failures in policy enforcement. {% endhint %}
httpPath is the HTTP path of your Databricks cluster or SQL warehouse.
token is the Databricks personal access token. This is the access token for the Immuta service principal.
catalog is the name of the Databricks catalog Immuta will create to store internal entitlements and other user data specific to Immuta. This catalog will only be readable for the Immuta service principal and should not be granted to other users. The catalog name may only contain letters, numbers, and underscores and cannot start with a number.
{% hint style="warning" %} Create a separate Immuta catalog for each Immuta tenant
If multiple Immuta tenants are connected to your Databricks environment, create a separate Immuta catalog for each of those tenants. Having multiple Immuta tenants use the same Immuta catalog causes failures in policy enforcement. {% endhint %}
Run the script returned in the response in your Databricks environment.
```shell curl -X 'POST' \ 'https://www.organization.immuta.com/integrations/scripts/create' \ -H 'accept: application/json' \ -H 'Content-Type: application/json' \ -H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f' \ -d '{ "type": "Databricks", "autoBootstrap": false, "config": { "workspaceUrl": "www.example-workspace.cloud.databricks.com", "httpPath": "sql/protocolv1/o/0/0000-00000-abc123", "authenticationType": "oAuthM2M", "oAuthClientConfig": { "clientId": "123456abc", "clientSecret": "secret", "authorityUrl": "example.authority.com" }, "catalog": "immuta" } }' ```
Replace the Immuta URL and API key with your own.
Change the config values to your own, where
workspaceUrl is your Databricks workspace URL.
httpPath is the HTTP path of your Databricks cluster or SQL warehouse.
oAuthClientConfig specifies your client ID, client secret, and authority URL. See the for details about child parameters.
catalog is the name of the Databricks catalog Immuta will create to store internal entitlements and other user data specific to Immuta. This catalog will only be readable for the Immuta service principal and should not be granted to other users. The catalog name may only contain letters, numbers, and underscores and cannot start with a number.
{% hint style="warning" %} Create a separate Immuta catalog for each Immuta tenant
If multiple Immuta tenants are connected to your Databricks environment, create a separate Immuta catalog for each of those tenants. Having multiple Immuta tenants use the same Immuta catalog causes failures in policy enforcement. {% endhint %}
Run the script returned in the response in your Databricks environment.
httpPath is the HTTP path of your Databricks cluster or SQL warehouse.
token is the Databricks personal access token. This is the access token for the Immuta service principal.
catalog is the name of the Databricks catalog Immuta will create to store internal entitlements and other user data specific to Immuta. This catalog will only be readable for the Immuta service principal and should not be granted to other users. The catalog name may only contain letters, numbers, and underscores and cannot start with a number.
{% hint style="warning" %} Create a separate Immuta catalog for each Immuta tenant
If multiple Immuta tenants are connected to your Databricks environment, create a separate Immuta catalog for each of those tenants. Having multiple Immuta tenants use the same Immuta catalog causes failures in policy enforcement. {% endhint %}
```shell curl -X 'POST' \ 'https://www.organization.immuta.com/integrations' \ -H 'accept: application/json' \ -H 'Content-Type: application/json' \ -H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f' \ -d '{ "type": "Databricks", "autoBootstrap": false, "config": { "workspaceUrl": "www.example-workspace.cloud.databricks.com", "httpPath": "sql/protocolv1/o/0/0000-00000-abc123", "authenticationType": "oAuthM2M", "oAuthClientConfig": { "clientId": "123456abc", "clientSecret": "secret", "authorityUrl": "example.authority.com" }, "catalog": "immuta" } }' ```
Replace the Immuta URL and API key with your own.
Pass the same payload you sent when generating the script, where
workspaceUrl is your Databricks workspace URL.
httpPath is the HTTP path of your Databricks cluster or SQL warehouse.
oAuthClientConfig specifies your client ID, client secret, and authority URL. See the for details about child parameters.
catalog is the name of the Databricks catalog Immuta will create to store internal entitlements and other user data specific to Immuta. This catalog will only be readable for the Immuta service principal and should not be granted to other users. The catalog name may only contain letters, numbers, and underscores and cannot start with a number.
{% hint style="warning" %} Create a separate Immuta catalog for each Immuta tenant
If multiple Immuta tenants are connected to your Databricks environment, create a separate Immuta catalog for each of those tenants. Having multiple Immuta tenants use the same Immuta catalog causes failures in policy enforcement. {% endhint %}
httpPath is the HTTP path of your Databricks cluster or SQL warehouse.
token is the Databricks personal access token. This is the access token for the Immuta service principal.
catalog is the name of the Databricks catalog Immuta will create to store internal entitlements and other user data specific to Immuta. This catalog will only be readable for the Immuta service principal and should not be granted to other users. The catalog name may only contain letters, numbers, and underscores and cannot start with a number.
{% hint style="warning" %} Create a separate Immuta catalog for each Immuta tenant
If multiple Immuta tenants are connected to your Databricks environment, create a separate Immuta catalog for each of those tenants. Having multiple Immuta tenants use the same Immuta catalog causes failures in policy enforcement. {% endhint %}
Presto API reference guide
This page describes the presto (Presto data sources) endpoint.
.
.
.
POST /presto/handler
Save the provided connection information as a data source.
This request creates a Presto data source.
GET /presto/handler/{handlerId}
Get the handler metadata associated with the provided handler ID.
The following request returns the handler metadata associated with the provided handler ID.
PUT /presto/handler/{handlerId}
Updates the handler 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.
This request updates the data source name to Marketing Data for the data source with the handler ID 67.
Request payload example
PUT /presto/bulk
Updates the data source metadata associated with the provided connection string.
This request updates the metadata for all data sources with the connection string specified in example-payload.json.
The payload below adds a certificate (certificate.json) to the data sources with the provided connection.
PUT /presto/handler/{handlerId}/triggerHighCardinalityJob
Recalculates the high cardinality column for the provided handler ID.
The response returns a string of characters that identify the high cardinality job run.
The following request recalculates the high cardinality column for the provided handler ID.
{
"id": "123456789",
"status": "creating",
"validationResults": {
"status": "passed",
"validationTests": [
{
"name": "Metastore validation",
"status": "passed"
},
{
"name": "Basic Connection Test",
"result": [
{
"1": 1
}
],
"status": "passed"
}
]
}
}{
"statusCode": 409,
"error": "Conflict",
"message": "Databricks Unity Catalog integration already exists on www.example-workspace.cloud.databricks.com (id = 123456789)"
}{
"id": "123456789",
"status": "creating",
"validationResults": {
"status": "passed",
"validationTests": [
{
"name": "Metastore validation",
"status": "passed"
},
{
"name": "Basic Connection Test",
"result": [
{
"1": 1
}
],
"status": "passed"
}
]
}
}{
"statusCode": 409,
"error": "Conflict",
"message": "Databricks Unity Catalog integration already exists on www.example-workspace.cloud.databricks.com (id = 123456789)"
}curl -X 'GET' \
'https://www.organization.immuta.com/integrations/{id}' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f'{
"id": "123456789",
"status": "enabled",
"validationResults": {
"status": "passed",
"validationTests": [
{
"name": "Metastore validation",
"status": "passed"
},
{
"name": "Basic Connection Test",
"result": [
{
"1": 1
}
],
"status": "passed"
}
]
},
"type": "Databricks",
"autoBootstrap": false,
"config": {
"port": 443,
"workspaceUrl": "www.example-workspace.cloud.databricks.com",
"httpPath": "sql/protocolv1/o/0/0000-00000-abc123",
"authenticationType": "token",
"token": "REDACTED",
"audit": {
"enabled": false
},
"catalog": "immuta"
}
}curl -X 'GET' \
'https://www.organization.immuta.com/integrations' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f'[
{
"id": "1",
"status": "enabled",
"validationResults": {
"status": "passed",
"validationTests": [
{
"name": "Initial Validation: Basic Connection Test",
"status": "passed"
},
{
"name": "Initial Validation: Default Warehouse Access Test",
"status": "passed",
"result": []
},
{
"name": "Initial Validation: Validate access to Privileged Role",
"status": "passed",
"result": []
},
{
"name": "Validate Automatic: Database Does Not Exist",
"status": "passed"
},
{
"name": "Validate Automatic: Impersonation Role Does Not Exist",
"status": "skipped"
},
{
"name": "Validate Automatic Bootstrap User Grants",
"status": "passed"
}
]
},
"type": "Snowflake",
"autoBootstrap": true,
"config": {
"host": "organization.us-east-1.snowflakecomputing.com",
"warehouse": "SAMPLE_WAREHOUSE",
"database": "SNOWFLAKE_SAMPLE_DATA",
"port": 443,
"audit": {
"enabled": false
},
"workspaces": {
"enabled": false
},
"impersonation": {
"enabled": false
},
"lineage": {
"enabled": false
},
"authenticationType": "userPassword",
"username": "<REDACTED>",
"password": "<REDACTED>",
"role": "ACCOUNTADMIN"
}
},
{
"id": "2",
"status": "enabled",
"type": "Databricks",
"validationResults": {
"status": "passed",
"validationTests": [
{
"name": "Metastore validation",
"status": "passed"
},
{
"name": "Basic Connection Test",
"result": [
{
"1": 1
}
],
"status": "passed"
}
]
},
"autoBootstrap": true,
"config": {
"workspaceUrl": "www.example-workspace.cloud.databricks.com",
"httpPath": "sql/protocolv1/o/0/0000-00000-abc123",
"authenticationType": "token",
"token": "REDACTED",
"audit": {
"enabled": false
},
"catalog": "immuta"
}
}
]curl -X 'PUT' \
'https://www.organization.immuta.com/integrations/{id}' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f' \
-d '{
"type": "Databricks",
"autoBootstrap": true,
"config": {
"workspaceUrl": "www.example-workspace.cloud.databricks.com",
"httpPath": "sql/protocolv1/o/0/0000-00000-abc123",
"authenticationType": "token",
"token": "REDACTED",
"catalog": "immuta"
}
}'{
"id": "123456789",
"status": "editing",
"validationResults": {
"status": "passed",
"validationTests": [
{
"name": "Metastore validation",
"status": "passed"
},
{
"name": "Basic Connection Test",
"result": [
{
"1": 1
}
],
"status": "passed"
}
]
}
}{
"statusCode": 409,
"error": "Conflict",
"message": "Unable to edit integration with ID 123456789 in current state editing."
}curl -X 'DELETE' \
'https://www.organization.immuta.com/integrations/{id}' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f'{
"id": "123456789",
"status": "deleting",
"validationResults": {
"status": "passed",
"validationTests": [
{
"name": "Metastore validation",
"status": "passed"
},
{
"name": "Basic Connection Test",
"result": [
{
"1": 1
}
],
"status": "passed"
}
]
}
}system.access.audit
system.access.table_lineage
system.access.column_lineage
Access to system tables is governed by Unity Catalog. No user has access to these system schemas by default. To grant access, a user that is both a metastore admin and an account admin must grant USE and SELECT permissions on the system schemas to the service principal. See Manage privileges in Unity Catalog for more details.
type
string The type of data source: ingested (metadata will exist in Immuta) or queryable (metadata is dynamically queried).
Yes
name
string The name of the data source. It must be unique within the Immuta instance.
Yes
sqlTableName
string A string that represents this data source's table in Immuta.
Yes
organization
string The organization that owns the data source.
Yes
category
string The category of the data source.
No
description
string The description of the data source.
No
hasExamples
boolean When true, the data source contains examples.
No
private
boolean When false, the data source will be publicly available in the Immuta UI.
Yes
blobHandler
array[object] A list of full URLs providing the locations of all blob store handlers to use with this data source.
Yes
blobHandlerType
string Describes the type of underlying blob handler that will be used with this data source (e.g., MS SQL).
Yes
recordFormat
string The data format of blobs in the data source, such as json, xml, html, or jpeg.
id
integer The handler ID.
dataSourceId
integer The ID of the data source.
warnings
string This message describes issues with the created data source, such as the data source being unhealthy.
connectionString
string The connection string used to connect the data source to Immuta.
handlerId
integer The specific handler ID.
Yes
skipCache
boolean If true the handler cache will be skipped when retrieving the handler data.
No
dataSourceId
integer The data source ID.
value
metadata Details regarding the handler.
/presto/handler/{handlerId}
/presto/bulk
/presto/handler/{handlerId}/triggerHighCardinalityJob
handlerId
integer The specific handler ID.
Yes
skipCache
boolean If true the handler cache will be skipped when retrieving the handler data.
No
dataSourceId
integer The data source ID.
body
array[object] Details regarding the handler, including schema, name format, and data source metadata.
body
array[object] This payload includes data source metadata and specifies the connection string.
Yes
bulkId
integer The bulk handler metadata ID.
connectionString
string The specified connection string.
jobsCreated
integer Number of jobs created.
handlerId
integer The specific handler ID.
Yes
Yes
curl \
--request POST \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
--data @example-payload.json \
https://demo.immuta.com/presto/handler{
"handler": {
"metadata": {
"staleDataTolerance": 86400,
"schemaProjectName": "Public",
"bodataSchemaName": "public",
"columns": [{
"name": "c_customer_sk",
"dataType": "integer",
"remoteType": "integer",
"nullable": true
}, {
"name": "c_customer_id",
"dataType": "text",
"remoteType": "char(16)",
"nullable": true
}, {
"name": "c_current_cdemo_sk",
"dataType": "integer",
"remoteType": "integer",
"nullable": true
}, {
"name": "c_current_hdemo_sk",
"dataType": "integer",
"remoteType": "integer",
"nullable": true
}, {
"name": "c_current_addr_sk",
"dataType": "integer",
"remoteType": "integer",
"nullable": true
}, {
"name": "c_first_shipto_date_sk",
"dataType": "integer",
"remoteType": "integer",
"nullable": true
}, {
"name": "c_first_sales_date_sk",
"dataType": "integer",
"remoteType": "integer",
"nullable": true
}, {
"name": "c_salutation",
"dataType": "text",
"remoteType": "varchar(10)",
"nullable": true
}, {
"name": "c_first_name",
"dataType": "text",
"remoteType": "varchar(20)",
"nullable": true
}, {
"name": "c_last_name",
"dataType": "text",
"remoteType": "varchar(30)",
"nullable": true
}, {
"name": "c_preferred_cust_flag",
"dataType": "text",
"remoteType": "char(1)",
"nullable": true
}, {
"name": "c_birth_day",
"dataType": "integer",
"remoteType": "integer",
"nullable": true
}, {
"name": "c_birth_month",
"dataType": "integer",
"remoteType": "integer",
"nullable": true
}, {
"name": "c_birth_year",
"dataType": "integer",
"remoteType": "integer",
"nullable": true
}, {
"name": "c_birth_country",
"dataType": "text",
"remoteType": "varchar(20)",
"nullable": true
}, {
"name": "c_login",
"dataType": "text",
"remoteType": "char(13)",
"nullable": true
}, {
"name": "c_email_address",
"dataType": "text",
"remoteType": "varchar(50)",
"nullable": true
}, {
"name": "c_last_review_date",
"dataType": "text",
"remoteType": "varchar(10)",
"nullable": true
}],
"hostname": "example-presto.host.io",
"port": 8080,
"ssl": false,
"authenticationMethod": "No Authentication",
"connectionStringOptions": "",
"userFiles": [],
"database": "your_database",
"sid": "postgres",
"table": "customer",
"schema": "public",
"bodataTableName": "customer",
"dataSourceName": "Customer"
}
},
"dataSource": {
"blobHandler": {
"scheme": "https",
"url": ""
},
"blobHandlerType": "Presto",
"recordFormat": "",
"type": "queryable",
"schemaEvolutionId": null,
"columnEvolutionEnabled": true,
"name": "Customer",
"sqlTableName": "customer"
},
"schemaEvolution": {
"ownerProfileId": 1,
"config": {
"nameTemplate": {
"nameFormat": "<Tablename>",
"tableFormat": "<tablename>",
"sqlSchemaNameFormat": "<schema>",
"schemaProjectNameFormat": "<Schema>"
}
},
"schemas": []
}
}{
"connectionString": "your-username@us-east-1/tpc"
"id": 1,
"dataSourceId": 1,
"dataSource": {
"blobHandler": {
"accessKey": "REDACTED",
"url": "https://REDACTED/presto/handler/1",
"ca": ["-----BEGIN CERTIFICATE-----\nyourdXRhIENcertificate\n-----END CERTIFICATE-----"],
"manualDictionary": false
},
"blobHandlerType": "Presto",
"recordFormat": "Not Provided",
"type": "queryable",
"schemaEvolutionId": 1,
"columnEvolutionEnabled": true,
"name": "Customer",
"sqlTableName": "customer",
"sqlSchemaName": "public",
"workspace": null,
"rowCount": 0,
"seeded": false,
"owner": {},
"documentation": "# Customer",
"statsExpiration": "2022-07-19T18:55:21.300Z",
"recordCount": 0,
"createdBy": 1,
"policyHandler": null,
"subscriptionType": "manual",
"id": 1,
"description": null,
"deleted": false,
"policyHandlerType": "None",
"subscriptionPolicy": null,
"globalPolicies": null,
"status": null,
"statusInfo": null,
"expiration": null,
"catalogMetadata": null,
"sddTemplate": null,
"createdAt": "2022-07-19T18:55:21.302Z",
"updatedAt": "2022-07-19T18:55:21.302Z",
"tags": []
},
"warnings": []
}curl \
--request GET \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
https://your-immuta-url.com/presto/handler/67{
"dataSourceId": 67,
"metadata": {
"ssl": true,
"port": 1433,
"query": null,
"table": "table_108",
"schema": "elliott_dev",
"database": "your_database",
"hostname": "example-presto.host.io",
"username": "your-username",
"eventTime": null,
"dataSourceName": "Dev Table 108",
"bodataTableName": "table_108",
"disableClassify": false,
"highCardinality": "col_1",
"bodataSchemaName": "dev",
"columnsNormalized": false,
"schemaProjectName": "Dev",
"staleDataTolerance": 2592000
},
"type": "odbcHandler",
"connectionString": "[email protected]:1433/your_database",
"id": 67,
"createdAt": "2021-09-17T14:15:10.256Z",
"updatedAt": "2021-09-17T14:15:19.547Z",
"dbms": {
"name": "presto"
}
}curl \
--request PUT \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
--data @example_payload.json
https://your-immuta-url.com/presto/handler/67{
"handler": {
"policyHandler": null,
"dataSourceId": 67,
"metadata": {
"sid": "postgres",
"ssl": false,
"port": 8080,
"query": null,
"table": "customer",
"schema": "public",
"database": "your_database",
"hostname": "presto-example.io",
"ephemeral": true,
"eventTime": null,
"userFiles": [],
"dataSourceName": "Marketing Data",
"bodataTableName": "customer",
"highCardinality": "c_customer_sk",
"bodataSchemaName": "public",
"columnsNormalized": false,
"schemaProjectName": "Public",
"staleDataTolerance": 0,
"authenticationMethod": "No Authentication",
"connectionStringOptions": "",
"columns": [{
"name": "c_customer_sk",
"dataType": "integer",
"remoteType": "integer",
"nullable": true
}, {
"name": "c_customer_id",
"dataType": "text",
"remoteType": "char(16)",
"nullable": true
}, {
"name": "c_current_cdemo_sk",
"dataType": "integer",
"remoteType": "integer",
"nullable": true
}, {
"name": "c_current_hdemo_sk",
"dataType": "integer",
"remoteType": "integer",
"nullable": true
}, {
"name": "c_current_addr_sk",
"dataType": "integer",
"remoteType": "integer",
"nullable": true
}, {
"name": "c_first_shipto_date_sk",
"dataType": "integer",
"remoteType": "integer",
"nullable": true
}, {
"name": "c_first_sales_date_sk",
"dataType": "integer",
"remoteType": "integer",
"nullable": true
}, {
"name": "c_salutation",
"dataType": "text",
"remoteType": "varchar(10)",
"nullable": true
}, {
"name": "c_first_name",
"dataType": "text",
"remoteType": "varchar(20)",
"nullable": true
}, {
"name": "c_last_name",
"dataType": "text",
"remoteType": "varchar(30)",
"nullable": true
}, {
"name": "c_preferred_cust_flag",
"dataType": "text",
"remoteType": "char(1)",
"nullable": true
}, {
"name": "c_birth_day",
"dataType": "integer",
"remoteType": "integer",
"nullable": true
}, {
"name": "c_birth_month",
"dataType": "integer",
"remoteType": "integer",
"nullable": true
}, {
"name": "c_birth_year",
"dataType": "integer",
"remoteType": "integer",
"nullable": true
}, {
"name": "c_birth_country",
"dataType": "text",
"remoteType": "varchar(20)",
"nullable": true
}, {
"name": "c_login",
"dataType": "text",
"remoteType": "char(13)",
"nullable": true
}, {
"name": "c_email_address",
"dataType": "text",
"remoteType": "varchar(50)",
"nullable": true
}, {
"name": "c_last_review_date",
"dataType": "text",
"remoteType": "varchar(10)",
"nullable": true
}]
},
"type": "odbcHandler",
"connectionString": "presto-example.io:8080/postgres/public",
"id": 1,
"createdAt": "2022-07-19T18:55:21.220Z",
"updatedAt": "2022-07-19T18:55:23.466Z",
"dbms": {
"name": "presto"
}
}
}{
"id": 67,
"ca": ["-----BEGIN CERTIFICATE-----\nMIIuyourcertificate\n-----END CERTIFICATE-----"],
"metadata": {
"columns": [{
"name": "c_customer_sk",
"dataType": "integer",
"remoteType": "integer",
"nullable": true
}, {
"name": "c_customer_id",
"dataType": "text",
"remoteType": "char(16)",
"nullable": true
}, {
"name": "c_current_cdemo_sk",
"dataType": "integer",
"remoteType": "integer",
"nullable": true
}, {
"name": "c_current_hdemo_sk",
"dataType": "integer",
"remoteType": "integer",
"nullable": true
}, {
"name": "c_current_addr_sk",
"dataType": "integer",
"remoteType": "integer",
"nullable": true
}, {
"name": "c_first_shipto_date_sk",
"dataType": "integer",
"remoteType": "integer",
"nullable": true
}, {
"name": "c_first_sales_date_sk",
"dataType": "integer",
"remoteType": "integer",
"nullable": true
}, {
"name": "c_salutation",
"dataType": "text",
"remoteType": "varchar(10)",
"nullable": true
}, {
"name": "c_first_name",
"dataType": "text",
"remoteType": "varchar(20)",
"nullable": true
}, {
"name": "c_last_name",
"dataType": "text",
"remoteType": "varchar(30)",
"nullable": true
}, {
"name": "c_preferred_cust_flag",
"dataType": "text",
"remoteType": "char(1)",
"nullable": true
}, {
"name": "c_birth_day",
"dataType": "integer",
"remoteType": "integer",
"nullable": true
}, {
"name": "c_birth_month",
"dataType": "integer",
"remoteType": "integer",
"nullable": true
}, {
"name": "c_birth_year",
"dataType": "integer",
"remoteType": "integer",
"nullable": true
}, {
"name": "c_birth_country",
"dataType": "text",
"remoteType": "varchar(20)",
"nullable": true
}, {
"name": "c_login",
"dataType": "text",
"remoteType": "char(13)",
"nullable": true
}, {
"name": "c_email_address",
"dataType": "text",
"remoteType": "varchar(50)",
"nullable": true
}, {
"name": "c_last_review_date",
"dataType": "text",
"remoteType": "varchar(10)",
"nullable": true
}]
}
}curl \
--request PUT \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
--data @example-payload.json \
https://demo.immuta.com/presto/bulk{
"handler": {
"metadata": {
"sid": "postgres",
"ssl": false,
"port": 8080,
"database": "your_database",
"hostname": "presto-example.io",
"userFiles": [{
"keyName": "certificate",
"filename": "576d8b38e9e8bc3749599489408a0b9f605b2a8d.md",
"userFilename": "certificate.json"
}],
"authenticationMethod": "No Authentication",
"connectionStringOptions": ""
}
},
"connectionString": "presto-example.io:8080/postgres/your_database"
}{
"bulkId": "bulk_ds_update_657dd563e6e746069bf040de5e6909a9",
"connectionString": "presto-example.io:8080/postgres/your_database",
"jobsCreated": 4
}curl \
--request PUT \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
https://your-immuta-url.com/presto/handler/67/triggerHighCardinalityJob25424a50-17df-11ec-b388-0fe1d33b5af1POST /asa/handler
Save the provided connection information as a data source.
private
boolean When false, the data source will be publicly available in the Immuta UI.
Yes
blobHandler
array[object] A list of full URLs providing the locations of all blob store handlers to use with this data source.
Yes
blobHandlerType
string Describes the type of underlying blob handler that will be used with this data source (e.g., MS SQL).
Yes
recordFormat
string The data format of blobs in the data source, such as json, xml, html, or jpeg.
id
integer The handler ID.
dataSourceId
integer The ID of the data source.
warnings
string This message describes issues with the created data source, such as the data source being unhealthy.
connectionString
string The connection string used to connect the data source to Immuta.
The following request saves the provided connection information as a data source.
GET /asa/handler/{handlerId}
Get the handler metadata associated with the provided handler ID.
handlerId
integer The specific handler ID.
Yes
skipCache
boolean If true the handler cache will be skipped when retrieving the handler data.
No
dataSourceId
integer The data source ID.
value
metadata Details regarding the handler.
The following request returns the handler metadata associated with the provided handler ID.
/asa/handler/{handlerId}
.
/asa/bulk
.
/asa/handler/{handlerId}/triggerHighCardinalityJob
.
/asa/handler/{handlerId}/refreshNativeViewJob
PUT /asa/handler/{handlerId}
Updates the handler 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.
handlerId
integer The specific handler ID.
Yes
skipCache
boolean If true the handler cache will be skipped when retrieving the handler data.
No
dataSourceId
integer The data source ID.
body
array[object] Details regarding the handler, including schema, name format, and data source metadata.
The following request updates the handler metadata (saved in example_payload.json) associated with the provided handler ID.
Request payload example
PUT /asa/bulk
Updates the data source metadata associated with the provided connection string.
body
array[object] This payload includes data source metadata and specifies the connection string.
Yes
bulkId
integer The bulk handler metadata ID.
connectionString
string The specified connection string.
jobsCreated
integer Number of jobs created.
The following request updates the handler metadata for the handler ID specified in example_payload.json.
Request payload example
PUT /asa/handler/{handlerId}/triggerHighCardinalityJob
Recalculates the high cardinality column for the provided handler ID.
handlerId
integer The specific handler ID.
Yes
The response returns a string of characters that identify the high cardinality job run.
The following request recalculates the high cardinality column for the provided handler ID.
PUT /asa/handler/{handlerId}/refreshNativeViewJob
Refresh the view of a data source.
handlerId
integer The ID of the handler.
Yes
The response returns a string of characters that identifies the refresh view job run.
This request refreshes the view for the data source with the handler ID 7.
POST /governance/purpose
Create a purpose.
name
string The purpose name.
Yes
id
integer The ID of the purpose.
No
acknowledgement
string The purpose acknowledgement.
No
description
string The purpose description.
id
integer The purpose ID.
name
string The purpose name.
acknowledgement
string The purpose acknowledgement.
description
string The purpose description.
addedByProfile
integer The profile ID of the user who created the purpose.
displayAcknowledgement
boolean When true, the acknowledgement text is displayed for users when they are prompted to agree to use the data in the project only for that purpose.
This example request with the payload below creates a new purpose.
GET
/governance/purpose
.
GET
/governance/purpose/{purposeId}
.
GET /governance/purpose
Search for purposes.
offset
integer Used in combination with size to fetch pages.
No
size
integer The number of results to return per page.
No
noLimit
boolean When true, the number of results to return per page will not be limited to the number defined by size. Default is false.
No
sortField
string Used to sort results by field. Default is name.
count
integer The number of results.
purposes
array Information on each purpose returned, including id, name, acknowledgement, description, subpurposes, policyMetadata, the creation date, and the staged status.
This example request returns a list of all of the purposes.
GET /governance/purpose/{purposeId}
Get a purpose by ID.
purposeId
integer The purpose ID.
Yes
includeSubpurposes
boolean If true, sub-purposes will be included in the results.
No
id
integer The purpose ID.
name
string The purpose name.
acknowledgement
string The purpose acknowledgement.
description
string The purpose description.
addedByProfile
integer The profile ID of the user who created the purpose.
displayAcknowledgement
boolean When true, the acknowledgement text is displayed for users when they are prompted to agree to use the data in the project only for that purpose.
This example request returns information on the purpose with the ID 1, including its sub-purposes.
PUT /governance/purpose/{purposeId}
Update a purpose.
purposeId
integer The purpose ID.
Yes
name
string The purpose name.
No
acknowledgement
string The purpose acknowledgement.
No
description
string The purpose description.
No
displayAcknowledgement
boolean When true, the acknowledgement text will display for users when they are prompted to agree to use the data in the project only for that purpose. Default is true.
id
integer The purpose ID.
name
string The purpose name.
acknowledgement
string The purpose acknowledgement.
description
string The purpose description.
addedByProfile
integer The profile ID of the user who created the purpose.
displayAcknowledgement
boolean When true, the acknowledgement text is displayed for users when they are prompted to agree to use the data in the project only for that purpose.
This example request with the payload below will update the description of the purpose with the ID 8.
DELETE /governance/purpose/{purposeId}
Delete the purpose with the given ID and its associated sub-purposes.
purposeId
integer The purpose ID.
Yes
id
integer The purpose ID.
name
string The purpose name.
acknowledgement
string The purpose acknowledgement.
description
string The purpose description.
addedByProfile
integer The profile ID of the user who created the purpose.
displayAcknowledgement
boolean When true, the acknowledgement text is displayed for users when they are prompted to agree to use the data in the project only for that purpose.
This example request deletes the purpose with the ID 8.
connectionKeyThe connectionKey is a unique identifier for the collection of data sources being created. If an existing connectionKey is used with new connection information, it will delete the old data sources and create new ones from the new information in the payload.
connectionAthena: Also requires region and queryResultLocationBucket. queryResultLocationDirectory is optional. authenticationMethod can be none, accessKey (default: username = access key, password = secret key), or instanceRole.
BigQuery: Does not require hostname
nameTemplateAvailable templates include
<tablename>
<schema>
<database>
All cases of the name in Immuta should be lowercase.
For example, consider a table TPC.CUSTOMER that is given the following nameTemplate:
This nameTemplate will produce a data source named tpc.customer in a schema project named tpc.
optionsownerssourcesThis attribute configures which sources are created. If sources is not provided, all sources from the given connection will be created.
There are 3 types of sources than can be specified:
If you specify any sources (either tables or queries), but you still want to create data sources for the rest of the tables in the schema or database, you can specify all as a source:
Immuta recommends creating a view in your remote database instead of using this option, but if that is not possible, you can create data sources based on SQL statements:
If you want to select specific tables to be created as data sources, or if you want to tag individual data sources or columns within a data source, you need to leverage this parameter:
When specifying a table or query there are other options that can be specified:
If any columns are specified, those are the only columns that will be available in the data source.
If no columns are specified, Immuta will look for new or removed columns on a schedule (by default, once a day) and add or remove columns from the data sources automatically as needed.
New columns will be tagged New, so you can build a policy to automatically mask new columns until they are approved.
columns is an array of objects for each column:
You can add descriptions to columns without having to specify all the columns in the data source. columnDescriptions is an array of objects with the following schema:
You can add tags to columns or data sources. tags is an object with the following schema:
curl \
--request POST \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
--data @example_payload.json
https://your-immuta-url.com/asa/handler{
"hits": [{
"name": "Public Credit Accounts",
"id": 1,
"recordFormat": "Not Provided",
"deleted": false,
"description": null,
"createdAt": "2021-09-09T14:12:09.511Z",
"subscriptionPolicy": {
"type": "subscription",
"approvals": [{
"requiredPermission": "OWNER",
"specificApproverRequired": false
}]
},
"schemaEvolutionId": 1,
"recordCount": 0,
"blobHandlerType": "Synapse",
"subscriptionType": "approval",
"sqlSchemaName": "public",
"status": "failed",
"subscriptionStatus": "owner",
"connectionString": "[email protected]:1433/public",
"policy": "No Conflict",
"policyHandlerType": "Builder",
"native": null,
"workspace": null
}, {
"name": "Public Credit Transactions",
"id": 2,
"recordFormat": "Not Provided",
"deleted": false,
"description": null,
"createdAt": "2021-09-09T14:12:09.522Z",
"subscriptionPolicy": {
"type": "subscription",
"approvals": [{
"requiredPermission": "OWNER",
"specificApproverRequired": false
}]
},
"schemaEvolutionId": 1,
"recordCount": 0,
"blobHandlerType": "Synapse",
"subscriptionType": "approval",
"sqlSchemaName": "public",
"status": "passed",
"subscriptionStatus": "owner",
"connectionString": "[email protected]:1433/public",
"policy": "No Conflict",
"policyHandlerType": "Builder",
"native": null,
"workspace": null
}, {
"name": "Public Fake Medical Claims 2017",
"id": 3,
"recordFormat": "Not Provided",
"deleted": false,
"description": null,
"createdAt": "2021-09-09T14:12:09.894Z",
"subscriptionPolicy": null,
"schemaEvolutionId": 1,
"recordCount": 0,
"blobHandlerType": "Synapse",
"subscriptionType": "manual",
"sqlSchemaName": "public",
"status": "passed",
"subscriptionStatus": "owner",
"connectionString": "[email protected]:1433/public",
"policy": "No Conflict",
"policyHandlerType": "Builder",
"native": null,
"workspace": null
}, {
"name": "Public Uciml Census Income Enriched",
"id": 4,
"recordFormat": "Not Provided",
"deleted": false,
"description": null,
"createdAt": "2021-09-09T14:12:09.916Z",
"subscriptionPolicy": null,
"schemaEvolutionId": 1,
"recordCount": 0,
"blobHandlerType": "Synapse",
"subscriptionType": "manual",
"sqlSchemaName": "public",
"status": "passed",
"subscriptionStatus": "owner",
"connectionString": "[email protected]:1433/public",
"policy": "None",
"policyHandlerType": "None",
"native": null,
"workspace": null
}],
"facets": {
"tags": [],
"statuses": [{
"name": "failed",
"count": 0
}, {
"name": "passed",
"count": 0
}],
"blobHandlerTypes": [{
"name": "Synapse",
"count": 0
}],
"editable": [{
"name": "owned",
"count": 4
}, {
"name": "expert",
"count": 0
}, {
"name": "notSubscribed",
"count": 0
}, {
"name": "disabled",
"count": 0
}]
},
"count": 4
}{
"connectionString": "[email protected]:1433/public"
}curl \
--request GET \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
https://your-immuta-url.com/asa/handler/67{
"dataSourceId": 67,
"metadata": {
"ssl": true,
"port": 1433,
"query": null,
"table": "table_108",
"schema": "elliott_dev",
"database": "your_database",
"hostname": "your-workspace.sql.azuresynapse.net",
"username": "your-username",
"eventTime": null,
"dataSourceName": "Dev Table 108",
"bodataTableName": "table_108",
"disableClassify": false,
"highCardinality": "col_1",
"bodataSchemaName": "dev",
"columnsNormalized": false,
"schemaProjectName": "Dev",
"staleDataTolerance": 2592000
},
"type": "odbcHandler",
"connectionString": "[email protected]:1433/public",
"id": 67,
"createdAt": "2021-09-17T14:15:10.256Z",
"updatedAt": "2021-09-17T14:15:19.547Z",
"dbms": {
"name": "asa"
}
}curl \
--request PUT \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
--data @example_payload.json
https://your-immuta-url.com/asa/handler/67{
"schemaEvolution": {
"schemas": [
"string"
],
"disabled": false,
"ownerProfileId": 0,
"config": {
"nameTemplate": {
"tableFormat": "string",
"nameFormat": "string",
"sqlSchemaNameFormat": "string",
"schemaProjectNameFormat": "string"
}
},
"dataSourceConfig": {},
"handlerMetadata": {},
"connectionString": "string"
},
"handler": {
"id": 0,
"type": "string",
"dataSourceId": 0,
"metadata": {
"blobId": "string",
"eventTime": "string",
"highCardinality": "string",
"bodataSchemaName": "immuta",
"bodataTableName": "string",
"format": "string",
"disableClassify": false,
"staleDataTolerance": 2592000,
"dataSourceName": "string",
"schemaProjectName": "string",
"username": "string",
"password": "string",
"ssl": false,
"database": "string",
"schema": "string",
"table": "string",
"query": "string",
"columns": [{
"name": "string",
"dataType": "string",
"remoteColumn": "string",
"remoteType": "string",
"srid": 0,
"statistics": {},
"nullable": false,
"isPrimaryKey": false,
"displayName": "string",
"description": "string",
"tags": [
"string"
],
"catalogMetadata": {},
"children": [
"string"
]
}],
"columnsNormalized": false,
"nativeWorkspaceName": "string",
"nativeSchemaName": "string",
"nativeViewName": "string",
"hostname": "string",
"port": 0,
"userFiles": [{
"keyName": "string",
"filename": "string",
"content": "string",
"userFilename": "string"
}],
"scheme": "string",
"warehouse": "string",
"connectionStringOptions": "string",
"native": {
"type": "string",
"projectId": 0
},
"secureNativeView": false
},
"dbms": {
"name": "string"
},
"connectionString": "string",
"createdAt": "2021-09-20",
"updatedAt": "2021-09-20",
"policyHandler": {
"visibilitySchema": {
"fields": [
"string"
],
"version": "2021-09-20"
}
}
}
}{
"dataSourceId": 67,
"metadata": {
"ssl": true,
"port": 1433,
"query": null,
"table": "table_108",
"schema": "dev",
"database": "your_database",
"hostname": "your-workspace.sql.azuresynapse.net",
"username": "your-username",
"eventTime": null,
"dataSourceName": "Dev Table 108",
"bodataTableName": "table_108",
"disableClassify": false,
"highCardinality": "col_1",
"bodataSchemaName": "dev",
"columnsNormalized": false,
"schemaProjectName": "Dev",
"staleDataTolerance": 2592000
},
"type": "odbcHandler",
"connectionString": "[email protected]:1433/public",
"id": 67,
"createdAt": "2021-09-17T14:15:10.256Z",
"updatedAt": "2021-09-17T14:15:19.547Z",
"dbms": {
"name": "asa"
}
}curl \
--request PUT \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
--data @example_payload.json
https://your-immuta-url.com/asa/bulk{
"ids": [
0
],
"connectionString": "string",
"handler": {
"metadata": {
"blobId": "string",
"eventTime": "string",
"highCardinality": "string",
"bodataTableName": "string",
"format": "string",
"disableClassify": false,
"staleDataTolerance": 2592000,
"dataSourceName": "string",
"schemaProjectName": "string",
"username": "string",
"password": "string",
"ssl": false,
"database": "string",
"schema": "string",
"table": "string",
"query": "string",
"columns": [{
"name": "string",
"dataType": "string",
"remoteColumn": "string",
"remoteType": "string",
"srid": 0,
"statistics": {},
"nullable": false,
"isPrimaryKey": false,
"displayName": "string",
"description": "string",
"tags": [
"string"
],
"catalogMetadata": {},
"children": [
"string"
]
}],
"columnsNormalized": false,
"nativeWorkspaceName": "string",
"nativeSchemaName": "string",
"nativeViewName": "string",
"authenticationMethod": "string",
"hostname": "string",
"port": 0,
"sid": "string",
"connectionStringOptions": "string",
"paths": [
"string"
],
"clusterName": "string",
"pathUris": [
"string"
],
"metastoreTables": [
"string"
],
"scheme": "string",
"providers": "string",
"ephemeral": false,
"httpPath": "string",
"userFiles": [{
"keyName": "string",
"filename": "string",
"content": "string",
"userFilename": "string"
}],
"warehouse": "string",
"workspaceId": 0,
"authDB": "string",
"directory": "string",
"secureNativeView": false,
"bodataSchemaName": "string"
}
},
"schemaEvolution": {
"schemas": [
"string"
],
"disabled": false,
"ownerProfileId": 0,
"config": {
"nameTemplate": {
"tableFormat": "string",
"nameFormat": "string",
"sqlSchemaNameFormat": "string",
"schemaProjectNameFormat": "string"
}
},
"dataSourceConfig": {},
"handlerMetadata": {},
"connectionString": "string"
}
}{
"bulkId": "bulk_ds_update_fe48d7fd4c594f96a89438cdb84ec0ba",
"connectionString": "string@string:0/string",
"jobsCreated": 1
}curl \
--request PUT \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
https://your-immuta-url.com/asa/handler/67/triggerHighCardinalityJob25424a50-17df-11ec-b388-0fe1d33b5af1curl \
--request PUT \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
https://demo.immuta.com/asa/handler/7/refreshNativeViewJob53c256d0-eb57-11ec-b275-d95a8e998142curl \
--request POST \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
--data @example-payload.json \
https://demo.immuta.com/governance/purpose{
"name": "Compliance Requirement #2"
}{
"id": 10,
"name": "Compliance Requirement #2",
"acknowledgement": null,
"description": null,
"addedByProfile": 2,
"displayAcknowledgement": true,
"deleted": false,
"systemGenerated": false,
"policyMetadata": null,
"createdAt": "2021-10-04T15:52:38.060Z",
"updatedAt": "2021-10-04T15:52:38.060Z",
"subpurposes": []
}curl \
--request GET \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
https://demo.immuta.com/governance/purpose{
"purposes": [
{
"id": 1,
"name": "Re-identification Prohibited",
"acknowledgement": "I agree to use the data associated with this project for the stated purpose of the project, and for that purpose only, as listed in the project's homepage, and to refrain from sharing that data outside of the project or Immuta. I also agree not to re-identify or take any steps to re-identify the individuals whose personal information is contained in the data sources attached to the project. In the event that these individuals have been identified or that I discover risks that I believe could lead to their identification, I agree to immediately notify the project owner or governance team and take immediate action to address and mitigate such risks. I further agree to refrain from contacting any individuals who might be identified.",
"description": null,
"addedByProfile": 1,
"displayAcknowledgement": true,
"deleted": false,
"systemGenerated": true,
"policyMetadata": null,
"createdAt": "2021-08-16T20:25:44.423Z",
"updatedAt": "2021-09-30T00:36:25.215Z"
},
{
"id": 3,
"name": "Re-identification Prohibited.CCPA",
"acknowledgement": "I agree to use the data associated with this project for the stated purpose of the project, and for that purpose only, as listed in the project's homepage, and to refrain from sharing that data outside of the project or Immuta. I also agree not to re-identify or take any steps to re-identify the individuals whose personal information is contained in the data sources attached to the project. In the event that these individuals have been identified or that I discover risks that I believe could lead to their identification, I agree to immediately notify the project owner or governance team and take immediate action to address and mitigate such risks. I further agree to refrain from contacting any individuals who might be identified.",
"description": null,
"addedByProfile": 1,
"displayAcknowledgement": true,
"deleted": false,
"systemGenerated": true,
"policyMetadata": null,
"createdAt": "2021-08-16T20:25:44.443Z",
"updatedAt": "2021-09-30T00:36:25.250Z"
},
{
"id": 2,
"name": "Re-identification Prohibited.Safe Harbor Method",
"acknowledgement": "I agree to use the data associated with this project for the stated purpose of the project, and for that purpose only, as listed in the project's homepage, and to refrain from sharing that data outside of the project or Immuta. I also agree not to re-identify or take any steps to re-identify the individuals whose health information is contained in the data sources attached to the project. In the event that these individuals have been identified or that I discover risks that I believe could lead to their identification, I agree to immediately notify the project owner or governance team and take immediate action to address and mitigate such risks. I further agree to refrain from contacting any individuals who might be identified.",
"description": null,
"addedByProfile": 1,
"displayAcknowledgement": true,
"deleted": false,
"systemGenerated": true,
"policyMetadata": null,
"createdAt": "2021-08-16T20:25:44.434Z",
"updatedAt": "2021-09-30T00:36:25.234Z"
},
{
"id": 4,
"name": "Use Case Outside De-identification",
"acknowledgement": "I agree to use the data associated with this project for the stated purpose of the project, and for that purpose only, as listed in the project's homepage, and to refrain from sharing that data outside of the project or Immuta. In the event that I discover risks that I believe could lead to unauthorized access, I agree to immediately notify the project owner or governance team and take immediate action to address and mitigate such risks.",
"description": null,
"addedByProfile": 1,
"displayAcknowledgement": true,
"deleted": false,
"systemGenerated": true,
"policyMetadata": null,
"createdAt": "2021-08-16T20:25:44.452Z",
"updatedAt": "2021-09-30T00:36:25.270Z"
}
],
"count": 4
}curl \
--request GET \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
https://demo.immuta.com/governance/purpose/1?includeSubpurposes=true{
"name": "Re-identification Prohibited",
"acknowledgement": "I agree to use the data associated with this project for the stated purpose of the project, and for that purpose only, as listed in the project's homepage, and to refrain from sharing that data outside of the project or Immuta. I also agree not to re-identify or take any steps to re-identify the individuals whose personal information is contained in the data sources attached to the project. In the event that these individuals have been identified or that I discover risks that I believe could lead to their identification, I agree to immediately notify the project owner or governance team and take immediate action to address and mitigate such risks. I further agree to refrain from contacting any individuals who might be identified.",
"description": null,
"addedByProfile": 1,
"displayAcknowledgement": true,
"deleted": false,
"systemGenerated": true,
"policyMetadata": null,
"id": 1,
"createdAt": "2021-08-16T20:25:44.423Z",
"updatedAt": "2021-09-30T00:36:25.215Z",
"addedBy": "Immuta System Account",
"projectCount": 1,
"projects": [
1
],
"subpurposes": [
{
"id": 3,
"name": "Re-identification Prohibited.CCPA",
"acknowledgement": "I agree to use the data associated with this project for the stated purpose of the project, and for that purpose only, as listed in the project's homepage, and to refrain from sharing that data outside of the project or Immuta. I also agree not to re-identify or take any steps to re-identify the individuals whose personal information is contained in the data sources attached to the project. In the event that these individuals have been identified or that I discover risks that I believe could lead to their identification, I agree to immediately notify the project owner or governance team and take immediate action to address and mitigate such risks. I further agree to refrain from contacting any individuals who might be identified.",
"description": null,
"addedByProfile": 1,
"displayAcknowledgement": true,
"deleted": false,
"systemGenerated": true,
"policyMetadata": null,
"createdAt": "2021-08-16T20:25:44.443Z",
"updatedAt": "2021-09-30T00:36:25.250Z",
"projectCount": 0,
"projects": [],
"addedBy": "Immuta System Account"
},
{
"id": 2,
"name": "Re-identification Prohibited.Safe Harbor Method",
"acknowledgement": "I agree to use the data associated with this project for the stated purpose of the project, and for that purpose only, as listed in the project's homepage, and to refrain from sharing that data outside of the project or Immuta. I also agree not to re-identify or take any steps to re-identify the individuals whose health information is contained in the data sources attached to the project. In the event that these individuals have been identified or that I discover risks that I believe could lead to their identification, I agree to immediately notify the project owner or governance team and take immediate action to address and mitigate such risks. I further agree to refrain from contacting any individuals who might be identified.",
"description": null,
"addedByProfile": 1,
"displayAcknowledgement": true,
"deleted": false,
"systemGenerated": true,
"policyMetadata": null,
"createdAt": "2021-08-16T20:25:44.434Z",
"updatedAt": "2021-09-30T00:36:25.234Z",
"addedBy": "Immuta System Account",
"projectCount": 0,
"projects": []
}
]
}curl \
--request PUT \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
--data @example-payload.json \
https://demo.immuta.com/governance/purpose/8{
"description": "This requirement has been amended to include an updated model."
}{
"id": 8,
"name": "Compliance Requirement #1",
"acknowledgement": null,
"description": "This requirement has been amended to include an updated model.",
"addedByProfile": 2,
"displayAcknowledgement": true,
"deleted": false,
"systemGenerated": false,
"policyMetadata": null,
"createdAt": "2021-10-01T21:08:00.517Z",
"updatedAt": "2021-10-04T14:21:59.834Z"
}curl \
--request DELETE \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
https://demo.immuta.com/governance/purpose/8[
{
"id": 8,
"name": "Compliance Requirement #1",
"acknowledgement": null,
"description": "This requirement has been amended to include an updated model.",
"addedByProfile": 2,
"displayAcknowledgement": true,
"deleted": true,
"systemGenerated": false,
"policyMetadata": null,
"createdAt": "2021-10-01T21:08:00.517Z",
"updatedAt": "2021-10-04T14:27:07.203Z"
}
]Yes
type
string The type of data source: ingested (metadata will exist in Immuta) or queryable (metadata is dynamically queried).
Yes
name
string The name of the data source. It must be unique within the Immuta tenant.
Yes
sqlTableName
string A string that represents this data source's table in Immuta.
Yes
organization
string The organization that owns the data source.
Yes
category
string The category of the data source.
No
description
string The description of the data source.
No
hasExamples
boolean When true, the data source contains examples.
No
No
displayAcknowledgement
boolean When true, the acknowledgement text will display for users when they are prompted to agree to use the data in the project only for that purpose. Default is true.
No
deleted
boolean If true, the purpose has been deleted.
No
subpurposes
array A list of the sub-purposes.
No
policyMetadata
array Information including the values for kAnonNoiseReduction, allowUnmaskedKAnon, adjustmentCertificationText, isHED, and adjustmentRequiresDataSourceTag.
No
staged
boolean If true, the purpose is staged.
No
deleted
boolean If true, the purpose has been deleted.
subpurposes
array A list of the sub-purposes.
policyMetadata
array Information including the values for kAnonNoiseReduction, allowUnmaskedKAnon, adjustmentCertificationText, isHED, and adjustmentRequiresDataSourceTag.
staged
boolean If true, the purpose is staged.
createdAt
timestamp The date the purpose was created.
updatedAt
timestamp The date the purpose was last updated.
No
sortOrder
string Sorts results by order, which must be asc or desc. Default is asc.
No
searchText
string Search for purpose names by text.
No
root
string Restrict results to provided root or sub-purposes of root.
No
strictSearch
boolean When true, will search for a complete match of the whole string provided in searchText.
No
getAffectedCount
boolean If true, returns the count of projects with each purpose.
No
includeDeleted
boolean If true, includes deleted purposes in the results.
No
deleted
boolean If true, the purpose has been deleted.
subpurposes
array A list of the sub-purposes.
policyMetadata
array Information including the values for kAnonNoiseReduction, allowUnmaskedKAnon, adjustmentCertificationText, isHED, and adjustmentRequiresDataSourceTag.
staged
boolean If true, the purpose is staged.
createdAt
timestamp The date the purpose was created.
updatedAt
timestamp The date the purpose was last updated.
No
reAcknowledge
boolean When true, users will have to re-acknowledge the purpose after it is updated.
No
applyToSubpurposes
boolean It true, the updates will be applied to the sub-purposes.
No
policyMetadata
array Information including the values for kAnonNoiseReduction, allowUnmaskedKAnon, adjustmentCertificationText, isHED, and adjustmentRequiresDataSourceTag.
No
deleted
boolean If true, the purpose has been deleted.
subpurposes
array A list of the sub-purposes.
policyMetadata
array Information including the values for kAnonNoiseReduction, allowUnmaskedKAnon, adjustmentCertificationText, isHED, and adjustmentRequiresDataSourceTag.
staged
boolean If true, the purpose is staged.
createdAt
timestamp The date the purpose was created.
updatedAt
timestamp The date the purpose was last updated.
deleted
boolean If true, the purpose has been deleted.
subpurposes
array A list of the sub-purposes.
policyMetadata
array Information including the values for kAnonNoiseReduction, allowUnmaskedKAnon, adjustmentCertificationText, isHED, and adjustmentRequiresDataSourceTag.
staged
boolean If true, the purpose is staged.
createdAt
timestamp The date the purpose was created.
updatedAt
timestamp The date the purpose was last updated.
Optional
hostname
string The hostname of the remote database instance.
Required
port
number The port of the remote database instance.
Optional
warehouse
string The default pool of compute resources Immuta will use to run queries and other Snowflake operations.
Required
connectionStringOptions
string Additional connection string options to be used when connecting to the remote database.
Optional
authenticationMethod
string The type of authentication method to use. Options include userPassword, keyPair, and oAuthClientCredentials.
Required
username
string The username used to connect to the remote database.
Required if using userPassword or keyPair.
password
string The password used to connect to the remote database.
Required if using userPassword.
useCertificate
boolean Set to true when using client certificate credentials to request an access token. Otherwise, set to false to use client secret.
Required if using oAuthClientCredentials.
userFiles
object Details about the files required for the request.
Required if using keyPair or oAuthClientCredentials with useCertificate set to true.
keyName
string The connection name of the key file. Must be PRIV_KEY_FILE if using keyPair, or must be oauth client certificate if using oAuthClientCredentials.
Required if using keyPair or oAuthClientCredentials with useCertificate set to true.
content
string The content of the file, base-64 encoded.
Required if using keyPair or oAuthClientCredentials with useCertificate set to true.
userFilename
string The name of the file - for display purposes in the UI.
Required if using keyPair or oAuthClientCredentials with useCertificate set to true.
handler
Databricks
Required
ssl
boolean Set to true to enable SSL communication with the remote database.
Optional
database
string The database name.
Optional
hostname
handler
Redshift
Required
ssl
boolean Set to true to enable SSL communication with the remote database.
Optional
database
string The database name.
Optional
schema
handler
Google BigQuery, Presto, and Trino
ssl
boolean Set to true to enable SSL communication with the remote database.
database
string The database name.
schema
string The schema in the remote database.
userFiles
array Array of objects; each object must have keyName (corresponds to a connection string option), content (base-64 encoded content), and userFilename (the name of the file - for display purposes in the app).
connectionStringOptions
passwordsiduserFileskeyNameKeyFilePathkeyfile.jsonTrino: authenticationMethod can be No Authentication, LDAP Authentication, or Kerberos Authentication.
handler
Snowflake
Required
ssl
boolean Set to true to enable SSL communication with the remote database.
Optional
database
string The database name.
Required
schema
dataSourceFormat
string Format to be used to name the data sources created in this group.
schemaFormat
string Format to be used to name the Immuta schema created in this group.
tableFormat
string Format to be used to name the Immuta table created in this group.
schemaProjectNameFormat
string Format to be used to name the Immuta schema project created in this group.
staleDataTolerance
integer The length in seconds that data for these sources can be cached.
disableSensitiveDataDiscovery
boolean If true, Immuta will not perform sensitive data discovery. Default: false.
domainCollectionId
string The ID of the domain to assign the data sources to. Use the GET /collection endpoint to retrieve domains and domain IDs.
hardDelete
boolean If true, when the table backing the data source is no longer available, the data source in Immuta is deleted. If this is false, the data source will be disabled. Default: false.
tableTags
array An array of tags (strings) to place at the data source level on every data source.
type
group or user The type of owner that is being added.
name
string The name of the group or the user (username they log in with).
iam (optional)
string The ID of the identity manager system the user or group comes from. If excluded, any user/group that matches will be added as an owner.
columnDescriptions
description
A short description for the data source.
documentation
Markdown-supported documentation for the data source.
naming
See the example above in Specify a Query. This is required for query-based sources, but is optional for table-based sources and can be used to override the nameTemplate provided for the whole database/schema.
owners
Specify owners for an individual data source. The payload is the same as owners at the root level.
tags
name
The column name.
dataType
The data type.
nullable
Whether or not the column contains null.
remoteType
The actual data type in the remote database.
primaryKey
Specify whether this is the primary key of the remote table.
description
Describe the column.
columnName
string The column name.
description
string The description of the column.
table
array An array of tags (strings) to add to this table.
columns
array An array of objects that specifies columnName (string) and tags (an array to tags).
string The schema in the remote database.
The Amazon S3 resource allows you to create, configure, and manage your S3 integration. In this integration, Immuta provides coarse-grained access controls for data in S3 by performing permission grants using the Access Grants API so that users don't have to manage individual IAM policies themselves.
Use the /integrations endpoint to
S3 integration enabled in Immuta; contact your Immuta representative to enable this integration
; contact your Immuta representative to get this feature enabled
No location is registered in your AWS Access Grants instance before configuring the integration in Immuta
APPLICATION_ADMIN Immuta permission to configure the integration
CREATE_S3_DATASOURCE Immuta permission to register S3 prefixes
The AWS account credentials or optional AWS IAM role you provide Immuta to configure the integration must
. AWS supports one Access Grants instance per region per AWS account.
. You will add this role to your integration configuration in Immuta so that Immuta can register this role with your Access Grants location. The policy should include at least the following permissions, but might need additional permissions depending on other local setup factors. An example trust policy is provided below.
sts:AssumeRole
with the following permissions, and attach the policy to the IAM role you created to grant the permissions to the role. The policy should include the following permissions. An example policy is provided below.
s3:GetObject
s3:GetObjectVersion
s3:GetObjectAcl
If you use server-side encryption with AWS Key Management Service (AWS KMS) keys to encrypt your data, the following permissions are required for the IAM role in the policy. If you do not use this feature, do not include these permissions in your IAM policy:
kms:Decrypt
kms:GenerateDataKey
that Immuta can use to create Access Grants locations and issue grants. This role must have the S3 permissions listed in the . An example policy is provided below.
If you use AWS IAM Identity Center, associate . Then add the permissions listed in the sample policy below to your IAM policy, and attach the policy to the IAM role you created to grant the permissions to the role.
This request configures the integration using the AWS access key authentication method.
Copy the request example. The example uses JSON format, but the request also accepts YAML.
Replace the Immuta URL and with your own.
Change the config values to your own, where
See the for parameter definitions, value types, and additional configuration options.
The response returns the status of the S3 integration configuration connection. See the for details about the response schema.
A successful response includes the validation tests statuses.
An unsuccessful request returns the status code and an error message. See the for a list of statuses, error messages, and troubleshooting guidance.
Copy the request example.
Replace the Immuta URL and with your own.
Replace the {id} request parameter with the unique identifier of the integration you want to get. Alternatively, you can get a list of all integrations and their IDs with the .
The response returns an S3 integration configuration. See the for details about the response schema. An unsuccessful response returns the status code and an error message. See the for a list of statuses, error messages, and troubleshooting guidance.
Copy the request example.
Replace the Immuta URL and with your own.
The response returns the configuration for all integrations. See the for details about the response schema. An unsuccessful request returns the status code and an error message. See the for a list of statuses, error messages, and troubleshooting guidance.
Copy the request example, and replace the values with your own as directed to update the integration settings. The example provided uses JSON format, but the request also accepts YAML.
See the for parameter definitions, value types, and additional configuration options.
Replace the Immuta URL and with your own.
Replace the {id} request parameter with the unique identifier of the integration you want to update.
Change the config values from above to your own. The editable values listed below are the only parameters that can change from the integration's existing configuration. The required parameters listed below must match the integration's existing configuration.
The response returns the status of the Amazon S3 integration configuration connection. See the for details about the response schema.
A successful response includes the validation tests statuses.
An unsuccessful request returns the status code and an error message. See the for a list of statuses, error messages, and troubleshooting guidance.
Copy the request example.
Replace the Immuta URL and with your own.
Replace the {id} request parameter with the unique identifier of the integration you want to delete.
The response returns the status of the S3 integration configuration that has been deleted. See the for details about the response schema. An unsuccessful request returns the status code and an error message. See the for a list of statuses, error messages, and troubleshooting guidance.
Databricks data source API reference guide
The databricks endpoint allows you to connect and manage Databricks data sources in Immuta.
Databricks Spark integration
When exposing a table or view from an Immuta-enabled Databricks cluster, be sure that at least one of these traits is true:
The user exposing the tables has READ_METADATA and SELECT permissions on the target views/tables (specifically if Table ACLs are enabled).
The user exposing the tables is listed in the immuta.spark.acl.whitelist configuration on the target cluster.
The user exposing the tables is a Databricks workspace administrator.
Databricks Unity Catalog integration
When registering Databricks Unity Catalog securables in Immuta, use and ensure it has the privileges listed below. Immuta uses this service principal continuously to orchestrate Unity Catalog policies and maintain state between Immuta and Databricks.
USE CATALOG and MANAGE on all catalogs containing securables registered as Immuta data sources.
USE SCHEMA on all schemas containing securables registered as Immuta data sources.
MODIFY and SELECT on all securables you want registered as Immuta data sources.
Azure Databricks Unity Catalog limitation
Set all table-level ownership on your Unity Catalog data sources to an individual user or service principal instead of a Databricks group before proceeding. Otherwise, Immuta cannot apply data policies to the table in Unity Catalog. See the for details.
.
.
.
POST /databricks/handler
Save the provided connection information as a data source.
This request creates two Databricks data sources.
GET /databricks/handler/{handlerId}
Get the handler metadata associated with the provided handler ID.
This request returns metadata for the handler with the ID 48.
PUT /databricks/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.
This request updates the metadata for the data source with the handler ID 48.
Payload example
The payload below updates the dataSourceName to Cities.
PUT /databricks/bulk
Update the data source metadata associated with the provided connection string.
This request updates the metadata for all data sources with the connection string specified in example-payload.json.
Payload example
The payload below adds a certificate (certificate.json) to connect to the data sources with the provided connection.
PUT /databricks/handler/{handlerId}/triggerHighCardinalityJob
Recalculate the high cardinality column for the specified data source.
The response returns a string of characters that identify the high cardinality job run.
This request re-runs the job that calculates the high cardinality column for the data source with the handler ID 47.
dataSourceFormat: <schema> <tablename>
tableFormat: <tablename>
schemaFormat: <schema>
schemaProjectNameFormat: <schema>sources:
- all: truesources:
- query: “select * from table”
naming:
datasource: “My Source”,
table: “my_source”,
schema: “queries”sources:
- table: name_of_table
schema: name_of_schemacolumnDescriptions:
- columnName: acct_num
description: The account numbertags:
table:
- Sensitive
- Marketing
columns:
- columnName: acct_num
tags:
- unique_idstring The hostname of the remote database instance.
Required
port
number The port of the remote database instance.
Optional
connectionStringOptions
string Additional connection string options to be used when connecting to the remote database.
Optional
authenticationMethod
string The type of authentication method to use. Options include oAuthM2M and token.
Required
token
string The Databricks personal access token for the service principal created for Immuta.
Required if using token authentication.
useCertificate
boolean True when using client certificate credentials to request an access token. Otherwise, client secret.
Required if using oAuthM2M.
clientId
string The client identifier of the Immuta service principal you configured. This is the client ID displayed in Databricks when creating the client secret for the service principal.
Required if using oAuthM2M.
audience
string The audience for the OAuth Client Credential token request.
Required if using oAuthM2M.
clientSecret
string An application password an app can use in place of a certificate to identity itself.
Required if using oAuthM2M and useCertificate is set to false.
certificateThumbprint
string The certificate thumbprint to use to generate the JWT for the OAuth Client Credential request.
Required if using oAuthM2M and useCertificate is set to true.
scope
clientSecret The scope limits the operations and roles allowed in Databricks by the access token. See the OAuth 2.0 documentation for details about scopes.
Optional
httpPath
string The HTTP path of your Databricks cluster or SQL warehouse.
Required
string The schema in the remote database.
Required
connectionStringOptions
string Additional connection string options to be used when connecting to the remote database.
Optional
hostname
string The hostname of the remote database instance.
Required
port
number The port of the remote database instance.
Optional
authenticationMethod
string The type of authentication method to use. Options include userPassword and okta.
Required
username
string The username used to connect to the remote database.
Required
password
string The password used to connect to the remote database.
Required
idpHost
string The Okta identity provider host URL.
Required if using okta.
appID
string The Okta application ID.
Required if using okta.
role
string The Okta role.
Required if using okta.
string Additional connection string options to be used when connecting to the remote database.
hostname
string The hostname of the remote database instance.
port
number The port of the remote database instance.
authenticationMethod
string The type of authentication method to use. Options include userPassword, keyPair, oAuthClientCredentials, token, oAuthM2M, keyFile, auto and okta.
username
string The username used to connect to the remote database.
password
string The password used to connect to the remote database.
sid
string For Google BigQuery, the BigQuery project used to build the connection string.
MODIFYMODIFYMANAGEtype
string The type of data source: ingested (metadata will exist in Immuta) or queryable (metadata is dynamically queried).
Yes
name
string The name of the data source. It must be unique within the Immuta tenant.
Yes
sqlTableName
string A string that represents this data source's table in Immuta.
Yes
organization
string The organization that owns the data source.
Yes
category
string The category of the data source.
No
description
string The description of the data source.
No
hasExamples
boolean When true, the data source contains examples.
No
private
boolean When false, the data source will be publicly available in the Immuta UI.
Yes
blobHandler
array[object] A list of full URLs providing the locations of all blob store handlers to use with this data source.
Yes
blobHandlerType
string Describes the type of underlying blob handler that will be used with this data source (e.g., MS SQL).
Yes
recordFormat
string The data format of blobs in the data source, such as json, xml, html, or jpeg.
id
integer The handler ID.
dataSourceId
integer The ID of the data source.
warnings
string This message describes issues with the created data source, such as the data source being unhealthy.
connectionString
string The connection string used to connect the data source to Immuta.
handlerId
integer The ID of the handler.
Yes
skipCache
boolean When true, will skip the handler cache when retrieving metadata.
No
body
array[object] Metadata about the data source, including the data source ID, schema, database, and connection string.
PUT
/databricks/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.
PUT
/databricks/bulk
PUT
/databricks/handler/{handlerId}/triggerHighCardinalityJob
handlerId
integer The ID of the handler.
Yes
skipCache
boolean When true, will skip the handler cache when retrieving metadata.
No
handler
metadata Includes metadata about the handler, such as ssl, port, database, hostname, username, and password.
Yes
connectionString
string The connection string used to connect to the data source.
Yes
id
integer The ID of the handler.
ca
string The certificate authority.
columns
array[object] This is a Data Dictionary object, which provides metadata about the columns in the data source, including the name and data type of the column.
handler
metadata Includes metadata about the handler, such as ssl, port, database, hostname, username, and password.
Yes
connectionString
string The connection string used to connect to the data sources.
Yes
bulkId
string The ID of the bulk data source update.
connectionString
string The connection string shared by the data sources bulk updated.
jobsCreated
integer The number of jobs that ran to update the data sources; this number corresponds to the number of data sources updated.
handlerId
integer The ID of the handler.
Yes
Yes
curl \
--request POST \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
--data @example-payload.json \
https://demo.immuta.com/databricks/handler{
"handler": [{
"metadata": {
"ssl": true,
"userFiles": [],
"authenticationMethod": "Access Token",
"password": "your-password",
"port": 443,
"hostname": "your-hostname.cloud.databricks.com",
"database": "default",
"httpPath": "sql/your/http/0/path",
"schemaProjectName": "Default",
"staleDataTolerance": 86400,
"bodataSchemaName": "default",
"bodataTableName": "applicant_data",
"dataSourceName": "Default Applicant Data",
"table": "applicant_data",
"schema": "default"
}
}, {
"metadata": {
"ssl": true,
"userFiles": [],
"authenticationMethod": "Access Token",
"password": "your-password",
"port": 443,
"hostname": "your-hostname.cloud.databricks.com",
"database": "default",
"httpPath": "sql/your/http/0/path",
"schemaProjectName": "Default",
"staleDataTolerance": 86400,
"bodataSchemaName": "default",
"bodataTableName": "cities",
"dataSourceName": "Default Cities",
"table": "cities",
"schema": "default"
}
}],
"dataSource": {
"blobHandler": {
"scheme": "https",
"url": ""
},
"blobHandlerType": "Databricks",
"recordFormat": "",
"type": "queryable",
"schemaEvolutionId": null,
"columnEvolutionEnabled": true
},
"schemaEvolution": {
"ownerProfileId": 2,
"config": {
"nameTemplate": {
"nameFormat": "<Schema> <Tablename>",
"tableFormat": "<tablename>",
"sqlSchemaNameFormat": "<schema>",
"schemaProjectNameFormat": "<Schema>"
}
},
"schemas": []
}
}{
"connectionString": "your-hostname.cloud.databricks.com:443/default"
}curl \
--request GET \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
https://demo.immuta.com/databricks/handler/48{
"dataSourceId": 49,
"metadata": {
"ssl": true,
"port": 443,
"paths": ["/user/hive/warehouse/cities"],
"query": null,
"table": "cities",
"schema": "default",
"scheme": "dbfs",
"database": "default",
"hostname": "your-hostname.cloud.databricks.com",
"httpPath": "sql/your/http/0/path",
"pathUris": ["dbfs:/user/hive/warehouse/cities"],
"ephemeral": true,
"eventTime": null,
"userFiles": [],
"clusterName": null,
"dataSourceName": "Default Cities",
"bodataTableName": "cities",
"metastoreTables": ["default.cities"],
"bodataSchemaName": "default",
"columnsNormalized": false,
"schemaProjectName": "Default",
"staleDataTolerance": 86400,
"authenticationMethod": "Access Token"
},
"type": "queryable",
"connectionString": "your-hostname.cloud.databricks.com:443/default",
"id": 48,
"createdAt": "2021-10-06T17:53:09.640Z",
"updatedAt": "2021-10-06T17:53:09.882Z",
"dbms": {
"name": "databricks"
}
}curl \
--request PUT \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
--data @example-payload.json \
https://demo.immuta.com/databricks/handler/48{
"handler": {
"policyHandler": null,
"dataSourceId": 49,
"metadata": {
"ssl": true,
"port": 443,
"paths": ["/user/hive/warehouse/cities"],
"table": "cities",
"schema": "default",
"scheme": "dbfs",
"database": "default",
"hostname": "your-hostname.cloud.databricks.com",
"httpPath": "sql/your/http/0/path",
"pathUris": ["dbfs:/user/hive/warehouse/cities"],
"ephemeral": true,
"eventTime": null,
"userFiles": [],
"clusterName": null,
"dataSourceName": "Cities",
"bodataTableName": "cities",
"metastoreTables": ["default.cities"],
"bodataSchemaName": "default",
"columnsNormalized": false,
"schemaProjectName": "Default",
"staleDataTolerance": 86400,
"authenticationMethod": "Access Token",
"columns": [{
"name": "OBJECTID",
"dataType": "bigint",
"remoteType": "bigint",
"nullable": true
}, {
"name": "URBID",
"dataType": "bigint",
"remoteType": "bigint",
"nullable": true
}, {
"name": "LIGHTDCW",
"dataType": "bigint",
"remoteType": "bigint",
"nullable": true
}, {
"name": "ES90POP",
"dataType": "double precision",
"remoteType": "double",
"nullable": true
}, {
"name": "ES95POP",
"dataType": "double precision",
"remoteType": "double",
"nullable": true
}, {
"name": "ES00POP",
"dataType": "double precision",
"remoteType": "double",
"nullable": true
}, {
"name": "PCOUNT",
"dataType": "bigint",
"remoteType": "bigint",
"nullable": true
}, {
"name": "SCHNM",
"dataType": "text",
"remoteType": "string",
"nullable": true
}, {
"name": "NAME",
"dataType": "text",
"remoteType": "string",
"nullable": true
}, {
"name": "SQKM_FINAL",
"dataType": "double precision",
"remoteType": "double",
"nullable": true
}, {
"name": "ISO3",
"dataType": "text",
"remoteType": "string",
"nullable": true
}, {
"name": "ISOURBID",
"dataType": "text",
"remoteType": "string",
"nullable": true
}, {
"name": "REMOVED_PO",
"dataType": "text",
"remoteType": "string",
"nullable": true
}, {
"name": "ADDED_POIN",
"dataType": "text",
"remoteType": "string",
"nullable": true
}, {
"name": "YEAR_V1_01",
"dataType": "double precision",
"remoteType": "double",
"nullable": true
}, {
"name": "POP_V1_01",
"dataType": "double precision",
"remoteType": "double",
"nullable": true
}, {
"name": "Unsdcode",
"dataType": "bigint",
"remoteType": "bigint",
"nullable": true
}, {
"name": "Countryeng",
"dataType": "text",
"remoteType": "string",
"nullable": true
}, {
"name": "Continent",
"dataType": "text",
"remoteType": "string",
"nullable": true
}, {
"name": "geometry",
"dataType": "struct",
"remoteType": "struct<__geom__:bigint,_is_empty:boolean,_ndim:bigint>",
"nullable": true,
"children": [{
"name": "__geom__",
"dataType": "bigint"
}, {
"name": "_is_empty",
"dataType": "boolean"
}, {
"name": "_ndim",
"dataType": "bigint"
}]
}, {
"name": "wkt",
"dataType": "text",
"remoteType": "string",
"nullable": true
}],
"password": "your-password"
},
"type": "queryable",
"connectionString": "dbc-d3fe40ca-b4fb.cloud.databricks.com:443/default",
"id": 48,
"createdAt": "2021-10-06T17:53:09.640Z",
"updatedAt": "2021-10-06T17:53:09.882Z",
"dbms": {
"name": "databricks"
}
}
}{
"id": 48,
"ca": ["-----BEGIN CERTIFICATE-----\ncertificatedata\n-----END CERTIFICATE-----"],
"metadata": {
"columns": [{
"name": "OBJECTID",
"dataType": "bigint",
"remoteType": "bigint",
"nullable": true
}, {
"name": "URBID",
"dataType": "bigint",
"remoteType": "bigint",
"nullable": true
}, {
"name": "LIGHTDCW",
"dataType": "bigint",
"remoteType": "bigint",
"nullable": true
}, {
"name": "ES90POP",
"dataType": "double precision",
"remoteType": "double",
"nullable": true
}, {
"name": "ES95POP",
"dataType": "double precision",
"remoteType": "double",
"nullable": true
}, {
"name": "ES00POP",
"dataType": "double precision",
"remoteType": "double",
"nullable": true
}, {
"name": "PCOUNT",
"dataType": "bigint",
"remoteType": "bigint",
"nullable": true
}, {
"name": "SCHNM",
"dataType": "text",
"remoteType": "string",
"nullable": true
}, {
"name": "NAME",
"dataType": "text",
"remoteType": "string",
"nullable": true
}, {
"name": "SQKM_FINAL",
"dataType": "double precision",
"remoteType": "double",
"nullable": true
}, {
"name": "ISO3",
"dataType": "text",
"remoteType": "string",
"nullable": true
}, {
"name": "ISOURBID",
"dataType": "text",
"remoteType": "string",
"nullable": true
}, {
"name": "REMOVED_PO",
"dataType": "text",
"remoteType": "string",
"nullable": true
}, {
"name": "ADDED_POIN",
"dataType": "text",
"remoteType": "string",
"nullable": true
}, {
"name": "YEAR_V1_01",
"dataType": "double precision",
"remoteType": "double",
"nullable": true
}, {
"name": "POP_V1_01",
"dataType": "double precision",
"remoteType": "double",
"nullable": true
}, {
"name": "Unsdcode",
"dataType": "bigint",
"remoteType": "bigint",
"nullable": true
}, {
"name": "Countryeng",
"dataType": "text",
"remoteType": "string",
"nullable": true
}, {
"name": "Continent",
"dataType": "text",
"remoteType": "string",
"nullable": true
}, {
"name": "geometry",
"dataType": "struct",
"remoteType": "struct<__geom__:bigint,_is_empty:boolean,_ndim:bigint>",
"nullable": true,
"children": [{
"name": "__geom__",
"dataType": "bigint"
}, {
"name": "_is_empty",
"dataType": "boolean"
}, {
"name": "_ndim",
"dataType": "bigint"
}]
}, {
"name": "wkt",
"dataType": "text",
"remoteType": "string",
"nullable": true
}]
}
}curl \
--request PUT \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
--data @example-payload.json \
https://demo.immuta.com/databricks/bulk{
"handler": {
"metadata": {
"ssl": true,
"port": 443,
"database": "default",
"hostname": "your-hostname.cloud.databricks.com",
"userFiles": [{
"keyName": "test",
"filename": "6dc06a3310b9ba33c543e483d1e745b3ac9bc648.json",
"userFilename": "certificate.json"
}],
"authenticationMethod": "Access Token",
"password": "your-password",
"httpPath": "sql/your/http/0/path"
}
},
"connectionString": "your-hostname.cloud.databricks.com:443/default/default"
}{
"bulkId": "bulk_ds_update_9ae5bfd85a3a47a8b454c618043e2aa3",
"connectionString": "your-hostname.cloud.databricks.com:443/default",
"jobsCreated": 2
}curl \
--request PUT \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
https://demo.immuta.com/databricks/handler/47/triggerHighCardinalityJobf6ac1ad0-26d0-11ec-8078-d36bbf5b90fbhave the permissions to perform the following actions to create locations and issue grants:
accessgrantslocation resource:
s3:CreateAccessGrant
s3:DeleteAccessGrantsLocation
s3:GetAccessGrantsLocation
s3:UpdateAccessGrantsLocation
accessgrantsinstance resource:
s3:CreateAccessGrantsInstance
s3:CreateAccessGrantsLocation
s3:DeleteAccessGrantsInstance
accessgrant resource:
s3:DeleteAccessGrant
s3:GetAccessGrant
bucket resource: s3:ListBucket
role resource:
iam:GetRole
iam:PassRole
all resources: s3:ListAccessGrantsInstances
sts:SetSourceIdentity
s3:GetObjectVersionAcls3:ListMultipartUploadParts
s3:PutObject
s3:PutObjectAcl
s3:PutObjectVersionAcl
s3:DeleteObject
s3:DeleteObjectVersion
s3:AbortMultipartUpload
s3:ListBucket
s3:ListAllMyBuckets
arn:aws:s3:us-east-2:6********499:access-grants/default/newlocation2
<aws_account>: Your AWS account ID.
<identity_store_id>: The globally unique identifier for the identity store (IdentityStoreId) that is connected to the Identity Center instance. This value is generated when a new identity store is created.
name is the name for the integration that is unique across all Amazon S3 integrations configured in Immuta.
awsAccountId is the ID of your AWS account.
awsRegion is the account's AWS region (such as us-east1).
awsLocationRole is the AWS IAM role ARN assigned to the base access grants location. This is the role the AWS Access Grants service assumes to vend credentials to the grantee.
awsLocationPath is the base S3 location prefix that Immuta will use for this connection when registering S3 data sources. This path must be unique across all S3 integrations configured in Immuta.
awsAccessKeyId is the AWS access key ID of the AWS account configuring the integration.
awsSecretAccessKey is the AWS secret access key of the AWS account configuring the integration.
This request configures the integration using the automatic authentication method, which searches and obtains credentials using the AWS SDK's default credential provider chain. This method requires a configured IAM role for a service account and is only supported if you're using a self-managed deployment of Immuta. Contact your Immuta representative to customize your deployment and set up an IAM role for a service account that can give Immuta the credentials to set up the integration. Your Immuta representative will
Provide the AWS account to add to your trust policy.
Update the Immuta AWS configuration to allow Immuta to assume the role of your service principal.
Then, complete the steps below.
Copy the request example. The example uses JSON format, but the request also accepts YAML.
Replace the Immuta URL and with your own.
Change the config values to your own, where
name is the name for the integration that is unique across all Amazon S3 integrations configured in Immuta.
awsAccountId is the ID of your AWS account.
awsRegion is the account's AWS region (such as us-east1
name is the name for the integration that is unique across all Amazon S3 integrations configured in Immuta.
authenticationType is the method used to authenticate with AWS when configuring the S3 integration (accepted values are auto or accessKey).
awsAccessKeyId is the AWS access key ID for the AWS account editing the integration.
awsSecretAccessKey is the AWS secret access key for the AWS account editing the integration.
required values from existing configuration:
awsRoleToAssume is the optional AWS IAM role ARN Immuta assumes when interacting with AWS.
awsAccountId is the ID of your AWS account.
awsRegion is the account's AWS region (such as us-east1).
awsLocationRole is the AWS IAM role ARN assigned to the base access grants location. This is the role the AWS Access Grants service assumes to vend credentials to the grantee.
awsLocationPath is the base S3 location that Immuta will use for this connection when registering S3 data sources. This path must be unique across all S3 integrations configured in Immuta.
POST /trino/handler
Save the provided connection information as a data source.
private
boolean When false, the data source will be publicly available in the Immuta UI.
Yes
blobHandler
array[object] The parameters for this array include scheme ("https") and url (an empty string).
Yes
blobHandlerType
string Describes the type of underlying blob handler that will be used with this data source (e.g., MS SQL).
Yes
recordFormat
string The data format of blobs in the data source, such as json, xml, html, or jpeg.
id
integer The handler ID.
dataSourceId
integer The ID of the data source.
warnings
string This message describes issues with the created data source, such as the data source being unhealthy.
connectionString
string The connection string used to connect the data source to Immuta.
This request creates a Trino data source.
GET /trino/handler/{handlerId}
Get the handler metadata associated with the provided handler ID.
handlerId
integer The ID of the handler.
Yes
skipCache
boolean When true, will skip the handler cache when retrieving metadata.
No
body
array[object] Metadata about the data source, including the data source ID, schema, database, and connection string.
This request returns metadata for the handler with the ID 1.
PUT
/trino/handler/{handlerId}
. This endpoint does not perform partial updates, but will allow the dictionary to be omitted. In this case, it uses the current dictionary.
PUT
/trino/bulk
.
PUT
/trino/handler/{handlerId}/triggerHighCardinalityJob
.
PUT
/trino/handler/{handlerId}/refreshNativeViewJob
PUT /trino/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.
handlerId
integer The ID of the handler.
Yes
skipCache
boolean When true, will skip the handler cache when retrieving metadata.
No
handler
metadata Includes metadata about the handler, such as ssl, port, database, hostname, username, and password.
Yes
connectionString
string The connection string used to connect to the data source.
Yes
id
integer The ID of the handler.
ca
string The certificate authority.
columns
array[object] This is a Data Dictionary object, which provides metadata about the columns in the data source, including the name and data type of the column.
This request updates the data source name to Marketing Data for the data source with the handler ID 1.
PUT /trino/bulk
Update the data source metadata associated with the provided connection string.
handler
metadata Includes metadata about the handler, such as ssl, port, database, hostname, username, and password.
Yes
connectionString
string The connection string used to connect to the data sources.
Yes
bulkId
string The ID of the bulk data source update.
connectionString
string The connection string shared by the data sources bulk updated.
jobsCreated
integer The number of jobs that ran to update the data sources; this number corresponds to the number of data sources updated.
This request updates the metadata for all data sources with the connection string specified in example-payload.json.
The payload below adds a certificate (certificate.json) to the data sources with the provided connection.
PUT /trino/handler/{handlerId}/triggerHighCardinalityJob
Recalculate the high cardinality column for the specified data source.
handlerId
integer The ID of the handler.
Yes
The response returns a string of characters that identify the high cardinality job run.
This request re-runs the job that calculates the high cardinality column for the data source with the handler ID 30.
PUT /trino/handler/{handlerId}/refreshNativeViewJob
Refresh the view of a data source.
handlerId
integer The ID of the handler.
Yes
The response returns a string of characters that identifies the refresh view job run.
This request refreshes the view for the data source with the handler ID 7.
curl -X 'POST' \
'https://<your-immuta-url.com>/integrations' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: <your-api-key>' \
-d '{
"type": "Native S3",
"autoBootstrap": false,
"config": {
"name": "<name-of-your-integration>",
"awsAccountId": "<your-aws-account-id>",
"awsRegion": "<your-aws-region>",
"awsLocationRole": "<arn:aws:iam::your-location-role-arn:role/access-grants-instance-role>",
"awsLocationPath": "<your-s3-location-path>",
"authenticationType": "auto"
}
}'{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt1234567891011",
"Effect": "Allow",
"Principal": {
"Service":"access-grants.s3.amazonaws.com"
},
"Action": [
"sts:AssumeRole",
"sts:SetSourceIdentity"
]
}
]
} {
"Version": "2012-10-17",
"Statement": [
{
"Sid": "ObjectLevelReadPermissions",
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:GetObjectVersion",
"s3:GetObjectAcl",
"s3:GetObjectVersionAcl",
"s3:ListMultipartUploadParts"
],
"Resource": [
<bucket arn>
]
},
{
"Sid": "ObjectLevelWritePermissions",
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:PutObjectAcl",
"s3:PutObjectVersionAcl",
"s3:DeleteObject",
"s3:DeleteObjectVersion",
"s3:AbortMultipartUpload"
],
"Resource": [
<bucket arn>
]
},
{
"Sid": "BucketLevelReadPermissions",
"Effect": "Allow",
"Action": [
"s3:ListAllMyBuckets",
"s3:ListBucket"
],
"Resource": [
<bucket arn>
]
}
]
}curl -X 'POST' \
'https://<your-immuta-url.com>/integrations' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: <your-api-key>' \
-d '{
"type": "Native S3",
"autoBootstrap": false,
"config": {
"name": "<name-of-your-integration>",
"awsAccountId": "<your-aws-account-id>",
"awsRegion": "<your-aws-region>",
"awsLocationRole": "<arn:aws:iam::your-location-role-arn:role/access-grants-instance-role>",
"awsLocationPath": "<your-s3-location-path>",
"authenticationType": "accessKey",
"awsAccessKeyId": "<your-access-key-id>",
"awsSecretAccessKey": "<your-secret-access-key>"
}
}'{
"id": "123456789",
"status": "creating",
"validationResults": {
"status": "passed",
"validationTests": [
{
"name": "There is no existing integration matching this configuration",
"status": "passed"
},
{
"name": "The provided integration name is unique across Immuta S3 integrations",
"status": "passed"
},
{
"name": "The provided access grants location role is a valid ARN format",
"status": "passed"
},
{
"name": "The provided AWS credentials allow fetching the caller's identity via the AWS STS API",
"status": "passed"
},
{
"name": "An AWS Access Grants instance is configured in the provided AWS account and region",
"status": "passed"
},
{
"name": "The provided S3 path exists and Immuta can list prefixes",
"status": "passed"
},
{
"name": "An AWS Access Grants location does not yet exist for the provided path",
"status": "passed"
}
]
}
}{
"statusCode": 409,
"error": "Conflict",
"message": "Access Grants location already exists on provided path."
}curl -X 'GET' \
'https://<your-immuta-url.com>/integrations/{id}' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: <your-api-key>'{
"id": "123456789",
"status": "enabled",
"validationResults": {
"status": "passed",
"validationTests": [
{
"name": "There is no existing integration matching this configuration",
"status": "passed"
},
{
"name": "The provided integration name is unique across Immuta S3 integrations",
"status": "passed"
},
{
"name": "The provided access grants location role is a valid ARN format",
"status": "passed"
},
{
"name": "The provided AWS credentials allow fetching the caller's identity via the AWS STS API",
"status": "passed"
},
{
"name": "An AWS Access Grants instance is configured in the provided AWS account and region",
"status": "passed"
},
{
"name": "The provided S3 path exists and Immuta can list prefixes",
"status": "passed"
},
{
"name": "An AWS Access Grants location does not yet exist for the provided path",
"status": "passed"
}
]
},
"type": "Native S3",
"autoBootstrap": false,
"config": {
"port": 443,
"name": "S3 integration",
"awsAccountId": "123456789",
"awsRegion": "us-east-1",
"awsLocationRole": "arn:aws:iam::123456789:role/access-grants-instance-role",
"awsLocationPath": "s3://",
"authenticationType": "accessKey",
"awsAccessKeyId": "123456789",
"awsSecretAccessKey": "123456789"
}
}curl -X 'GET' \
'https://<your-immuta-url.com>/integrations' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: <your-api-key>'[
{
"id": "1",
"status": "enabled",
"validationResults": {
"status": "passed",
"validationTests": [
{
"name": "Initial Validation: Basic Connection Test",
"status": "passed"
},
{
"name": "Initial Validation: Default Warehouse Access Test",
"status": "passed",
"result": []
},
{
"name": "Initial Validation: Validate access to Privileged Role",
"status": "passed",
"result": []
},
{
"name": "Validate Automatic: Database Does Not Exist",
"status": "passed"
},
{
"name": "Validate Automatic: Impersonation Role Does Not Exist",
"status": "skipped"
},
{
"name": "Validate Automatic Bootstrap User Grants",
"status": "passed"
}
] },
"type": "Snowflake",
"autoBootstrap": true,
"config": {
"host": "organization.us-east-1.snowflakecomputing.com",
"warehouse": "SAMPLE_WAREHOUSE",
"database": "SNOWFLAKE_SAMPLE_DATA",
"port": 443,
"audit": {
"enabled": false
},
"workspaces": {
"enabled": false
},
"impersonation": {
"enabled": false
},
"lineage": {
"enabled": false
},
"authenticationType": "userPassword",
"username": "<REDACTED>",
"password": "<REDACTED>",
"role": "ACCOUNTADMIN"
}
},
{
"id": "123456789",
"status": "enabled",
"validationResults": {
"status": "passed",
"validationTests": [
{
"name": "There is no existing integration matching this configuration",
"status": "passed"
},
{
"name": "The provided integration name is unique across Immuta S3 integrations",
"status": "passed"
},
{
"name": "The provided access grants location role is a valid ARN format",
"status": "passed"
},
{
"name": "The provided AWS credentials allow fetching the caller's identity via the AWS STS API",
"status": "passed"
},
{
"name": "An AWS Access Grants instance is configured in the provided AWS account and region",
"status": "passed"
},
{
"name": "The provided S3 path exists and Immuta can list prefixes",
"status": "passed"
},
{
"name": "An AWS Access Grants location does not yet exist for the provided path",
"status": "passed"
}
] },
"type": "Native S3",
"autoBootstrap": false,
"config": {
"port": 443,
"name": "S3 integration",
"awsAccountId": "123456789",
"awsRegion": "us-east-1",
"awsLocationRole": "arn:aws:iam::123456789:role/access-grants-instance-role",
"awsLocationPath": "s3://",
"authenticationType": "accessKey",
"awsAccessKeyId": "123456789",
"awsSecretAccessKey": "123456789"
}
}
]curl -X 'PUT' \
'https://<your-immuta-url.com>/integrations/{id}' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: <your-api-key>' \
-d '{
"type": "Native S3",
"autoBootstrap": false,
"config": {
"name": "<your-edited-integration-name>",
"awsAccountId": "<your-aws-account-id>",
"awsRegion": "<your-aws-region>",
"awsLocationRole": "<arn:aws:iam::your-location-role-arn:role/access-grants-instance-role>",
"awsLocationPath": "<your-s3-location-path>",
"authenticationType": "<accessKey-or-auto>",
"awsAccessKeyId": "<your-aws-access-key-id>",
"awsSecretAccessKey": "<your-secret-access-key>"
}
}'{
"id": "123456789",
"status": "editing",
"validationResults": {
"status": "passed",
"validationTests": [
{
"name": "There is no existing integration matching this configuration",
"status": "passed"
},
{
"name": "The provided integration name is unique across Immuta S3 integrations",
"status": "passed"
},
{
"name": "The provided access grants location role is a valid ARN format",
"status": "passed"
},
{
"name": "The provided AWS credentials allow fetching the caller's identity via the AWS STS API",
"status": "passed"
},
{
"name": "An AWS Access Grants instance is configured in the provided AWS account and region",
"status": "passed"
},
{
"name": "The provided S3 path exists and Immuta can list prefixes",
"status": "passed"
},
{
"name": "An AWS Access Grants location does not yet exist for the provided path",
"status": "passed"
}
]
}
}{
"statusCode": 409,
"error": "Conflict",
"message": "Unable to edit integration with ID 123456789 in current state editing."
}curl -X 'DELETE' \
'https://<your-immuta-url.com>/integrations/{id}' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: <your-api-key>'{
"id": "123456789",
"status": "deleting",
"validationResults": {
"status": "passed",
"validationTests": [
{
"name": "The provided access grants location role is a valid ARN format",
"status": "passed"
},
{
"name": "The provided AWS credentials allow fetching the caller's identity via the AWS STS API",
"status": "passed"
},
{
"name": "An AWS Access Grants instance is configured in the provided AWS account and region",
"status": "passed"
},
{
"name": "The provided S3 path exists and Immuta can list prefixes",
"status": "passed"
}
]
}
}{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "RolePermissions",
"Effect": "Allow",
"Action": [
"iam:GetRole",
"iam:PassRole"
],
"Resource": "<role_arn>"
},
{
"Sid": "AccessGrants",
"Effect": "Allow",
"Action": [
"s3:CreateAccessGrant",
"s3:DeleteAccessGrantsLocation",
"s3:GetAccessGrantsLocation",
"s3:CreateAccessGrantsLocation",
"s3:GetAccessGrantsInstance",
"s3:GetAccessGrantsInstanceForPrefix",
"s3:GetAccessGrantsInstanceResourcePolicy",
"s3:ListAccessGrants",
"s3:ListAccessGrantsLocations",
"s3:ListAccessGrantsInstances",
"s3:DeleteAccessGrant",
"s3:GetAccessGrant"
],
"Resource": [
"<access_grants_instance_arn>"
]
}
]
}{
"Sid": "sso",
"Effect": "Allow",
"Action": [
"sso:DescribeInstance",
"sso:DescribeApplication",
"sso-directory:DescribeUsers"
],
"Resource": [
"<iam_identity_center_instance_arn>",
"<iam_identity_center_application_arn_for_s3_access_grants>",
"arn:aws:identitystore:::user/*",
"arn:aws:identitystore::<aws_account>:identitystore/<identity_store_id>"
]
}, {
"Sid": "idc",
"Effect": "Allow",
"Action": [
"identitystore:DescribeUser",
"identitystore:DescribeGroup"
],
"Resource": [
"<iam_identity_center_instance_arn>",
"<iam_identity_center_application_arn_for_s3_access_grants>",
"arn:aws:identitystore:::user/*",
"arn:aws:identitystore::<aws_account>:identitystore/<identity_store_id>"
]
}curl \
--request POST \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
--data @example-payload.json \
https://demo.immuta.com/trino/handler{
"handler": {
"metadata": {
"staleDataTolerance": 86400,
"schemaProjectName": "Public",
"bodataSchemaName": "public",
"columns": [{
"name": "c_customer_sk",
"dataType": "integer",
"remoteType": "integer",
"nullable": true
}, {
"name": "c_customer_id",
"dataType": "text",
"remoteType": "char(16)",
"nullable": true
}, {
"name": "c_current_cdemo_sk",
"dataType": "integer",
"remoteType": "integer",
"nullable": true
}, {
"name": "c_current_hdemo_sk",
"dataType": "integer",
"remoteType": "integer",
"nullable": true
}, {
"name": "c_current_addr_sk",
"dataType": "integer",
"remoteType": "integer",
"nullable": true
}, {
"name": "c_first_shipto_date_sk",
"dataType": "integer",
"remoteType": "integer",
"nullable": true
}, {
"name": "c_first_sales_date_sk",
"dataType": "integer",
"remoteType": "integer",
"nullable": true
}, {
"name": "c_salutation",
"dataType": "text",
"remoteType": "varchar(10)",
"nullable": true
}, {
"name": "c_first_name",
"dataType": "text",
"remoteType": "varchar(20)",
"nullable": true
}, {
"name": "c_last_name",
"dataType": "text",
"remoteType": "varchar(30)",
"nullable": true
}, {
"name": "c_preferred_cust_flag",
"dataType": "text",
"remoteType": "char(1)",
"nullable": true
}, {
"name": "c_birth_day",
"dataType": "integer",
"remoteType": "integer",
"nullable": true
}, {
"name": "c_birth_month",
"dataType": "integer",
"remoteType": "integer",
"nullable": true
}, {
"name": "c_birth_year",
"dataType": "integer",
"remoteType": "integer",
"nullable": true
}, {
"name": "c_birth_country",
"dataType": "text",
"remoteType": "varchar(20)",
"nullable": true
}, {
"name": "c_login",
"dataType": "text",
"remoteType": "char(13)",
"nullable": true
}, {
"name": "c_email_address",
"dataType": "text",
"remoteType": "varchar(50)",
"nullable": true
}, {
"name": "c_last_review_date",
"dataType": "text",
"remoteType": "varchar(10)",
"nullable": true
}],
"hostname": "example-trino.host.io",
"port": 8080,
"ssl": false,
"authenticationMethod": "No Authentication",
"connectionStringOptions": "",
"userFiles": [],
"database": "public",
"sid": "postgres",
"table": "customer",
"schema": "public",
"bodataTableName": "customer",
"dataSourceName": "Customer"
}
},
"dataSource": {
"blobHandler": {
"scheme": "https",
"url": ""
},
"blobHandlerType": "Trino",
"recordFormat": "",
"type": "queryable",
"schemaEvolutionId": null,
"columnEvolutionEnabled": true,
"name": "Customer",
"sqlTableName": "customer"
},
"schemaEvolution": {
"ownerProfileId": 1,
"config": {
"nameTemplate": {
"nameFormat": "<Tablename>",
"tableFormat": "<tablename>",
"sqlSchemaNameFormat": "<schema>",
"schemaProjectNameFormat": "<Schema>"
}
},
"schemas": []
}
}{
"id": 1,
"dataSourceId": 1,
"dataSource": {
"blobHandler": {
"accessKey": "REDACTED",
"url": "https://REDACTED/trino/handler/1",
"ca": ["-----BEGIN CERTIFICATE-----\nyourdXRhIENcertificate\n-----END CERTIFICATE-----"],
"manualDictionary": false
},
"blobHandlerType": "Trino",
"recordFormat": "Not Provided",
"type": "queryable",
"schemaEvolutionId": 1,
"columnEvolutionEnabled": true,
"name": "Customer",
"sqlTableName": "customer",
"sqlSchemaName": "public",
"workspace": null,
"rowCount": 0,
"seeded": false,
"owner": {},
"documentation": "# Customer",
"statsExpiration": "2022-07-19T18:55:21.300Z",
"recordCount": 0,
"createdBy": 1,
"policyHandler": null,
"subscriptionType": "manual",
"id": 1,
"description": null,
"deleted": false,
"policyHandlerType": "None",
"subscriptionPolicy": null,
"globalPolicies": null,
"status": null,
"statusInfo": null,
"catalogMetadata": null,
"createdAt": "2022-07-19T18:55:21.302Z",
"updatedAt": "2022-07-19T18:55:21.302Z",
"tags": []
},
"warnings": []
}curl \
--request GET \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
https://demo.immuta.com/trino/handler/1{
"dataSourceId": 1,
"metadata": {
"sid": "postgres",
"ssl": false,
"port": 8080,
"query": null,
"table": "customer",
"schema": "public",
"database": "public",
"hostname": "trino-example-database.io",
"ephemeral": true,
"eventTime": null,
"userFiles": [],
"dataSourceName": "Customer",
"bodataTableName": "customer",
"highCardinality": "c_customer_sk",
"bodataSchemaName": "public",
"columnsNormalized": false,
"schemaProjectName": "Public",
"staleDataTolerance": 0,
"authenticationMethod": "No Authentication",
"connectionStringOptions": null
},
"type": "queryable",
"connectionString": "trino-example-database.io:8080/postgres/public",
"id": 1,
"createdAt": "2022-07-19T18:55:21.220Z",
"updatedAt": "2022-07-19T18:55:23.466Z",
"dbms": {
"name": "trino"
}
}curl \
--request PUT \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
--data @example-payload.json \
https://demo.immuta.com/trino/handler/1{
"handler": {
"policyHandler": null,
"dataSourceId": 1,
"metadata": {
"sid": "postgres",
"ssl": false,
"port": 8080,
"query": null,
"table": "customer",
"schema": "public",
"database": "public",
"hostname": "trino-example.io",
"ephemeral": true,
"eventTime": null,
"userFiles": [],
"dataSourceName": "Marketing Data",
"bodataTableName": "customer",
"highCardinality": "c_customer_sk",
"bodataSchemaName": "public",
"columnsNormalized": false,
"schemaProjectName": "Public",
"staleDataTolerance": 0,
"authenticationMethod": "No Authentication",
"connectionStringOptions": "",
"columns": [{
"name": "c_customer_sk",
"dataType": "integer",
"remoteType": "integer",
"nullable": true
}, {
"name": "c_customer_id",
"dataType": "text",
"remoteType": "char(16)",
"nullable": true
}, {
"name": "c_current_cdemo_sk",
"dataType": "integer",
"remoteType": "integer",
"nullable": true
}, {
"name": "c_current_hdemo_sk",
"dataType": "integer",
"remoteType": "integer",
"nullable": true
}, {
"name": "c_current_addr_sk",
"dataType": "integer",
"remoteType": "integer",
"nullable": true
}, {
"name": "c_first_shipto_date_sk",
"dataType": "integer",
"remoteType": "integer",
"nullable": true
}, {
"name": "c_first_sales_date_sk",
"dataType": "integer",
"remoteType": "integer",
"nullable": true
}, {
"name": "c_salutation",
"dataType": "text",
"remoteType": "varchar(10)",
"nullable": true
}, {
"name": "c_first_name",
"dataType": "text",
"remoteType": "varchar(20)",
"nullable": true
}, {
"name": "c_last_name",
"dataType": "text",
"remoteType": "varchar(30)",
"nullable": true
}, {
"name": "c_preferred_cust_flag",
"dataType": "text",
"remoteType": "char(1)",
"nullable": true
}, {
"name": "c_birth_day",
"dataType": "integer",
"remoteType": "integer",
"nullable": true
}, {
"name": "c_birth_month",
"dataType": "integer",
"remoteType": "integer",
"nullable": true
}, {
"name": "c_birth_year",
"dataType": "integer",
"remoteType": "integer",
"nullable": true
}, {
"name": "c_birth_country",
"dataType": "text",
"remoteType": "varchar(20)",
"nullable": true
}, {
"name": "c_login",
"dataType": "text",
"remoteType": "char(13)",
"nullable": true
}, {
"name": "c_email_address",
"dataType": "text",
"remoteType": "varchar(50)",
"nullable": true
}, {
"name": "c_last_review_date",
"dataType": "text",
"remoteType": "varchar(10)",
"nullable": true
}]
},
"type": "queryable",
"connectionString": "trino-example.io:8080/postgres/public",
"id": 1,
"createdAt": "2022-07-19T18:55:21.220Z",
"updatedAt": "2022-07-19T18:55:23.466Z",
"dbms": {
"name": "trino"
}
}
}{
"id": 1,
"ca": ["-----BEGIN CERTIFICATE-----\nMIIuyourcertificate\n-----END CERTIFICATE-----"],
"metadata": {
"columns": [{
"name": "c_customer_sk",
"dataType": "integer",
"remoteType": "integer",
"nullable": true
}, {
"name": "c_customer_id",
"dataType": "text",
"remoteType": "char(16)",
"nullable": true
}, {
"name": "c_current_cdemo_sk",
"dataType": "integer",
"remoteType": "integer",
"nullable": true
}, {
"name": "c_current_hdemo_sk",
"dataType": "integer",
"remoteType": "integer",
"nullable": true
}, {
"name": "c_current_addr_sk",
"dataType": "integer",
"remoteType": "integer",
"nullable": true
}, {
"name": "c_first_shipto_date_sk",
"dataType": "integer",
"remoteType": "integer",
"nullable": true
}, {
"name": "c_first_sales_date_sk",
"dataType": "integer",
"remoteType": "integer",
"nullable": true
}, {
"name": "c_salutation",
"dataType": "text",
"remoteType": "varchar(10)",
"nullable": true
}, {
"name": "c_first_name",
"dataType": "text",
"remoteType": "varchar(20)",
"nullable": true
}, {
"name": "c_last_name",
"dataType": "text",
"remoteType": "varchar(30)",
"nullable": true
}, {
"name": "c_preferred_cust_flag",
"dataType": "text",
"remoteType": "char(1)",
"nullable": true
}, {
"name": "c_birth_day",
"dataType": "integer",
"remoteType": "integer",
"nullable": true
}, {
"name": "c_birth_month",
"dataType": "integer",
"remoteType": "integer",
"nullable": true
}, {
"name": "c_birth_year",
"dataType": "integer",
"remoteType": "integer",
"nullable": true
}, {
"name": "c_birth_country",
"dataType": "text",
"remoteType": "varchar(20)",
"nullable": true
}, {
"name": "c_login",
"dataType": "text",
"remoteType": "char(13)",
"nullable": true
}, {
"name": "c_email_address",
"dataType": "text",
"remoteType": "varchar(50)",
"nullable": true
}, {
"name": "c_last_review_date",
"dataType": "text",
"remoteType": "varchar(10)",
"nullable": true
}]
}
}curl \
--request PUT \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
--data @example-payload.json \
https://demo.immuta.com/trino/bulk{
"handler": {
"metadata": {
"sid": "postgres",
"ssl": false,
"port": 8080,
"database": "public",
"hostname": "trino-example.io",
"userFiles": [{
"keyName": "certificate",
"filename": "576d8b38e9e8bc3749599489408a0b9f605b2a8d.md",
"userFilename": "certificate.json"
}],
"authenticationMethod": "No Authentication",
"connectionStringOptions": ""
}
},
"connectionString": "trino-example.io:8080/postgres/public"
}{
"bulkId": "bulk_ds_update_657dd563e6e746069bf040de5e6909a9",
"connectionString": "trino-example.io:8080/postgres/public",
"jobsCreated": 4
}curl \
--request PUT \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
https://demo.immuta.com/trino/handler/30/triggerHighCardinalityJobf6ac1ad0-26d0-11ec-8078-d36bbf5b90fbcurl \
--request PUT \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
https://demo.immuta.com/trino/handler/7/refreshNativeViewJob53c256d0-eb57-11ec-b275-d95a8e998142s3:GetAccessGrantsInstance
s3:GetAccessGrantsInstanceForPrefix
s3:GetAccessGrantsInstanceResourcePolicy
s3:ListAccessGrants
s3:ListAccessGrantsLocations
awsLocationRole is the AWS IAM role ARN assigned to the base access grants location. This is the role the AWS Access Grants service assumes to vend credentials to the grantee.
awsLocationPath is the base S3 location that Immuta will use for this connection when registering S3 data sources. This path must be unique across all S3 integrations configured in Immuta.
Yes
type
string The type of data source: ingested (metadata will exist in Immuta) or queryable (metadata is dynamically queried).
Yes
name
string The name of the data source. It must be unique within the Immuta tenant.
Yes
sqlTableName
string A string that represents this data source's table in Immuta.
Yes
organization
string The organization that owns the data source.
Yes
category
string The category of the data source.
No
description
string The description of the data source.
No
hasExamples
boolean When true, the data source contains examples.
No
Webhooks API reference guide
Webhooks notify users or other systems when actions happen in Immuta. Every action that generates a notification is available as a webhook.
This page lists the REST endpoints for managing webhooks and provides examples of requests.
Application Admins can configure webhooks that are triggered by events that happen in the system (such as when data sources or projects are created), but any user can configure webhooks that are triggered by access requests and activity notifications.
All user-configured webhook integrations must respond within 10 seconds of receiving the webhook request payload. If the webhook integration takes longer to respond, the request will timeout.
.
POST /webhooks
Create a new webhook. Users can create multiple webhooks in a single request.
The following event types can be used to configure a webhook.
The following request with the payload below creates a new webhook.
GET /webhooks
Return a list of webhooks the user can see. (Admins can see all webhooks; users can only see their own webhooks.)
The following request returns a list of webhooks the user can see.
GET /webhooks/actions
Return a list of valid notification actions that a webhook can be triggered by.
Returns the list of notifications that can trigger a webhook. See the for descriptions.
The following request returns a list of valid notifications that can trigger a webhook.
See the table for descriptions of these notifications.
GET /webhooks/history
Return historical records for webhook requests, including requests and responses.
The following request returns historical records for webhook requests, including requests and responses.
GET /webhooks/{id}
Return specified webhook by ID.
The following request returns details on the webhook with the ID 1.
POST /webhooks/history/retry/{id}
Retry webhook requests by history ID. This can be done against any history record, regardless of failure or success.
The following request retries the webhook with the ID 1.
DELETE /webhooks/{id}
Delete a webhook by ID.
The following request deletes the webhook with the ID 1.
The webhook request took longer than Immuta allows for a response. The default is 10 seconds, but this can be configured from the .
In the Redshift integration, Immuta generates policy-enforced views in your configured Redshift schema for tables registered as Immuta data sources.
Use the /integrations endpoint to
APPLICATION_ADMIN Immuta permission
A Redshift cluster with an RA3 node is required for the multi-database integration. You must use a Redshift RA3 instance type because Immuta requires cross-database views, which are only supported in Redshift RA3 instance types. For other instance types, you may configure a single-database integration using one of the :
Configure the integration with an existing database that contains the external tables. In the steps below, specify an existing database in Redshift as the database in which Immuta will add the Immuta-managed schemas and views instead of creating a new database.
You have two options for configuring your Redshift integration:
: Grant Immuta one-time use of credentials to automatically configure your Redshift environment and the integration. When performing an automated installation, Immuta requires temporary, one-time use of credentials with the Redshift permissions listed in the .
These privileges will be used to create and configure a new Immuta-managed database within the specified Redshift instance. The credentials are not stored or saved by Immuta, and Immuta doesn’t retain access to them after initial setup is complete.
You can create a new account for Immuta to use that has these privileges, or you can grant temporary use of a pre-existing account. By default, the pre-existing account with appropriate privileges is a Superuser. If you create a new account, it can be deleted after initial setup is complete.
: Run the Immuta script in your Redshift environment yourself to configure your Redshift environment and the integration. The specified role used to run the bootstrap needs to have the Redshift permissions listed in the .
Copy the request example from one of the sections below, and replace the values with your own as directed to configure the integration settings. The examples provided use JSON format, but the request also accepts YAML.
See the for parameter definitions, value types, and additional configuration options.
This request specifies userPassword as the authentication type for the Immuta system user. The username and password provided are credentials for a system account that can manage the database.
Replace the Immuta URL and with your own.
Change the config values to your own, where
The response returns the status of the Redshift integration configuration connection. See the for details about the response schema.
A successful response includes the validation tests statuses.
An unsuccessful request returns the status code and an error message. See the for a list of statuses, error messages, and troubleshooting guidance.
To manually configure the integration, complete the following steps:
Copy the request example from one of the tabs below, and replace the values with your own as directed to generate the first script. The examples provided use JSON format, but the request also accepts YAML.
See the for parameter definitions, value types, and additional configuration options.
This request specifies userPassword as the authentication type for the Immuta system user. The username and password provided are credentials for a system account that can manage the database.
Replace the Immuta URL and with your own.
Change the config values to your own, where
Response
The response returns the script for you to run in the Redshift initialDatabase.
Copy the request example from one of the tabs below, and replace the values with your own as directed to configure the integration settings. The examples provided use JSON format, but the request also accepts YAML. The payload you provide must match the payload sent when .
See the for parameter definitions, value types, and additional configuration options.
This request specifies userPassword as the authentication type for the Immuta system user. The username and password provided are credentials for a system account that can manage the database.
Replace the Immuta URL and with your own.
Pass the same payload you sent when , where
Response
The response returns the script for you to run in the database created by the first script.
Copy the request example from one of the tabs below, and replace the values with your own as directed to configure the integration settings. The examples provided use JSON format, but the request also accepts YAML. The payload you provide must match the payload sent when .
See the for parameter definitions, value types, and additional configuration options.
This request specifies userPassword as the authentication type for the Immuta system user. The username and password provided are credentials for a system account that can manage the database.
Replace the Immuta URL and with your own.
Pass the same payload you sent when , where
The response returns the status of the Redshift integration configuration connection. See the for details about the response schema.
A successful response includes the validation tests statuses.
An unsuccessful request returns the status code and an error message. See the for a list of statuses, error messages, and troubleshooting guidance.
Copy the request example.
Replace the Immuta URL and with your own.
Replace the {id} request parameter with the unique identifier of the integration you want to get. Alternatively, you can get a list of all integrations and their IDs with the .
The response returns a Redshift integration configuration. See the for details about the response schema. An unsuccessful request returns the status code and an error message. See the for a list of statuses, error messages, and troubleshooting guidance.
Copy the request example.
Replace the Immuta URL and with your own.
The response returns the configuration for all integrations. See the for details about the response schema. An unsuccessful request returns the status code and an error message. See the for a list of statuses, error messages, and troubleshooting guidance.
You have two options for updating your integration. Follow the steps that match your initial configuration of autoBootstrap:
(autoBootstrap is true)
(autoBootstrap is false)
Copy the request example, and replace the values with your own as directed to update the integration settings. The example provided uses JSON format, but the request also accepts YAML.
See the for parameter definitions, value types, and additional configuration options.
Replace the Immuta URL and with your own.
Replace the {id} request parameter with the unique identifier of the integration you want to update.
Change the config values to your own, where
host
The response returns the status of the Redshift integration configuration connection. See the for details about the response schema.
A successful response includes the validation tests statuses.
An unsuccessful request returns the status code and an error message. See the for a list of statuses, error messages, and troubleshooting guidance.
To manually update the integration, complete the following steps:
Copy the request example, and replace the values with your own as directed to generate the script. The example provided uses JSON format, but the request also accepts YAML.
See the for parameter definitions, value types, and additional configuration options.
Replace the Immuta URL and with your own.
Replace the {id} request parameter with the unique identifier of the integration you want to update.
Change the config values to your own, where
host
Response
The response returns the script for you to run in your Redshift environment.
Copy the request example, and replace the values with your own as directed to update the integration settings. The example provided uses JSON format, but the request also accepts YAML. The payload you provide must match the payload sent when .
See the for parameter definitions, value types, and additional configuration options.
Replace the Immuta URL and with your own.
Replace the {id} request parameter with the unique identifier of the integration you want to update.
Pass the same payload you sent when , where
host
The response returns the status of the Redshift integration configuration connection. See the for details about the response schema.
A successful response includes the validation tests statuses.
An unsuccessful request returns the status code and an error message. See the for a list of statuses, error messages, and troubleshooting guidance.
Copy the request example.
Replace the Immuta URL and with your own.
Replace the {id} request parameter with the unique identifier of the integration you want to delete.
If you set
The response returns the status of the Redshift integration configuration that has been deleted. See the for details about the response schema. An unsuccessful request returns the status code and an error message. See the for a list of statuses, error messages, and troubleshooting guidance.
The Azure Synapse Analytics resource allows you to create, configure, and manage your Azure Synapse Analytics integration. In this integration, Immuta generates policy-enforced views in a schema in your configured Azure Synapse Analytics Dedicated SQL pool for tables registered as Immuta data sources.
Use the /integrations endpoint to
webhooks.notificationType
array A list of the webhook notifications you would like to receive.
Yes
webhooks.actionType
string Specifies when to start the webhook. The options are triggered or received. When this attribute is set to triggered, the webhook will execute when the user who registered the webhook triggered the event. If this attribute is set to received, the webhook will execute if the user who registered the webhook receives an event triggered by another user.
Yes
webhooks.secret
string Shared secret for computing the webhook signature using HMAC authentication.
Once this field is configured, webhooks sent by Immuta will include a x-immuta-webhook-signature header that contains an HMAC digest created using :
Use SHA-1 and the shared secret you configured to verify the webhook signature.
No
Attributes for a group or user are updated.
bulkJobStatus
A bulk action is completed (whether success/failure).
certificationRequired
A Global Policy that requires certification by the data source owner is applied to a data source.
collectionCreated
A domain is created.
collectionDataSourceAdded
A data source is added to a domain.
collectionDataSourceRemoved
A data source is removed from a domain.
collectionDeleted
A domain is deleted.
collectionPermissionGranted
A domain permission has been assigned to a user.
collectionPermissionRevoked
A domain permission has been removed from a user.
collectionUpdated
A domain was updated.
conflictingGlobalPolicies
Global Policies are applied to the same column on a data source.
dataSourceExpired
A data source that was configured to expire has expired.
dataSourceExpiring
A data source that was configured to expire expires tomorrow.
dataSourceUpdated
A data source is updated.
deletedDatasourceRemovedFromProject
A data source has been deleted and then removed from a project.
expiredDatasourceRemovedFromProject
A data source that has expired and been deleted is removed from a project.
firstQuery
A data source is queried for the first time through Immuta.
frameworkCreated
A classification framework was created.
frameworkDeleted
A classification framework was deleted.
frameworkUpdated
A classification framework was updated.
globalPolicyApprovalRescinded
A governor has removed their approval of a global policy.
globalPolicyApproved
A governor has approved a global policy.
globalPolicyChangeRequested
A governor has requested changes to a global policy.
globalPolicyCreated
A global policy is created.
globalPolicyDeleted
A global policy is deleted.
globalPolicyDisabled
A global policy is disabled.
globalPolicyUpdated
A global policy is updated.
groupUserAdded
A user is added to a group.
groupUserDeleted
A user is removed from a group.
healthCheckFailed
A health check runs and returns not healthy.
healthCheckResolved
A health check runs and returns healthy.
modelAccessApproved
A user's access request is approved for a data source or project.
modelAccessDenied
A user's access request is denied for a data source or project.
modelAccessRequested
A user requests access to a data source or project.
modelAccessRevoked
A user's access request is revoked for a data source or project.
modelAccessUpdated
A user's access level is updated for a data source or project.
modelCopied
A data source or project is copied.
modelCreated
A data source or project is created.
modelDeleted
A data source or project is deleted.
modelTagAdded
A tag is added to a data source or a data source column.
modelTagRemoved
A tag is removed from a data source or a data source column.
modelUserAdded
A user is added to a data source.
modelUserDeleted
A user is removed from a data source.
modelUserJoined
A user joins a data source that they are already allowed to join.
nativeIntegrationValidationFailed
A validation test for an enabled integration has failed.
permissionsUpdated
A user's permissions are updated.
policyCertificationExpired
A policy certification on a data source has expired.
policyUpdated
A data source's policies have been updated by a user or Global Policy. Policy updates are triggered for many reasons, including when a data source is created, a user updates them, a Global Policy changed, tags are added to a data source or column, the data dictionary changed, a fingerprint is recomputed (only available for Snowflake data sources), an external catalog modifies tags on a linked data source, or a policy disabled.
projectDisabled
A project is disabled.
projectEqualizationMemberNotInCompliance
A member of an equalized project is out of compliance.
projectEqualizationToggled
Project equalization is toggled on or off.
projectUpdated
A project is updated.
purposeCreated
A purpose is created.
purposeDeleted
A purpose is deleted.
purposeUpdated
A purpose is updated.
queryCanceled
A running query is canceled due to a change on a data source.
removedFromProject
A data source is removed from a project.
switchedCurrentProject
A user switches their current project.
tagCreated
A tag is created.
tagDeleted
A tag is deleted.
tagUpdated
A tag is updated.
taskDeleted
An outstanding data source task is deleted without validation.
taskValidated
An outstanding data source task is validated.
userCloned
A user is cloned.
userCreated
A user or group is created.
userDeleted
A user or group is deleted.
userDisabled
A user is disabled.
userEnabled
A user is enabled.
userMigrated
A user is migrated from an old IAM to a new IAM.
usernameUpdated
A user's name is updated.
userUpdated
A group is updated.
notificationType
string If set will only return activities of this type.
No
includeGlobal
boolean If true, global records will be included.
No
includeUser
boolean If true, personal webhooks will be returned for the given user. The default is true.
No
successOrFailure
string If set will only retrieve records that were successful or failed.
No
createdAt
timestamp The date the webhook was created.
updatedAt
timestamp The date the webhook was last updated.
createdAt
timestamp The date and time the webhook was created.
updatedAt
timestamp The date and time the webhook was last updated.
webhooks
array[object] The details for each webhook you would like to create. Its child attributes are described below.
Yes
webhooks.url
string URL for outbound webhook request.
Yes
webhooks.name
string The webhook's name.
Yes
webhooks.global
boolean If true, you will receive all notifications even if they do not pertain to you.
ALL_NOTIFICATIONS
Configures the webhook to be triggered by any event type.
acknowledgedAccess
A project member acknowledges the purposes on a project.
addedToProject
A data source is added to a project.
apiKeyRevoked
A user's API key is revoked.
attributeAdded
An attribute is added to a group or user.
attributeRemoved
An attribute is removed from a group or user.
createdWebhooks
array[object] Details on each webhook that was created including values for id, url, name, global, actionType, and the date it was created.
Return a list of webhooks the user can see. (Admins can see all webhooks; users can only see their own webhooks.)
Return a list of valid notification actions that a webhook can be triggered by.
Return historical records for webhook requests, including requests and responses.
Return specified webhook by ID.
id
integer The ID of the webhook.
url
string URL for outbound webhook request.
name
string The webhook's name.
global
boolean If true, you will receive all notifications even if they do not pertain to you.
notificationType
array A list of the notification types included in the webhook. See the table above for a list of possible values.
createdBy
integer The ID of the user who created the webhook.
offset
integer The number of records to skip for this query.
No
pageSize
integer The number of records to return in this query. The default is 20.
No
sortField
string The field to use for sorting. The default is createdAt.
No
sortOrder
string The sort order to use. The default is desc.
count
integer The number of results for the request.
records
metadata Details on each webhook result.
id
string The webhook ID.
Yes
id
integer The ID of the webhook.
url
string URL for outbound webhook request.
name
string The webhook's name.
global
boolean If true, you will receive all notifications even if they do not pertain to you.
notificationType
array A list of the notification types included in the webhook. See the table above for a list of possible values.
createdBy
integer The ID of the user who created the webhook.
id
integer ID of the history record to retry.
Yes
id
integer The ID of the history record.
request
array Details on the request, including values for test, metadata, webhookId, and webhookName.
response
array Details on the response.
statusCode
integer The status code for the webhook. A value of 200 is successful.
notificationType
string The type of notification.
webhooksActivityId
integer The ID for the activity.
id
integer The webhook ID.
Yes
id
integer The ID of the webhook.
url
string URL for outbound webhook request.
name
string The webhook's name.
global
boolean If true, you will receive all notifications even if they do not pertain to you.
notificationType
array A list of the notification types included in the webhook. See the table above for a list of possible values.
createdBy
integer The ID of the user who created the webhook.
500
The request timed out.
Yes
attributeUpdated
No
Create a new database as specified in the steps below, and then re-create all of your external tables in that database.
For automated installations, the credentials provided must be a Superuser or have the ability to create databases and users and modify grants.
Account used to configure or edit the integration must have the following Redshift permissions:
CREATE DATABASE
CREATE USER
REVOKE ALL PRIVILEGES ON DATABASE
GRANT TEMP ON DATABASE
MANAGE GRANTS ON ACCOUNT
database is the name of a new empty database that the Immuta system user will manage and store metadata in.
initialDatabase is the name of an existing database in Redshift that Immuta initially connects to and creates the Immuta-managed database.
username and password are the credentials for the system account that can act on Redshift objects and configure the integration.
This request uses Okta as the authentication type for the Immuta system user and enables impersonation to allow Immuta administrators to grant users permission to query Redshift data as other Immuta users.
Replace the Immuta URL and API key with your own.
Change the config values to your own, where
host is the URL of your Redshift account.
database is the name of a new empty database that the Immuta system user will manage and store metadata in.
initialDatabase is the name of an existing database in Redshift that Immuta initially connects to and creates the Immuta-managed database.
impersonation specifies whether user impersonation is enabled. See the for child parameters.
okta specifies your username, password, appId, idpHost, and role. See the for details about child parameters.
database is the name of a new empty database that the Immuta system user will manage and store metadata in.
initialDatabase is the name of an existing database in Redshift that Immuta initially connects to and creates the Immuta-managed database.
impersonation specifies whether user impersonation is enabled. See the object description for child parameters.
username and password are the credentials for the system account that can act on Redshift objects and configure the integration.
Run the script returned in the response in the Redshift initialDatabase specified in the payload.
This request uses Okta as the authentication type for the Immuta system user and enables impersonation to allow Immuta administrators to grant users permission to query Redshift data as other Immuta users.
Replace the Immuta URL and API key with your own.
Change the config values to your own, where
host is the URL of your Redshift account.
database is the name of a new empty database that the Immuta system user will manage and store metadata in.
initialDatabase is the name of an existing database in Redshift that Immuta initially connects to and creates the Immuta-managed database.
impersonation specifies whether user impersonation is enabled. See the for child parameters.
okta specifies your username, password, appId, idpHost, and role. See the for details about child parameters.
Run the script returned in the response in the Redshift initialDatabase specified in the payload.
database is the name of a new empty database that the Immuta system user will manage and store metadata in.
initialDatabase is the name of an existing database in Redshift that Immuta initially connects to and creates the Immuta-managed database.
impersonation specifies whether user impersonation is enabled. See the object description for child parameters.
username and password are the credentials for the system account that can act on Redshift objects and configure the integration.
Run the script returned in the response in the database created by the first script.
This request uses Okta as the authentication type for the Immuta system user and enables impersonation to allow Immuta administrators to grant users permission to query Redshift data as other Immuta users.
Replace the Immuta URL and API key with your own.
Pass the same payload you sent when generating the first script, where
host is the URL of your Redshift account.
database is the name of a new empty database that the Immuta system user will manage and store metadata in.
initialDatabase is the name of an existing database in Redshift that Immuta initially connects to and creates the Immuta-managed database.
impersonation specifies whether user impersonation is enabled. See the for child parameters.
okta specifies your username, password, appId, idpHost, and role. See the for details about child parameters.
Run the script returned in the response in the database created by the first script.
database is the name of a new empty database that the Immuta system user will manage and store metadata in.
initialDatabase is the name of an existing database in Redshift that Immuta initially connects to and creates the Immuta-managed database.
impersonation specifies whether user impersonation is enabled. See the object description for child parameters.
username and password are the credentials for the system account that can act on Redshift objects and configure the integration.
This request uses Okta as the authentication type for the Immuta system user and enables impersonation to allow Immuta administrators to grant users permission to query Redshift data as other Immuta users.
Replace the Immuta URL and API key with your own.
Pass the same payload you sent when generating the scripts, where
host is the URL of your Redshift account.
database is the name of a new empty database that the Immuta system user will manage and store metadata in.
initialDatabase is the name of an existing database in Redshift that Immuta initially connects to and creates the Immuta-managed database.
impersonation specifies whether user impersonation is enabled. See the for child parameters.
okta specifies your username, password, appId, idpHost, and role. See the for details about child parameters.
database is the name of a new empty database that the Immuta system user will manage and store metadata in.
initialDatabase is the name of an existing database in Redshift that Immuta initially connects to and creates the Immuta-managed database.
okta specifies your username, password, appId, idpHost, and role. See the object description for details about child parameters.
database is the name of a new empty database that the Immuta system user will manage and store metadata in.
initialDatabase is the name of an existing database in Redshift that Immuta initially connects to and creates the Immuta-managed database.
impersonation specifies whether user impersonation is enabled. See the object description for child parameters.
okta specifies your username, password, appId, idpHost, and role. See the object description for details about child parameters.
Run the script returned in the response in your Redshift environment.
database is the name of a new empty database that the Immuta system user will manage and store metadata in.
initialDatabase is the name of an existing database in Redshift that Immuta initially connects to and creates the Immuta-managed database.
impersonation specifies whether user impersonation is enabled. See the object description for child parameters.
okta specifies your username, password, appId, idpHost, and role. See the object description for details about child parameters.
autoBootstrap to true when enabling the integration, specify the authenticationType and the credentials you used to configure the integration in the payload, as illustrated in the example.
autoBootstrap to false when enabling the integration, use the script cleanup endpoint (for integrations that were not successfully created) or the delete endpoint (for integrations that were successfully created) to remove Immuta-managed resources from your environment. Then, make the request above without including a payload to remove the integration from Immuta.
APPLICATION_ADMIN Immuta permission
A running Dedicated SQL pool
Account used to configure or edit the integration must have the Azure Synapse Analytics permission to manage GRANTS
You have two options for configuring your Azure Synapse Analytics integration:
Automatic setup: Grant Immuta one-time use of credentials to automatically configure your Azure Synapse Analytics environment and the integration. When performing an automated installation, Immuta requires temporary, one-time use of credentials with the permission to manage GRANTS.
Manual setup: Run the Immuta script in your Azure Synapse Analytics environment yourself to configure your environment and the integration. The specified role used to run the bootstrap needs to have the permission to manage GRANTS.
Copy the request example from one of the tabs below, and replace the values with your own as directed to configure the integration settings. The examples provided use JSON format, but the request also accepts YAML.
See the config object description for parameter definitions, value types, and additional configuration options.
Replace the Immuta URL and API key with your own.
Change the config values to your own, where
host is the URL of your Azure Synapse Analytics account.
schema is the name of the Immuta-managed schema where all your secure views will be created and stored.
database is the name of an existing database where the Immuta system user will store all Immuta-generated schemas and views.
username and password are the username and password of the system account that can act on Azure Synapse Analytics objects and configure the integration.
This request enables impersonation to allow Immuta administrators to grant users permission to query Azure Synapse Analytics data as other Immuta users.
Replace the Immuta URL and with your own.
Change the config values to your own, where
host is the URL of your Azure Synapse Analytics account.
The response returns the status of the Azure Synapse Analytics integration configuration connection. See the response schema reference for details about the response schema.
A successful response includes the validation tests statuses.
An unsuccessful request returns the status code and an error message. See the HTTP status codes and error messages for a list of statuses, error messages, and troubleshooting guidance.
To manually configure the integration, complete the following steps:
Copy the request example from one of the tabs below, and replace the values with your own as directed to generate the script. The examples provided use JSON format, but the request also accepts YAML.
See the config object description for parameter definitions, value types, and additional configuration options.
Replace the Immuta URL and API key with your own.
Change the config values to your own, where
host is the URL of your Azure Synapse Analytics account.
schema is the name of the Immuta-managed schema where all your secure views will be created and stored.
database is the name of an existing database where the Immuta system user will store all Immuta-generated schemas and views.
impersonation specifies whether user impersonation is enabled. See the for child parameters.
metadataDelimeters are a set of delimiters that Immuta uses to store profile data in Azure Synapse Analytics. See the for child parameters.
username and password are the username and password of the system account that can act on Azure Synapse Analytics objects and configure the integration.
Run the script returned in the response in your Azure Synapse Analytics environment.
This request enables impersonation to allow Immuta administrators to grant users permission to query Azure Synapse Analytics data as other Immuta users.
Replace the Immuta URL and with your own.
Change the config values to your own, where
host is the URL of your Azure Synapse Analytics account.
Response
The response returns the script for you to run in your environment.
Copy the request example from one of the tabs below, and replace the values with your own as directed to configure the integration settings. The examples provided use JSON format, but the request also accepts YAML. The payload you provide must match the payload sent when generating the first script.
See the config object description for parameter definitions, value types, and additional configuration options.
Replace the Immuta URL and API key with your own.
Pass the same payload you sent when generating the first script, where
host is the URL of your Azure Synapse Analytics account.
schema is the name of the Immuta-managed schema where all your secure views will be created and stored.
database is the name of an existing database where the Immuta system user will store all Immuta-generated schemas and views.
impersonation specifies whether user impersonation is enabled. See the for child parameters.
metadataDelimeters are a set of delimiters that Immuta uses to store profile data in Azure Synapse Analytics. See the for child parameters.
username and password are the username and password of the system account that can act on Azure Synapse Analytics objects and configure the integration.
Run the script returned in the response in your Azure Synapse Analytics environment.
This request enables impersonation to allow Immuta administrators to grant users permission to query Azure Synapse Analytics data as other Immuta users.
Replace the Immuta URL and with your own.
Pass the same payload you sent when , where
host is the URL of your Azure Synapse Analytics account.
Response
The response returns the script for you to run in your environment.
Copy the request example from one of the tabs below, and replace the values with your own as directed to configure the integration settings. The examples provided use JSON format, but the request also accepts YAML. The payload you provide must match the payload sent when generating the scripts.
See the config object description for parameter definitions, value types, and additional configuration options.
Replace the Immuta URL and API key with your own.
Pass the same payload you sent when generating the scripts, where
host is the URL of your Azure Synapse Analytics account.
schema is the name of the Immuta-managed schema where all your secure views will be created and stored.
database is the name of an existing database where the Immuta system user will store all Immuta-generated schemas and views.
impersonation specifies whether user impersonation is enabled. See the for child parameters.
metadataDelimeters are a set of delimiters that Immuta uses to store profile data in Azure Synapse Analytics. See the for child parameters.
username and password are the username and password of the system account that can act on Azure Synapse Analytics objects and configure the integration.
This request enables impersonation to allow Immuta administrators to grant users permission to query Azure Synapse Analytics data as other Immuta users.
Replace the Immuta URL and with your own.
Pass the same payload you sent when , where
host is the URL of your Azure Synapse Analytics account.
The response returns the status of the Azure Synapse Analytics integration configuration connection. See the response schema reference for details about the response schema.
A successful response includes the validation tests statuses.
An unsuccessful request returns the status code and an error message. See the HTTP status codes and error messages for a list of statuses, error messages, and troubleshooting guidance.
Copy the request example.
Replace the Immuta URL and API key with your own.
Replace the {id} request parameter with the unique identifier of the integration you want to get. Alternatively, you can get a list of all integrations and their IDs with the GET /integrations endpoint.
The response returns an Azure Synapse Analytics integration configuration. See the response schema reference for details about the response schema. An unsuccessful request returns the status code and an error message. See the HTTP status codes and error messages for a list of statuses, error messages, and troubleshooting guidance.
Copy the request example.
Replace the Immuta URL and API key with your own.
The response returns the configuration for all integrations. See the response schema reference for details about the response schema. An unsuccessful request returns the status code and an error message. See the HTTP status codes and error messages for a list of statuses, error messages, and troubleshooting guidance.
You have two options for updating your integration. Follow the steps that match your initial configuration of autoBootstrap:
automatic update (autoBootstrap is true)
manual update (autoBootstrap is false)
Copy the request example, and replace the values with your own as directed to update the integration settings. The example provided uses JSON format, but the request also accepts YAML.
See the config object description for parameter definitions, value types, and additional configuration options.
Replace the Immuta URL and API key with your own.
Replace the {id} request parameter with the unique identifier of the integration you want to update.
Change the config values to your own, where
host is the URL of your Azure Synapse Analytics account.
schema is the name of the Immuta-managed schema where all your secure views will be created and stored.
database is the name of an existing database where the Immuta system user will store all Immuta-generated schemas and views.
metadataDelimeters are a set of delimiters that Immuta uses to store profile data in Azure Synapse Analytics. See the for child parameters.
username and password are the username and password of the system account that can act on Azure Synapse Analytics objects and configure the integration.
The response returns the status of the Azure Synapse Analytics integration configuration connection. See the response schema reference for details about the response schema.
A successful response includes the validation tests statuses.
An unsuccessful request returns the status code and an error message. See the HTTP status codes and error messages for a list of statuses, error messages, and troubleshooting guidance.
To manually update the integration, complete the following steps:
Copy the request example, and replace the values with your own as directed to generate the script. The example provided uses JSON format, but the request also accepts YAML.
See the config object description for parameter definitions, value types, and additional configuration options.
Replace the Immuta URL and API key with your own.
Replace the {id} request parameter with the unique identifier of the integration you want to update.
Change the config values to your own, where
host is the URL of your Azure Synapse Analytics account.
schema is the name of the Immuta-managed schema where all your secure views will be created and stored.
database is the name of an existing database where the Immuta system user will store all Immuta-generated schemas and views.
impersonation specifies whether user impersonation is enabled. See the for child parameters.
metadataDelimeters are a set of delimiters that Immuta uses to store profile data in Azure Synapse Analytics. See the for child parameters.
username and password are the username and password of the system account that can act on Azure Synapse Analytics objects and configure the integration.
Run the script returned in the response in your Azure Synapse Analytics environment.
Response
The response returns the script for you to run in your environment.
Copy the request example, and replace the values with your own as directed to update the integration settings. The example provided uses JSON format, but the request also accepts YAML. The payload you provide must match the payload sent when generating the updated script.
See the config object description for parameter definitions, value types, and additional configuration options.
Replace the Immuta URL and API key with your own.
Replace the {id} request parameter with the unique identifier of the integration you want to update.
Pass the same payload you sent when generating the script, where
host is the URL of your Azure Synapse Analytics account.
schema is the name of the Immuta-managed schema where all your secure views will be created and stored.
database is the name of an existing database where the Immuta system user will store all Immuta-generated schemas and views.
impersonation specifies whether user impersonation is enabled. See the for child parameters.
metadataDelimeters are a set of delimiters that Immuta uses to store profile data in Azure Synapse Analytics. See the for child parameters.
username and password are the username and password of the system account that can act on Azure Synapse Analytics objects and configure the integration.
The response returns the status of the Azure Synapse Analytics integration configuration connection. See the response schema reference for details about the response schema.
A successful response includes the validation tests statuses.
An unsuccessful request returns the status code and an error message. See the HTTP status codes and error messages for a list of statuses, error messages, and troubleshooting guidance.
Copy the request example.
Replace the Immuta URL and API key with your own.
Replace the {id} request parameter with the unique identifier of the integration you want to delete.
If you set
autoBootstrap to true when enabling the integration, include the credentials you used to configure the integration in the payload, as illustrated in the example.
autoBootstrap to false when enabling the integration,
use the script endpoint (for integrations that were not successfully created) or the endpoint (for integrations that were successfully created) to remove Immuta-managed resources from your environment,
use the script endpoint to finish removing Immuta-managed resources from your environment,
The response returns the status of the Azure Synapse Analytics integration configuration that has been deleted. See the response schema reference for details about the response schema. An unsuccessful request returns the status code and an error message. See the HTTP status codes and error messages for a list of statuses, error messages, and troubleshooting guidance.
curl \
--request POST \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
--data @example-payload.json \
https://demo.immuta.com/webhooks{
"webhooks": [
{
"url": "https://demo.service.com/processWebhook",
"name": "ViewMonitorHook",
"global": false,
"notificationType": [
"ALL_NOTIFICATIONS"
],
"actionType": "triggered"
}
]
}{
"createdWebhooks": [
{
"id": 3,
"url": "https://demo.service.com/processWebhook",
"name": "ViewMonitorHook",
"global": false,
"actionType": "triggered",
"createdBy": 2,
"createdAt": "2021-10-15T15:22:10.079Z",
"updatedAt": "2021-10-15T15:22:10.079Z"
}
],
"errors": []
} {
"id": 15,
"name": "Policy updated",
"url": "organization.immuta.com",
"notificationType": [
"policyUpdated"
],
"global": false,
"createdBy": 2,
"actionType": "triggered"
}curl \
--request GET \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
https://demo.immuta.com/webhooks{
"id": 1,
"name": "internal-automatic-subscription-webhook",
"url": "/internal-webhook/automatic-subscription",
"notificationType": [
"groupUserAdded",
"groupUserDeleted",
"attributeAdded",
"attributeRemoved",
"attributeUpdated",
"userDeleted",
"userMigrated",
"userCreated",
"policyUpdated",
"dataSourceUpdated",
"modelCreated"
],
"global": true,
"createdBy": 1
}curl \
--request GET \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
https://demo.immuta.com/webhooks/actions[
"ALL_NOTIFICATIONS",
"modelCreated",
"modelDeleted",
"modelCopied",
"dataSourceUpdated",
"dataSourceExpired",
"dataSourceExpiring",
"healthCheckFailed",
"healthCheckResolved",
"modelUserAdded",
"modelUserDeleted",
"modelUserJoined",
"modelAccessRequested",
"modelAccessApproved",
"modelAccessRevoked",
"modelAccessUpdated",
"modelAccessDenied",
"modelTagAdded",
"modelTagRemoved",
"projectUpdated",
"projectEqualizationToggled",
"projectEqualizationMemberNotInCompliance",
"projectDisabled",
"addedToProject",
"removedFromProject",
"deletedDatasourceRemovedFromProject",
"expiredDatasourceRemovedFromProject",
"nativeIntegrationValidationFailed",
"policyUpdated",
"queryCanceled",
"firstQuery",
"userCreated",
"userDeleted",
"userEnabled",
"userCloned",
"userDisabled",
"userMigrated",
"groupUserAdded",
"groupUserDeleted",
"userUpdated",
"attributeUpdated",
"attributeAdded",
"attributeRemoved",
"permissionsUpdated",
"switchedCurrentProject",
"usernameUpdated",
"acknowledgedAccess",
"purposeCreated",
"purposeUpdated",
"purposeDeleted",
"tagCreated",
"tagUpdated",
"tagDeleted",
"apiKeyRevoked",
"conflictingGlobalPolicies",
"globalPolicyCreated",
"globalPolicyUpdated",
"globalPolicyDeleted",
"globalPolicyDisabled",
"bulkJobStatus",
"taskValidated",
"taskDeleted",
"certificationRequired",
"policyCertificationExpired"
]curl \
--request GET \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
https://demo.immuta.com/webhooks/history?pageSize=20&includeUser=true{
"count": "0",
"records": []
}curl \
--request GET \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
https://demo.immuta.com/webhooks/1{
"id": 1,
"name": "internal-automatic-subscription-webhook",
"url": "/internal-webhook/automatic-subscription",
"notificationType": [
"groupUserAdded",
"groupUserDeleted",
"attributeAdded",
"attributeRemoved",
"attributeUpdated",
"userDeleted",
"userMigrated",
"userCreated",
"policyUpdated",
"dataSourceUpdated",
"modelCreated"
],
"global": true,
"createdBy": 1
}curl \
--request POST \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
https://demo.immuta.com/webhooks/history/retry/1{
"id": 228,
"request": {
"text": "Katie has created the Public (https://demo.example.com/#/project/1) project. Please click here (https://demo.example.com/#/project/1) for additional information.",
"metadata": {
"modelId": 1,
"actionBy": 2,
"modelType": "project",
"targetUser": 2,
"projectName": "Public",
"targetGroup": null,
"actionByName": "Katie",
"targetUserName": "Katie",
"notifyInitiator": true,
"notificationType": "modelCreated"
},
"webhookId": 1,
"webhookName": "internal-automatic-subscription-webhook"
},
"response": {},
"statusCode": 200,
"notificationType": "modelCreated",
"webhooksActivityId": 11,
"createdAt": "2021-10-15T16:44:06.872Z",
"updatedAt": "2021-10-15T16:44:06.872Z"
}curl \
--request DELETE \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
https://demo.immuta.com/webhooks/1{
"id": 1,
"url": "/internal-webhook/automatic-subscription",
"name": "internal-automatic-subscription-webhook",
"global": true,
"actionType": null,
"createdBy": 1,
"createdAt": "2021-06-24T15:08:58.906Z",
"updatedAt": "2021-06-24T15:08:58.906Z"
}curl \
--request GET \
--header "Authorization: Bearer <TOKEN>" \
https://demo.immuta.com/webhooks/history?pageSize=20&includeUser=true{
"count": "1",
"records": [
{
"id": 1,
"request": {
"text": "You have created the sheep man project. Please click here (http://immuta.demo.com/#/project/11) for additional information.",
"metadata": {
"modelId": 11,
"actionBy": 1,
"modelType": "project",
"targetUser": 1,
"projectName": "sheep man",
"targetGroup": null,
"actionByName": "Jane Doe",
"targetUserName": "Jane Doe",
"notificationType": "modelCreated"
},
"webhookId": 2,
"webhookName": "webhook"
},
"response": {
"body": {
"code": "ESOCKETTIMEDOUT",
"connect": false
}
},
"statusCode": 500,
"notificationType": "modelCreated",
"webhooksActivityId": 15,
"createdAt": "2022-06-01T17:05:34.001Z",
"updatedAt": "2022-06-01T17:05:34.001Z",
"webhooksId": 2,
"url": "http://localhost:8080/webhook",
"name": "webhook",
"actionType": null,
"createdBy": 1
}
]
}curl -X 'POST' \
'https://www.organization.immuta.com/integrations' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f' \
-d '{
"type": "Redshift",
"autoBootstrap": true,
"config": {
"host": "organization.aws.amazon.com",
"database": "immuta",
"initialDatabase": "REDSHIFT_SAMPLE_DATA",
"impersonation": {
"enabled": true,
"role": "immuta_impersonation"
},
"authenticationType": "okta",
"okta": {
"username": "[email protected]",
"password": "abc1234",
"appId": "Okta",
"idpHost": "organization.okta.com",
"role": "admin"
}
}
}'curl -X 'POST' \
'https://www.organization.immuta.com/integrations/scripts/initial-create' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f' \
-d '{
"type": "Redshift",
"autoBootstrap": false,
"config": {
"host": "organization.aws.amazon.com",
"database": "immuta",
"initialDatabase": "REDSHIFT_SAMPLE_DATA",
"impersonation": {
"enabled": true,
"role": "immuta_impersonation"
},
"authenticationType": "okta",
"okta": {
"username": "[email protected]",
"password": "abc1234",
"appId": "Okta",
"idpHost": "organization.okta.com",
"role": "admin"
}
}
}'curl -X 'POST' \
'https://www.organization.immuta.com/integrations/scripts/create' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f' \
-d '{
"type": "Redshift",
"autoBootstrap": false,
"config": {
"host": "organization.aws.amazon.com",
"database": "immuta",
"initialDatabase": "REDSHIFT_SAMPLE_DATA",
"impersonation": {
"enabled": true,
"role": "immuta_impersonation"
},
"authenticationType": "okta",
"okta": {
"username": "[email protected]",
"password": "abc1234",
"appId": "Okta",
"idpHost": "organization.okta.com",
"role": "admin"
}
}
}'curl -X 'POST' \
'https://www.organization.immuta.com/integrations' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f' \
-d '{
"type": "Redshift",
"autoBootstrap": false,
"config": {
"host": "organization.aws.amazon.com",
"database": "immuta",
"initialDatabase": "REDSHIFT_SAMPLE_DATA",
"impersonation": {
"enabled": true,
"role": "immuta_impersonation"
},
"authenticationType": "okta",
"okta": {
"username": "[email protected]",
"password": "abc1234",
"appId": "Okta",
"idpHost": "organization.okta.com",
"role": "admin"
}
}
}'curl -X 'POST' \
'https://www.organization.immuta.com/integrations' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f' \
-d '{
"type": "Redshift",
"autoBootstrap": true,
"config": {
"host": "organization.aws.amazon.com",
"database": "immuta",
"initialDatabase": "REDSHIFT_SAMPLE_DATA",
"authenticationType": "userPassword",
"username": "[email protected]",
"password": "abc1234"
}
}'{
"id": "123456789",
"status": "creating",
"validationResults": {
"status": "passed",
"validationTests": [
{
"name": "Initial Validation: Basic Connection Test",
"result": [null],
"status": "passed"
},
{
"name": "Validate Automatic Bootstrap: Immuta Database Does Not Exist",
"result": [],
"status": "passed"
}
]
}
}{
"statusCode": 409,
"error": "Conflict",
"message": "Redshift integration already exists on host organization.aws.amazon.com (id = 123456789)"
}curl -X 'POST' \
'https://www.organization.immuta.com/integrations/scripts/initial-create' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f' \
-d '{
"type": "Redshift",
"autoBootstrap": false,
"config": {
"host": "organization.aws.amazon.com",
"database": "immuta",
"initialDatabase": "REDSHIFT_SAMPLE_DATA",
"impersonation": {
"enabled": false
},
"authenticationType": "userPassword",
"username": "[email protected]",
"password": "abc1234"
}
}'curl -X 'POST' \
'https://www.organization.immuta.com/integrations/scripts/create' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f' \
-d '{
"type": "Redshift",
"autoBootstrap": false,
"config": {
"host": "organization.aws.amazon.com",
"database": "immuta",
"initialDatabase": "REDSHIFT_SAMPLE_DATA",
"impersonation": {
"enabled": false
},
"authenticationType": "userPassword",
"username": "[email protected]",
"password": "abc1234"
}
}'curl -X 'POST' \
'https://www.organization.immuta.com/integrations' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f' \
-d '{
"type": "Redshift",
"autoBootstrap": false,
"config": {
"host": "organization.aws.amazon.com",
"database": "immuta",
"initialDatabase": "REDSHIFT_SAMPLE_DATA",
"impersonation": {
"enabled": false
},
"authenticationType": "userPassword",
"username": "[email protected]",
"password": "abc1234"
}
}'{
"id": "123456789",
"status": "creating",
"validationResults": {
"status": "passed",
"validationTests": [
{
"name": "Initial Validation: Basic Connection Test",
"result": [null],
"status": "passed"
},
{
"name": "Validate Automatic Bootstrap: Immuta Database Does Not Exist",
"result": [],
"status": "passed"
}
]
}
}{
"statusCode": 409,
"error": "Conflict",
"message": "Redshift integration already exists on host organization.aws.amazon.com (id = 123456789)"
}curl -X 'GET' \
'https://www.organization.immuta.com/integrations/{id}' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f'{
"id": "123456789",
"status": "enabled",
"validationResults": {
"status": "passed",
"validationTests": [
{
"name": "Initial Validation: Basic Connection Test",
"result": [null],
"status": "passed"
},
{
"name": "Validate Automatic Bootstrap: Immuta Database Does Not Exist",
"result": [],
"status": "passed"
}
]
},
"type": "Redshift",
"autoBootstrap": true,
"config": {
"host": "organization.aws.amazon.com",
"database": "immuta",
"initialDatabase": "REDSHIFT_SAMPLE_DATA",
"port": 5439,
"impersonation": {
"enabled": false
},
"authenticationType": "userPassword",
"username": "<REDACTED>",
"password": "<REDACTED>"
}
}{
"id": "123456789",
"status": "enabled",
"validationResults": {
"status": "passed",
"validationTests": [
{
"name": "Initial Validation: Basic Connection Test",
"result": [null],
"status": "passed"
},
{
"name": "Validate Automatic Bootstrap: Immuta Database Does Not Exist",
"result": [],
"status": "passed"
}
]
},
"type": "Redshift",
"autoBootstrap": true,
"config": {
"host": "organization.aws.amazon.com",
"database": "immuta",
"initialDatabase": "REDSHIFT_SAMPLE_DATA",
"port": 5439,
"impersonation": {
"enabled": true,
"role": "immuta_impersonation"
},
"authenticationType": "okta",
"okta": {
"username": "<REDACTED>",
"appId": "Okta",
"idpHost": "organization.okta.com",
"role": "admin"
}
}
}curl -X 'GET' \
'https://www.organization.immuta.com/integrations' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f'[
{
"id": "1",
"status": "enabled",
"validationResults": {
"status": "passed",
"validationTests": [
{
"name": "Initial Validation: Basic Connection Test",
"status": "passed"
},
{
"name": "Initial Validation: Default Warehouse Access Test",
"status": "passed",
"result": []
},
{
"name": "Initial Validation: Validate access to Privileged Role",
"status": "passed",
"result": []
},
{
"name": "Validate Automatic: Database Does Not Exist",
"status": "passed"
},
{
"name": "Validate Automatic: Impersonation Role Does Not Exist",
"status": "skipped"
},
{
"name": "Validate Automatic Bootstrap User Grants",
"status": "passed"
}
]
},
"type": "Snowflake",
"autoBootstrap": true,
"config": {
"host": "organization.us-east-1.snowflakecomputing.com",
"warehouse": "SAMPLE_WAREHOUSE",
"database": "SNOWFLAKE_SAMPLE_DATA",
"port": 443,
"audit": {
"enabled": false
},
"workspaces": {
"enabled": false
},
"impersonation": {
"enabled": false
},
"lineage": {
"enabled": false
},
"authenticationType": "userPassword",
"username": "<REDACTED>",
"password": "<REDACTED>",
"role": "ACCOUNTADMIN"
}
},
{
"id": "2",
"status": "enabled",
"type": "Databricks",
"validationResults": {
"status": "passed",
"validationTests": [
{
"name": "Metastore validation",
"status": "passed"
},
{
"name": "Basic Connection Test",
"result": [
{
"1": 1
}
],
"status": "passed"
}
]
},
"autoBootstrap": true,
"config": {
"workspaceUrl": "www.example-workspace.cloud.databricks.com",
"httpPath": "sql/protocolv1/o/0/0000-00000-abc123",
"token": "REDACTED",
"audit": {
"enabled": false
},
"catalog": "immuta"
}
}
]curl -X 'PUT' \
'https://www.organization.immuta.com/integrations/{id}' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f' \
-d '{
"type": "Redshift",
"autoBootstrap": true,
"config": {
"host": "organization.aws.amazon.com",
"database": "immuta",
"initialDatabase": "REDSHIFT_SAMPLE_DATA",
"authenticationType": "okta",
"okta": {
"username": "[email protected]",
"password": "abc1234",
"appId": "Okta",
"idpHost": "organization.okta.com",
"role": "admin"
}
}
}'{
"id": "123456789",
"status": "editing",
"validationResults": {
"status": "passed",
"validationTests": [
{
"name": "Initial Validation: Basic Connection Test",
"result": [null],
"status": "passed"
},
{
"name": "Validate Automatic Bootstrap: Immuta Database Does Not Exist",
"result": [],
"status": "passed"
}
]
}
}{
"statusCode": 409,
"error": "Conflict",
"message": "Unable to edit integration with ID 123456789 in current state editing."
}curl -X 'POST' \
'https://www.organization.immuta.com/integrations/{id}/scripts/edit' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f' \
-d '{
"type": "Redshift",
"autoBootstrap": false,
"config": {
"host": "organization.aws.amazon.com",
"database": "immuta",
"initialDatabase": "REDSHIFT_SAMPLE_DATA",
"impersonation": {
"enabled": false
},
"authenticationType": "okta",
"okta": {
"username": "[email protected]",
"password": "abc1234",
"appId": "Okta",
"idpHost": "organization.okta.com",
"role": "admin"
}
}
}'curl -X 'PUT' \
'https://www.organization.immuta.com/integrations/{id}' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f' \
-d '{
"type": "Redshift",
"autoBootstrap": false,
"config": {
"host": "organization.aws.amazon.com",
"database": "immuta",
"initialDatabase": "REDSHIFT_SAMPLE_DATA",
"impersonation": {
"enabled": false
},
"authenticationType": "okta",
"okta": {
"username": "[email protected]",
"password": "abc1234",
"appId": "Okta",
"idpHost": "organization.okta.com",
"role": "admin"
}
}
}'{
"id": "123456789",
"status": "editing",
"validationResults": {
"status": "passed",
"validationTests": [
{
"name": "Initial Validation: Basic Connection Test",
"result": [null],
"status": "passed"
},
{
"name": "Validate Automatic Bootstrap: Immuta Database Does Not Exist",
"result": [],
"status": "passed"
}
]
}
}{
"statusCode": 409,
"error": "Conflict",
"message": "Unable to edit integration with ID 123456789 in current state editing."
}curl -X 'DELETE' \
'https://www.organization.immuta.com/integrations/{id}' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f' \
-d '{
"authenticationType": "userPassword",
"username": "[email protected]",
"password": "abc1234"
}'{
"id": "123456789",
"status": "deleting",
"validationResults": {
"status": "passed",
"validationTests": [
{
"name": "Initial Validation: Basic Connection Test",
"result": [null],
"status": "passed"
},
{
"name": "Validate Automatic Bootstrap: Immuta Database Does Not Exist",
"result": [],
"status": "passed"
}
]
}
}curl -X 'POST' \
'https://www.organization.immuta.com/integrations' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f' \
-d '{
"type": "Azure Synapse Analytics",
"autoBootstrap": true,
"config": {
"host": "organization.azure.com",
"schema": "sample_schema",
"database": "immuta",
"username": "[email protected]",
"password": "abc1234",
"authenticationType": "userPassword"
}
}'{
"id": "123456789",
"status": "creating",
"validationResults": {
"status": "passed",
"validationTests": [
{
"name": "Initial Validation: Connect",
"result": [
{
"SCHEMA_NAME": "sample_schema",
"CATALOG_NAME": "immuta",
"SCHEMA_OWNER": "[email protected]",
"DEFAULT_CHARACTER_SET_NAME": "iso_1",
"DEFAULT_CHARACTER_SET_SCHEMA": null,
"DEFAULT_CHARACTER_SET_CATALOG": null
}
],
"status": "passed"
},
{
"name": "Initial Validation: Delimiters",
"status": "passed"
},
{
"name": "Validate Immuta system user can manage database",
"result": [
{
"name": "[email protected]"
}
],
"status": "passed"
}
]
}
}{
"statusCode": 409,
"error": "Conflict",
"message": "Azure Synapse Analytics integration already exists on host organization.azure.com (id = 123456789)"
}curl -X 'POST' \
'https://www.organization.immuta.com/integrations/scripts/initial-create' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f' \
-d '{
"type": "Azure Synapse Analytics",
"autoBootstrap": false,
"config": {
"host": "organization.azure.com",
"schema": "sample_schema",
"database": "immuta",
"impersonation": {
"enabled": false
},
"metadataDelimiters": {
"hashDelimiter": "|",
"hashKeyDelimiter": "-",
"arrayDelimiter": ","
},
"username": "[email protected]",
"password": "abc1234",
"authenticationType": "userPassword"
}
}'curl -X 'POST' \
'https://www.organization.immuta.com/integrations/scripts/create' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f' \
-d '{
"type": "Azure Synapse Analytics",
"autoBootstrap": false,
"config": {
"host": "organization.azure.com",
"schema": "sample_schema",
"database": "immuta",
"impersonation": {
"enabled": false
},
"metadataDelimiters": {
"hashDelimiter": "|",
"hashKeyDelimiter": "-",
"arrayDelimiter": ","
},
"username": "[email protected]",
"password": "abc1234",
"authenticationType": "userPassword"
}
}'curl -X 'POST' \
'https://www.organization.immuta.com/integrations' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f' \
-d '{
"type": "Azure Synapse Analytics",
"autoBootstrap": false,
"config": {
"host": "organization.azure.com",
"schema": "sample_schema",
"database": "immuta",
"impersonation": {
"enabled": false
},
"metadataDelimiters": {
"hashDelimiter": "|",
"hashKeyDelimiter": "-",
"arrayDelimiter": ","
},
"username": "[email protected]",
"password": "abc1234",
"authenticationType": "userPassword"
}
}'{
"id": "123456789",
"status": "creating",
"validationResults": {
"status": "passed",
"validationTests": [
{
"name": "Initial Validation: Connect",
"result": [
{
"SCHEMA_NAME": "sample_schema",
"CATALOG_NAME": "immuta",
"SCHEMA_OWNER": "[email protected]",
"DEFAULT_CHARACTER_SET_NAME": "iso_1",
"DEFAULT_CHARACTER_SET_SCHEMA": null,
"DEFAULT_CHARACTER_SET_CATALOG": null
}
],
"status": "passed"
},
{
"name": "Initial Validation: Delimiters",
"status": "passed"
},
{
"name": "Validate Immuta system user can manage database",
"result": [
{
"name": "[email protected]"
}
],
"status": "passed"
}
]
}
}{
"statusCode": 409,
"error": "Conflict",
"message": "Azure Synapse Analytics integration already exists on host organization.azure.com (id = 123456789)"
}{
"id": "123456789",
"status": "enabled",
"validationResults": {
"status": "passed",
"validationTests": [
{
"name": "Initial Validation: Connect",
"result": [
{
"SCHEMA_NAME": "sample_schema",
"CATALOG_NAME": "immuta",
"SCHEMA_OWNER": "[email protected]",
"DEFAULT_CHARACTER_SET_NAME": "iso_1",
"DEFAULT_CHARACTER_SET_SCHEMA": null,
"DEFAULT_CHARACTER_SET_CATALOG": null
}
],
"status": "passed"
},
{
"name": "Initial Validation: Delimiters",
"status": "passed"
},
{
"name": "Validate Immuta system user can manage database",
"result": [
{
"name": "[email protected]"
}
],
"status": "passed"
}
]
},
"type": "Azure Synapse Analytics",
"autoBootstrap": true,
"config": {
"host": "organization.azure.com",
"schema": "sample_schema",
"database": "immuta",
"port": 1433,
"impersonation": {
"enabled": false
},
"metadataDelimiters": {
"hashDelimiter": "|",
"hashKeyDelimiter": "-",
"arrayDelimiter": ","
},
"username": "<REDACTED>"
}
}{
"id": "123456789",
"status": "enabled",
"validationResults": {
"status": "passed",
"validationTests": [
{
"name": "Initial Validation: Connect",
"result": [
{
"SCHEMA_NAME": "sample_schema",
"CATALOG_NAME": "immuta",
"SCHEMA_OWNER": "[email protected]",
"DEFAULT_CHARACTER_SET_NAME": "iso_1",
"DEFAULT_CHARACTER_SET_SCHEMA": null,
"DEFAULT_CHARACTER_SET_CATALOG": null
}
],
"status": "passed"
},
{
"name": "Initial Validation: Delimiters",
"status": "passed"
},
{
"name": "Validate Immuta system user can manage database",
"result": [
{
"name": "[email protected]"
}
],
"status": "passed"
}
]
},
"type": "Azure Synapse Analytics",
"autoBootstrap": true,
"config": {
"host": "organization.azure.com",
"schema": "sample_schema",
"database": "immuta",
"port": 1433,
"impersonation": {
"enabled": true,
"role": "IMMUTA_IMPERSONATION"
},
"metadataDelimiters": {
"hashDelimiter": "|",
"hashKeyDelimiter": "-",
"arrayDelimiter": ","
},
"username": "<REDACTED>"
}
}{
"id": "123456789",
"status": "editing",
"validationResults": {
"status": "passed",
"validationTests": [
{
"name": "Initial Validation: Connect",
"result": [
{
"SCHEMA_NAME": "sample_schema",
"CATALOG_NAME": "immuta",
"SCHEMA_OWNER": "[email protected]",
"DEFAULT_CHARACTER_SET_NAME": "iso_1",
"DEFAULT_CHARACTER_SET_SCHEMA": null,
"DEFAULT_CHARACTER_SET_CATALOG": null
}
],
"status": "passed"
},
{
"name": "Initial Validation: Delimiters",
"status": "passed"
},
{
"name": "Validate Immuta system user can manage database",
"result": [
{
"name": "[email protected]"
}
],
"status": "passed"
}
]
}
}{
"statusCode": 409,
"error": "Conflict",
"message": "Unable to edit integration with ID 123456789 in current state editing."
}{
"id": "123456789",
"status": "editing",
"validationResults": {
"status": "passed",
"validationTests": [
{
"name": "Initial Validation: Connect",
"result": [
{
"SCHEMA_NAME": "sample_schema",
"CATALOG_NAME": "immuta",
"SCHEMA_OWNER": "[email protected]",
"DEFAULT_CHARACTER_SET_NAME": "iso_1",
"DEFAULT_CHARACTER_SET_SCHEMA": null,
"DEFAULT_CHARACTER_SET_CATALOG": null
}
],
"status": "passed"
},
{
"name": "Initial Validation: Delimiters",
"status": "passed"
},
{
"name": "Validate Immuta system user can manage database",
"result": [
{
"name": "[email protected]"
}
],
"status": "passed"
}
]
}
}{
"statusCode": 409,
"error": "Conflict",
"message": "Unable to edit integration with ID 123456789 in current state editing."
}curl -X 'GET' \
'https://www.organization.immuta.com/integrations/{id}' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f'curl -X 'GET' \
'https://www.organization.immuta.com/integrations' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f'[
{
"id": "1",
"status": "enabled",
"validationResults": {
"status": "passed",
"validationTests": [
{
"name": "Initial Validation: Basic Connection Test",
"status": "passed"
},
{
"name": "Initial Validation: Default Warehouse Access Test",
"status": "passed",
"result": []
},
{
"name": "Initial Validation: Validate access to Privileged Role",
"status": "passed",
"result": []
},
{
"name": "Validate Automatic: Database Does Not Exist",
"status": "passed"
},
{
"name": "Validate Automatic: Impersonation Role Does Not Exist",
"status": "skipped"
},
{
"name": "Validate Automatic Bootstrap User Grants",
"status": "passed"
}
]
},
"type": "Snowflake",
"autoBootstrap": true,
"config": {
"host": "organization.us-east-1.snowflakecomputing.com",
"warehouse": "SAMPLE_WAREHOUSE",
"database": "SNOWFLAKE_SAMPLE_DATA",
"port": 443,
"audit": {
"enabled": false
},
"workspaces": {
"enabled": false
},
"impersonation": {
"enabled": false
},
"lineage": {
"enabled": false
},
"authenticationType": "userPassword",
"username": "<REDACTED>",
"password": "<REDACTED>",
"role": "ACCOUNTADMIN"
}
},
{
"id": "2",
"status": "enabled",
"type": "Databricks",
"validationResults": {
"status": "passed",
"validationTests": [
{
"name": "Metastore validation",
"status": "passed"
},
{
"name": "Basic Connection Test",
"result": [
{
"1": 1
}
],
"status": "passed"
}
]
},
"autoBootstrap": true,
"config": {
"workspaceUrl": "www.example-workspace.cloud.databricks.com",
"httpPath": "sql/protocolv1/o/0/0000-00000-abc123",
"token": "REDACTED",
"audit": {
"enabled": false
},
"catalog": "immuta"
}
}
]curl -X 'PUT' \
'https://www.organization.immuta.com/integrations/{id}' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f' \
-d '{
"type": "Azure Synapse Analytics",
"autoBootstrap": true,
"config": {
"host": "organization.azure.com",
"schema": "sample_schema",
"database": "immuta",
"metadataDelimiters": {
"hashDelimiter": "|",
"hashKeyDelimiter": "-",
"arrayDelimiter": ","
},
"username": "[email protected]",
"password": "abc1234",
"authenticationType": "userPassword"
}
}'curl -X 'POST' \
'https://www.organization.immuta.com/integrations/{id}/scripts/edit' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f' \
-d '{
"type": "Azure Synapse Analytics",
"autoBootstrap": false,
"config": {
"host": "organization.azure.com",
"schema": "sample_schema",
"database": "immuta",
"impersonation": {
"enabled": false
},
"metadataDelimiters": {
"hashDelimiter": "|",
"hashKeyDelimiter": "-",
"arrayDelimiter": ","
},
"username": "[email protected]",
"password": "abc1234",
"authenticationType": "userPassword"
}
}'curl -X 'PUT' \
'https://www.organization.immuta.com/integrations/{id}' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f' \
-d '{
"type": "Azure Synapse Analytics",
"autoBootstrap": false,
"config": {
"host": "organization.azure.com",
"schema": "sample_schema",
"database": "immuta",
"impersonation": {
"enabled": false
},
"metadataDelimiters": {
"hashDelimiter": "|",
"hashKeyDelimiter": "-",
"arrayDelimiter": ","
},
"username": "[email protected]",
"password": "abc1234",
"authenticationType": "userPassword"
}
}'curl -X 'DELETE' \
'https://www.organization.immuta.com/integrations/{id}' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f' \
-d '{
"authenticationType": "userPassword",
"username": "[email protected]",
"password": "abc1234"
}'{
"id": "123456789",
"status": "deleting",
"validationResults": {
"status": "passed",
"validationTests": [
{
"name": "Initial Validation: Connect",
"result": [
{
"SCHEMA_NAME": "sample_schema",
"CATALOG_NAME": "immuta",
"SCHEMA_OWNER": "[email protected]",
"DEFAULT_CHARACTER_SET_NAME": "iso_1",
"DEFAULT_CHARACTER_SET_SCHEMA": null,
"DEFAULT_CHARACTER_SET_CATALOG": null
}
],
"status": "passed"
},
{
"name": "Initial Validation: Delimiters",
"status": "passed"
},
{
"name": "Validate Immuta system user can manage database",
"result": [
{
"name": "[email protected]"
}
],
"status": "passed"
}
]
}
}schema is the name of the Immuta-managed schema where all your secure views will be created and stored.
database is the name of an existing database where the Immuta system user will store all Immuta-generated schemas and views.
impersonation specifies whether user impersonation is enabled. See the object description for child parameters.
metadataDelimeters are a set of delimiters that Immuta uses to store profile data in Azure Synapse Analytics. See the object description for child parameters.
username and password are the username and password of the system account that can act on Azure Synapse Analytics objects and configure the integration.
schema is the name of the Immuta-managed schema where all your secure views will be created and stored.
database is the name of an existing database where the Immuta system user will store all Immuta-generated schemas and views.
impersonation specifies whether user impersonation is enabled. See the object description for child parameters.
metadataDelimeters are a set of delimiters that Immuta uses to store profile data in Azure Synapse Analytics. See the object description for child parameters.
username and password are the username and password of the system account that can act on Azure Synapse Analytics objects and configure the integration.
Run the script returned in the response in your Azure Synapse Analytics environment.
schema is the name of the Immuta-managed schema where all your secure views will be created and stored.
database is the name of an existing database where the Immuta system user will store all Immuta-generated schemas and views.
impersonation specifies whether user impersonation is enabled. See the object description for child parameters.
metadataDelimeters are a set of delimiters that Immuta uses to store profile data in Azure Synapse Analytics. See the object description for child parameters.
username and password are the username and password of the system account that can act on Azure Synapse Analytics objects and configure the integration.
Run the script returned in the response in your Azure Synapse Analytics environment.
schema is the name of the Immuta-managed schema where all your secure views will be created and stored.
database is the name of an existing database where the Immuta system user will store all Immuta-generated schemas and views.
impersonation specifies whether user impersonation is enabled. See the object description for child parameters.
metadataDelimeters are a set of delimiters that Immuta uses to store profile data in Azure Synapse Analytics. See the object description for child parameters.
username and password are the username and password of the system account that can act on Azure Synapse Analytics objects and configure the integration.
curl -X 'POST' \
'https://www.organization.immuta.com/integrations' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f' \
-d '{
"type": "Azure Synapse Analytics",
"autoBootstrap": true,
"config": {
"host": "organization.azure.com",
"schema": "sample_schema",
"database": "immuta",
"impersonation": {
"enabled": true,
"role": "IMMUTA_IMPERSONATION"
},
"metadataDelimiters": {
"hashDelimiter": "|",
"hashKeyDelimiter": "-",
"arrayDelimiter": ","
},
"username": "[email protected]",
"password": "abc1234",
"authenticationType": "userPassword"
}
}'curl -X 'POST' \
'https://www.organization.immuta.com/integrations/scripts/initial-create' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f' \
-d '{
"type": "Azure Synapse Analytics",
"autoBootstrap": false,
"config": {
"host": "organization.azure.com",
"schema": "sample_schema",
"database": "immuta",
"impersonation": {
"enabled": true,
"role": "IMMUTA_IMPERSONATION"
},
"metadataDelimiters": {
"hashDelimiter": "|",
"hashKeyDelimiter": "-",
"arrayDelimiter": ","
},
"username": "[email protected]",
"password": "abc1234",
"authenticationType": "userPassword"
}
}'curl -X 'POST' \
'https://www.organization.immuta.com/integrations/scripts/create' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f' \
-d '{
"type": "Azure Synapse Analytics",
"autoBootstrap": false,
"config": {
"host": "organization.azure.com",
"schema": "sample_schema",
"database": "immuta",
"impersonation": {
"enabled": true,
"role": "IMMUTA_IMPERSONATION"
},
"metadataDelimiters": {
"hashDelimiter": "|",
"hashKeyDelimiter": "-",
"arrayDelimiter": ","
},
"username": "[email protected]",
"password": "abc1234",
"authenticationType": "userPassword"
}
}'curl -X 'POST' \
'https://www.organization.immuta.com/integrations' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f' \
-d '{
"type": "Azure Synapse Analytics",
"autoBootstrap": false,
"config": {
"host": "organization.azure.com",
"schema": "sample_schema",
"database": "immuta",
"impersonation": {
"enabled": true,
"role": "IMMUTA_IMPERSONATION"
},
"metadataDelimiters": {
"hashDelimiter": "|",
"hashKeyDelimiter": "-",
"arrayDelimiter": ","
},
"username": "[email protected]",
"password": "abc1234",
"authenticationType": "userPassword"
}
}'createHmac('sha1', decryptedSecret).update(JSON.stringify(data)).digest('hex')POST /redshift/handler
Save the provided connection information as a data source.
private
boolean When false, the data source will be publicly available in the Immuta UI.
Yes
blobHandler
array[object] A list of full URLs providing the locations of all blob store handlers to use with this data source.
Yes
blobHandlerType
string Describes the type of underlying blob handler that will be used with this data source (e.g., MS SQL).
Yes
recordFormat
string The data format of blobs in the data source, such as json, xml, html, or jpeg.
id
integer The handler ID.
dataSourceId
integer The ID of the data source.
warnings
string This message describes issues with the created data source, such as the data source being unhealthy.
connectionString
string The connection string used to connect the data source to Immuta.
This request creates two Redshift data sources, which are specified in example-payload.json.
GET /redshift/handler/{handlerId}
Get the handler metadata associated with the provided handler ID.
handlerId
integer The ID of the handler.
Yes
skipCache
boolean When true, will skip the handler cache when retrieving metadata.
No
body
array[object] Metadata about the data source, including the data source ID, schema, database, and connection string.
This request returns metadata for the handler with the ID 41.
PUT
/redshift/handler/{handlerId}
. This endpoint does not perform partial updates, but will allow the dictionary to be omitted. In this case, it uses the current dictionary.
PUT
/redshift/bulk
.
PUT
/redshift/handler/{handlerId}/triggerHighCardinalityJob
.
PUT
/redshift/handler/{handlerId}/refreshNativeViewJob
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.
handlerId
integer The ID of the handler.
Yes
skipCache
boolean When true, will skip the handler cache when retrieving metadata.
No
handler
metadata Includes metadata about the handler, such as ssl, port, database, hostname, username, and password.
Yes
connectionString
string The connection string used to connect to the data source.
Yes
id
integer The ID of the handler.
ca
string The certificate authority.
columns
array[object] This is a Data Dictionary object, which provides metadata about the columns in the data source, including the name and data type of the column.
This request updates the metadata for the data source with the handler ID 41.
Payload example
The payload below removes the paragraph_count column from the data source.
PUT /redshift/bulk
Update the data source metadata associated with the provided connection string.
handler
metadata Includes metadata about the handler, such as ssl, port, database, hostname, username, and password.
Yes
connectionString
string The connection string used to connect to the data sources.
Yes
bulkId
string The ID of the bulk data source update.
connectionString
string The connection string shared by the data sources bulk updated.
jobsCreated
integer The number of jobs that ran to update the data sources; this number corresponds to the number of data sources updated.
This request updates the metadata for all data sources with the connection string specified in example-payload.json.
Payload example
The payload below adds a certificate (certificate.json) to connect to the data sources with the provided connection string.
PUT /redshift/handler/{handlerId}/triggerHighCardinalityJob
Recalculate the high cardinality column for the specified data source.
handlerId
integer The ID of the handler.
Yes
The response returns a string of characters that identify the high cardinality job run.
This request re-runs the job that calculates the high cardinality column for the data source with the handler ID 41.
PUT /redshift/handler/{handlerId}/refreshNativeViewJob
Refresh the view of a data source.
handlerId
integer The ID of the handler.
Yes
The response returns a string of characters that identifies the refresh view job run.
This request refreshes the view for the data source with the handler ID 7.
Domains API reference guide
curl \
--request POST \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
--data @example-payload.json \
https://demo.immuta.com/redshift/handler{
"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": []
}
}{
"connectionString":"[email protected]:5439/test"
}curl \
--request GET \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
https://demo.immuta.com/redshift/handler/41{
"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": "[email protected]:5439/test",
"id": 41,
"createdAt": "2021-10-01T18:15:09.139Z",
"updatedAt": "2021-10-01T18:15:09.274Z",
"dbms": {
"name": "redshift"
}
}curl \
--request PUT \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
--data @example-payload.json \
https://demo.immuta.com/redshift/handler/41{
"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": "[email protected]:5439/test",
"id": 41,
"createdAt": "2021-10-01T18:15:09.139Z",
"updatedAt": "2021-10-01T18:15:09.274Z",
"dbms": {
"name": "redshift"
}
}
}{
"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",
"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
}]
}
}curl \
--request PUT \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
--data @example-payload.json \
https://demo.immuta.com/redshift/bulk{
"handler": {
"metadata": {
"ssl": true,
"port": 5439,
"database": "test",
"hostname": "redshift.database.example.io",
"username": "user",
"userFiles": [{
"keyName": "testcert",
"filename": "bf349cbbfd3bc4eaf4ace7824a599fbc7cb5f7d5.json",
"userFilename": "certificate.json"
}],
"password": "yourpassword"
}
},
"connectionString": "[email protected]:5000/test"
}{
"bulkId": "bulk_ds_update_f50a8010dca03c07bcd0dc55eaf13c07",
"connectionString": "[email protected]:5000/tpc",
"jobsCreated": 2
}curl \
--request PUT \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
https://demo.immuta.com/redshift/handler/41/triggerHighCardinalityJob0f5f08d0-22ee-11ec-b2b8-874838eeef05curl \
--request PUT \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
https://demo.immuta.com/redshift/handler/7/refreshNativeViewJob53c256d0-eb57-11ec-b275-d95a8e998142Yes
type
string The type of data source: ingested (metadata will exist in Immuta) or queryable (metadata is dynamically queried).
Yes
name
string The name of the data source. It must be unique within the Immuta tenant.
Yes
sqlTableName
string A string that represents this data source's table in Immuta.
Yes
organization
string The organization that owns the data source.
Yes
category
string The category of the data source.
No
description
string The description of the data source.
No
hasExamples
boolean When true, the data source contains examples.
No
name string
The name of the domain.
description string
The description of the domain that will be displayed for users.
createdBy integer
The unique identifier of the user who created the domain.
profile.name string
The name of the user who created the domain.
createdAt timestamp
The date and time the domain was created.
updatedAt timestamp
The date and time the domain was updated.
type string
The type of collection. Value is domain.
POST
Creates a new domain
GET
Retrieves all domains
GET
Retrieves a specific domain
GET
Retrieves all permission IDs for a specific domain
Create a new domain. You must have the global GOVERNANCE permission to create a domain. You can add data sources to the domain after creating the domain.
id string
The unique identifier of the domain.
Optional
-
-
name string
The name of the domain.
Required
-
-
Returns a domains object.
Retrieve domains created in Immuta. These results can be filtered by permission or by name.
The following table describes optional query parameters for retrieving domains.
type string
The type of collection.
domain
offset integer
The number of items from the beginning of the response to exclude. You can combine the offset and size parameters to return a specific set of domains. For example, to return the second and third domain in the response, you would set offset=1 and size=2.
Minimum value is 0. Maximum value is the total number of domains minus size.
size integer
The number of domains to return.
Minimum value is 1. Maximum value is the total number of domains.
searchText string
The text to search for in domain names. This will return domains with a name that contains this search text.
Returns a data property that contains an array of up to size domain objects. If no domains exist, the array will be empty.
Retrieve a domain with the given collectionId to view the data sources, description, and assigned permissions associated with the domain.
collectionId string
The unique identifier of the domain.
Returns a domains object.
Retrieve all permissions assigned to the specified domain.
collectionId string
The unique identifier of the domain.
type string
The type of permission to return. Acceptable values include Manage Policies and Audit Activity.
offset integer
The number of items from the beginning of the response to exclude. You can combine the offset and size parameters to return a specific set of permissions. For example, to return the second and third permissions in the response, you would set offset=1 and size=2.
size integer
The number of permissions to return.
Returns an array of domain permission objects that represent a permission in a domain assigned to a specific user.
Retrieve a domain with the given collectionName to view the data sources, description, and assigned permissions associated with the domain.
collectionType string
The type of collection. The accepted value is domain.
collectionName string
The name of the domain.
Returns a domains object.
Change the domain name or description. You must have the global GOVERNANCE permission to update the domain.
Path parameter
collectionId string
The unique identifier of the domain.
Body parameters
name string
The name of the domain.
Optional
-
-
description string
The description of the domain that will be displayed for users.
Optional
-
-
Returns a domains object with the new name or description.
Delete a domain. The domain must have zero data sources for a user with the global GOVERNANCE permission to delete the domain.
Path parameter
collectionId string
The unique identifier of the domain.
Query parameter
dryRun boolean
If true, the domain will not be deleted.
Returns a 204 code when the domain is successfully deleted. Additional responses are provided below:
400: An invalid ID was provided.
404: The domain was not found.
Add existing data sources to a domain. You must have the GOVERNANCE permission.
The request will fail if any data source IDs that have already been assigned to a domain are included in the payload.
Path parameter
collectionId string
The unique identifier of the domain.
Body parameter
dataSourceId integer
The unique identifier of the data source in Immuta.
Required
-
-
Returns a unique identifier of the background job that adds the data sources to the domain.
Retrieve the data sources within a domain.
Path parameter
collectionId string
The unique identifier of the domain.
Query parameters
offset integer
The number of items from the beginning of the response to exclude. You can combine the offset and size parameters to return a specific set of data sources. For example, to return the second and third data source in the response, you would set offset=1 and size=2.
Minimum value is 0. Maximum value is the total number of data sources minus size.
size integer
The number of data sources to return.
Minimum value is 1. Maximum value is the total number of data sources.
searchText string
The text to search for in data source names. This will return data sources with a name that contains this search text.
-
dataSourceIds integer
Filters search results by data source ID.
Returns a data property that contains an array of up to size data sources. Each entry in the array is a separate data source. If there are no data sources in the domain, the array will be empty.
Remove data sources from a domain. To remove data sources from a domain, you must have the global CREATE_DATA_SOURCE permission.
collectionId string
The unique identifier of the domain from which to remove the data source.
dataSourceId integer
The unique identifier of the data source to remove.
Returns a 204 code when the data source is successfully removed from the domain. Additional responses are included below:
403: Requesting user does not have permission to remove the data source.
404: The specified collection or data source was not found.
Assign domain permissions to a specific user. You must have the global USER_ADMIN permission to assign domain permissions to users.
id string
The unique identifier of the permissions object.
profileId integer
The unique identifier of the user the permission is assigned to.
groupId integer
The unique identifier of the group the permission is assigned to.
collectionId string
The unique identifier of the domain.
permission string
The permission assigned to the user. Accepted values are Manage Policies or Audit Activity.
createdAt timestamp
The date and time the permission object was created.
Path parameter
collectionId string
The unique identifier of the domain.
Body parameters
groupId integer
The unique identifier of the group the permission is assigned to.
Optional
[]
-
profileId integer
The unique identifier of the user in the identity manager.
Optional
[]
-
Returns an array of domain permission objects that represent a permission in a domain assigned to a specific user. If the permission had already been assigned to the user for that domain, the response will include an error for the permissions that were not assigned to that user because the permission already existed.
Remove permissions from multiple users or groups in a domain.
Required Immuta permission: USER_ADMIN
collectionId string
The unique identifier of the domain.
collectionPermissions.groupId integer
The unique identifier of the group the permission is assigned to.
Required if profileId is not provided
-
-
collectionPermissions.profileId integer
The unique identifier of the user the permission is assigned to.
Required if groupId is not provided
-
-
Returns an array of domain permission objects that represent a permission in a domain deleted from that specific user or group. Response includes permissions that failed to delete.
Retrieve a list of permissions associated with the domain.
Path parameters
collectionId string
The unique identifier of the domain.
memberType string
The type of member to get a list of permissions for. Possible values include user or group.
Query parameters
type string
The permission to return.
Manage Policies
Audit Activity
offset integer
The number of items from the beginning of the response to exclude. You can combine the offset and size parameters to return a specific set of domain users. For example, to return the second and third domain users in the response, you would set offset=1 and size=2.
Minimum value is 0. Maximum value is the total number of domain users minus size.
size integer
The number of users to return.
Minimum value is 1. Maximum value is the total number of domain users.
searchText string
A string used to filter the results returned by the name.
Returns a data property that contains an array of users or groups who have been assigned that permission in the domain.
Retrieve a list of permissions for the specified user or group across all domains they are a member of.
memberType string
The type of member to get a list of permissions for. Possible values include user or group.
memberId string
The unique identifier of the user or group.
type string
The permission to return.
Manage Policies
Audit Activity
offset integer
The number of items from the beginning of the response to exclude. You can combine the offset and size parameters to return a specific set of domain permissions. For example, to return the second and third permission in the response, you would set offset=1 and size=2.
Minimum value is 0. Maximum value is the total number of domain permissions that user or group has minus size.
size integer
The number of permissions to return.
Minimum value is 1. Maximum value is the total number of domain permissions that user or group has.
searchText string
A string used to filter the results returned by the name.
Returns a data property that contains an array of permissions that have been assigned to the user or group in all the domains they are a member of.
Remove a domain permission from a specific user or group. You must have the global USER_ADMIN permission to remove domain permissions from users and groups.
collectionId string
The unique identifier of the domain.
permissionId string
The unique identifier of the assigned permission.
Returns a 204 code when the permission is successfully removed from the user. Additional responses are provided below:
400: Invalid permission
404: Collection or permission not found
Remove a domain permission based on the permission type. You must have the global USER_ADMIN permission to remove domain permissions from users and groups.
collectionId string
The unique identifier of the domain.
memberType string
The type of member to remove the permission from. Possible values include user or group.
memberId number
The unique identifier of the user or group.
permissionType string
The type of permission to delete. Accepted values are Manage Policies or Audit Activity.
Returns a 204 code when the permission is successfully removed. Additional responses are provided below:
400: Invalid permission
404: Collection or permission not found
id string
The unique identifier of the domain.
curl -X 'POST' \
'https://your.immuta.url.com/collection' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer 09a0ffd7512f4aeeb66c09f3111c436c' \
-d '{
"id": "c7458ee9-03e5-4b6f-8395-ad4e49235428",
"name": "Research",
"description": "This domain is for research team data.",
"type": "domain"
}'{
"id": "c7458ee9-03e5-4b6f-8395-ad4e49235428",
"type": "domain",
"name": "Research",
"description": "This domain is for research team data.",
"createdAt": "2023-05-10T14:55:29.289Z",
"updatedAt": "2023-05-10T14:55:29.289Z",
"createdBy": 2,
"profile": {
"name": "Example User"
}
}curl -X 'GET' \
'https://your.immuta.url.com/collection?type=domain&offset=0&size=10' \
-H 'accept: application/json' \
-H 'Authorization: Bearer 9b06b571ab2c45f7ba315a3d80b6b6ec'{
"data": [{
"id": "c7458ee9-03e5-4b6f-8395-ad4e49235428",
"type": "domain",
"name": "Marketing domain",
"description": "This is a collection of marketing data.",
"createdAt": "2023-05-10T14:55:29.289Z",
"updatedAt": "2023-05-10T14:55:29.289Z",
"createdBy": 2,
"profile": {
"name": "Example User"
}
},
{
"id": "2",
"type": "domain",
"name": "Test 2",
"description": "Another test",
"createdAt": "2023-05-10T15:06:15.047Z",
"updatedAt": "2023-05-10T15:06:15.047Z",
"createdBy": 2,
"profile": {
"name": "Example User"
}
}],
"total": 2
}curl -X 'GET' \
'https://your.immuta.url.com/collection/c7458ee9-03e5-4b6f-8395-ad4e49235428' \
-H 'accept: application/json' \
-H 'Authorization: Bearer 9b06b571ab2c45f7ba315a3d80b6b6ec'{
"id": "c7458ee9-03e5-4b6f-8395-ad4e49235428",
"type": "domain",
"name": "Research",
"description": "This domain is for research team data.",
"createdAt": "2023-05-10T14:55:29.289Z",
"updatedAt": "2023-05-10T14:55:29.289Z",
"createdBy": 2,
"profile": {
"name": "Example User"
}
}curl -X 'GET' \
'https://your.immuta.url.com/collection/c7458ee9-03e5-4b6f-8395-ad4e49235428/allPermissions' \
-H 'accept: application/json' \
-H 'Authorization: Bearer 9b06b571ab2c45f7ba315a3d80b6b6ec'{
"data": [
{
"id": "3bafcd54-a18d-406d-a514-cb8a38586b7d",
"name": "Taylor",
"profileId": 2,
"collectionId": "c7458ee9-03e5-4b6f-8395-ad4e49235428",
"groupId": null,
"permission": "Manage Policies",
"createdAt": "2024-05-17T17:25:46.581Z"
}
],
"total": 1
}curl -X 'GET' \
'https://your.immuta.url.com/collection/domain/Research' \
-H 'accept: application/json' \
-H 'Authorization: Bearer 9b06b571ab2c45f7ba315a3d80b6b6ec'{
"id": "c7458ee9-03e5-4b6f-8395-ad4e49235428",
"type": "domain",
"name": "Research",
"description": "This domain is for research team data.",
"createdAt": "2023-05-10T14:55:29.289Z",
"updatedAt": "2023-05-10T14:55:29.289Z",
"createdBy": 2,
"profile": {
"name": "Example User"
}
}curl -X 'PUT' \
'https://your.immuta.url.com/collection/c7458ee9-03e5-4b6f-8395-ad4e49235428' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer 71bd4a7088554159a7ad1ade9242568f' \
-d '{
"name": "HR Research",
"description": "This domain is specifically for human resources data and research."
}'{
"id": "c7458ee9-03e5-4b6f-8395-ad4e49235428",
"type": "domain",
"name": "HR Research",
"description": "This domain is specifically for human resources data and research.",
"createdAt": "2023-05-11T14:50:40.855Z",
"updatedAt": "2023-05-11T14:53:21.235Z",
"createdBy": 2,
"profile": {
"name": "Example User"
}
}curl -X 'DELETE' \
'https://your.immuta.url.com/collection/c7458ee9-03e5-4b6f-8395-ad4e49235428' \
-H 'accept: application/json' \
-H 'Authorization: Bearer 71bd4a7088554159a7ad1ade9242568f'curl -X 'POST' \
'https://your.immuta.url.com/collection/c7458ee9-03e5-4b6f-8395-ad4e49235428/datasources' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer 71bd4a7088554159a7ad1ade9242568f' \
-d '[
{
"dataSourceId": 36
}
]'{
"jobId": "e48e15a0-ef5c-11ed-892c-a75afcd86969"
}curl -X 'GET' \
'https://your.immuta.url.com/collection/c7458ee9-03e5-4b6f-8395-ad4e49235428/datasources?offset=0&size=10' \
-H 'accept: application/json' \
-H 'Authorization: Bearer 71bd4a7088554159a7ad1ade9242568f'{
"data": [{
"dataSourceId": 36,
"createdAt": "2023-05-10T18:02:57.068Z",
"name": "HR Data",
"type": "queryable",
"platform": "PostgreSQL",
"connectionString": "[email protected]:5432/public",
"schema": "public",
"table": "research_data",
"tags": []
}],
"total": 1
}curl -X 'DELETE' \
'https://your.immuta.url.com/collection/c7458ee9-03e5-4b6f-8395-ad4e49235428/datasources/36' \
-H 'accept: application/json' \
-H 'Authorization: Bearer 71bd4a7088554159a7ad1ade9242568f'curl -X 'POST' \
'https://your.immuta.url.com/collection/c7458ee9-03e5-4b6f-8395-ad4e49235428/permissions' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer 71bd4a7088554159a7ad1ade9242568f' \
-d '[
{
"profileId": 2,
"permission": "Manage Policies"
},
{
"profileId": 3,
"permission": "Manage Policies"
}
]'{
"success": [
{
"id": "c2ec9049-ac93-4700-9e21-f0ec3a0de6bb",
"profileId": 3,
"collectionId": "c7458ee9-03e5-4b6f-8395-ad4e49235428",
"permission": "Manage Policies",
"createdAt": "2023-05-10T18:37:05.847Z"
}
],
"errors": [
{
"profileId": 2,
"collectionId": "c7458ee9-03e5-4b6f-8395-ad4e49235428",
"permission": "Manage Policies",
"message": "Permission already exists"
}
]
}curl -X 'POST' \
'https://your.immuta.url.com/collection/c7458ee9-03e5-4b6f-8395-ad4e49235428/permissions/bulk-delete' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer 71bd4a7088554159a7ad1ade9242568f' \
-d '[
{
"collectionPermissions": [
{
"profileId": 2,
"permission": "Manage Policies"
},
{
"profileId": 3,
"permission": "Manage Policies"
}
]
}
]'{
"success": [
"d6378973-e15d-4310-8f1e-671c6b08e6a2",
"83e6cb4a-4f41-47b4-b455-16fe518d5068"
],
"errors": []
}curl -X 'GET' \
'https://your.immuta.url.com/collection/c7458ee9-03e5-4b6f-8395-ad4e49235428/permissions/user?offset=0&size=10' \
-H 'accept: application/json' \
-H 'Authorization: Bearer 71bd4a7088554159a7ad1ade9242568f'{
"data": [{
"id": "1bf5fa36-8130-4f72-8f4f-d1f18c25c2a2",
"name": "Example User",
"profileId": 2,
"collectionId": "c7458ee9-03e5-4b6f-8395-ad4e49235428",
"permission": "Manage Policies",
"source": [
"User Permission(s)"
]
},
{
"id": "6172d495-c560-4ae1-bceb-cc6ce15e55ec",
"name": "Example User 2",
"profileId": 3,
"collectionId": "c7458ee9-03e5-4b6f-8395-ad4e49235428",
"permission": "Manage Policies",
"source": [
"User Permission(s)"
]
}],
"total": 2
}curl -X 'GET' \
'https://your.immuta.url.com/collection/permissions/user/2?offset=0&size=10' \
-H 'accept: application/json' \
-H 'Authorization: Bearer 71bd4a7088554159a7ad1ade9242568f'{
"data": [{
"profileId": 2,
"name": "Taylor",
"collectionId": "c7458ee9-03e5-4b6f-8395-ad4e49235428",
"collectionName": "Marketing domain",
"permission": "Manage Policies",
"source": [
"User Permission(s)"
],
"userObjectId": 2,
"iamId": "bim"
},
{
"profileId": 2,
"name": "Taylor",
"collectionId": "a5678ef9-53e5-4b6f-8395-aa4e49237689",
"collectionName": "Customer support domain",
"permission": "Manage Policies",
"source": [
"User Permission(s)"
],
"userObjectId": 2,
"iamId": "bim"
}
]
}curl -X 'DELETE' \
'https://your.immuta.url.com/collection/c7458ee9-03e5-4b6f-8395-ad4e49235428/permissions/c2ec9049-ac93-4700-9e21-f0ec3a0de6bb' \
-H 'accept: application/json' \
-H 'Authorization: Bearer 71bd4a7088554159a7ad1ade9242568f'curl -X 'DELETE' \
'https://your.immuta.url.com/collection/c7458ee9-03e5-4b6f-8395-ad4e49235428/permissions/user/2/Manage%20Policies' \
-H 'accept: application/json' \
-H 'Authorization: Bearer 71bd4a7088554159a7ad1ade9242568f'GET
Retrieves a specific domain by name
PUT
Updates a domain name or description
DELETE
Deletes a domain
POST
Adds data sources to a domain
GET
Retrieves the data sources in the domain
DELETE
Deletes a data source from a domain
POST
Assigns a domain permission to a user
POST
Deletes multiple permissions from a collection
GET
Retrieves user permissions assigned in the domain
DELETE
Removes a domain permission from a user by the permission ID
DELETE
Removes a domain permission from a user by the user ID and permission type
GET
Retrieve a list of permissions for the specified user or group across all domains they are a member of
description string
The description of the domain that will be displayed for users.
Optional
-
-
type string
The type of collection.
Required
domain
domain
-
withPermissions string
Only returns domains that the querying user has been granted the permission in.
Manage Policies
Audit Activity
isExactMatch boolean
If true, will only return domains with the exact name.
true or false
isCollectionPolicySearch boolean
If true, will only return domains that the user can modify policies on.
true or false
-
source string
Indicates whether the permission was assigned as a user permission or a group permission.
permission string
The domain permission assigned to the user.
Required
-
Manage Policies
Audit Activity
collectionPermissions.permission string
The domain permission assigned to the user or group.
Required
-
Manage Policies
Audit Activity
-
sortField string
Specifies the field to sort the results by.
collectionId
name
profileId
sortOrder string
Specifies how to sort the results of the request.
asc
desc
-
sortField string
Specifies the field to sort the results by.
collectionId
name
profileId
sortOrder string
Specifies how to sort the results of the request.
asc
desc
The integrations resource allows you to create, configure, and manage your integration. How Immuta manages and administers policies in your data platform varies by integration.
To configure or manage an integration, users must have the APPLICATION_ADMIN Immuta permission.
Gets all integration configurations.
The response returns the configuration for all integrations. See the for details about the response schema. An unsuccessful request returns the status code and an error message. See the for a list of statuses, error messages, and troubleshooting guidance.
Creates an integration configuration that allows Immuta to manage access policies on data registered in Immuta.
When you connect Immuta to your AWS account, the awsLocationPath is the base S3 location prefix that Immuta will use for this connection when registering S3 data sources.
This request configures the integration using the AWS access key authentication method.
When you connect Immuta to your Azure Synapse Analytics account, the schema you specify is where all the policy-enforced views will be created and managed by Immuta.
This request creates a Databricks Unity Catalog integration configuration that allows Immuta to administer Unity Catalog policies on data registered in Immuta.
When you connect Immuta to your Google BigQuery account, the dataset you specify is where all the policy-enforced views will be created and managed by Immuta.
When you connect Immuta to your Redshift account, the Immuta system user will use the database you specify to manage and store metadata. The initial database (REDSHIFT_SAMPLE_DATA, in the request below) is an existing Redshift database that Immuta connects to in order to create the Immuta-managed database (immuta, in the request below).
This request specifies userPassword as the authentication type for the Immuta system user. The username and password provided are credentials for a system account that can manage the database.
When you connect Immuta to your Snowflake account, the warehouse you specify is the default pool of compute resources the Immuta system user will use to run queries and perform other Snowflake operations.
This request specifies userPassword authentication type. The username and password provided are credentials of a Snowflake account attached to a role with . These credentials are not stored; they are used by Immuta to configure the integration.
When you configure the Starburst (Trino) integration, Immuta generates an API key and configuration snippet on the Immuta app settings page that you will use to configure your Starburst cluster.
The request accepts a JSON or YAML payload with the parameters outlined below.
The response returns the status of the integration configuration connection. See the for details about the response schema.
A successful response includes the validation tests statuses.
An unsuccessful request returns the status code and an error message. See the for a list of statuses, error messages, and troubleshooting guidance.
Deletes the integration configuration you specify in the request.
For Amazon S3 integrations, Databricks Unity Catalog integrations, Google BigQuery integrations, Starburst (Trino) integrations, or integration configurations with autoBootstrap set to false, no payload is required to delete the integration.
For the integrations below, the request accepts a JSON or YAML payload when autoBootstrap is set to true. See the payload description for your integration for parameters and details:
The response returns the status of the integration configuration that has been deleted. See the for details about the response schema. An unsuccessful request returns the status code and an error message. See the for a list of statuses, error messages, and troubleshooting guidance.
Gets the integration configuration you specify in the request.
The response returns an integration configuration. See the for details about the response schema. An unsuccessful request returns the status code and an error message. See the for a list of statuses, error messages, and troubleshooting guidance.
Updates an existing integration configuration.
This request changes the name of the integration.
This request enables user impersonation for the Azure Synapse Analytics integration.
This request updates the access token.
This request updates the private key for the Google BigQuery integration.
This request enables user impersonation for the Redshift integration.
This request enables auditing queries run in Snowflake.
The request accepts a JSON or YAML payload with the parameters outlined below.
The response returns the status of the integration configuration connection. See the for details about the response schema.
A successful response includes the validation tests statuses.
An unsuccessful request returns the status code and an error message. See the for a list of statuses, error messages, and troubleshooting guidance.
Regenerates an Immuta API key for the configured integration.
This request regenerates an Immuta API key for the configured Starburst (Trino) integration. Once you make this request, your old Immuta API key will be deleted and will no longer be valid. See the for instructions on updating your Starburst (Trino) integration to use the new API key.
The response returns the new Immuta API key. An unsuccessful request returns the status code and an error message. See the for a list of statuses, error messages, and troubleshooting guidance.
Gets the status of the integration specified in the request.
The response returns the of the specified integration. An unsuccessful request returns the HTTP status code and an error message. See the for a list of statuses, error messages, and troubleshooting guidance.
Creates a script to remove Immuta-managed resources from your platform. This endpoint is for Azure Synapse Analytics, Redshift, and Snowflake integrations that were not successfully created and, therefore, do not have an integration ID.
For Azure Synapse Analytics integrations, you must also make a request to the to create another script that will finish removing Immuta-managed resources from the platform.
The request accepts a JSON or YAML payload with the parameters outlined below.
The response returns the script that you will run in your Azure Synapse Analytics, Redshift, or Snowflake environment.
Once you have run the script,
use the DELETE /integrations/{id} endpoint to delete your Redshift or Snowflake integration in Immuta:
use the
Creates a script for you to run manually to set up objects and resources for Immuta to manage and enforce access controls on your data. This endpoint is available for Azure Synapse Analytics, Databricks Unity Catalog, Redshift, and Snowflake integrations.
The request accepts a JSON or YAML payload with the parameters outlined below.
The response returns the script that you will run in your Azure Synapse Analytics, Databricks Unity Catalog, Redshift, or Snowflake environment.
Creates a script to remove Immuta-managed resources from your platform. This endpoint is for Azure Synapse Analytics, Redshift, and Snowflake integrations that were successfully created.
The response returns the script that you will run in your Azure Synapse Analytics, Redshift, or Snowflake environment.
Once you have run the script, use the DELETE /integrations/{id} endpoint to delete your integration in Immuta:
Creates a script for you to run manually to edit objects and resources managed by Immuta in your platform. This endpoint is available for Azure Synapse Analytics, Redshift, and Snowflake integrations.
The request accepts a JSON or YAML payload with the parameters outlined below.
The response returns the script that you will run in your Azure Synapse Analytics, Redshift, or Snowflake environment. Once you have run the script, use the PUT /integrations/{id} endpoint to finish editing your integration:
Creates the first script for you to run manually to set up objects and resources for Immuta to manage and enforce access controls on your data in Azure Synapse Analytics or Redshift integrations.
The request accepts a JSON or YAML payload with the parameters outlined below.
The response returns the script that you will run in your Azure Synapse Analytics or Redshift environment.
Once you have run this script, use the to generate a script to finish creating the Immuta-managed resources in your platform.
Creates a second script to remove the final Immuta-managed resources from your Azure Synapse Analytics platform. This endpoint is for Azure Synapse Analytics integrations that were not successfully created and, therefore, do not have an integration ID.
Before making a request like the one below, you must make a request to the to create the first script that will remove the initial Immuta-managed resources from the platform.
The request accepts a JSON or YAML payload with the parameters outlined below.
The response returns the script that you will run in your Azure Synapse Analytics environment.
Once you have run the script, use the DELETE /integrations/{id} endpoint to delete your integration in Immuta by following the instructions.
See the following how-to guides for configuration examples and steps for creating, managing, or deleting your integration:
config object
This object specifies the integration settings. See the config object description for your integration for details: , , , , , or .
Required for all integrations except Starburst (Trino)
-
-
config object
This object specifies the integration settings. See the config object description for your integration for details: , , , , or .
Required
-
-
config object
This object specifies the integration settings. See the config object description for your integration for details: , , or .
Required
-
-
config object
This object specifies the integration settings. See the config object description for your integration for details: , , , or .
Required
-
-
config object
This object specifies the integration settings. Some settings cannot be changed once an integration is configured. See the config object description for your integration for details: , , or .
Required
-
-
config object
This object specifies the integration settings. See the config object description of the or integration configuration for details.
Required
-
-
config object
This object specifies the integration settings. See the config object description of for details.
Required
-
-
GET
Gets all integration configurations
POST
Creates an integration
DELETE
Deletes a configured integration
GET
Gets an integration configuration
PUT
Updates a configured integration
POST
Regenerates an Immuta API key for the configured integration
GET
Gets the status of the specified integration
POST
Creates a script to remove Immuta-managed resources from your platform for integrations that were not successfully created
POST
Creates a script to set up Immuta-managed resources in your platform
POST
Creates a script to remove Immuta-managed resources from your platform for integrations that were successfully configured
POST
Creates a script to edit existing Immuta-managed resources in your platform
POST
Creates the first script to set up Immuta-managed resources in your Azure Synapse Analytics or Redshift platform
POST
Creates the second script to remove Immuta-managed resources from your Azure Synapse Analytics integration if it was not successfully created
type string
The type of integration to configure.
Required
-
Azure Synapse Analytics
Databricks
Google BigQuery
Native S3
Redshift
Snowflake
Trino
autoBootstrap boolean
When true, Immuta will automatically configure the integration in your Azure Synapse Analytics, Databricks Unity Catalog, Redshift, or Snowflake environment for you. When false, you must set up your environment manually before configuring the integration with the API. This parameter must be set to false in the Amazon S3 and Google BigQuery configurations. See the specific how-to guide for configuring your integration for details: Azure Synapse Analytics, Databricks Unity Catalog, Redshift, Snowflake.
Required for all integrations except Starburst (Trino)
-
true or false
dryRun boolean
When true, the integration configuration will not actually be created, and the response returns the validation tests statuses.
Optional
id number
The unique identifier of the integration configuration.
Required
dryRun boolean
When true, the integration configuration will not actually be deleted, and the response returns the validation tests statuses.
Optional
forceDisable boolean
When true, the integration will be deleted in Immuta. Users must manually remove all Immuta objects in the remote data platform.
Optional
id number
The unique identifier of the integration configuration.
Required
type string
The type of integration to configure.
Required
-
Azure Synapse Analytics
Databricks
Google BigQuery
Redshift
Snowflake
autoBootstrap boolean
When true, Immuta will automatically configure the integration in your Azure Synapse Analytics, Databricks Unity Catalog, Redshift, or Snowflake environment for you. When false, you must set up your environment manually before configuring the integration with the API. This parameter must be set to false in the Google BigQuery configuration. See the specific how-to guide for configuring other integrations: Azure Synapse Analytics, Databricks Unity Catalog, Redshift, Snowflake.
Required
-
true or false
dryRun boolean
When true, the integration configuration will not actually be updated, and the response returns the validation tests statuses.
Optional
id number
The unique identifier of the integration configuration.
Required
type string
The type of integration to clean up.
Required
-
Azure Synapse Analytics
Redshift
Snowflake
autoBootstrap boolean
Set to false to specify that you will run the script in your environment yourself to clean up the integration resources. See the Azure Synapse Analytics, Redshift, or Snowflake manual setup section for details.
Required
-
false
type string
The type of integration to configure.
Required
-
Azure Synapse Analytics
Databricks
Redshift
Snowflake
autoBootstrap boolean
Set to false to specify that you will run the script in your environment yourself to configure the integration. You must run the Immuta script before creating the integration. See the Azure Synapse Analytics, Databricks Unity Catalog, Redshift, or Snowflake manual setup guides for details.
Required
-
false
type string
The type of integration to configure.
Required
-
Azure Synapse Analytics
Databricks
Redshift
Snowflake
autoBootstrap boolean
Set to false to specify that you will run the script in your environment yourself to configure the integration. You must run the Immuta script before creating the integration. See the Azure Synapse Analytics, Redshift, or Snowflake manual setup guides for details.
Required
-
false
type string
The type of integration to configure.
Required
-
Azure Synapse Analytics
Redshift
autoBootstrap boolean
Set to false to specify that you will run the script in your environment yourself to configure the integration. You must run the Immuta script before creating the integration. See the Azure Synapse Analytics or Redshift manual setup guides for details.
Required
-
false
type string
The type of integration to clean up.
Required
-
Azure Synapse Analytics
autoBootstrap boolean
Set to false to specify that you will run the script in your environment yourself to clean up the integration resources. See the Azure Synapse Analytics manual setup section for details.
Required
-
false
curl -X 'GET' \
'https://www.organization.immuta.com/integrations' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f'[
{
"id": "1",
"status": "enabled",
"validationResults": {
"status": "passed",
"validationTests": [
{
"name": "Initial Validation: Basic Connection Test",
"status": "passed"
},
{
"name": "Initial Validation: Default Warehouse Access Test",
"status": "passed",
"result": []
},
{
"name": "Initial Validation: Validate access to Privileged Role",
"status": "passed",
"result": []
},
{
"name": "Validate Automatic: Database Does Not Exist",
"status": "passed"
},
{
"name": "Validate Automatic: Impersonation Role Does Not Exist",
"status": "skipped"
},
{
"name": "Validate Automatic Bootstrap User Grants",
"status": "passed"
}
] },
"type": "Snowflake",
"autoBootstrap": true,
"config": {
"host": "organization.us-east-1.snowflakecomputing.com",
"warehouse": "SAMPLE_WAREHOUSE",
"database": "SNOWFLAKE_SAMPLE_DATA",
"port": 443,
"audit": {
"enabled": false
},
"workspaces": {
"enabled": false
},
"impersonation": {
"enabled": false
},
"lineage": {
"enabled": false
},
"authenticationType": "userPassword",
"username": "<REDACTED>",
"password": "<REDACTED>",
"role": "ACCOUNTADMIN"
},
{
"id": "2",
"status": "enabled",
"type": "Databricks",
"validationResults": {
"status": "passed",
"validationTests": [
{
"name": "Metastore validation",
"status": "passed"
},
{
"name": "Basic Connection Test",
"result": [
{
"1": 1
}
],
"status": "passed"
}
]
},
"autoBootstrap": true,
"config": {
"workspaceUrl": "www.example-workspace.cloud.databricks.com",
"httpPath": "sql/protocolv1/o/0/0000-00000-abc123",
"authenticationType": "token",
"token": "REDACTED",
"audit": {
"enabled": false
},
"catalog": "immuta"
}
}
}
]curl -X 'POST' \
'https://www.organization.immuta.com/integrations' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f' \
-d '{
"type": "Native S3",
"autoBootstrap": false,
"config": {
"name": "S3 integration",
"awsAccountId": "123456789",
"awsRegion": "us-east-1",
"awsLocationRole": "arn:aws:iam::123456789:role/access-grants-instance-role",
"awsLocationPath": "s3://",
"authenticationType": "accessKey",
"awsAccessKeyId": "123456789",
"awsSecretAccessKey": "123456789"
}
}'curl -X 'POST' \
'https://www.organization.immuta.com/integrations' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f' \
-d '{
"type": "Azure Synapse Analytics",
"autoBootstrap": true,
"config": {
"host": "organization.azure.com",
"schema": "sample_schema",
"database": "immuta",
"metadataDelimiters": {
"hashDelimiter": "|",
"hashKeyDelimiter": "-",
"arrayDelimiter": ","
},
"username": "[email protected]",
"password": "abc1234",
"authenticationType": "userPassword"
}
}'curl -X 'POST' \
'https://www.organization.immuta.com/integrations' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f' \
-d '{
"type": "Databricks",
"autoBootstrap": true,
"config": {
"workspaceUrl": "www.example-workspace.cloud.databricks.com",
"httpPath": "sql/protocolv1/o/0/0000-00000-abc123",
"authenticationType": "token",
"token": "REDACTED",
"catalog": "immuta"
}
}'curl -X 'POST' \
'https://www.organization.immuta.com/integrations' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f' \
-d '{
"type": "Google BigQuery",
"autoBootstrap": false,
"config": {
"role": "immuta",
"datasetSuffix": "_secureView",
"dataset": "immuta",
"location": "us-east1",
"credential": "{\"type\":\"service_account\",\"project_id\":\"innate-conquest-123456\",\"private_key_id\":\"9163c12345690924f5dd218ff39\",\"private_key\":\"-----BEGIN PRIVATE KEY-----\nXXXXXXXro0s\n/yQlPQijowkccmrmWJyr93kdLnwJzBvLHCto/+W\ncvF2ygX9oM/dyUK//z//4nptMp+Ck//Yw3D4rIBwGu4DWiR1qRnf\nDoGyXfThPTQ==\n-----END PRIVATE KEY-----\n\",\"client_email\":\"service-account-id@innate-conquest-123456.iam.gserviceaccount.com\",\"client_id\":\"1166290***432952487857\",\"auth_uri\":\"https://accounts.google.com/o/oauth2/auth\",\"token_uri\":\"https://oauth2.googleapis.com/token\",\"auth_provider_x509_cert_url\":\"https://www.googleapis.com/oauth2/v1/certs\",\"client_x509_cert_url\":\"https://www.googleapis.com/robot/v1/metadata/x509/service-accound-id%40innate-conquest-123456.iam.gserviceaccount.com\",\"universe_domain\":\"googleapis.com\"}"
}
}'curl -X 'POST' \
'https://www.organization.immuta.com/integrations' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f' \
-d '{
"type": "Redshift",
"autoBootstrap": true,
"config": {
"host": "organization.aws.amazon.com",
"database": "immuta",
"initialDatabase": "REDSHIFT_SAMPLE_DATA",
"authenticationType": "userPassword",
"username": "[email protected]",
"password": "abc1234"
}
}'curl -X 'POST' \
'https://www.organization.immuta.com/integrations' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f' \
-d '{
"type": "Snowflake",
"autoBootstrap": true,
"config": {
"host": "organization.us-east-1.snowflakecomputing.com",
"warehouse": "SAMPLE_WAREHOUSE",
"database": "SNOWFLAKE_SAMPLE_DATA",
"authenticationType": "userPassword",
"username": "[email protected]",
"password": "abc1234",
"role": "ACCOUNTADMIN"
}
}'curl -X 'POST' \
'https://www.organization.immuta.com/integrations' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f' \
-d '{
"type": "Trino"
}'{
"id": "123456789",
"status": "creating",
"validationResults": {
"status": "passed",
"validationTests": [
{
"name": "Initial Validation: Basic Connection Test",
"status": "passed"
},
{
"name": "Initial Validation: Default Warehouse Access Test",
"status": "passed",
"result": []
},
{
"name": "Initial Validation: Validate access to Privileged Role",
"status": "passed",
"result": []
},
{
"name": "Validate Automatic: Database Does Not Exist",
"status": "passed"
},
{
"name": "Validate Automatic: Impersonation Role Does Not Exist",
"status": "skipped"
},
{
"name": "Validate Automatic Bootstrap User Grants",
"status": "passed"
}
]
}
}{
"statusCode": 409,
"error": "Conflict",
"message": "Snowflake integration already exists on host organization.us-east-1.snowflakecomputing.com (id = 123456789)"
}curl -X 'DELETE' \
'https://www.organization.immuta.com/integrations/123456789' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f' \
-d '{
"authenticationType": "userPassword",
"username": "[email protected]",
"password": "abc1234",
"role": "ACCOUNTADMIN"
}'{
"id": "123456789",
"status": "deleting",
"validationResults": {
"status": "passed",
"validationTests": [
{
"name": "Initial Validation: Basic Connection Test",
"status": "passed"
},
{
"name": "Initial Validation: Default Warehouse Access Test",
"status": "passed",
"result": []
},
{
"name": "Initial Validation: Validate access to Privileged Role",
"status": "passed",
"result": []
},
{
"name": "Validate Automatic: Database Does Not Exist",
"status": "passed"
},
{
"name": "Validate Automatic: Impersonation Role Does Not Exist",
"status": "skipped"
},
{
"name": "Validate Automatic Bootstrap User Grants",
"status": "passed"
}
]
}
}curl -X 'GET' \
'https://www.organization.immuta.com/integrations/123456789' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f'{
"id": "123456789",
"status": "enabled",
"validationResults": {
"status": "passed",
"validationTests": [
{
"name": "Initial Validation: Basic Connection Test",
"status": "passed"
}, {
"name": "Initial Validation: Default Warehouse Access Test",
"result": [],
"status": "passed"
}, {
"name": "Initial Validation: Table Grants Role Prefix is Unique",
"status": "passed"
}, {
"name": "Initial Validation: Validate access to Privileged Role",
"result": [],
"status": "passed"
}, {
"name": "Validate Automatic: Database Does Not Exist",
"status": "passed"
}, {
"name": "Validate Automatic: Impersonation Role Does Not Exist",
"status": "skipped"
}, {
"name": "Validate Automatic Bootstrap User Grants",
"status": "passed"
}]
},
"type": "Snowflake",
"autoBootstrap": true,
"config": {
"host": "organization.us-east-1.snowflakecomputing.com",
"warehouse": "SAMPLE_WAREHOUSE",
"database": "SNOWFLAKE_SAMPLE_DATA",
"port": 443,
"audit": {
"enabled": false
},
"workspaces": {
"enabled": false
},
"impersonation": {
"enabled": false
},
"lineage": {
"enabled": false
},
"authenticationType": "userPassword",
"username": "<REDACTED>",
"password": "<REDACTED>",
"role": "ACCOUNTADMIN"
}
}curl -X 'PUT' \
'https://www.organization.immuta.com/integrations/123456789' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f' \
-d '{
"type": "Native S3",
"autoBootstrap": false,
"config": {
"name": "S3 integration edited",
"awsAccountId": "123456789",
"awsRegion": "us-east-1",
"awsLocationRole": "arn:aws:iam::123456789:role/access-grants-instance-role",
"awsLocationPath": "s3://",
"authenticationType": "accessKey",
"awsAccessKeyId": "123456789",
"awsSecretAccessKey": "123456789"
}
}'curl -X 'PUT' \
'https://www.organization.immuta.com/integrations/123456789' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f' \
-d '{
"type": "Azure Synapse Analytics",
"autoBootstrap": true,
"config": {
"host": "organization.azure.com",
"schema": "sample_schema",
"database": "immuta",
"impersonation": {
"enabled": true,
"role": "IMMUTA_IMPERSONATION"
},
"metadataDelimiters": {
"hashDelimiter": "|",
"hashKeyDelimiter": "-",
"arrayDelimiter": ","
},
"username": "[email protected]",
"password": "abc1234",
"authenticationType": "userPassword"
}
}'curl -X 'PUT' \
'https://www.organization.immuta.com/integrations/123456789' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f' \
-d '{
"type": "Databricks",
"autoBootstrap": true,
"config": {
"workspaceUrl": "www.example-workspace.cloud.databricks.com",
"httpPath": "sql/protocolv1/o/0/0000-00000-abc123",
"authenticationType": "token",
"token": "REDACTED",
"catalog": "immuta"
}
}' curl -X 'PUT' \
'https://www.organization.immuta.com/integrations/{id}' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f' \
-d '{
"type": "Google BigQuery",
"autoBootstrap": false,
"config": {
"role": "immuta",
"datasetSuffix": "_secureView",
"dataset": "immuta",
"location": "us-east1",
"credential": "{\"type\":\"service_account\",\"project_id\":\"innate-conquest-123456\",\"private_key_id\":\"9163c12345690924f5dd218ff39\",\"private_key\":\"-----BEGIN PRIVATE KEY-----\nXXXXXXXro0s\n/yQlPQijowkccmrmWJyr93kdLnwJzBvLHCto/+W\ncvF2ygX9oM/dyUK//z//4nptMp+Ck//Yw3D4rIBwGu4DWiR1qRnf\nDoGyXfThPTQ==\n-----END PRIVATE KEY-----\n\",\"client_email\":\"service-account-id@innate-conquest-123456.iam.gserviceaccount.com\",\"client_id\":\"1166290***432952487857\",\"auth_uri\":\"https://accounts.google.com/o/oauth2/auth\",\"token_uri\":\"https://oauth2.googleapis.com/token\",\"auth_provider_x509_cert_url\":\"https://www.googleapis.com/oauth2/v1/certs\",\"client_x509_cert_url\":\"https://www.googleapis.com/robot/v1/metadata/x509/service-accound-id%40innate-conquest-123456.iam.gserviceaccount.com\",\"universe_domain\":\"googleapis.com\"}"
}
}'curl -X 'PUT' \
'https://www.organization.immuta.com/integrations/123456789' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f' \
-d '{
"type": "Redshift",
"autoBootstrap": true,
"config": {
"host": "organization.aws.amazon.com",
"database": "immuta",
"initialDatabase": "REDSHIFT_SAMPLE_DATA",
"impersonation": {
"enabled": true,
"role": "immuta_impersonation"
},
"authenticationType": "okta",
"okta": {
"username": "[email protected]",
"password": "abc1234",
"appId": "Okta",
"idpHost": "organization.okta.com",
"role": "admin"
}
}
}'curl -X 'PUT' \
'https://www.organization.immuta.com/integrations/123456789' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f' \
-d '{
"type": "Snowflake",
"autoBootstrap": true,
"config": {
"host": "organization.us-east-1.snowflakecomputing.com",
"warehouse": "SAMPLE_WAREHOUSE",
"database": "SNOWFLAKE_SAMPLE_DATA",
"audit": {
"enabled": true
},
"authenticationType": "userPassword",
"username": "[email protected]",
"password": "abc1234",
"role": "ACCOUNTADMIN"
}
}'{
"id": "123456789",
"status": "editing",
"validationResults": {
"status": "passed",
"validationTests": [
{
"name": "Initial Validation: Basic Connection Test",
"status": "passed"
},
{
"name": "Initial Validation: Default Warehouse Access Test",
"status": "passed",
"result": []
},
{
"name": "Initial Validation: Validate access to Privileged Role",
"status": "passed",
"result": []
},
{
"name": "Validate Automatic: Database Does Not Exist",
"status": "passed"
},
{
"name": "Validate Automatic: Impersonation Role Does Not Exist",
"status": "skipped"
},
{
"name": "Validate Automatic Bootstrap User Grants",
"status": "passed"
}
]
}
}{
"statusCode": 409,
"error": "Conflict",
"message": "Unable to edit integration with ID 123456789 in current state editing."
}curl -X 'POST' \
'https://www.organization.immuta.com/integrations/123456789/regenerate' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f'{ "newKey": "5bb6cae9******300c21acbb" }curl -X 'GET' \
'https://www.organization.immuta.com/integrations/123456789/status' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f'{"id":123456789,"status":"enabled"}curl -X 'POST' \
'https://www.organization.immuta.com/integrations/scripts/cleanup' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f' \
-d '{
"type": "Snowflake",
"autoBootstrap": false,
"config": {
"host": "organization.us-east-1.snowflakecomputing.com",
"warehouse": "SAMPLE_WAREHOUSE",
"database": "SNOWFLAKE_SAMPLE_DATA",
"audit": {
"enabled": true
},
"workspaces": {
"enabled": false
},
"impersonation": {
"enabled": false
},
"authenticationType": "userPassword",
"username": "IMMUTA_SYSTEM_ACCOUNT",
"password": "abc1234"
}
}'curl -X 'POST' \
'https://www.organization.immuta.com/integrations/scripts/create' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f' \
-d '{
"type": "Snowflake",
"autoBootstrap": false,
"config": {
"host": "organization.us-east-1.snowflakecomputing.com",
"warehouse": "SAMPLE_WAREHOUSE",
"database": "SNOWFLAKE_SAMPLE_DATA",
"audit": {
"enabled": false
},
"workspaces": {
"enabled": false
},
"impersonation": {
"enabled": false
},
"authenticationType": "userPassword",
"username": "IMMUTA_SYSTEM_ACCOUNT",
"password": "abc1234"
}
}'curl -X 'POST' \
'https://www.organization.immuta.com/integrations/1/scripts/delete' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f'curl -X 'POST' \
'https://www.organization.immuta.com/integrations/1/scripts/edit' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f' \
-d '{
"type": "Snowflake",
"autoBootstrap": false,
"config": {
"host": "organization.us-east-1.snowflakecomputing.com",
"warehouse": "SAMPLE_WAREHOUSE",
"database": "SNOWFLAKE_SAMPLE_DATA",
"audit": {
"enabled": true
},
"workspaces": {
"enabled": false
},
"impersonation": {
"enabled": false
},
"authenticationType": "userPassword",
"username": "IMMUTA_SYSTEM_ACCOUNT",
"password": "abc1234"
}
}'curl -X 'POST' \
'https://www.organization.immuta.com/integrations/scripts/initial-create' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f' \
-d '{
"type": "Azure Synapse Analytics",
"autoBootstrap": false,
"config": {
"host": "organization.azure.com",
"schema": "sample_schema",
"database": "immuta",
"metadataDelimiters": {
"hashDelimiter": "|",
"hashKeyDelimiter": "-",
"arrayDelimiter": ","
},
"username": "[email protected]",
"password": "abc1234",
"authenticationType": "userPassword"
}
}'curl -X 'POST' \
'https://www.organization.immuta.com/integrations/scripts/post-cleanup' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f' \
-d '{
"type": "Azure Synapse Analytics",
"autoBootstrap": false,
"config": {
"host": "organization.azure.com",
"schema": "sample_schema",
"database": "immuta",
"metadataDelimiters": {
"hashDelimiter": "|",
"hashKeyDelimiter": "-",
"arrayDelimiter": ","
},
"username": "[email protected]",
"password": "abc1234",
"authenticationType": "userPassword"
}
}'In the Snowflake integration, Immuta manages access to Snowflake tables by administering Snowflake row access policies and column masking policies on those tables, allowing users to query tables directly in Snowflake while dynamic policies are enforced.
Use the /integrations endpoint to
APPLICATION_ADMIN Immuta permission
The Snowflake user running the installation, edit, or delete script must have the following privileges:
CREATE DATABASE ON ACCOUNT WITH GRANT OPTION
You have two options for configuring your Snowflake integration:
: Grant Immuta one-time use of credentials to automatically configure your Snowflake environment and the integration. When performing an automated installation, Immuta requires temporary, one-time use of credentials with the Snowflake privileges listed in the .
These privileges will be used to create and configure a new Immuta-managed database within the specified Snowflake instance. The credentials are not stored or saved by Immuta, and Immuta doesn’t retain access to them after initial setup is complete.
You can create a new account for Immuta to use that has these privileges, or you can grant temporary use of a pre-existing account. By default, the pre-existing account with appropriate privileges is ACCOUNTADMIN. If you create a new account, it can be deleted after initial setup is complete.
: Run the Immuta script in your Snowflake environment yourself to configure your Snowflake environment and the integration. The specified role used to run the bootstrap needs to have the Snowflake privileges listed in the .
Select the section below that matches your authentication method.
Copy the request example and replace the values with your own as directed to configure the integration settings. The examples provided use JSON format, but the request also accepts YAML.
See the for parameter definitions, value types, and additional configuration options.
Replace the Immuta URL and with your own.
Change the config values to your own, where
host is the URL of your Snowflake account.
The response returns the status of the Snowflake integration configuration connection. See the for details about the response schema.
A successful response includes the validation tests statuses.
An unsuccessful request returns the status code and an error message. See the for a list of statuses, error messages, and troubleshooting guidance.
To manually configure the integration, complete the following steps:
Select the tab below that matches your authentication method.
Copy the request example and replace the values with your own as directed to generate the script. The examples provided use JSON format, but the request also accepts YAML.
See the for parameter definitions, value types, and additional configuration options.
Replace the Immuta URL and with your own.
Change the config values to your own, where
host is the URL of your Snowflake account.
Response
The response returns the script for you to run in your environment.
Select the tab below that matches your authentication method.
Copy the request example and replace the values with your own as directed to configure the integration settings. The examples provided use JSON format, but the request also accepts YAML. The parameters and values you provide in this payload must match those you provided when .
See the for parameter definitions, value types, and additional configuration options.
Replace the Immuta URL and with your own.
Pass the same payload you sent when , where
host is the URL of your Snowflake account.
The response returns the status of the Snowflake integration configuration connection. See the for details about the response schema.
A successful response includes the validation tests statuses.
An unsuccessful request returns the status code and an error message. See the for a list of statuses, error messages, and troubleshooting guidance.
Copy the request example.
Replace the Immuta URL and with your own.
Replace the {id} request parameter with the unique identifier of the integration you want to get. Alternatively, you can get a list of all integrations and their IDs with the .
The response returns the Snowflake integration configuration. See the for details about the response schema. An unsuccessful request returns the status code and an error message. See the for a list of statuses, error messages, and troubleshooting guidance.
Copy the request example.
Replace the Immuta URL and with your own.
The response returns the configuration for all integrations. See the for details about the response schema. An unsuccessful request returns the status code and an error message. See the for a list of statuses, error messages, and troubleshooting guidance.
You have two options for updating your integration. Follow the steps that match your initial configuration of autoBootstrap:
(autoBootstrap is true)
(autoBootstrap is false)
Select the section below that matches your authentication method.
Copy the request example and replace the values with your own as directed to update the integration settings. The examples provided use JSON format, but the request also accepts YAML.
See the for parameter definitions, value types, and additional configuration options.
This request updates the configuration to enable query audit in Snowflake.
Replace the Immuta URL and with your own.
Replace the {id} request parameter with the unique identifier of the integration you want to update.
Change the config values to your own, where
The response returns the status of the Snowflake integration configuration. See the for details about the response schema.
A successful response includes the validation tests statuses.
An unsuccessful request returns the status code and an error message. See the for a list of statuses, error messages, and troubleshooting guidance.
To manually update the integration, complete the following steps:
Select the tab below that matches your authentication method.
Copy the request example and replace the values with your own as directed to generate the script. The examples provided use JSON format, but the request also accepts YAML.
See the for parameter definitions, value types, and additional configuration options.
This request updates the configuration to enable query audit in Snowflake.
Replace the Immuta URL and with your own.
Replace the {id} request parameter with the unique identifier of the integration you want to update.
Change the config values to your own, where
Response
The response returns the script for you to run in your environment.
Select the section below that matches your authentication method.
Copy the request example and replace the values with your own as directed to update the integration settings. The examples provided use JSON format, but the request also accepts YAML. The payload you provide must match the one you provided when .
See the for parameter definitions, value types, and additional configuration options.
This request updates the configuration to enable query audit in Snowflake.
Replace the Immuta URL and with your own.
Replace the {id} request parameter with the unique identifier of the integration you want to update.
Pass the same payload you sent when , where
The response returns the status of the Snowflake integration configuration. See the for details about the response schema.
A successful response includes the validation tests statuses.
An unsuccessful request returns the status code and an error message. See the for a list of statuses, error messages, and troubleshooting guidance.
Copy the request example.
Replace the Immuta URL and with your own.
Replace the {id} request parameter with the unique identifier of the integration you want to delete.
If you set
The response returns the status of the Snowflake integration configuration that has been deleted. See the for details about the response schema. An unsuccessful request returns the status code and an error message. See the for a list of statuses, error messages, and troubleshooting guidance.
Policy API reference guide
The policy endpoint allows you to manage and review policies in Immuta. This page outlines the endpoint and its request and response parameters.
.
.
.
POST /policy/global
Create a Global Policy with a given entityType.
See the for payload examples and details.
When successful, the response returns the body of the request payload.
This example request creates a Global Policy (saved in the example-payload.json file) in the Immuta tenant.
Request payload example
POST or PUT /policy/handler/{dataSourceId}
Create (POST) or update (PUT) a policy for the specified data source.
This example request applies the policy specified in the payload to the data source with the ID 2.
Request payload example
Note: Global policies that contain the condition "with columns tagged" or "on all data sources" will automatically apply to relevant data sources when the policy is created. The endpoint detailed below can be used to apply Global Policies that contain the condition "when selected by data owners," as these policies are not automatically applied to data sources.
POST /policy/global/applyPolicy
Apply the Global Policy to the specified data source.
None. When successful, no message will display.
This example request applies the specified Global Policy to the specified data source (saved in the example-payload.json file) in the Immuta tenant.
Request payload example
The following payload will apply the Global Policy with the ID 1 to the data source with ID 1.
PUT /policy/global/{policyId}
Update the specified policy.
See the for payload examples and details.
When successful, the response returns the body of the request payload.
This example request updates the specified Global Policy (8) with changes to the metadata saved in the example-payload.json file.
Request payload example
In this payload, the user updated the description attribute to update the policy.
POST /policy/search
Searches for specified policies.
This example request searches for a Global Policy that contains the text mask in Immuta.
GET /policy/global/{policyId}
Find the policy with the specified ID.
The response returns a .
This example request returns the Global Policy with the ID 1.
GET /policy/global
Find the policy with the specified entity type.
This example request returns the name, type, and ID of all policies.
GET /policy/global/appliedTo/{policyId}
Find the number of data sources the specified policy applies to.
This example request returns the number of data sources the Global Policy with the ID 6 applies to.
GET /policy/dataSourcePolicies/{dataSourceId}
Get the policy information for the specified data source.
This example request returns the information of policies applied to the data source with the ID 2.
GET /policy/diff/{dataSourceId}
Get the differences between two policy handler versions.
This example request returns the information of policies applied to the data source with the ID 3.
GET /policy/handler/{dataSourceId}
Get the policy handler metadata for a specific data source.
This example request returns the policy handler metadata for policies applied to the data source with the ID 1.
DELETE /policy/global/{policyId}
Delete the specified Global Policy.
The response returns a of the policy that was deleted.
The following request deletes the Global Policy with ID 6.
CREATE ROLE ON ACCOUNT WITH GRANT OPTION
CREATE USER ON ACCOUNT WITH GRANT OPTION
MANAGE GRANTS ON ACCOUNT WITH GRANT OPTION
APPLY MASKING POLICY ON ACCOUNT WITH GRANT OPTION
APPLY ROW ACCESS POLICY ON ACCOUNT WITH GRANT OPTION
database is the name of a new empty database that the Immuta system user will manage and store metadata in.
username and password are credentials of a Snowflake account attached to a role with the privileges outlined above. These credentials are not stored; they are used by Immuta to configure the integration.
role is a Snowflake role that has been granted the privileges outlined above.
Immuta will use the provided credentials to create a user called IMMUTA_SYSTEM_ACCOUNT and grant the following privileges to that user:
CREATE ROLE ON ACCOUNT WITH GRANT OPTION
APPLY MASKING POLICY ON ACCOUNT WITH GRANT OPTION
APPLY ROW ACCESS POLICY ON ACCOUNT WITH GRANT OPTION
MANAGE GRANTS ON ACCOUNT WITH GRANT OPTION
Alternatively, you can use the manual setup method and edit the provided script to grant the Immuta system account OWNERSHIP on the objects that Immuta will secure, instead of granting MANAGE GRANTS ON ACCOUNT. The current role that has OWNERSHIP on the securables will need to be granted to the Immuta system role. However, if granting OWNERSHIP instead of MANAGE GRANTS ON ACCOUNT, Immuta will not be able to manage the role that is granted to the account.
Replace the Immuta URL and API key with your own.
Change the config values to your own, where
host is the URL of your Snowflake account.
warehouse is the default pool of Snowflake compute resources the Immuta system user will use to run queries and perform other Snowflake operations.
database is the name of a new empty database that the Immuta system user will manage and store metadata in.
username is the system account user that can assume the role to manage the database and administer Snowflake masking and row access policies.
privateKey is your private key. If you are using curl, replace new lines in the private key with a backslash before the new line character: "\n". If you are using another means of configuration, such as a Python script, the "\n" should not be added.
connectArgs is used to set PRIV_KEY_FILE_PWD if the private key is encrypted.
Immuta will use the provided credentials to create a user called IMMUTA_SYSTEM_ACCOUNT and grant the following privileges to that user:
CREATE ROLE ON ACCOUNT WITH GRANT OPTION
APPLY MASKING POLICY ON ACCOUNT WITH GRANT OPTION
APPLY ROW ACCESS POLICY ON ACCOUNT WITH GRANT OPTION
Alternatively, you can use the and edit the provided script to grant the Immuta system account OWNERSHIP on the objects that Immuta will secure, instead of granting MANAGE GRANTS ON ACCOUNT. The current role that has OWNERSHIP on the securables will need to be granted to the Immuta system role. However, if granting OWNERSHIP instead of MANAGE GRANTS ON ACCOUNT, Immuta will not be able to manage the role that is granted to the account.
database is the name of a new empty database that the Immuta system user will manage and store metadata in.
audit specifies whether query audit is enabled for Snowflake. See the object description for child parameters.
workspaces represents an Immuta project workspace configured for Snowflake. See the object description for child parameters.
impersonation specifies whether user impersonation is enabled. See the object description for child parameters.
username and password are the credentials for the system account that can assume the role to manage the database and administer Snowflake masking and row access policies.
Run the script returned in the response in your Snowflake environment. Running this script grants the following privileges to the Immuta system account:
CREATE ROLE ON ACCOUNT WITH GRANT OPTION
APPLY MASKING POLICY ON ACCOUNT WITH GRANT OPTION
APPLY ROW ACCESS POLICY ON ACCOUNT WITH GRANT OPTION
MANAGE GRANTS ON ACCOUNT WITH GRANT OPTION
Alternatively, you can grant the Immuta system account OWNERSHIP on the objects that Immuta will secure, instead of granting MANAGE GRANTS ON ACCOUNT. The current role that has OWNERSHIP on the securables will need to be granted to the Immuta system role. However, if granting OWNERSHIP instead of MANAGE GRANTS ON ACCOUNT, Immuta will not be able to manage the role that is granted to the account, so it is recommended to run the script as-is, without changes.
Replace the Immuta URL and API key with your own.
Change the config values to your own, where
host is the URL of your Snowflake account.
warehouse is the default pool of Snowflake compute resources the Immuta system user will use to run queries and perform other Snowflake operations.
database is the name of a new empty database that the Immuta system user will manage and store metadata in.
audit specifies whether query audit is enabled for Snowflake. See the for child parameters.
workspaces represents an Immuta project workspace configured for Snowflake. See the for child parameters.
impersonation specifies whether user impersonation is enabled. See the for child parameters.
username is the system account user that can assume the role to manage the database and administer Snowflake masking and row access policies.
privateKey is your private key. If you are using curl, replace new lines in the private key with a backslash before the new line character: "\n". If you are using another means of configuration, such as a Python script, the "\n" should not be added.
connectArgs is used to set PRIV_KEY_FILE_PWD if the private key is encrypted.
Run the script returned in the response in your Snowflake environment. Running this script grants the following privileges to the Immuta system account:
CREATE ROLE ON ACCOUNT WITH GRANT OPTION
APPLY MASKING POLICY ON ACCOUNT WITH GRANT OPTION
In this example, Snowflake External OAuth is used to authenticate the system account user, ensuring secure communication between Immuta and Snowflake. To use this authentication method, autoBootstrap must be false.
Replace the Immuta URL and API key with your own.
Change the config values to your own, where
host is the URL of your Snowflake account.
warehouse is the default pool of Snowflake compute resources the Immuta system user will use to run queries and perform other Snowflake operations.
database is the name of a new empty database that the Immuta system user will manage and store metadata in.
audit specifies whether query audit is enabled for Snowflake. See the for child parameters.
workspaces.enabled specifies whether Immuta project workspaces are enabled for Snowflake.
workspaces.warehouses is a list of warehouses that workspace users have usage privileges on.
impersonation specifies whether user impersonation is enabled. See the for child parameters.
username is the system account user that can act on Snowflake objects and configure the integration.
oAuthClientConfig specifies your provider, client ID, client secret, authority URL, and your encoded public and private keys. See the for details about child parameters.
Run the script returned in the response in your Snowflake environment. Running this script grants the following privileges to the Immuta system account:
CREATE ROLE ON ACCOUNT WITH GRANT OPTION
APPLY MASKING POLICY ON ACCOUNT WITH GRANT OPTION
database is the name of a new empty database that the Immuta system user will manage and store metadata in.
audit specifies whether query audit is enabled for Snowflake. See the object description for child parameters.
workspaces represents an Immuta project workspace configured for Snowflake. See the object description for child parameters.
impersonation specifies whether user impersonation is enabled. See the object description for child parameters.
username and password are the credentials for the system account that can assume the role to manage the database and administer Snowflake masking and row access policies.
Replace the Immuta URL and API key with your own.
Pass the same payload you sent when generating the script, where
host is the URL of your Snowflake account.
warehouse is the default pool of Snowflake compute resources the Immuta system user will use to run queries and perform other Snowflake operations.
database is the name of a new empty database that the Immuta system user will manage and store metadata in.
audit specifies whether query audit is enabled for Snowflake. See the for child parameters.
workspaces represents an Immuta project workspace configured for Snowflake. See the for child parameters.
impersonation specifies whether user impersonation is enabled. See the for child parameters.
username is the system account user that can assume the role to manage the database and administer Snowflake masking and row access policies.
privateKey is your private key. If you are using curl, replace new lines in the private key with a backslash before the new line character: "\n". If you are using another means of configuration, such as a Python script, the "\n" should not be added.
connectArgs is used to set PRIV_KEY_FILE_PWD if the private key is encrypted.
In this example, Snowflake External OAuth is used to authenticate the system account user, ensuring secure communication between Immuta and Snowflake. To use this authentication method, autoBootstrap must be false.
Replace the Immuta URL and API key with your own.
Pass the same payload you sent when generating the script, where
host is the URL of your Snowflake account.
warehouse is the default pool of Snowflake compute resources the Immuta system user will use to run queries and perform other Snowflake operations.
database is the name of a new empty database that the Immuta system user will manage and store metadata in.
impersonation specifies whether user impersonation is enabled. See the for child parameters.
workspaces specifies whether Immuta project workspaces are enabled for Snowflake. See the for details about child parameters.
oAuthClientConfig specifies your provider, client ID, client secret, authority URL, and your encoded public and private keys. See the for details about child parameters.
host is the URL of your Snowflake account.
warehouse is the default pool of Snowflake compute resources the Immuta system user will use to run queries and perform other Snowflake operations.
database is the name of a new empty database that the Immuta system user will manage and store metadata in.
audit specifies whether query audit is enabled for Snowflake. See the object description for child parameters.
username and password are credentials of a Snowflake account attached to a role with the privileges outlined above. These credentials are not stored; they are used by Immuta to enable or disable configuration settings.
role is a Snowflake role that has been granted the privileges outlined above.
This request updates the configuration to enable query audit in Snowflake.
Replace the Immuta URL and API key with your own.
Replace the {id} request parameter with the unique identifier of the integration you want to update.
Change the config values to your own, where
host is the URL of your Snowflake account.
warehouse is the default pool of Snowflake compute resources the Immuta system user will use to run queries and perform other Snowflake operations.
database is the name of a new empty database that the Immuta system user will manage and store metadata in.
audit specifies whether query audit is enabled for Snowflake. See the for child parameters.
username is the system account user that can assume the role to manage the database and administer Snowflake masking and row access policies.
privateKey is your private key. If you are using curl, replace new lines in the private key with a backslash before the new line character: "\n". If you are using another means of configuration, such as a Python script, the "\n" should not be added.
connectArgs is used to set PRIV_KEY_FILE_PWD if the private key is encrypted.
host is the URL of your Snowflake account.
warehouse is the default pool of Snowflake compute resources the Immuta system user will use to run queries and perform other Snowflake operations.
database is the name of a new empty database that the Immuta system user will manage and store metadata in.
audit specifies whether query audit is enabled for Snowflake. See the object description for child parameters.
workspaces represents an Immuta project workspace configured for Snowflake. See the object description for child parameters.
impersonation specifies whether user impersonation is enabled. See the object description for child parameters.
username and password are the credentials for the system account that can assume the role to manage the database and administer Snowflake masking and row access policies.
Run the script returned in the response in your Snowflake environment.
This request updates the configuration to enable query audit in Snowflake.
Replace the Immuta URL and API key with your own.
Replace the {id} request parameter with the unique identifier of the integration you want to update.
Change the config values to your own, where
host is the URL of your Snowflake account.
warehouse is the default pool of Snowflake compute resources the Immuta system user will use to run queries and perform other Snowflake operations.
database is the name of a new empty database that the Immuta system user will manage and store metadata in.
audit specifies whether query audit is enabled for Snowflake. See the for child parameters.
workspaces represents an Immuta project workspace configured for Snowflake. See the for child parameters.
impersonation specifies whether user impersonation is enabled. See the for child parameters.
username is the system account user that can assume the role to manage the database and administer Snowflake masking and row access policies.
privateKey is your private key. If you are using curl, replace new lines in the private key with a backslash before the new line character: "\n". If you are using another means of configuration, such as a Python script, the "\n" should not be added.
connectArgs is used to set PRIV_KEY_FILE_PWD if the private key is encrypted.
Run the script returned in the response in your Snowflake environment.
This request updates the configuration to disable Snowflake workspaces for the integration.
Replace the Immuta URL and API key with your own.
Replace the {id} request parameter with the unique identifier of the integration you want to update.
Change the config values to your own, where
host is the URL of your Snowflake account.
warehouse is the default pool of Snowflake compute resources the Immuta system user will use to run queries and perform other Snowflake operations.
database is the name of a new empty database that the Immuta system user will manage and store metadata in.
audit specifies whether query audit is enabled for Snowflake. See the for child parameters.
workspaces represents an Immuta project workspace configured for Snowflake. See the for child parameters.
impersonation specifies whether user impersonation is enabled. See the for child parameters.
username is the system account user that can act on Snowflake objects and configure the integration.
oAuthClientConfig specifies your provider, client ID, client secret, authority URL, and your encoded public and private keys. See the for details about child parameters.
Run the script returned in the response in your Snowflake environment.
host is the URL of your Snowflake account.
warehouse is the default pool of Snowflake compute resources the Immuta system user will use to run queries and perform other Snowflake operations.
database is the name of a new empty database that the Immuta system user will manage and store metadata in.
audit specifies whether query audit is enabled for Snowflake. See the object description for child parameters.
workspaces represents an Immuta project workspace configured for Snowflake. See the object description for child parameters.
impersonation specifies whether user impersonation is enabled. See the object description for child parameters.
username and password are the credentials for the system account that can assume the role to manage the database and administer Snowflake masking and row access policies.
This request updates the configuration to enable query audit in Snowflake.
Replace the Immuta URL and API key with your own.
Replace the {id} request parameter with the unique identifier of the integration you want to update.
Pass the same payload you sent when generating the script, where
host is the URL of your Snowflake account.
warehouse is the default pool of Snowflake compute resources the Immuta system user will use to run queries and perform other Snowflake operations.
database is the name of a new empty database that the Immuta system user will manage and store metadata in.
audit specifies whether query audit is enabled for Snowflake. See the for child parameters.
workspaces represents an Immuta project workspace configured for Snowflake. See the for child parameters.
impersonation specifies whether user impersonation is enabled. See the for child parameters.
username is the system account user that can assume the role to manage the database and administer Snowflake masking and row access policies.
privateKey is your private key. If you are using curl, replace new lines in the private key with a backslash before the new line character: "\n". If you are using another means of configuration, such as a Python script, the "\n" should not be added.
connectArgs is used to set PRIV_KEY_FILE_PWD if the private key is encrypted.
This request updates the configuration to disable Snowflake workspaces and enable Snowflake query audit for the integration.
Replace the Immuta URL and API key with your own.
Replace the {id} request parameter with the unique identifier of the integration you want to update.
Pass the same payload you sent when generating the script, where
host is the URL of your Snowflake account.
warehouse is the default pool of Snowflake compute resources the Immuta system user will use to run queries and perform other Snowflake operations.
database is the name of a new empty database that the Immuta system user will manage and store metadata in.
impersonation specifies whether user impersonation is enabled. See the for child parameters.
audit specifies whether query audit is enabled for Snowflake. See the for child parameters.
workspaces specifies whether Immuta project workspaces are enabled for Snowflake. See the for details about child parameters.
oAuthClientConfig specifies your provider, client ID, client secret, authority URL, and your encoded public and private keys. See the for details about child parameters.
autoBootstrap to true when enabling the integration, specify the authenticationType and the credentials you used to configure the integration in the payload, as illustrated in the example. See the Integrations API endpoints guide for details.
autoBootstrap to false when enabling the integration,
Make the request above without including a payload to remove the integration from Immuta.
Run the generated script in Snowflake.
rules
string The conditions of the policy.
createdAt
timestamp The date the policy was created.
updatedAt
timestamp The date the policy was modified.
GET
/policy/dataSourcePolicies/{dataSourceId}
.
GET
/policy/diff/{dataSourceId}
.
GET
/policy/handler/{dataSourceId}
.
offset
integer Used in combination with size to fetch pages.
No
sortField
string Indicates which field to sort the policies by: name, createdBy, createdAt, state, isNotApplied, or scope.
No
sortOrder
string Indicates whether to sort policies in ascending or descending order: asc or desc.
No
searchText
string Searches text; this will filter policies by name.
No
countOnly
boolean When true, will only return the number of policies found in the search.
No
mode
string Attribute options include similarPolicies, impactedUsers, or impactedDataSources.
No
excludedPolicies
array[integer] Global Policy IDs to exclude.
No
searchText
string Searches text; this will filter policies by name.
No
type
string The type of policy to search for: data or subscription.
No
scope
string Indicates whether the policy is global or local.
No
nameOnly
boolean When true, only returns the policy name, type, and ID.
No
templates
boolean When true, returns templates only. When false, returns non-templates only. When omitted, returns both.
No
POST
/policy/global
POST or PUT
/policy/handler/{dataSourceId}
POST
/policy/global/applyPolicy
PUT
/policy/global/{policyId}
body
array Contains Global Policy metadata.
Yes
dataSourceId
integer The ID of the data source.
Yes
jsonPolicies
array[object] An array of JSON rules objects.
Yes
id
integer The policy handler ID.
url
string The URL of the Immuta tenant.
dataSourceId
integer The ID of the data source the policy is applied to.
createdBy
integer The ID of the user who created the policy.
ca
string The certificate authority.
jsonPolicies
array[object] Policy metadata, including the policy type (visibility, masking, time, minimization, exemption, external, prerequisite, customWhere, showRowsNever, or rowOrObjectRestriction), rules, and description.
payload
array Contains Global Policy and data source metadata.
Yes
policyID
integer The ID of the Global Policy.
Yes
dataSourceID
integer The ID of the data source to apply the policy to.
Yes
merged
boolean Default false.
Yes
policyID
integer The ID of the Global Policy you want to update.
Yes
payload
array Contains Global Policy and metadata.
Yes
POST
/policy/search
GET
/policy/global/{policyId}
GET
/policy/global
GET
/policy/global/appliedTo/{policyId}
body
array[object] Facets of the policy to search by, including the rule type, where the policy applies, exceptions, and policy circumstances.
No
type
string The type of policy to search for: data or subscription.
No
scope
string Indicates whether the policy is global or local.
No
size
integer Pages results by default; size is the number of results to return per page.
Count
integer The number of policies found that match the search criteria.
Hits
array Policy metadata, including the name, scope, type, and data sources it applies to.
policyId
integer The ID of the Global Policy.
Yes
offset
integer Used in combination with size to fetch pages.
No
size
integer Pages results by default; size is the number of results to return per page.
No
sortField
string Indicates which field to sort the policies by: name or createdAt. Default createdAt.
No
sortOrder
string Indicates whether to sort policies in ascending or descending order: asc or desc. Default desc.
name
string The name of the policy.
id
integer The policy ID.
type
string The type of policy: data or subscription.
hits
array Policy metadata, including the name, scope, type, and dataSources it applies to.
policyId
integer The ID of the Global Policy.
Yes
count
integer The number of data sources the policy applies to.
dataSourceId
integer The ID of the data source.
Yes
retrieveAll
boolean When false, filters out any custom domain-specific language rules.
No
excludeGlobal
boolean When true, filters out any policy actions driven by a Global Policy.
No
body
array Contains policy metadata, including the policy type, rules, exceptions, and date of creation.
dataSourceId
integer The ID of the data source.
Yes
previousHandlerId
integer The ID of the previous policy.
No
currentHandlerId
integer The ID of the current policy.
No
current
array Contains policy metadata of the current policy, including the policy type, rules, exceptions, and date of creation.
previous
array Contains policy metadata of the previous policy, including the policy type, rules, exceptions, and date of creation.
hasChanges
boolean When true, indicates the policy was changed.
dataSourceId
integer The ID of the data source.
Yes
hits
array Policy metadata, including the name, scope, rules, and policy type.
policyId
integer The ID of the policy.
Yes
No
No
curl -X 'POST' \
'https://www.organization.immuta.com/integrations' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f' \
-d '{
"type": "Snowflake",
"autoBootstrap": true,
"config": {
"host": "organization.us-east-1.snowflakecomputing.com",
"warehouse": "SAMPLE_WAREHOUSE",
"database": "SNOWFLAKE_SAMPLE_DATA",
"authenticationType": "keyPair",
"username": "SYSTEM_ACCOUNT",
"privateKey": "-----BEGIN PRIVATE KEY-----\n<first line of private key content>\n<another line of private key content>\n<another line of private key content>\n-----END PRIVATE KEY-----"
}
}'curl -X 'POST' \
'https://www.organization.immuta.com/integrations/scripts/create' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f' \
-d '{
"type": "Snowflake",
"autoBootstrap": false,
"config": {
"host": "organization.us-east-1.snowflakecomputing.com",
"warehouse": "SAMPLE_WAREHOUSE",
"database": "SNOWFLAKE_SAMPLE_DATA",
"audit": {
"enabled": false,
},
"workspaces": {
"enabled": false
},
"impersonation": {
"enabled": false
},
"authenticationType": "keyPair",
"username": "SYSTEM_ACCOUNT",
"privateKey": "-----BEGIN PRIVATE KEY-----\n<first line of private key content>\n<another line of private key content>\n<another line of private key content>\n-----END PRIVATE KEY-----"
}
}'curl -X 'POST' \
'https://www.organization.immuta.com/integrations/scripts/create' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f' \
-d '{
"type": "Snowflake",
"autoBootstrap": false,
"config": {
"host": "organization.us-east-1.snowflakecomputing.com",
"warehouse": "SAMPLE_WAREHOUSE",
"database": "SNOWFLAKE_SAMPLE_DATA",
"impersonation": {
"enabled": true,
"role": "IMMUTA_IMPERSONATION"
},
"audit": {
"enabled": false
},
"workspaces": {
"enabled": true,
"warehouses": ["SAMPLE_WAREHOUSE"]
},
"authenticationType": "oAuthClientCredentials",
"oAuthClientConfig": {
"provider": "Okta",
"clientId": "123456abc",
"useCertificate": false,
"clientSecret": "secret",
"authorityUrl": "example.authority.com"
}
}
}'curl -X 'POST' \
'https://www.organization.immuta.com/integrations' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f' \
-d '{
"type": "Snowflake",
"autoBootstrap": false,
"config": {
"host": "organization.us-east-1.snowflakecomputing.com",
"warehouse": "SAMPLE_WAREHOUSE",
"database": "SNOWFLAKE_SAMPLE_DATA",
"audit": {
"enabled": false,
},
"workspaces": {
"enabled": false
},
"impersonation": {
"enabled": false
},
"authenticationType": "keyPair",
"username": "SYSTEM_ACCOUNT",
"privateKey": "-----BEGIN PRIVATE KEY-----\n<first line of private key content>\n<another line of private key content>\n<another line of private key content>\n-----END PRIVATE KEY-----"
}
}'curl -X 'POST' \
'https://www.organization.immuta.com/integrations' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f' \
-d '{
"type": "Snowflake",
"autoBootstrap": false,
"config": {
"host": "organization.us-east-1.snowflakecomputing.com",
"warehouse": "SAMPLE_WAREHOUSE",
"database": "SNOWFLAKE_SAMPLE_DATA",
"impersonation": {
"enabled": true,
"role": "IMMUTA_IMPERSONATION"
},
"workspaces": {
"enabled": true,
"warehouses": ["SAMPLE_WAREHOUSE"]
},
"authenticationType": "oAuthClientCredentials",
"oAuthClientConfig": {
"provider": "Okta",
"clientId": "123456abc",
"useCertificate": false,
"clientSecret": "secret",
"authorityUrl": "example.authority.com"
}
}
}'curl -X 'PUT' \
'https://www.organization.immuta.com/integrations/{id}' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f' \
-d '{
"type": "Snowflake",
"autoBootstrap": true,
"config": {
"host": "organization.us-east-1.snowflakecomputing.com",
"warehouse": "SAMPLE_WAREHOUSE",
"database": "SNOWFLAKE_SAMPLE_DATA",
"audit": {
"enabled": true
},
"authenticationType": "keyPair",
"username": "SYSTEM_ACCOUNT",
"privateKey": "-----BEGIN PRIVATE KEY-----\n<first line of private key content>\n<another line of private key content>\n<another line of private key content>\n-----END PRIVATE KEY-----"
}
}'curl -X 'POST' \
'https://www.organization.immuta.com/integrations/{id}/scripts/edit' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f' \
-d '{
"type": "Snowflake",
"autoBootstrap": false,
"config": {
"host": "organization.us-east-1.snowflakecomputing.com",
"warehouse": "SAMPLE_WAREHOUSE",
"database": "SNOWFLAKE_SAMPLE_DATA",
"audit": {
"enabled": true
},
"workspaces": {
"enabled": false
},
"impersonation": {
"enabled": false
},
"authenticationType": "keyPair",
"username": "SYSTEM_ACCOUNT",
"privateKey": "-----BEGIN PRIVATE KEY-----\n<first line of private key content>\n<another line of private key content>\n<another line of private key content>\n-----END PRIVATE KEY-----"
}
}'curl -X 'POST' \
'https://www.organization.immuta.com/integrations/{id}/scripts/edit' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f' \
-d '{
"type": "Snowflake",
"autoBootstrap": false,
"config": {
"host": "organization.us-east-1.snowflakecomputing.com",
"warehouse": "SAMPLE_WAREHOUSE",
"database": "SNOWFLAKE_SAMPLE_DATA",
"impersonation": {
"enabled": true,
"role": "IMMUTA_IMPERSONATION"
},
"audit": {
"enabled": true
},
"workspaces": {
"enabled": false
},
"authenticationType": "oAuthClientCredentials",
"oAuthClientConfig": {
"provider": "Okta",
"clientId": "123456abc",
"useCertificate": false,
"clientSecret": "secret",
"authorityUrl": "example.authority.com"
}
}
}'curl -X 'PUT' \
'https://www.organization.immuta.com/integrations/{id}' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f' \
-d '{
"type": "Snowflake",
"autoBootstrap": false,
"config": {
"host": "organization.us-east-1.snowflakecomputing.com",
"warehouse": "SAMPLE_WAREHOUSE",
"database": "SNOWFLAKE_SAMPLE_DATA",
"audit": {
"enabled": true
},
"workspaces": {
"enabled": false
},
"impersonation": {
"enabled": false
},
"authenticationType": "keyPair",
"username": "SYSTEM_ACCOUNT",
"privateKey": "-----BEGIN PRIVATE KEY-----\n<first line of private key content>\n<another line of private key content>\n<another line of private key content>\n-----END PRIVATE KEY-----"
}
}'curl -X 'PUT' \
'https://www.organization.immuta.com/integrations/{id}' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f' \
-d '{
"type": "Snowflake",
"autoBootstrap": false,
"config": {
"host": "organization.us-east-1.snowflakecomputing.com",
"warehouse": "SAMPLE_WAREHOUSE",
"database": "SNOWFLAKE_SAMPLE_DATA",
"impersonation": {
"enabled": true,
"role": "IMMUTA_IMPERSONATION"
},
"audit": {
"enabled": true
},
"workspaces": {
"enabled": false
},
"authenticationType": "oAuthClientCredentials",
"oAuthClientConfig": {
"provider": "Okta",
"clientId": "123456abc",
"useCertificate": false,
"clientSecret": "secret",
"authorityUrl": "example.authority.com"
}
}
}'curl -X 'POST' \
'https://www.organization.immuta.com/integrations' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f' \
-d '{
"type": "Snowflake",
"autoBootstrap": true,
"config": {
"host": "organization.us-east-1.snowflakecomputing.com",
"warehouse": "SAMPLE_WAREHOUSE",
"database": "SNOWFLAKE_SAMPLE_DATA",
"authenticationType": "userPassword",
"username": "[email protected]",
"password": "abc1234",
"role": "ACCOUNTADMIN"
}
}'{
"id": "123456789",
"status": "creating",
"validationResults": {
"status": "passed",
"validationTests": [
{
"name": "Initial Validation: Basic Connection Test",
"status": "passed"
},
{
"name": "Initial Validation: Default Warehouse Access Test",
"status": "passed",
"result": []
},
{
"name": "Initial Validation: Validate access to Privileged Role",
"status": "passed",
"result": []
},
{
"name": "Validate Automatic: Database Does Not Exist",
"status": "passed"
},
{
"name": "Validate Automatic: Impersonation Role Does Not Exist",
"status": "skipped"
},
{
"name": "Validate Automatic Bootstrap User Grants",
"status": "passed"
}
]
}
}{
"statusCode": 409,
"error": "Conflict",
"message": "Snowflake integration already exists on host organization.us-east-1.snowflakecomputing.com (id = 123456789)"
}curl -X 'POST' \
'https://www.organization.immuta.com/integrations/scripts/create' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f' \
-d '{
"type": "Snowflake",
"autoBootstrap": false,
"config": {
"host": "organization.us-east-1.snowflakecomputing.com",
"warehouse": "SAMPLE_WAREHOUSE",
"database": "SNOWFLAKE_SAMPLE_DATA",
"audit": {
"enabled": false,
},
"workspaces": {
"enabled": false
},
"impersonation": {
"enabled": false
},
"authenticationType": "userPassword",
"username": "[email protected]",
"password": "abc1234"
}
}'curl -X 'POST' \
'https://www.organization.immuta.com/integrations' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f' \
-d '{
"type": "Snowflake",
"autoBootstrap": false,
"config": {
"host": "organization.us-east-1.snowflakecomputing.com",
"warehouse": "SAMPLE_WAREHOUSE",
"database": "SNOWFLAKE_SAMPLE_DATA",
"audit": {
"enabled": false,
},
"workspaces": {
"enabled": false
},
"impersonation": {
"enabled": false
},
"authenticationType": "userPassword",
"username": "[email protected]",
"password": "abc1234"
}
}'{
"id": "123456789",
"status": "creating",
"validationResults": {
"status": "passed",
"validationTests": [
{
"name": "Initial Validation: Basic Connection Test",
"status": "passed"
},
{
"name": "Initial Validation: Default Warehouse Access Test",
"status": "passed",
"result": []
},
{
"name": "Initial Validation: Validate access to Privileged Role",
"status": "passed",
"result": []
},
{
"name": "Validate Automatic: Database Does Not Exist",
"status": "passed"
},
{
"name": "Validate Automatic: Impersonation Role Does Not Exist",
"status": "skipped"
},
{
"name": "Validate Automatic Bootstrap User Grants",
"status": "passed"
}
]
}
}{
"statusCode": 409,
"error": "Conflict",
"message": "Snowflake integration already exists on host organization.us-east-1.snowflakecomputing.com (id = 123456789)"
}curl -X 'GET' \
'https://www.organization.immuta.com/integrations/{id}' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f'{
"id": "123456789",
"status": "enabled",
"validationResults": {
"status": "passed",
"validationTests": [
{
"name": "Initial Validation: Basic Connection Test",
"status": "passed"
},
{
"name": "Initial Validation: Default Warehouse Access Test",
"status": "passed",
"result": []
},
{
"name": "Initial Validation: Validate access to Privileged Role",
"status": "passed",
"result": []
},
{
"name": "Validate Automatic: Database Does Not Exist",
"status": "passed"
},
{
"name": "Validate Automatic: Impersonation Role Does Not Exist",
"status": "skipped"
},
{
"name": "Validate Automatic Bootstrap User Grants",
"status": "passed"
}
]
},
"type": "Snowflake",
"autoBootstrap": true,
"config": {
"host": "organization.us-east-1.snowflakecomputing.com",
"warehouse": "SAMPLE_WAREHOUSE",
"database": "SNOWFLAKE_SAMPLE_DATA",
"port": 443,
"audit": {
"enabled": false,
},
"workspaces": {
"enabled": false
},
"impersonation": {
"enabled": false
},
"lineage": {
"enabled": false
},
"authenticationType": "userPassword",
"username": "<REDACTED>",
"password": "<REDACTED>",
"role": "ACCOUNTADMIN"
}
}{
"id": "123456789",
"status": "enabled",
"validationResults": {
"status": "passed",
"validationTests": [
{
"name": "Initial Validation: Basic Connection Test",
"status": "passed"
},
{
"name": "Initial Validation: Default Warehouse Access Test",
"status": "passed",
"result": []
},
{
"name": "Initial Validation: Validate access to Privileged Role",
"status": "passed",
"result": []
},
{
"name": "Validate Automatic: Database Does Not Exist",
"status": "passed"
},
{
"name": "Validate Automatic: Impersonation Role Does Not Exist",
"status": "skipped"
},
{
"name": "Validate Automatic Bootstrap User Grants",
"status": "passed"
}
]
},
"type": "Snowflake",
"autoBootstrap": false,
"config": {
"host": "organization.us-east-1.snowflakecomputing.com",
"warehouse": "SAMPLE_WAREHOUSE",
"database": "SNOWFLAKE_SAMPLE_DATA",
"port": 443,
"impersonation": {
"enabled": true,
"role": "IMMUTA_IMPERSONATION"
},
"audit": {
"enabled": false
},
"workspaces": {
"enabled": true,
"warehouses": ["SAMPLE_WAREHOUSE"]
},
"lineage": {
"enabled": false
},
"authenticationType": "oAuthClientCredentials",
"oAuthClientConfig": {
"provider": "Okta",
"clientId": "123456abc",
"useCertificate": false,
"clientSecret": "secret",
"authorityUrl": "example.authority.com"
}
}
}curl -X 'GET' \
'https://www.organization.immuta.com/integrations' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f'[
{
"id": "1",
"status": "enabled",
"validationResults": {
"status": "passed",
"validationTests": [
{
"name": "Initial Validation: Basic Connection Test",
"status": "passed"
},
{
"name": "Initial Validation: Default Warehouse Access Test",
"status": "passed",
"result": []
},
{
"name": "Initial Validation: Validate access to Privileged Role",
"status": "passed",
"result": []
},
{
"name": "Validate Automatic: Database Does Not Exist",
"status": "passed"
},
{
"name": "Validate Automatic: Impersonation Role Does Not Exist",
"status": "skipped"
},
{
"name": "Validate Automatic Bootstrap User Grants",
"status": "passed"
}
]
},
"type": "Snowflake",
"autoBootstrap": true,
"config": {
"host": "organization.us-east-1.snowflakecomputing.com",
"warehouse": "SAMPLE_WAREHOUSE",
"database": "SNOWFLAKE_SAMPLE_DATA",
"port": 443,
"audit": {
"enabled": false
},
"workspaces": {
"enabled": false
},
"impersonation": {
"enabled": false
},
"lineage": {
"enabled": false
},
"authenticationType": "userPassword",
"username": "<REDACTED>",
"password": "<REDACTED>",
"role": "ACCOUNTADMIN"
}
},
{
"id": "2",
"status": "enabled",
"type": "Databricks",
"validationResults": {
"status": "passed",
"validationTests": [
{
"name": "Metastore validation",
"status": "passed"
},
{
"name": "Basic Connection Test",
"result": [
{
"1": 1
}
],
"status": "passed"
}
]
},
"autoBootstrap": true,
"config": {
"workspaceUrl": "www.example-workspace.cloud.databricks.com",
"httpPath": "sql/protocolv1/o/0/0000-00000-abc123",
"token": "REDACTED",
"audit": {
"enabled": false
},
"catalog": "immuta"
}
}
]curl -X 'PUT' \
'https://www.organization.immuta.com/integrations/{id}' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f' \
-d '{
"type": "Snowflake",
"autoBootstrap": true,
"config": {
"host": "organization.us-east-1.snowflakecomputing.com",
"warehouse": "SAMPLE_WAREHOUSE",
"database": "SNOWFLAKE_SAMPLE_DATA",
"audit": {
"enabled": true,
},
"authenticationType": "userPassword",
"username": "[email protected]",
"password": "abc1234",
"role": "ACCOUNTADMIN"
}
}'{
"id": "123456789",
"status": "editing",
"validationResults": {
"status": "passed",
"validationTests": [
{
"name": "Initial Validation: Basic Connection Test",
"status": "passed"
},
{
"name": "Initial Validation: Default Warehouse Access Test",
"status": "passed",
"result": []
},
{
"name": "Initial Validation: Validate access to Privileged Role",
"status": "passed",
"result": []
},
{
"name": "Validate Automatic: Database Does Not Exist",
"status": "passed"
},
{
"name": "Validate Automatic: Impersonation Role Does Not Exist",
"status": "skipped"
},
{
"name": "Validate Automatic Bootstrap User Grants",
"status": "passed"
}
]
}
}{
"statusCode": 409,
"error": "Conflict",
"message": "Unable to edit integration with ID 123456789 in current state editing."
}curl -X 'POST' \
'https://www.organization.immuta.com/integrations/{id}/scripts/edit' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f' \
-d '{
"type": "Snowflake",
"autoBootstrap": false,
"config": {
"host": "organization.us-east-1.snowflakecomputing.com",
"warehouse": "SAMPLE_WAREHOUSE",
"database": "SNOWFLAKE_SAMPLE_DATA",
"audit": {
"enabled": true
},
"workspaces": {
"enabled": false
},
"impersonation": {
"enabled": false
},
"authenticationType": "userPassword",
"username": "[email protected]",
"password": "abc1234"
}
}'curl -X 'PUT' \
'https://www.organization.immuta.com/integrations/{id}' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f' \
-d '{
"type": "Snowflake",
"autoBootstrap": false,
"config": {
"host": "organization.us-east-1.snowflakecomputing.com",
"warehouse": "SAMPLE_WAREHOUSE",
"database": "SNOWFLAKE_SAMPLE_DATA",
"audit": {
"enabled": true
},
"workspaces": {
"enabled": false
},
"impersonation": {
"enabled": false
},
"authenticationType": "userPassword",
"username": "[email protected]",
"password": "abc1234"
}
}'{
"id": "123456789",
"status": "editing",
"validationResults": {
"status": "passed",
"validationTests": [
{
"name": "Initial Validation: Basic Connection Test",
"status": "passed"
},
{
"name": "Initial Validation: Default Warehouse Access Test",
"status": "passed",
"result": []
},
{
"name": "Initial Validation: Validate access to Privileged Role",
"status": "passed",
"result": []
},
{
"name": "Validate Automatic: Database Does Not Exist",
"status": "passed"
},
{
"name": "Validate Automatic: Impersonation Role Does Not Exist",
"status": "skipped"
},
{
"name": "Validate Automatic Bootstrap User Grants",
"status": "passed"
}
]
}
}{
"statusCode": 409,
"error": "Conflict",
"message": "Unable to edit integration with ID 123456789 in current state editing."
}curl -X 'DELETE' \
'https://www.organization.immuta.com/integrations/{id}' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f' \
-d '{
"authenticationType": "userPassword",
"username": "[email protected]",
"password": "abc1234",
"role": "ACCOUNTADMIN"
}'{
"id": "123456789",
"status": "deleting",
"validationResults": {
"status": "passed",
"validationTests": [
{
"name": "Initial Validation: Basic Connection Test",
"status": "passed"
},
{
"name": "Initial Validation: Default Warehouse Access Test",
"status": "passed",
"result": []
},
{
"name": "Initial Validation: Validate access to Privileged Role",
"status": "passed",
"result": []
},
{
"name": "Validate Automatic: Database Does Not Exist",
"status": "passed"
},
{
"name": "Validate Automatic: Impersonation Role Does Not Exist",
"status": "skipped"
},
{
"name": "Validate Automatic Bootstrap User Grants",
"status": "passed"
}
]
}
}curl \
--request POST \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
--data @example-payload.json \
https://demo.immuta.com/policy/global{
"type": "data",
"template": false,
"ownerRestrictions": null,
"actions": [{
"type": "masking",
"rules": [{
"type": "masking",
"exceptions": null,
"config": {
"fields": [{
"name": "Discovered.Passport",
"displayName": "Discovered > Passport",
"hasLeafNodes": false,
"source": "curated"
}],
"maskingConfig": {
"type": "Consistent Value",
"metadata": {}
}
}
}],
"description": ""
}],
"circumstances": [{
"operator": "or",
"type": "columnTags",
"columnTag": {
"name": "Discovered.Passport",
"displayName": "Discovered > Passport",
"hasLeafNodes": false,
"source": "curated"
}
}],
"name": "Mask Passports",
"certification": {
"text": "This certifies that all columns containing passports in this data source have been tagged appropriately.",
"label": "Certified",
"tags": [],
"recertify": true
},
"staged": false
}{
"id": 8,
"policyKey": "Mask Passports",
"name": "Mask Passports",
"type": "data",
"template": false,
"staged": false,
"systemGenerated": false,
"deleted": false,
"certification": {
"tags": [],
"text": "This certifies that all columns containing passports in this data source have been tagged appropriately.",
"label": "Certified",
"recertify": true
},
"actions": [{
"type": "masking",
"rules": [{
"type": "masking",
"config": {
"fields": [{
"name": "Discovered.Passport",
"source": "curated",
"hasLeafNodes": false
}],
"maskingConfig": {
"type": "Consistent Value",
"metadata": {}
}
},
"exceptions": null
}],
"description": null
}],
"circumstances": [{
"type": "columnTags",
"operator": "or",
"columnTag": {
"name": "Discovered.Passport",
"hasLeafNodes": false
}
}],
"metadata": null,
"clonedFrom": null,
"createdBy": 2,
"createdAt": "2021-09-21T18:35:48.615Z",
"updatedAt": "2021-09-21T18:35:48.615Z",
"createdByName": "Katie",
"ownerRestrictions": null
}curl \
--request POST \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
--data @example-payload.json \
https://demo.immuta.com/policy/handler/2{
"jsonPolicies": [{
"type": "masking",
"rules": [{
"type": "masking",
"config": {
"fields": ["amount"],
"maskingConfig": {
"type": "Consistent Value",
"metadata": {
"constant": null
}
}
},
"exceptions": null
}],
"createdAt": "2021-09-20T20:03:18.001Z",
"createdBy": 2,
"description": null
}, {
"type": "masking",
"rules": [{
"type": "masking",
"config": {
"fields": ["geo_latitude"],
"maskingConfig": {
"type": "Consistent Value",
"metadata": {}
}
},
"exceptions": null
}],
"createdAt": "2021-09-20T20:02:02.213Z",
"createdBy": 2,
"description": null
}, {
"type": "prerequisite",
"rules": [{
"type": "prerequisite",
"exceptions": null,
"config": {
"qualifications": {
"operator": "and",
"conditions": [{
"type": "purposes",
"value": "Re-identification Prohibited"
}]
}
}
}],
"description": ""
}],
"dataSourcePolicyHandler": {
"handlerId": 26,
"visibilitySchema": {
"fields": []
}
}
}{
"id": 42,
"dataSourceId": 2,
"createdBy": 2,
"ca": ["-----BEGIN CERTIFICATE-----\ncertificatedata\n-----END CERTIFICATE-----"],
"jsonPolicies": [
{
"type": "masking",
"rules": [
{
"type": "masking",
"config": {
"fields": [
"amount"
],
"maskingConfig": {
"type": "Consistent Value",
"metadata": {
"constant": null
}
}
},
"exceptions": null
}
],
"createdAt": "2021-09-20T20:03:18.001Z",
"createdBy": 2,
"description": null
},
{
"type": "masking",
"rules": [
{
"type": "masking",
"config": {
"fields": [
"geo_latitude"
],
"maskingConfig": {
"type": "Consistent Value",
"metadata": {}
}
},
"exceptions": null
}
],
"createdAt": "2021-09-20T20:02:02.213Z",
"createdBy": 2,
"description": null
},
{
"type": "prerequisite",
"rules": [
{
"type": "prerequisite",
"config": {
"qualifications": {
"operator": "and",
"conditions": [
{
"type": "purposes",
"value": "Re-identification Prohibited"
}
]
}
},
"exceptions": null
}
],
"createdAt": "2021-09-20T20:05:35.925Z",
"createdBy": 2,
"description": null
}
],
"createdAt": "2021-09-21T18:49:34.021Z",
"updatedAt": "2021-09-21T18:49:34.021Z"
}curl \
--request POST \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
--data @example-payload.json \
https://demo.immuta.com/policy/global/applyPolicy{
"policyId": 1,
"dataSourceId": 1,
"merged": false
}curl \
--request PUT \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
--data @example-payload.json \
https://demo.immuta.com/policy/global/8{
"id": 8,
"policyKey": "Mask Passports",
"name": "Mask Passport",
"type": "data",
"template": false,
"staged": false,
"systemGenerated": false,
"deleted": false,
"certification": {
"tags": ["Discovered.Passport"],
"text": "This certifies that all columns containing passports in this data source have been tagged appropriately.",
"label": "Certified"
},
"actions": [{
"type": "masking",
"rules": [{
"type": "masking",
"config": {
"fields": [{
"name": "Discovered.Passport",
"source": "curated",
"hasLeafNodes": false,
"displayName": "Discovered > Passport"
}],
"maskingConfig": {
"type": "Consistent Value",
"metadata": {}
}
},
"exceptions": null
}],
"description": "This policy masks all passports for data sources with columns tagged Discovered.Passport."
}],
"circumstances": [{
"type": "columnTags",
"operator": "or",
"columnTag": {
"name": "Discovered.Passport",
"hasLeafNodes": false,
"displayName": "Discovered > Passport"
}
}],
"metadata": null,
"clonedFrom": null,
"createdBy": 2,
"createdAt": "2021-09-21T18:35:48.615Z",
"updatedAt": "2021-09-21T18:41:36.054Z",
"createdByName": "Katie",
"ownerRestrictions": null
}{
"id": 6,
"policyKey": "mask-passports",
"name": "Mask Passports",
"type": "data",
"template": false,
"createdBy": 2,
"createdByName": "Kate",
"createdAt": "2021-09-14",
"updatedAt": "2021-09-15",
"actions": [
{
"type": "masking",
"rules": [
{
"type": "masking",
"exceptions": null,
"config": {
"fields": [
{
"name": "Discovered.Passport",
"hasLeafNodes": false,
"source": "curated"
}
],
"maskingConfig": {
"type": "Consistent Value",
"metadata": {}
}
}
}
],
"description": "This policy masks all passports for data sources with columns tagged Discovered.Passport."
}
],
"circumstances": [
{
"operator": "or",
"type": "columnTags",
"columnTag": {
"name": "Discovered.Passport",
"hasLeafNodes": false
}
}
],
"clonedFrom": 0,
"staged": false,
"systemGenerated": false,
"deleted": false,
"certification": {
"label": "string",
"text": "string",
"tags": [
"string"
],
"recertify": false
}
}curl \
--request POST \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
https://demo.immuta.com/policy/search?scope=global&searchText=mask{
"count": 1,
"hits": [{
"name": "Mask Passports",
"createdBy": "Katie",
"state": "active",
"isNotApplied": false,
"scope": "global",
"type": "data",
"globalPolicyId": 8,
"policyId": null,
"dataSourceId": null,
"createdAt": "2021-09-21T18:35:48.615Z",
"detailLabels": {
"ruleType": ["masking"],
"tags": ["Discovered.Passport"]
},
"enforcedOn": {
"count": 1,
"hits": [{
"id": 1,
"name": "Public Credit Accounts"
}]
}
}]
}curl \
--request GET \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
https://demo.immuta.com/policy/global/1{
"id": 1,
"policyKey": "New Column Added",
"name": "New Column Added",
"type": "data",
"template": false,
"staged": false,
"systemGenerated": true,
"deleted": false,
"certification": null,
"actions": [
{
"type": "masking",
"rules": [
{
"type": "masking",
"config": {
"fields": [
{
"name": "New",
"source": "curated",
"hasLeafNodes": false
}
],
"maskingConfig": {
"type": "Consistent Value",
"metadata": {
"constant": null
}
}
},
"exceptions": null
}
],
"description": null
}
],
"circumstances": [
{
"type": "columnTags",
"operator": "or",
"columnTag": {
"name": "New",
"hasLeafNodes": false
}
}
],
"metadata": null,
"clonedFrom": null,
"createdBy": 1,
"createdAt": "2021-09-09T13:47:03.448Z",
"updatedAt": "2021-09-16T14:10:05.694Z",
"createdByName": "Immuta System Account",
"ownerRestrictions": null
}curl \
--request GET \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
https://demo.immuta.com/policy/global?nameOnly=true[
{
"name": "Mask Passports",
"id": 6,
"type": "data"
},
{
"name": "New Column Added",
"id": 1,
"type": "data"
}
]curl \
--request GET \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
https://demo.immuta.com/policy/global/appliedTo/6{
"count": 1
}curl \
--request GET \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
https://demo.immuta.com/policy/dataSourcePolicies/2[
{
"type": "masking",
"rules": [
{
"type": "masking",
"config": {
"fields": [
"amount"
],
"maskingConfig": {
"type": "Consistent Value",
"metadata": {
"constant": null
}
}
},
"exceptions": null
}
],
"createdAt": "2021-09-20T20:03:18.001Z",
"createdBy": 2,
"description": null
},
{
"type": "masking",
"rules": [
{
"type": "masking",
"config": {
"fields": [
"geo_latitude"
],
"maskingConfig": {
"type": "Consistent Value",
"metadata": {}
}
},
"exceptions": null
}
],
"createdAt": "2021-09-20T20:02:02.213Z",
"createdBy": 2,
"description": null
},
{
"type": "prerequisite",
"rules": [
{
"type": "prerequisite",
"config": {
"qualifications": {
"operator": "and",
"conditions": [
{
"type": "purposes",
"value": "Re-identification Prohibited"
}
]
}
},
"exceptions": null
}
],
"createdAt": "2021-09-20T20:05:35.925Z",
"createdBy": 2,
"description": null
}
]curl \
--request GET \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
https://demo.immuta.com/policy/diff/3?currentHandlerId=47&previousHandlerId=46{
"current": [{
"type": "rowOrObjectRestriction",
"rules": [{
"type": "visibility",
"config": {
"predicate": "(`city` in (@groups()))",
"qualifications": {
"operator": "and",
"conditions": [{
"type": "groups",
"field": "city"
}]
}
},
"exceptions": null
}],
"createdAt": "2021-09-28T18:46:00.868Z",
"createdBy": 2,
"description": null
}],
"previous": [{
"type": "rowOrObjectRestriction",
"rules": [{
"type": "visibility",
"config": {
"predicate": "(`city` in (@groups()))",
"qualifications": {
"operator": "and",
"conditions": [{
"type": "groups",
"field": "city"
}]
}
},
"exceptions": null
}],
"createdAt": "2021-09-28T18:46:00.868Z",
"createdBy": 2,
"description": null
}],
"hasChanges": false
}curl \
--request GET \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
https://demo.immuta.com/policy/handler/1{
"id": 44,
"dataSourceId": 1,
"rules": "rule masking_0_0 { when { model_0_0 : MaskingModel ; } then { Masked(model_0_0, 0, 0) } } rule masking_5_0 { when { model_5_0 : MaskingModel ; } then { Masked(model_5_0, 5, 0) } } rule masking_6_0 { when { model_6_0 : MaskingModel ; } then { Masked(model_6_0, 6, 0) } }",
"jsonPolicies": [
{
"type": "masking",
"rules": [
{
"type": "masking",
"config": {
"fields": [
"email"
],
"maskingConfig": {
"type": "Consistent Value",
"metadata": {
"constant": null
}
}
},
"exceptions": null
}
],
"createdAt": "2021-09-21T19:27:27.589Z",
"createdBy": 2,
"description": null
},
{
"type": "masking",
"rules": [
{
"type": "masking",
"config": {
"fields": [
"email"
],
"maskingConfig": {
"type": "Consistent Value",
"metadata": {}
}
},
"exceptions": null
}
],
"global": {
"id": 0,
"tag": "Discovered.Passport",
"name": "string",
"reason": "test",
"staged": false,
"deleted": false,
"conflict": "existingMasking",
"disabled": true,
"metadata": {
"HEDReportVersion": "string",
"certificationExpirationInterval": "string"
},
"template": false,
"createdAt": "2021-09-14T00:00:00.000Z",
"createdBy": "Katie",
"policyKey": "string",
"updatedAt": "2021-09-14T00:00:00.000Z",
"clonedFrom": 0,
"certification": true,
"createdByName": "Katie",
"changedOnApply": [],
"systemGenerated": false,
"ownerRestrictions": null
},
"description": null
},
{
"type": "masking",
"rules": [
{
"type": "masking",
"config": {
"fields": [
"last_name"
],
"maskingConfig": {
"type": "Consistent Value",
"metadata": {}
}
},
"exceptions": null
}
],
"global": {
"id": 0,
"tag": "Discovered.Passport",
"name": "string",
"reason": "test",
"staged": false,
"deleted": false,
"conflict": null,
"disabled": true,
"metadata": {
"HEDReportVersion": "string",
"certificationExpirationInterval": "string"
},
"template": false,
"createdAt": "2021-09-14T00:00:00.000Z",
"createdBy": "Katie",
"policyKey": "string",
"updatedAt": "2021-09-14T00:00:00.000Z",
"clonedFrom": 0,
"certification": true,
"createdByName": "Katie",
"changedOnApply": [],
"systemGenerated": false,
"ownerRestrictions": null
},
"description": null
},
{
"type": "masking",
"rules": [
{
"type": "masking",
"config": {
"fields": [
"ssn"
],
"maskingConfig": {
"type": "Consistent Value",
"metadata": {}
}
},
"exceptions": null
}
],
"global": {
"id": 0,
"tag": "Discovered.Passport",
"name": "string",
"reason": "test",
"staged": false,
"deleted": false,
"conflict": null,
"disabled": true,
"metadata": {
"HEDReportVersion": "string",
"certificationExpirationInterval": "string"
},
"template": false,
"createdAt": "2021-09-14T00:00:00.000Z",
"createdBy": "Katie",
"policyKey": "string",
"updatedAt": "2021-09-14T00:00:00.000Z",
"clonedFrom": 0,
"certification": true,
"createdByName": "Katie",
"changedOnApply": [],
"systemGenerated": false,
"ownerRestrictions": null
},
"description": null
},
{
"type": "masking",
"rules": [
{
"type": "masking",
"config": {
"fields": [
"email"
],
"maskingConfig": {
"type": "Consistent Value",
"metadata": {}
}
},
"exceptions": null
}
],
"global": {
"id": 8,
"tag": "Discovered.Passport",
"name": "Mask Passports",
"reason": null,
"staged": false,
"deleted": false,
"conflict": "existingMasking",
"disabled": true,
"metadata": null,
"template": false,
"createdAt": "2021-09-21T18:35:48.615Z",
"createdBy": "Katie",
"policyKey": "Mask Passport",
"updatedAt": "2021-09-21T18:41:54.299Z",
"clonedFrom": null,
"certification": true,
"createdByName": "Katie",
"changedOnApply": [],
"systemGenerated": false,
"ownerRestrictions": null
},
"description": "This policy masks all passports for data sources with columns tagged Discovered.Passport."
},
{
"type": "masking",
"rules": [
{
"type": "masking",
"config": {
"fields": [
"last_name"
],
"maskingConfig": {
"type": "Consistent Value",
"metadata": {}
}
},
"exceptions": null
}
],
"global": {
"id": 8,
"tag": "Discovered.Passport",
"name": "Mask Passport",
"reason": null,
"staged": false,
"deleted": false,
"conflict": null,
"disabled": false,
"metadata": null,
"template": false,
"createdAt": "2021-09-21T18:35:48.615Z",
"createdBy": "Katie",
"policyKey": "Mask Passport",
"updatedAt": "2021-09-21T18:41:54.299Z",
"clonedFrom": null,
"certification": true,
"createdByName": "Katie",
"changedOnApply": [],
"systemGenerated": false,
"ownerRestrictions": null
},
"description": "This policy masks all passports for data sources with columns tagged Discovered.Passport."
},
{
"type": "masking",
"rules": [
{
"type": "masking",
"config": {
"fields": [
"ssn"
],
"maskingConfig": {
"type": "Consistent Value",
"metadata": {}
}
},
"exceptions": null
}
],
"global": {
"id": 8,
"tag": "Discovered.Passport",
"name": "Mask Passport",
"reason": null,
"staged": false,
"deleted": false,
"conflict": null,
"disabled": false,
"metadata": null,
"template": false,
"createdAt": "2021-09-21T18:35:48.615Z",
"createdBy": "Katie",
"policyKey": "Mask Passports",
"updatedAt": "2021-09-21T18:41:54.299Z",
"clonedFrom": null,
"certification": true,
"createdByName": "Katie",
"changedOnApply": [],
"systemGenerated": false,
"ownerRestrictions": null
},
"description": "This policy masks all passports for data sources with columns tagged Discovered.Passport."
}
],
"createdAt": "2021-09-21T19:27:27.977Z",
"updatedAt": "2021-09-21T19:27:27.977Z"
}curl \
--request DELETE \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
https://demo.immuta.com/policy/global/6{
"id": 6,
"policyKey": "mask-passports",
"name": "Mask Passports",
"type": "data",
"template": false,
"staged": false,
"systemGenerated": false,
"deleted": false,
"certification": {
"tags": [
"string"
],
"text": "string",
"label": "string"
},
"actions": [
{
"type": "masking",
"rules": [
{
"type": "masking",
"config": {
"fields": [
{
"name": "Discovered.Passport",
"source": "curated",
"hasLeafNodes": false
}
],
"maskingConfig": {
"type": "Consistent Value",
"metadata": {}
}
},
"exceptions": null
}
],
"description": "This policy masks all passports for data sources with columns tagged Discovered.Passport."
}
],
"circumstances": [
{
"type": "columnTags",
"operator": "or",
"columnTag": {
"name": "Discovered.Passport",
"hasLeafNodes": false
}
}
],
"metadata": null,
"clonedFrom": 0,
"createdBy": 2,
"createdAt": "2021-09-14T00:00:00.000Z",
"updatedAt": "2021-09-15T18:46:17.661Z",
"createdByName": "Katie",
"ownerRestrictions": null
}MANAGE GRANTS ON ACCOUNT WITH GRANT OPTIONAPPLY ROW ACCESS POLICY ON ACCOUNT WITH GRANT OPTIONMANAGE GRANTS ON ACCOUNT WITH GRANT OPTION
Alternatively, you can grant the Immuta system account OWNERSHIP on the objects that Immuta will secure, instead of granting MANAGE GRANTS ON ACCOUNT. The current role that has OWNERSHIP on the securables will need to be granted to the Immuta system role. However, if granting OWNERSHIP instead of MANAGE GRANTS ON ACCOUNT, Immuta will not be able to manage the role that is granted to the account, so it is recommended to run the script as-is, without changes.
APPLY ROW ACCESS POLICY ON ACCOUNT WITH GRANT OPTIONMANAGE GRANTS ON ACCOUNT WITH GRANT OPTION
Alternatively, you can grant the Immuta system account OWNERSHIP on the objects that Immuta will secure, instead of granting MANAGE GRANTS ON ACCOUNT. The current role that has OWNERSHIP on the securables will need to be granted to the Immuta system role. However, if granting OWNERSHIP instead of MANAGE GRANTS ON ACCOUNT, Immuta will not be able to manage the role that is granted to the account, so it is recommended to run the script as-is, without changes.
The parameters for configuring an integration in Immuta are outlined in the table below.
type string
The type of integration to configure.
Required
-
autoBootstrap boolean
The config object configures the S3 integration. The table below outlines its child parameters.
The config object configures the Azure Synapse Analytics integration. The table below outlines its child parameters.
The impersonation object enables and defines roles for user impersonation for Azure Synapse Analytics. The table below outlines its child parameters.
The credentials you used when configuring your integration are required in the payload when autoBootstrap was set to true when setting up your integration. For integration configurations with autoBootstrap set to false, no payload is required when deleting the integration.
The metadataDelimiters object specifies the delimiters that Immuta uses to store profile data in Azure Synapse Analytics. The table below outlines its child parameters.
The config object configures the Databricks Unity Catalog integration. The table below outlines its child parameters.
The audit object enables Databricks Unity Catalog query audit. The table below outlines its child parameter.
The groupPattern object excludes the listed group from having data policies applied in the Databricks Unity Catalog integration. This account-level group should be used for privileged users and service accounts that require an unmasked view of data. The table below outlines its child parameters.
The proxyOptions object represents your proxy server configuration in Databricks Unity Catalog. The table below outlines the object's child attributes.
The oAuthClientConfig object represents your OAuth configuration in Databricks Unity Catalog. This object is required if you set oAuthM2M as your . The table below outlines the object's child parameters.
The config object configures the Google BigQuery integration. The table below outlines its child parameters.
The config object configures the Redshift integration. The table below outlines its child parameters.
The authentication type and credentials you used when configuring your integration are required in the payload when autoBootstrap was set to true when setting up your integration. For integration configurations with autoBootstrap set to false, no payload is required when deleting the integration.
The impersonation object enables and defines roles for user impersonation for Redshift. The table below outlines its child parameters.
The okta object represents your Okta configuration. This object is required if you set okta as your authentication type in the Redshift integration configuration. The table below outlines its child parameters.
The config object configures the Snowflake integration. The table below outlines its child parameters.
The audit object enables Snowflake query audit. The table below outlines its child parameter.
The authentication type and credentials you used when configuring your integration are required in the payload when autoBootstrap was set to true when setting up your integration. For integration configurations with autoBootstrap set to false, no payload is required when deleting the integration.
The impersonation object enables and defines roles for user impersonation for Snowflake. The table below outlines its child parameters.
The lineage object enables Snowflake lineage ingestion. When this setting is enabled, Immuta automatically applies tags added to a Snowflake table to its descendant data source columns in Immuta so you can build policies using those tags to restrict access to sensitive data. The table below outlines its child parameters.
The oAuthClientConfig object represents your OAuth configuration in Snowflake. This object is required if you set oAuthClientCredentials as your authentication type in the Snowflake integration configuration, and you must set autoBootstrap to false. The table below outlines the object's child parameters.
The userRolePattern object excludes roles and users from authorization checks in the Snowflake integration. The table below outlines its child parameter.
The workspaces object represents an Immuta project workspace configured for Snowflake. The table below outlines its child parameters.
awsRegion string
The AWS region to use.
Required
-
Any valid AWS region (us-east-1, for example)
awsLocationRole string
The AWS IAM role ARN assigned to the base access grants location. This is the role the AWS Access Grants service assumes to vend credentials to the grantee. When a grantee accesses S3 data, the AWS Access Grants service attaches session policies and assumes this role in order to vend scoped down credentials to the grantee. This role needs full access to all paths under the S3 location prefix.
Required
-
-
awsLocationPath string
The base S3 location prefix that Immuta will use for this connection when registering S3 data sources. This path must be unique across all S3 integrations configured in Immuta.
Required
-
-
awsRoleToAssume string
The AWS IAM role ARN Immuta assumes when interacting with AWS.
Required when authenticationType is auto.
[]
-
authenticationType string
The method used to authenticate with AWS when configuring the S3 integration.
Required
-
auto
accessKey
awsAccessKeyId string
The AWS access key ID for the AWS account configuring the integration.
Required when authenticationType is accessKey.
-
-
awsSecretAccessKey string
The AWS secret access key for the AWS account configuring the integration.
Required when authenticationType is accessKey.
-
-
port number
The port to use when connecting to your S3 Access Grants instance.
Optional
443
0-65535
schema string
Name of the Immuta-managed schema where all your secure views will be created and stored.
Required
-
-
authenticationType string
The method used to authenticate with Azure Synapse Analytics when configuring the integration.
Required
-
userPassword
username string
The username of the system account that can act on Azure Synapse Analytics objects and configure the integration.
Required
-
-
password string
The password of the system account that can act on Azure Synapse Analytics objects and configure the integration.
Required
-
-
object
This object is a set of delimiters that Immuta uses to store profile data in Azure Synapse Analytics. See the for parameters.
Optional
See the for default values.
-
port number
The port to use when connecting to your Azure Synapse Analytics account host.
Optional
1433
0-65535
object
Enables user impersonation. See the for parameters.
Optional
Disabled by default. See the for parameters.
-
connectArgs string
The connection string arguments to pass to the ODBC driver when connecting as the Immuta system user.
Optional
-
-
httpPath string
The HTTP path of your Databricks cluster or SQL warehouse.
Required
-
-
authenticationType string
The type of authentication to use when connecting to Databricks.
Required
-
token
oAuthM2M
token string
The Databricks personal access token. This is the access token for the Immuta service principal.
Required if authenticationType is token.
-
-
object
This object allows you to configure your integration to use a proxy server. See the for child attributes.
Optional
[]
-
object
This object represents your OAuth configuration. To use this authentication method, authenticationType must be oAuthM2M. See the for parameters.
Required if you selected oAuthM2M as your authenticationType.
-
-
object
This object enables Databricks Unity Catalog query audit. See the for parameters.
Optional
Disabled by default. See the for parameters.
-
catalog string
The name of the Databricks catalog Immuta will create to store internal entitlements and other user data specific to Immuta. This catalog will only be readable for the Immuta service principal and should not be granted to other users. The catalog name may only contain letters, numbers, and underscores and cannot start with a number.
Optional
immuta
-
object
This object allows you to exclude an account-level group in Databricks from data policies. See the for parameters.
Optional
-
-
username string
The username to use with the proxy server.
Optional
[]
-
password string
The password to use with the proxy server.
Optional
[]
-
scope
The scope limits the operations and roles allowed in Databricks by the access token. See the for details about scopes.
Optional
[]
-
clientSecret string
.
Required
-
-
dataset string
Name of the BigQuery dataset to provision inside of the project for Immuta metadata storage.
Optional
immuta
-
location string
The dataset's location. After a dataset is created, the location can't be changed.
Required
-
Any valid GCP location (us-east1, for example).
credential string
The Google BigQuery service account JSON keyfile credential content. See the for guidance on generating and downloading this keyfile.
Required
-
-
port number
The port to use when connecting to your BigQuery account host.
Optional
443
0-65535
initialDatabase string
Name of the existing database in Redshift that Immuta initially connects to and creates the Immuta-managed database.
Required if autoBootstrap is true.
-
-
authenticationType string
The type of authentication to use when connecting to Redshift.
Required
-
userPassword
accessKey
okta
username string
The username of the system account that can act on Redshift objects and configure the integration.
Required if you selected userPassword as your authenticationType.
-
-
password string
The password of the system account that can act on Redshift objects and configure the integration.
Required if you selected userPassword as your authenticationType.
-
-
object
This object represents your Okta configuration. See the for parameters.
Required if you selected okta as your authenticationType.
-
-
databaseUser string
The Redshift database username.
Required if you selected accessKey as your authenticationType.
-
-
accessKeyId string
The Redshift access key ID.
Required if you selected accessKey as your authenticationType.
-
-
secretKey string
The Redshift secret key.
Required if you selected accessKey as your authenticationType.
-
-
sessionToken string
The Redshift session token.
Optional if you selected accessKey as your authenticationType.
-
-
port number
The port to use when connecting to your Redshift account host.
Optional
5439
0-65535
object
Enables user impersonation. See the for parameters.
Optional
Disabled by default. See the for parameters.
-
connectArgs string
The connection string arguments to pass to the ODBC driver when connecting as the Immuta system user.
Optional
-
-
databaseUser string
The Redshift database username.
Required if you selected accessKey as your authenticationType.
-
accessKeyId string
The Redshift access key ID.
Required if you selected accessKey as your authenticationType.
-
secretKey string
The Redshift secret key.
Required if you selected accessKey as your authenticationType.
-
sessionToken string
The Redshift session token.
Optional if you selected accessKey as your authenticationType.
-
object
This object represents your Okta configuration. See the for parameters.
Required if you selected okta as your authenticationType.
-
appId string
The Okta application ID.
Required
-
-
idpHost string
The Okta identity provider host URL.
Required
-
-
role string
The Okta role.
Required
-
-
database string
Name of a new empty database that the Immuta system user will manage and store metadata in.
Required
-
-
authenticationType string
The type of authentication to use when connecting to Snowflake.
Required
-
userPassword
keyPair
oAuthClientCredentials
username string
The username of a Snowflake account that can act on Snowflake objects and configure the integration.
Required if you selected userPassword as your authenticationType.
-
-
password string
The password of a Snowflake account that can act on Snowflake objects and configure the integration.
Required if you selected userPassword as your authenticationType.
-
-
privateKey string
The private key. Replace new lines in the private key with a backslash before the new line character: "\n". If you are using another means of configuration, such as a Python script, the "\n" should not be added.
Required if you selected keyPair as your authenticationType.
-
-
object
This object represents your OAuth configuration. To use this authentication method, autoBootstrap must be false. See the for parameters.
Required if you selected oAuthClientCredentials as your authenticationType.
-
-
role string
The privileged Snowflake role used by the Immuta system account when configuring the Snowflake integration.
Required when autoBootstrap is true.
-
-
port number
The port to use when connecting to your Snowflake account host.
Optional
443
0-65535
object
This object enables Snowflake query audit. See the for the parameter.
Optional
Disabled by default. See the for the parameter.
-
object
Enables user impersonation. See the for parameters.
Optional
Disabled by default. See the for parameters.
-
object
This object excludes roles and users from authorization checks. See the for parameters.
Optional
{[]}
-
object
This object represents an Immuta project workspace configured for Snowflake. See the for parameters.
Optional
Disabled by default. See the for parameters.
-
connectArgs string
The connection string arguments to pass to the Node.js driver when connecting as the Immuta system user.
Optional
-
-
privilegedConnectArgs string
The connection string arguments to pass to the Node.js driver when connecting as the privileged user.
Optional when autoBootstrap is true.
-
-
object
Enables Snowflake lineage ingestion so that Immuta can apply tags added to Snowflake tables to their descendant data source columns. See the for parameters.
Optional
-
-
privateKey string
The private key. Replace new lines in the private key with a backslash before the new line character: "\n". If you are using another means of configuration, such as a Python script, the "\n" should not be added.
Required if you selected keyPair as your authenticationType.
-
object
This object represents your OAuth configuration. See the for parameters.
Required if you selected oAuthClientCredentials as your authenticationType.
-
role string
The privileged Snowflake role used by the Immuta system account when configuring the Snowflake integration.
Required when autoBootstrap is true for Snowflake.
-
lineageConfig.tableFilter string
This child parameter of lineageConfig determines which tables Immuta will ingest lineage for. Use a regular expression that excludes / from the beginning and end to filter tables. Without this filter, Immuta will attempt to ingest lineage for every table on your Snowflake instance.
Optional
^.*$
Regular expression that excludes / from the beginning and end.
lineageConfig.tagFilterRegex string
This child parameter of lineageConfig determines which tags to propagate using lineage. Use a regular expression that excludes / from the beginning and end to filter tags. Without this filter, Immuta will ingest lineage for every tag on your Snowflake instance.
Optional
^.*$
Regular expression that excludes / from the beginning and end.
lineageConfig.ingestBatchSize number
This child parameter of lineageConfig configures the number of rows Immuta ingests per batch when streaming Access History data from your Snowflake instance.
Optional
1000
Minimum value of 1.
authorityUrl string
Authority URL of your identity provider.
Required
-
-
useCertificate boolean
Specifies whether or not to use a certificate and private key for authenticating with OAuth.
Required
-
true or false
publicCertificateThumbprint string
Your certificate thumbprint.
Required if useCertificate is true.
-
-
oauthPrivateKey string
The private key content.
Required if useCertificate is true.
-
-
clientSecret string
Client secret of the application.
Required if useCertificate is false.
-
-
resource string
An optional resource to pass to the token provider.
Optional
-
-
scope string
The scope limits the operations and roles allowed in Snowflake by the access token. See the for details about scopes.
Optional
[]
-
Trino
When true, Immuta will automatically configure the integration in your Azure Synapse Analytics, Databricks Unity Catalog, Redshift, or Snowflake environment for you. When false, you must set up your environment manually before configuring the integration with the API. This parameter must be set to false in the Amazon S3 and Google BigQuery configurations. See the specific how-to guide for configuring your integration for details: Azure Synapse Analytics, Databricks Unity Catalog, Redshift, Snowflake.
Required for all integrations except Starburst (Trino)
-
true or false
config object
This object specifies the integration settings. See the config object description for your integration for details: Amazon S3, Azure Synapse Analytics, Databricks Unity Catalog, Google BigQuery, Redshift, or Snowflake.
Required for all integrations except Starburst (Trino)
-
-
name string
A name for the integration that is unique across all Amazon S3 integrations configured in Immuta.
Required
-
-
awsAccountId string
The ID of your AWS account.
Required
-
-
host string
The URL of your Azure Synapse Analytics account.
Required
-
Valid URL hostnames.
database string
Name of an existing database where the Immuta system user will store all Immuta-generated schemas and views.
Required
-
-
enabled boolean
When true, enables user impersonation.
false
true or false
role string
The name of the user impersonation role.
IMMUTA_IMPERSONATION
-
authenticationType string
The type of authentication used when originally configuring the Azure Synapse Analytics integration.
Required
userPassword
username string
The username of the system account that configured the integration.
Required if autoBootstrap was true when setting up the integration.
-
password string
The password of the system account that configured the integration.
Required if autoBootstrap was true when setting up the integration.
hashDelimiter string
A delimiter used to separate key-value pairs.
`
`
hashKeyDelimiter string
A delimiter used to separate a key from its value.
:
-
arrayDelimiter string
A delimiter used to separate array elements.
,
port number
The port to use when connecting to your Databricks account host.
Optional
443
0-65535
workspaceUrl string
Databricks workspace URL. For example, my-workspace.cloud.databricks.com.
Required
-
-
enabled boolean
This setting enables or disables Databricks Unity Catalog query audit.
false
true or false
deny string
The name of an account-level group in Databricks that will be excluded from having data policies applied. This group should be used for privileged users and service accounts that require an unmasked view of data. See the Databricks Unity Catalog reference guide for details.
immuta_exemption_group
-
host string
The hostname of the proxy server.
Required
-
Valid URL hostnames
port number
The port to use when connecting to your proxy server.
Optional
443
0-65535
clientId string
The client identifier of the Immuta service principal you configured. This is the client ID displayed in Databricks when creating the client secret for the service principal.
Required
-
-
authorityUrl string
Authority URL of your identity provider.
Required
https://<your workspace name>.cloud.databricks.com/oidc/v1/token
-
role string
Google Cloud role used to connect to Google BigQuery.
Required
-
-
datasetSuffix string
Suffix to postfix to the name of each dataset created to store secure views. This string must start with an underscore.
Required
-
-
host string
The URL of your Redshift account.
Required
-
Valid URL hostnames
database string
Name of a new empty database that the Immuta system user will manage and store metadata in.
Required
-
-
authenticationType string
The type of authentication used when originally configuring the Redshift integration.
Required if autoBootstrap was true when setting up the integration.
userPassword
accessKey
okta
username string
The username of the system account that configured the integration.
Required if you selected userPassword as your authenticationType.
-
password string
The password of the system account that configured the integration.
Required if you selected userPassword as your authenticationType.
enabled boolean
When true, enables user impersonation.
false
true or false
role string
The name of the user impersonation role.
immuta_impersonation
-
username string
The username of the system account that can act on Redshift objects and configure the integration.
Required
-
-
password string
The password of the system account that can act on Redshift objects and configure the integration.
Required
-
-
host string
The URL of your Snowflake account.
Required
-
Valid URL hostnames
warehouse string
The default pool of compute resources the Immuta system user will use to run queries and perform other Snowflake operations.
Required
-
-
enabled boolean
This setting enables or disables Snowflake query audit.
false
true or false
authenticationType string
The type of authentication used when originally configuring the integration.
Required if autoBootstrap was true when configuring the integration.
userPassword
keyPair
oAuthClientCredentials
username string
The username of the system account that configured the integration.
Required for the Azure Synapse Analytics integration or if you selected userPassword as your authenticationType for Redshift or Snowflake.
-
password string
The password of the system account that configured the integration.
Required for the Azure Synapse Analytics integration or if you selected userPassword as your authenticationType for Redshift or Snowflake.
enabled boolean
When true, enables user impersonation.
false
true or false
role string
The name of the user impersonation role.
IMMUTA_IMPERSONATION
-
enabled boolean
When true, enables Snowflake lineage so that Immuta can apply tags added to Snowflake data sources to their descendant data source columns in Immuta.
Optional
false
true or false
lineageConfig object
Configures what tables Immuta will ingest lineage history for, the number of rows to ingest per batch, and what tags to propagate. Child parameters include tableFilter, tagFilterRegex, and ingestBatchSize.
Required if enabled is true.
-
-
provider string
The identity provider for OAuth, such as Okta.
Required
-
-
clientId string
The client identifier of your registered application.
Required
-
-
exclude array[string]
This array is a list of roles and users (both case-sensitive) to exclude from authorization checks. Wildcards are unsupported.
[]
-
enabled boolean
This setting enables or disables Snowflake project workspaces. If you use Snowflake secure data sharing with Immuta, set this property to true, as project workspaces are required. If you use Snowflake table grants, set this property to false; project workspaces cannot be used when Snowflake table grants are enabled.
false
true or false
warehouses array[string]
This array is a list of warehouses workspace users have usage privileges on.
[]
-
-
-
-
-
Sensitive data discovery (SDD) API reference guide
.
.
.
.
.
POST /sdd/classifier
Create an identifier.
The following request creates an identifier, saved in example-payload.json.
POST /sdd/template
Create an identification framework.
The following request creates an identification framework that contains 2 identifiers, saved in example-payload.json.
GET /sdd/classifier
List or search identifiers.
The following request lists 5 identifiers.
GET /sdd/template
List or search identification frameworks.
The following request lists all identification frameworks.
GET /sdd/classifier/{classifierName}
Get an identifier by name.
This request gets the identifier named MY_REGEX_IDENTIFIER.
GET /sdd/template/{templateName}
Get an identification framework by name.
This request gets the identification framework named MY_FIRST_FRAMEWORK.
GET /sdd/template/global
View the current global framework.
This request gets the current global framework information.
PUT /sdd/template/apply
Apply an identification framework to a set of data sources.
This request applies the MY_FIRST_FRAMEWORK framework to the Public Case data source.
POST /sdd/run
Run SDD on specified data sources.
This request runs SDD on the data source Public Case.
This request runs SDD on all your data sources.
This request runs SDD on the Medical Claims data source with the PII_REVISION framework, but will not tag any columns if matches are found.
PUT /sdd/classifier/{classifierName}
Update an identifier. Partial updates are not supported.
The following request updates the name and description of the MY_REGEX_IDENTIFIER identifier.
Payload example
POST /sdd/template/{templateName}/clone
Clone an identification framework.
This request clones the MY_FIRST_FRAMEWORK identification framework.
Payload example
PUT /sdd/template/{templateName}
Update an identification framework.
The following request updates the name of, description of, and identifiers in the MY_FIRST_FRAMEWORK identification framework.
Payload example
DELETE /sdd/classifier/{classifierName}
Delete an identifier.
The following request deletes the REGULAR_EXPRESSION identifier.
DELETE /sdd/template/{templateName}
Delete an identification framework.
The following request deletes the HEALTH_DATA identification framework.
config
object The configuration of the identifier, which includes config.values, config.caseSensitive, config.regex, config.columnNameRegex, and config.tags. The config object must include one of the following: config.regex, config.columnNameRegex, or config.values.
Yes
config.tags
array[string] The default resulting tags to apply when the identifier is matched; they must begin with Discovered . .
No
config.regex
string A case-insensitive regular expression to match against column values.
No
config.columnNameRegex
string A case-insensitive regular expression to match against column names.
No
config.values
array[string] The list of words included in the dictionary to match against column values.
No
config.caseSensitive
boolean Indicates whether or not values are case sensitive. Defaults to false.
No
config.minConfidence
integer Apply tags when the identifier match is at least this percentage. Not supported for native SDD. Must be between 0 and 1.
Yes
config.tags
array[string] The default resulting tags to apply to the data source when the identifier is matched.
config.columnNameRegex
string A case-insensitive regular expression to match against column names.
config.regex
string A case-insensitive regular expression to match against column values.
config.values
array[string] The list of words included in the dictionary to match against column values.
config.caseSensitive
boolean Indicates whether or not values are case sensitive.
config.minConfidence
integer Apply tags when the identifier match is at least this percentage. Not supported for native SDD.
createdAt
date When the identifier was created.
updatedAt
date When the identifier was last updated.
classifiers.name
string The name of the identifier to include in the framework.
Yes
classifiers.overrides
array The overrides to modify the identifier for this framework.
No
classifiers.overrides.tags
array The resulting tags to apply when the identifier is matched. These tags will override the identifier's default tags and must begin with Discovered . .
No
createdAt
date When the framework was created.
updatedAt
date When the framework was last updated.
GET
sdd/template/global
.
type
array[string] Searches based on identifier type: regex, dictionary, builtIn, or columnNameRegex.
No
searchText
string A partial, case-insensitive search on name.
No
config
object The configuration of the identifier, which includes config.values, config.caseSensitive, config.regex, config.columnNameRegex, and config.tags.
config.tags
array[string] The default resulting tags to apply when the identifier is matched.
config.columnNameRegex
string A case-insensitive regular expression to optionally match against column names.
config.regex
string A case-insensitive regular expression to match against column values.
config.values
array[string] The list of words included in the dictionary to match against column values.
config.caseSensitive
boolean Indicates whether or not values are case sensitive.
createdAt
date When the identifier was created.
updatedAt
date When the identifier was last updated.
classifiers
array[string] Filters framework results to those containing the specified identifiers.
No
searchText
string A partial, case-insensitive search on the framework name.
No
classifiers
array The identifiers in the framework and any overrides for those identifiers.
createdAt
date When the framework was created.
updatedAt
date When the framework was last updated.
config
object The configuration of the identifier, which includes config.values, config.caseSensitive, config.regex, config.columnNameRegex, and config.tags.
config.tags
array[string] The name of the resulting tags to apply to the data source.
config.columnNameRegex
string A case-insensitive regular expression to optionally match against column names.
config.regex
string A case-insensitive regular expression to match against column values.
config.values
array[string] The list of words included in the dictionary to match against column values.
config.caseSensitive
boolean Indicates whether or not values are case sensitive.
createdAt
date When the identifier was created.
updatedAt
date When the identifier was last updated.
createdAt
date When the framework was created.
updatedAt
date When the framework was last updated.
createdAt
date When the framework was created.
updatedAt
date When the framework was last updated.
template
string If passed, Immuta will run SDD with this framework instead of the applied framework on the data source(s). Passing template when dryRun is false will cause an error.
No
config
object The configuration of the identifier, which includes config.values, config.caseSensitive, config.regex, config.columnNameRegex, and config.tags. The config object must contain one of the following: config.regex, config.columnNameRegex, or config.values.
Yes
config.tags
array[string] The default resulting tags to apply when the identifier is matched; they must begin with Discovered . .
No
config.regex
string A case-insensitive regular expression to match against column values.
No
config.columnNameRegex
string A case-insensitive regular expression to match against column names.
No
config.values
array[string] The list of words included in the dictionary to match against column values.
No
config.caseSensitive
boolean Indicates whether or not values are case sensitive. Defaults to false.
No
config.minConfidence
integer Apply tags when the identifier match is at least this percentage. Not supported for native SDD. Must be between 0 and 1.
Yes
config.tags
array[string] The default resulting tags to apply to the data source when the identifier is matched.
config.columnNameRegex
string A case-insensitive regular expression to match against column names.
config.regex
string A case-insensitive regular expression to match against column values.
config.values
array[string] The list of words included in the dictionary to match against column values.
config.caseSensitive
boolean Indicates whether or not values are case sensitive.
createdAt
date When the identifier was created.
updatedAt
date When the identifier was last updated.
createdAt
date When the framework was created.
updatedAt
date When the framework was last updated.
classifiers.name
string The name of the identifier to include in the framework.
Yes
classifiers.overrides
array The overrides to modify the identifier for this framework.
No
classifiers.overrides.tags
array The resulting tags to apply when the identifier is matched. These tags will override the identifier's default tags and must begin with Discovered . .
No
createdAt
date When the framework was created.
updatedAt
date When the framework was last updated.
config.tags
array[string] The default resulting tags to apply to the data source when the identifier is matched.
config.columnNameRegex
string A case-insensitive regular expression to match against column names.
config.regex
string A case-insensitive regular expression to match against column values.
config.values
array[string] The list of words included in the dictionary to match against column values.
config.caseSensitive
boolean Indicates whether or not values are case sensitive.
createdAt
date When the identifier was created.
updatedAt
date When the identifier was last updated.
createdAt
date When the framework was created.
updatedAt
date When the framework was last updated.
name
string Unique, request-friendly identifier name. Must be uppercase letters or numbers.
Yes
displayName
string Unique, human-readable identifier name.
Yes
description
string The identifier description.
Yes
type
string The type of identifier: regex, dictionary, columnNameRegex, or builtIn.
createdBy
array Includes details about the user who created the identifier, such as their profile id, name, and email.
name
string Unique, request-friendly identifier name.
displayName
string Unique, human-readable identifier name.
description
string The identifier description.
type
string The type of identifier: regex, dictionary, columnNameRegex, or builtIn.
config
object The configuration of the identifier, which includes config.values, config.caseSensitive, config.regex, config.columnNameRegex, and config.tags.
name
string Unique, request-friendly framework name. Must be uppercase letters or numbers.
Yes
displayName
string Unique, human-readable framework name.
Yes
description
string The framework description.
Yes
classifiers
array The identifiers to include in the framework and any additional overrides for those identifiers.
id
integer The unique ID of the framework.
createdBy
array Includes details about the user who created the framework, such as their profile id, name, and email.
name
string Unique, request-friendly framework name.
displayName
string Unique, human-readable framework name.
description
string The framework description.
classifiers
array The identifiers in the framework and any overrides for those identifiers.
GET
sdd/classifier
GET
sdd/template
GET
sdd/classifier/{classifierName}
GET
sdd/template/{templateName}
sortField
string The field to sort the search results: id, name, displayName, type, createdAt, or updatedAt.
No
sortOrder
string Denotes whether to sort the results in ascending (asc) or descending (desc) order. Default is asc.
No
offSet
integer Use in combination with limit to fetch pages.
No
limit
integer Limits the number of results displayed per page.
count
integer The number of identifiers found matching the search criteria.
createdBy
array Includes details about the user who created the identifier, such as their profile id, name, and email.
name
string Unique, request-friendly identifier name.
displayName
string Unique, human-readable identifier name.
description
string The identifier description.
type
string The type of identifier: regex, dictionary, columnNameRegex, or builtIn.
sortField
string The field to sort the search results: id, name, displayName, type, createdAt, or updatedAt.
No
sortOrder
string Denotes whether to sort the results in ascending (asc) or descending (desc) order. Default is asc.
No
offSet
integer Use in combination with limit to fetch pages.
No
limit
integer Limits the number of results displayed per page.
count
integer The number of identification frameworks found matching the search criteria.
id
integer The unique ID of the framework.
createdBy
array Includes details about the user who created the framework, such as their profile id, name, and email.
name
string Unique, request-friendly framework name.
displayName
string Unique, human-readable framework name.
description
string The framework description.
classifierName
string The name of the identifier.
Yes
id
integer The unique ID of the identifier.
createdBy
array Includes details about the user who created the identifier, such as their profile id, name, and email.
name
string Unique, request-friendly identifier name.
displayName
string Unique, human-readable identifier name.
description
string The identifier description.
type
string The type of identifier: regex, dictionary, columnNameRegex, or builtIn.
templateName
string The name of the identification framework.
Yes
id
integer The unique ID of the framework.
createdBy
array Includes details about the user who created the framework, such as their profile id, name, and email.
name
string Unique, request-friendly framework name.
displayName
string Unique, human-readable framework name.
description
string The framework description.
classifiers
array The identifiers in the framework and any overrides for those identifiers.
id
integer The unique ID of the framework.
name
string Unique, request-friendly framework name.
displayName
string Unique, human-readable framework name.
description
string The framework description.
classifiers
array The identifiers in the framework and any overrides for those identifiers.
createdBy
array Includes details about the user who created the framework, such as their profile id, name, and email.
template
string The name of the identification framework to apply to the data sources. null to clear current framework, and the data source will use the global framework.
Yes
sources
string The name of the data sources to apply the framework to.
Yes
success
boolean When true, the request was successful.
sources
string The name of the data sources to apply the identification framework to.
Yes
all
boolean If true, SDD will run on all Immuta data sources.
No
wait
integer The number of seconds to wait for the SDD jobs to finish. The value -1 will wait until the jobs complete. Default is -1.
No
dryRun
boolean When true, SDD will not update the tags on the data source(s). Instead of applying tags, SDD returns the tags that would be applied to the data source. This allows users to evaluate whether or not identifiers or frameworks are applying tags correctly without updating the data source. Default is false.
id
string The unique identifier of the job.
state
string The job state. Statuses include created, retry, active, completed, expired, cancelled, or failed.
output
array[string] Information about the tags applied on the data source, including diff (added and removed tags) and the current state of allTags on all columns in the data sources.
PUT
/sdd/classifier/{classifierName}
POST
sdd/classifier/template/{templateName}/clone
PUT
/sdd/template/{templateName}
classifierName
string The name of the identifier to update.
Yes
name
string Unique, request-friendly identifier name. Must be uppercase letters or numbers.
Yes
displayName
string Unique, human-readable identifier name.
Yes
description
string The identifier description.
Yes
type
string The type of identifier: regex, dictionary, columnNameRegex, or builtIn.
createdBy
array Includes details about the user who created the identifier, such as their profile id, name, and email.
name
string Unique, request-friendly identifier name.
displayName
string Unique, human-readable identifier name.
description
string The identifier description.
type
string The type of identifier: regex, dictionary, columnNameRegex, or builtIn.
config
object The configuration of the identifier, which includes config.values, config.caseSensitive, config.regex, config.columnNameRegex, and config.tags.
templateName
string The name of the identification framework to clone.
Yes
name
string Unique, request-friendly framework name for the cloned framework.
Yes
displayName
string Unique, human-readable framework name for the cloned framework.
Yes
description
string The cloned framework description.
No
id
integer The unique ID of the framework.
createdBy
array Includes details about the user who created the framework, such as their profile id, name, and email.
name
string Unique, request-friendly framework name.
displayName
string Unique, human-readable framework name.
description
string The framework description.
classifiers
array The identifiers in the framework and any overrides for those identifiers.
templateName
string The name of the identification framework to update.
Yes
name
string Unique, request-friendly framework name. Must be uppercase letters or numbers.
Yes
displayName
string Unique, human-readable framework name.
Yes
description
string The framework description.
Yes
classifiers
array The identifiers to include in the framework and any additional overrides for those identifiers.
id
integer The unique ID of the framework.
createdBy
array Includes details about the user who created the framework, such as their profile id, name, and email.
name
string Unique, request-friendly framework name.
displayName
string Unique, human-readable framework name.
description
string The framework description.
classifiers
array The identifiers in the framework and any overrides for those identifiers.
DELETE
/sdd/classifier/{classifierName}
DELETE
/sdd/template/{templateName}
classifierName
string The name of the identifier to delete.
Yes
createdBy
array Includes details about the user who created the identifier, such as their profile id, name, and email.
name
string Unique, request-friendly identifier name.
displayName
string Unique, human-readable identifier name.
description
string The identifier description.
type
string The type of identifier: regex, dictionary, columnNameRegex, or builtIn.
config
object The configuration of the identifier, which includes config.values, config.caseSensitive, config.regex, config.columnNameRegex, and config.tags.
templateName
string The name of the identification framework to delete.
Yes
id
integer The unique ID of the framework.
createdBy
array Includes details about the user who created the framework, such as their profile id, name, and email.
name
string Unique, request-friendly framework name.
displayName
string Unique, human-readable framework name.
description
string The framework description.
classifiers
array The identifiers in the framework and any overrides for those identifiers.
Yes
Yes
No
No
No
Yes
Yes
curl \
--request POST \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
--data @example-payload.json \
https://your-immuta-url.immuta.com/sdd/classifier{
"name": "MY_REGEX_IDENTIFIER",
"displayName": "My Regex Identifier",
"description": "A regex identifier example",
"type": "regex",
"config": {
"regex": "^[A-Z][a-z]+",
"tags": ["Discovered.regex-example"],
"minConfidence": 0.9
}
}{
"name": "MY_DICTIONARY_IDENTIFIER",
"displayName": "My Dictionary Identifier",
"description": "A dictionary identifier example",
"type": "dictionary",
"config": {
"values": ["Bob", "Eve"],
"caseSensitive": true,
"tags": ["Discovered.dictionary-example", "Discovered.dictionary-identifier-example"],
"minConfidence": 0.9
}
}{
"name": "MY_COLUMN_NAME_IDENTIFIER",
"displayName": "My Column Name Identifier",
"description": "A column name identifier example",
"type": "columnNameRegex",
"config": {
"columnNameRegex": "ssn|social ?security",
"tags": ["Discovered.column-name-regex"],
"minConfidence": 0.9
}
}{
"createdBy": {
"id": 1,
"name": "John",
"email": "[email protected]"
},
"name": "MY_REGEX_IDENTIFIER",
"displayName": "My Regex Identifier",
"description": "A regex identifier example",
"type": "regex",
"config": {
"tags": [
"Discovered.regex-example"
],
"regex": "^[A-Z][a-z]+",
"minConfidence": 0.9
},
"id": 67,
"createdAt": "2021-10-14T18:48:56.289Z",
"updatedAt": "2021-10-14T18:48:56.289Z"
}curl \
--request POST \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
--data @example-payload.json \
https://your-immuta-url.immuta.com/sdd/template{
"name": "MY_FIRST_FRAMEWORK",
"displayName": "My First Framework",
"description": "This is the first framework I've created.",
"classifiers": [
{
"name": "MY_COLUMN_NAME_IDENTIFIER"
},
{
"name": "MY_REGEX_IDENTIFIER"
},
{
"name": "AGE",
"overrides": {
"tags": [
"Discovered.Entity.Age"
]
}
}
]
}{
"name": "MY_FIRST_FRAMEWORK",
"displayName": "My First Framework",
"description": "This is the first framework I've created.",
"createdBy": {
"id": 1,
"name": "John",
"email": "[email protected]"
},
"id": 1,
"createdAt": "2021-10-14T19:12:22.092Z",
"updatedAt": "2021-10-14T19:12:22.092Z",
"classifiers": [
{
"name": "MY_COLUMN_NAME_REGEX_IDENTIFIER",
"overrides": {}
},
{
"name": "MY_REGEX_IDENTIFIER",
"overrides": {}
}
]
}curl \
--request GET \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
https://your-immuta-url.immuta.com/sdd/classifier?sortField=name&sortOrder=asc&limit=5{
"count": 67,
"hits": [
{
"createdBy": {
"id": 21,
"name": "Immuta System Account",
"email": "[email protected]"
},
"name": "AGE",
"displayName": "Age",
"description": "Matches numeric strings between 10 and 199.",
"type": "builtIn",
"config": {
"tags": ["Discovered.Entity.Age"],
"conditionalTags": {}
},
"id": 3,
"createdAt": "2021-10-28T07:34:58.761Z",
"updatedAt": "2021-10-28T07:34:58.761Z"
},
{
"createdBy": {
"id": 21,
"name": "Immuta System Account",
"email": "[email protected]"
},
"name": "ARGENTINA_DNI_NUMBER",
"displayName": "Argentina DNI Number",
"description": "Matches strings consistent with Argentina National Identity (DNI) Number. Requires an eight digit number with optional periods between the second and third and fifth and sixth digit.",
"type": "builtIn",
"config": {
"tags": [
"Discovered.Country.Argentina",
"Discovered.Entity.DNI Number"
],
"conditionalTags": {}
},
"id": 4,
"createdAt": "2021-10-28T07:34:58.769Z",
"updatedAt": "2021-10-28T07:34:58.769Z"
},
{
"createdBy": {
"id": 21,
"name": "Immuta System Account",
"email": "[email protected]"
},
"name": "AUSTRALIA_MEDICARE_NUMBER",
"displayName": "Australia Medicare Number",
"description": "Matches numeric strings consistent with Australian Medicare Number. Requires a ten or eleven digit number. The starting digit must be between 2 and 6, inclusive. Optional spaces can be placed between the fourth and fifth and ninth and tenth digit. Optional 11th separated by a `/` can be present. A checksum is required.",
"type": "builtIn",
"config": {
"tags": [
"Discovered.Country.Australia",
"Discovered.Entity.Medicare Number"
],
"conditionalTags": {}
},
"id": 5,
"createdAt": "2021-10-28T07:34:58.779Z",
"updatedAt": "2021-10-28T07:34:58.779Z"
},
{
"createdBy": {
"id": 21,
"name": "Immuta System Account",
"email": "[email protected]"
},
"name": "AUSTRALIA_PASSPORT",
"displayName": "Australia Passport",
"description": "Matches strings consistent with Australian Passport number. A 8 or 9 character string is required, with a starting upper case character (N, E, D, F, A, C, U, X) or a two character starting character (P followed by A, B, C, D, E, F, U, W, X, or Z) followed by seven digits",
"type": "builtIn",
"config": {
"tags": [
"Discovered.Country.Australia",
"Discovered.Entity.Passport"
],
"conditionalTags": {}
},
"id": 26,
"createdAt": "2021-10-28T07:34:59.010Z",
"updatedAt": "2021-10-28T07:34:59.010Z"
},
{
"createdBy": {
"id": 21,
"name": "Immuta System Account",
"email": "[email protected]"
},
"name": "AUSTRALIA_TAX_FILE_NUMBER",
"displayName": "Australia Tax File Number",
"description": "Matches strings consistent with Australia Tax File Number. Requires a nine digit number with optional spaces between the third and fourth and sixth and seventh digits. A checksum is also required",
"type": "builtIn",
"config": {
"tags": [
"Discovered.Country.Australia",
"Discovered.Entity.Tax File Number"
],
"conditionalTags": {}
},
"id": 6,
"createdAt": "2021-10-28T07:34:58.789Z",
"updatedAt": "2021-10-28T07:34:58.789Z"
}
]
}curl \
--request GET \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
https://your-immuta-url.immuta.com/sdd/template{
"count": 1,
"hits": [
{
"name": "MY_FIRST_FRAMEWORK",
"displayName": "My First Framework",
"description": "This is the first framework I've created.",
"createdBy": {
"id": 1,
"name": "John",
"email": "[email protected]"
},
"id": 1,
"createdAt": "2021-10-14T19:12:22.092Z",
"updatedAt": "2021-10-14T19:12:22.092Z",
"classifiers": [
{
"name": "MY_COLUMN_NAME_IDENTIFIER",
"overrides": {}
},
{
"name": "MY_REGEX_IDENTIFIER",
"overrides": {}
}
]
}
]
}curl \
--request GET \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
https://your-immuta-url.immuta.com/sdd/classifier/MY_REGEX_IDENTIFIER{
"createdBy": {
"id": 1,
"name": "John",
"email": "[email protected]"
},
"name": "MY_REGEX_IDENTIFIER",
"displayName": "My Regex Identifier",
"description": "A regex identifier example",
"type": "regex",
"config": {
"tags": [
"Discovered.regex-example"
],
"regex": "^[A-Z][a-z]+"
},
"id": 67,
"createdAt": "2021-10-18T16:48:18.819Z",
"updatedAt": "2021-10-18T16:48:18.819Z"
}curl \
--request GET \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
https://your-immuta-url.immuta.com/sdd/template/MY_FIRST_FRAMEWORK{
"name": "MY_FIRST_FRAMEWORK",
"displayName": "My First Framework",
"description": "This is the first framework I've created.",
"createdBy": {
"id": 1,
"name": "John",
"email": "[email protected]"
},
"id": 1,
"createdAt": "2021-10-18T16:54:24.920Z",
"updatedAt": "2021-10-18T16:54:24.920Z",
"classifiers": [
{
"name": "MY_DICTIONARY_IDENTIFIER",
"overrides": {}
},
{
"name": "MY_REGEX_IDENTIFIER",
"overrides": {}
}
]
}curl -X 'GET' \
'https://demo.immuta.com/sdd/template/global' \
-H 'accept: application/json' \
-H 'Authorization: Bearer 9ba76f3c64c345ad817fa467d7110556'{
"name": "MY_FIRST_FRAMEWORK",
"displayName": "My First Framework",
"description": "This is the first framework I've created.",
"createdBy": {
"id": 2,
"name": "Jane Doe",
"email": "[email protected]"
},
"id": 1,
"createdAt": "2022-08-10T20:35:43.252Z",
"updatedAt": "2022-08-10T20:35:43.252Z",
"classifiers": [
{
"name": "AGE",
"overrides": {}
},
{
"name": "ETHNIC_GROUP",
"overrides": {}
}
]
}curl \
--request PUT \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
--data @example-payload.json \
https://your-immuta-url.immuta.com/sdd/template/apply{
"template": "MY_FIRST_FRAMEWORK",
"sources": [
"Public Case"
]
}{
"success": true
}curl \
--request POST \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
--data @example-payload.json \
https://your-immuta-url.immuta.com/sdd/run{
"sources": [
"Insurance Data"
]
}{
"Insurance Data": {
"id": "d2edc1d0-328c-11ec-9d5a-6793988ccf95",
"state": "completed",
"output": {
"diff": {
"addedTags": {
"ssn": [
"Discovered.Social Security Number"
],
"email": [
"Discovered.Electronic Mail Address"
]
},
"removedTags": {
"ssn": [
"Discovered.Country.US"
]
}
},
"sddTagResult": {
"ssn": ["Discovered.Entity.Social Security Number"],
"email": ["Discovered.Entity.Electronic Mail Address"]
}
}
}
}curl \
--request POST \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
--data @example-payload.json \
https://your-immuta-url.immuta.com/sdd/run{
"all": true
}{
"Insurance Data": {
"id": "d2edc1d0-328c-11ec-9d5a-6793988ccf95",
"state": "completed",
"output": {
"diff": {
"addedTags": {
"ssn": [
"Discovered.Social Security Number"
],
"email": [
"Discovered.Electronic Mail Address"
]
},
"removedTags": {
"ssn": [
"Discovered.Country.US"
]
}
},
"sddTagResult": {
"ssn": ["Discovered.Entity.Social Security Number"],
"email": ["Discovered.Entity.Electronic Mail Address"]
}
}
}
"Finance Data": {
"id": "d2edc1d0-328c-11ec-9d5a-695e896d59s",
"state": "completed",
"output": {
"diff": {
"addedTags": {
"ssn": [
"Discovered.Social Security Number"
],
"email": [
"Discovered.Electronic Email Address"
]
},
"removedTags": {
"ssn": [
"Discovered.Country.US"
]
}
},
"sddTagResult": {
"ssn": ["Discovered.Entity.Social Security Number"],
"email": ["Discovered.Entity.Electronic Mail Address"]
}
}
}
}curl \
--request POST \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
--data @example-payload.json \
https://your-immuta-url.immuta.com/sdd/run{
"sources": [
"Medical Claims"
],
"dryRun": true,
"template": "PII_REVISION"
}{
"Medical Claims": {
"id": "86fc4f70-380f-11ec-a432-81748c911385",
"state": "completed",
"output": {
"diff": {
"addedTags": {},
"removedTags": {
"dob": [
"Discovered.Entity.Date",
"Discovered.Entity.Date of Birth",
],
"ssn": [
"Discovered.Country.US",
"Discovered.Entity.Social Security Number",
],
"state": [
"Discovered.Country.US",
"Discovered.Entity.Location",
"Discovered.Entity.State",
],
"gender": ["Discovered.Entity.Gender"],
"date_of_service": ["Discovered.Entity.Date"]
}
},
"sddTagResult": {
"ssn": [
"Discovered.Social Security Number"
]
}
}
}
}curl \
--request PUT \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
--data @example-payload.json \
https://your-immuta-url.immuta.com/sdd/classifier/MY_REGEX_IDENTIFIER{
"name": "REGULAR_EXPRESSIONS",
"displayName": "Regular Expressions",
"description": "An identifier example using regex.",
"type": "regex",
"config": {
"regex": "^[A-Z][a-z]+",
"tags": ["Discovered.regex-example"]
}
}{
"createdBy": {
"id": 1,
"name": "John",
"email": "[email protected]"
},
"name": "REGULAR_EXPRESSIONS",
"displayName": "Regular Expressions",
"description": "An identifier example using regex.",
"type": "regex",
"config": {
"tags": [
"Discovered.regex-example"
],
"regex": "^[A-Z][a-z]+"
},
"id": 67,
"createdAt": "2021-10-14T18:48:56.289Z",
"updatedAt": "2021-10-19T12:48:56.289Z"
}curl \
--request POST \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
--data @example-payload.json \
https://your-immuta-url.immuta.com/sdd/template/MY_FIRST_FRAMEWORK/clone{
"name": "CLONE_OF_FIRST_FRAMEWORK",
"displayName": "Clone of My First Framework",
"description": "This is a clone of my first framework."
}{
"name": "CLONE_OF_FIRST_FRAMEWORK",
"displayName": "Clone of My First Framework",
"description": "This is a clone of my first framework.",
"createdBy": {
"id": 1,
"name": "John",
"email": "[email protected]"
},
"id": 4,
"createdAt": "2021-10-19T16:21:17.660Z",
"updatedAt": "2021-10-19T16:21:17.660Z",
"classifiers": [
{
"name": "MY_COLUMN_NAME_REGEX_IDENTIFIER",
"overrides": {}
},
{
"name": "MY_REGEX_IDENTIFIER",
"overrides": {}
}
]
}curl \
--request PUT \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
--data @example-payload.json \
https://your-immuta-url.immuta.com/sdd/template/MY_FIRST_FRAMEWORK{
"name": "HEALTH_DATA",
"displayName": "Health Data",
"description": "This framework uses the column regex and regex identifiers.",
"classifiers": [
{
"name": "MY_COLUMN_NAME_REGEX_IDENTIFIER"
},
{
"name": "REGULAR_EXPRESSION"
}
]
}{
"name": "HEALTH_DATA",
"displayName": "Health Data",
"description": "This framework uses the column regex and regex identifiers.",
"createdBy": {
"id": 1,
"name": "John",
"email": "[email protected]"
},
"id": 1,
"createdAt": "2021-10-14T19:12:22.092Z",
"updatedAt": "2021-10-20T19:12:22.092Z",
"classifiers": [
{
"name": "MY_COLUMN_NAME_REGEX_IDENTIFIER",
"overrides": {}
},
{
"name": "REGULAR_EXPRESSION",
"overrides": {}
}
]
}curl \
--request DELETE \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
https://your-immuta-url.immuta.com/sdd/classifier/REGULAR_EXPRESSION{
"createdBy": {
"id": 1,
"name": "John",
"email": "[email protected]"
},
"name": "REGULAR_EXPRESSION",
"displayName": "Regular Expression",
"description": "This identifier uses regular expression",
"type": "regex",
"config": {
"tags": [
"Discovered.regex-example"
],
"regex": "^[A-Z][a-z]+"
},
"id": 67,
"createdAt": "2021-10-19T15:54:28.695Z",
"updatedAt": "2021-10-19T16:00:02.329Z"
}curl \
--request DELETE \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
https://your-immuta-url.immuta.com/sdd/template/HEALTH_DATA{
"name": "HEALTH_DATA",
"displayName": "Health Data",
"description": "This is a framework for health data.",
"createdBy": {
"id": 1,
"name": "John",
"email": "[email protected]"
},
"id": 1,
"createdAt": "2021-10-19T16:07:39.356Z",
"updatedAt": "2021-10-19T16:07:39.356Z",
"classifiers": [
{
"name": "MY_COLUMN_NAME_REGEX_IDENTIFIER",
"overrides": {}
}
]
}Projects API reference guide
This page details how to use the projects API to query projects and the data sources associated with them in Immuta.
.
.
.
.
.
.
POST /project
Create the project.
This example request with the payload below will create a new project.
This example payload will create a new project named API Project.
GET /project
Search for projects.
This example request gets a list of all of the projects.
GET /project/{projectId}
Get the project with the given ID.
This example gets the project object for the project with the ID 2.
PUT /project/{projectId}
Update the project with the given ID.
This example request with the payload below will update the project with the project ID 2.
Example request payload
This example payload will update the project to be named Documentation Project.
GET /project/{projectId}/activity
Get all of the recent activity for a given project.
This example gets one activity for the project with the project ID 2.
GET /project/{projectId}/checkEqualizationState
Get current state of an equalized project.
This example gets the state of project equalization of the project with the project ID 2.
GET /project/{projectId}/members
Get all of the members for a given project.
This request gets all of the members of the project with the project ID 2.
POST /project/{projectId}/checkEqualizedAuths
Check that all members meet the provided equalized entitlements.
This request with the payload below will check if the requesting user is in the "View Masked Values" group.
Payload example
POST /project/{projectId}/members
Add a member to the project.
This example request with the payload below will add a new member to the project with the project ID 1.
Example request payload
PUT /project/{projectId}/members/{subscriptionId}
Update a member of the project.
This example request with the payload below will update the user with the subscription ID 2 to be a subscriber of the project with the project ID 3.
Payload example
GET project/{projectId}/dataSources
Get all of the data sources for a given project.
This example gets the data source details for all of the data sources of the project with the project ID 2.
DELETE /project/{projectId}/dataSources
Remove supplied data sources from the project.
This example request deletes the data source with the ID 8 from the project with the project ID 2.
POST /project/{projectId}/dataSources
Adds data sources to a project.
This example request with the payload below will add the data source with the data source ID 1 to the project with the project ID 1.
Example request payload
This example payload will add the data source with the data source ID 2 to the project.
PUT /project/{projectId}/dataSources/{dataSourceId}
Updates the reason for adding a data source to a project.
This example request with the payload below will update the reason that the data source with the data source ID 1 was added to the project with the project ID 1.
None.
DELETE /project/{projectId}/unsubscribe
Unsubscribe from a project.
This example request unsubscribes the user from the project with the project ID 5.
POST /project/current/{projectId}
Set the current project ID the current user is acting under.
This example request sets the current project to act under as the project with the project ID 1.
NonePOST /project/current/null
Set the to None.
POST /project/{projectId}/members/{subscriptionId}/acknowledge
Acknowledge all the restrictions on this project.
This example request acknowledges all of the purposes in the project with the project ID 1.
Payload example
DELETE /project/{projectId}
Delete the project with the given ID.
This example request will delete the project with the project ID 4.
description
string Project description.
No
documentation
string Project documentation.
No
tags
array Project tags.
No
purposes
array Project purposes.
No
stagedPurposes
array Project purposes staged for approval.
No
deleted
boolean If true, the project will be deleted.
No
snowflake
array This enables a Snowflake workspace for the project and details the schema, hostname, and warehouse.
No
allowMaskedJoins
boolean If true, masked joins will be allowed.
No
subscriptionPolicy
array[object] A policy object for the Subscription Policy on the project. Details include type, exceptions, conditions, allowDiscovery, and automaticSubscription. If this is not set, it will be the default manual.
No
subscriptionType
string The type of subscription policy on the project. The type can be automatic (which allows anyone to subscribe), approval (which requires the subscriber to be manually approved), policy (which only allows users with specific groups or attributes to subscribe), or manual (which requires users to be manually added).
No
equalization
array Details the policy conditions of the equalization, including the configured (or recommended) user groups and attributes.
No
workspace
array Information on workspaces in the project.
No
type
string The type of Immuta project, either user created project (user) or system generated project (schema).
No
createdAt
timestamp Date of the project creation.
No
updatedAt
timestamp Date of the most recent update.
No
tags
array Project tags.
purposes
array Project purposes.
stagedPurposes
array Project purposes staged for approval.
deleted
boolean If true, the project has been deleted.
snowflake
array If a Snowflake workspace has been enabled for the project, this attribute will detail the schema, hostname, and warehouse.
allowMaskedJoins
boolean If true, masked joins are allowed.
subscriptionPolicy
array[object] A policy object for the Subscription Policy on the project. Details include type, exceptions, conditions, allowDiscovery, and automaticSubscription.
subscriptionType
string The type of subscription policy on the project. The type can be automatic (which allows anyone to subscribe), approval (which requires the subscriber to be manually approved), policy (which only allows users with specific groups or attributes to subscribe), or manual (which requires users to be manually added).
equalization
array Details the policy conditions of the equalization, including the configured (or recommended) user groups and attributes.
workspace
array Information on workspaces in the project.
type
string The type of Immuta project, either user created project (user) or system generated project (schema).
createdAt
timestamp Date of the project creation.
updatedAt
timestamp Date of the most recent update.
workspaceWarnings
string This message describes issues with the created workspace.
subscription
array[string] Filters projects by subscription types, which must be automatic, approval, or policy.
No
status
array[string] Filters projects based on their status: open or closed.
No
searchText
string Searches text. By default this will filter projects by name, description, documentation, category, and organization.
No
tag
array[string] Filters projects by tags associated with the projects.
No
nameOnly
boolean If true, searchText will only filter by project name, allowing you to retrieve specific projects. The default is false.
No
isEqualized
boolean If true, only equalized projects will be included.
No
snowflake
boolean If true, only projects with a Snowflake workspace will be included.
No
dataSourceId
integer Filters projects by whether they have the data source associated with the data source ID.
No
mode
integer Specifies the query mode, which must be 0 (FULL), 1 (COUNT), 4 (TAG), 5 (MIN_MAX), or 6 (STATUS).
No
description
string Project description.
documentation
string Project documentation.
tags
array Project tags.
purposes
array Project purposes.
stagedPurposes
array Project purposes staged for approval.
deleted
boolean If true, the project has been deleted.
snowflake
array If a Snowflake workspace has been enabled for the project, this attribute will detail the schema, hostname, and warehouse.
allowMaskedJoins
boolean If true, masked joins are allowed.
subscriptionPolicy
array[object] A policy object for the Subscription Policy on the project. Details include type, exceptions, conditions, allowDiscovery, and automaticSubscription.
subscriptionType
string The type of subscription policy on the project. The type can be automatic (which allows anyone to subscribe), approval (which requires the subscriber to be manually approved), policy (which only allows users with specific groups or attributes to subscribe), or manual (which requires users to be manually added).
equalization
array Details the policy conditions of the equalization, including the configured (or recommended) user groups and attributes.
workspace
array Information on workspaces in the project.
type
string The type of Immuta project, either user created project (user) or system generated project (schema).
createdAt
timestamp Date of the project creation.
updatedAt
timestamp Date of the most recent update.
acknowledgeRequired
boolean When true, the requesting user has not yet agreed to the project acknowledgement.
subscriptionId
integer The project member's subscription ID.
subscribedAsUser
boolean If true, the user running the request is currently subscribed.
subscriptionStatus
string Subscription status of the user running the request.
filterId
integer Corresponds with the ID of the project.
facets
array Facets (categories) relevant to the search.
tags
array Project tags.
purposes
array Project purposes.
stagedPurposes
array Project purposes staged for approval.
deleted
boolean If true, the project has been deleted.
snowflake
array If a Snowflake workspace has been enabled for the project, this attribute will detail the schema, hostname, and warehouse.
allowMaskedJoins
boolean If true, masked joins are allowed.
subscriptionPolicy
array[object] A policy object for the Subscription Policy on the project. Details include type, exceptions, conditions, allowDiscovery, and automaticSubscription.
subscriptionType
string The type of subscription policy on the project. The type can be automatic (which allows anyone to subscribe), approval (which requires the subscriber to be manually approved), policy (which only allows users with specific groups or attributes to subscribe), or manual (which requires users to be manually added).
equalization
array Details the policy conditions of the equalization, including the configured (or recommended) user groups and attributes.
workspace
array Information on workspaces in the project.
type
string The type of Immuta project, either user created project (user) or system generated project (schema).
createdAt
timestamp Date of the project creation.
updatedAt
timestamp Date of the most recent update.
acknowledgeRequired
boolean When true, the requesting user has not yet agreed to the project acknowledgement.
subscriptionId
integer The project member's subscription ID.
subscribedAsUser
boolean If true, the user running the request is currently subscribed.
subscriptionStatus
string Subscription status of the user running the request.
status
string Accepted statuses are open or closed.
No
subscriptionType
string The type of subscription policy on the project. The type can be automatic (which allows anyone to subscribe), approval (which requires the subscriber to be manually approved), policy (which only allows users with specific groups or attributes to subscribe), or manual (which requires users to be manually added).
No
tags
array The project's new tags.
No
purposes
array The project's new purposes.
No
stagedPurposes
array The project's new purposes staged for approval.
No
deleted
boolean If true, the project will be deleted.
No
snowflake
array This enables a Snowflake workspace for the project and details the schema, hostname, and warehouse.
No
allowMaskedJoins
boolean If true, masked joins will be allowed.
No
subscriptionPolicy
array[object] A policy object for the Subscription Policy on the project. Details include type, exceptions, conditions, allowDiscovery, and automaticSubscription. If this is not set, it will be the default manual.
No
equalization
array Details the policy conditions of the equalization, including the configured (or recommended) user groups and attributes.
No
workspace
array Information on workspaces in the project.
No
tags
array Project tags.
purposes
array Project purposes.
stagedPurposes
array Project purposes staged for approval.
deleted
boolean If true, the project will be deleted.
snowflake
array If a Snowflake workspace has been enabled for the project, this attribute will detail the schema, hostname, and warehouse.
allowMaskedJoins
boolean If true, masked joins will be allowed.
subscriptionPolicy
array[object] A policy object for the Subscription Policy on the project. Details include type, exceptions, conditions, allowDiscovery, and automaticSubscription.
subscriptionType
string The type of subscription policy on the project. The type can be automatic (which allows anyone to subscribe), approval (which requires the subscriber to be manually approved), policy (which only allows users with specific groups or attributes to subscribe), or manual (which requires users to be manually added).
equalization
array Details the policy conditions of the equalization, including the configured (or recommended) user groups and attributes.
workspace
array Information on workspaces in the project.
type
string The type of Immuta project, either user created project (user) or system generated project (schema).
createdAt
timestamp Date of the project creation.
updatedAt
timestamp Date of the most recent update.
workspaceWarnings
string This message describes issues with the created workspace.
actionBy
array The user data for the user who took the action.
targetUser
array The user data for the user who the action was directed towards.
targetGroup
array The group data for the group who the action was directed towards.
metadata
array Details about the action. For example, if the notificationType was modelCreated, the metadata attribute would include the project name.
createdAt
timestamp Date the action was taken.
updatedAt
timestamp Date of the most recent activity on the action.
read
boolean If true, the activity has been viewed.
unread
integer The number of unviewed activities on that project.
sortOrder
string Sorts results by order, which must be asc or desc. The default is asc.
No
searchText
string Searches text of member names.
No
approved
boolean Filters results based on whether or not members' subscription status has been approved.
No
checkDataSources
boolean When true, will check if users' meet the compliance requirements set on data sources within the project.
No
expandGroups
boolean
No
string The user's email.
type
string The type of Immuta project, either user created project (user) or system generated project (schema).
approved
boolean When true, the members' subscription status has been approved.
state
string The user's relationship to the project. Options include owner, not_subscribed, pending, subscribed, and expert.
systemGenerated
boolean When true, the user is a system generated account.
lastExternalRefresh
timestamp The date of the last time this user's information was updated from an external IAM.
subscriptionId
integer The project member's subscription ID.
createdAt
timestamp The date that this user was created in Immuta.
updatedAt
timestamp The date of the most recent update of the user.
approvals
array Details on how this new member will fit into the project's approval process.
compliance
array Details about the compliance requirements of the project, including missingDataSources and invalidSubscriptions.
group
array Includes the group id, name, and iam.
No
approvals
array Details on how this new member will fit into the project's approval process.
No
sortField
string Used to sort results by field. Options include addedBy, addedOn, and dataSourceName. The default is dataSourceName.
No
sortOrder
string Sorts results by order, which must be asc or desc. The default is asc.
No
unsubscribed
boolean If true, filters by unsubscribed status (includes data sources with a pending subscription). If false, filters by subscribed status.
No
subscription
string Searches based on the subscription status of the user. Options include not_subscribed, owner, pending, or subscribed.
No
dataSourceId
integer The data source ID.
addedByProfile
integer The profile ID of the user who added the data source to the project.
deleted
boolean If true, the data source has been deleted.
subscriptionType
string The type of subscription policy on the project. The type can be automatic (which allows anyone to subscribe), approval (which requires the subscriber to be manually approved), policy (which only allows users with specific groups or attributes to subscribe), or manual (which requires users to be manually added).
subscriptionStatus
string
subscriptionPolicy
array[object] A policy object for the Subscription Policy on the data source. Details include type, exceptions, conditions, allowDiscovery, and automaticSubscription.
connectionString
string The data source connection string.
blobHandlerType
string The data platform.
derivedInThisProject
boolean If true, this data source was created as a derived data source in this project.
id
integer Project ID.
Yes
projectKey
string Name of the project.
Yes
name
string Name of the project.
Yes
status
string (Accepted statuses are open or closed.)
id
integer Project ID.
projectKey
string Name of the project.
name
string Name of the project.
status
string (Statuses are open or closed.)
description
string Project description.
documentation
string Project documentation.
GET
/project
GET
/project/{projectId}
offset
integer Used in combination with size to fetch pages. The default is 0.
No
size
integer The number of results to return per page.
No
sortField
string Used to sort results by field.
No
sortOrder
string Sorts results by order, which must be asc or desc. The default is asc.
count
integer Number of projects found.
hits
array Details about each project listed.
id
integer The project ID.
projectKey
string Name of the project.
name
string Name of the project.
status
string Statuses are open or closed.
projectId
integer The project ID.
Yes
checkForSqlAccount
boolean Default is true.
No
id
integer Project ID.
projectKey
string Name of the project.
name
string Name of the project.
status
string Statuses are open or closed.
description
string Project description.
documentation
string Project documentation.
PUT
/project/{projectId}
GET
/project/{projectId}/activity
GET
/project/{projectId}/checkEqualizationState
projectId
integer The project ID.
Yes
deleteDataSources
boolean If true, the data sources in the project will be deleted.
No
type
string The type of Immuta project, either user created project (user) or system generated project (schema).
No
name
string The project's new name.
No
description
string The project's new description.
No
documentation
string The project's new documentation.
id
integer Project ID.
projectKey
string Name of the project.
name
string Name of the project.
status
string Statuses are open or closed.
description
string Project description.
documentation
string Project documentation.
projectId
integer The project ID.
Yes
offset
integer Used in combination with size to fetch pages.
No
size
integer Used to select the number of activities.
No
count
integer The total number of actions.
activities
array The id, modelType, modelId, notificationType, actionsBy, targetUser, targetGroup, additionalText, array, createdAt, updatedAt, and read for each action listed.
id
integer The activity ID.
modelType
string The Immuta feature the activity is attached to.
modelId
string The ID of the Immuta feature the activity is attached to.
notificationType
string The type of activity or notification, such as modelCreated, modelUserAdded, or projectUpdated.
projectId
integer The project ID.
Yes
equalizationState
string The state of the project's equalization. Options include: off, recommended, active, upgrade, or nonCompliantMembers.
GET
/project/{projectId}/members
POST
/project/{projectId}/checkEqualizedAuths
POST
/project/{projectId}/members
PUT
/project/{projectId}/members/{subscriptionId}
projectId
integer The project ID.
Yes
offset
integer Used in combination with size to fetch pages.
No
size
integer The number of results to return per page.
No
sortField
string Sorts results by field. The default is name.
count
integer The number of members in the project.
members
array The profile, name, iamId, userId, email, type, approved, state, systemGenerated, lastExternalRefresh, subscriptionId, createdAt, updatedAt, approvals, currentUserCanApprove, and compliance for each member result.
profile
integer The user's profile ID.
name
string The user's name.
iamId
string The ID of the IAM, which is configured on the App Settings page.
userId
string The user's Immuta username.
projectId
integer The project ID.
Yes
conditionsObj
array Details containing operator, conditions, type, group, and field values.
Yes
operator
string
Yes
conditions
array Details containing type, group, and field.
Yes
type
string The type of Immuta project, either user created project (user) or system generated project (schema).
validSet
boolean When true, users meet the specified entitlements.
usersMissingAuths
array Metadata about the user (name and subscription id) and the name of the group they're missing.
projectId
integer The project ID.
Yes
profileId
integer The new user's ID.
Yes
groupId
integer The group ID that the new user is a part of. This will add a whole group.
No
state
string The new user's connection to the project. Options include owner, not_subscribed, pending, subscribed, and expert.
No
expiration
timestamp The date when the member should no longer have access to the project.
projectId
integer The project ID.
Yes
subscriptionId
integer The project member's subscription ID.
Yes
state
array[string] The user's role in the project. Options include owner, not_subscribed, pending, subscribed, and expert.
Yes
expiration
timestamp The date when the member should no longer have access to the project.
No
state
array[string] The user's role in the project. Options include owner, not_subscribed, pending, subscribed, and expert.
expiration
timestamp The date when the member should no longer have access to the project.
GET
/project/{projectId}/dataSources
DELETE
/project/{projectId}/dataSources
POST
/project/{projectId}/dataSources
PUT
/project/{projectId}/dataSources/{dataSourceId}
projectId
integer The project ID.
Yes
offset
integer Used in combination with size to fetch pages.
No
searchText
string Searches text of the data source names.
No
size
integer The number of results to return per page.
count
integer The total number of data sources in the project.
dataSources
array[object] An array of data source objects that includes addedBy, dataSourceName, policyHandlerType, addedOn, dataSourceId, addedByProfile, deleted, subscriptionType, subscriptionStatus, subscriptionPolicy, connectionString, blobHandlerType, and derivedThisProject values for each data source.
addedBy
string The user who added the data source to the project.
dataSourceName
string The name of the data source.
policyHandlerType
string
addedOn
timestamp The date the data source was added to the project.
projectId
integer The project ID.
Yes
ids
integer The IDs of the data sources to remove from the project.
Yes
success
array The id, blobHandlerType, and name values of the data sources that have been successfully removed.
inError
array The id, blobHandlerType, and name values of the data sources that have not been successfully removed.
id
integer The data source ID.
blobHandlerType
string The type of blob handler of the data source.
name
string The data source name.
projectId
integer The project ID.
Yes
dataSourceIds
integer The data source IDs for the data sources to add to the project.
Yes
success
array The id, blobHandlerType, and name values of the data sources that have been successfully added.
inError
array The id, blobHandlerType, and name values of the data sources that have not been successfully added.
id
integer The data source ID.
blobHandlerType
string The type of blob handler of the data source.
name
string The data source name.
projectId
integer The project ID.
Yes
dataSourceId
integer The data source ID.
Yes
DELETE
/project/{projectId}/unsubscribe
POST
/project/current/{projectId}
POST
/project/current/null
POST
/project/{projectId}/members/{subscriptionId}/acknowledge
projectId
string The project ID.
Yes
projectId
integer The project ID.
Yes
projectId
integer The project ID.
Yes
subscriptionId
integer The project member's subscription ID.
Yes
text
string
Yes
acknowledgeRequired
boolean When true, the requesting user has not yet agreed to the project acknowledgement.
purposes
array Details of the purpose that has been acknowledged.
projectId
integer The project ID.
Yes
hardDelete
boolean If true, the project was permanently deleted.
Yes
No
No
No
No
No
No
curl \
--request POST \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
--data @example-payload.json \
https://demo.immuta.com/project{
"id": 4,
"projectKey": "api project",
"name": "API Project",
"status": "open",
"description": "project created with api",
"deleted": false,
"allowMaskedJoins": false,
"createdAt": "2021-09-10",
"updatedAt": "2021-09-10"
}{
"id": 4,
"projectKey": "api project",
"name": "API Project",
"status": "open",
"description": "project created with api",
"documentation": "# API Project",
"deleted": false,
"allowMaskedJoins": false,
"subscriptionType": "manual",
"subscriptionPolicy": null,
"equalization": null,
"workspace": null,
"snowflake": null,
"type": null,
"schema": null,
"createdBy": 2,
"updatedBy": 2,
"createdAt": "2021-09-10T00:00:00.000Z",
"updatedAt": "2021-09-10T00:00:00.000Z",
"schemaEvolutionId": null,
"purposes": [],
"stagedPurposes": []
}curl \
--request GET \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
https://demo.immuta.com/project{
"hits": [
{
"id": 8,
"name": "Improving Employee Onboarding and Retention",
"status": "open",
"description": null,
"deleted": false,
"updatedAt": "2021-07-14T23:14:46.210Z",
"subscriptionPolicy": null,
"createdAt": "2021-07-14T23:13:53.752Z",
"filterId": 8,
"subscriptionType": "manual",
"isEqualized": false,
"acknowledgeRequired": false,
"subscriptionStatus": "not_subscribed",
"purposeCount": 1,
"hasDeletedPurposes": false,
"workspace": null,
"type": null,
"allowMaskedJoins": false
},
{
"id": 4,
"name": "Medical Records",
"status": "open",
"description": "This project contains all data sources under the schema, medical_records, from [email protected]:1433/example.",
"deleted": false,
"updatedAt": "2021-06-22T23:24:58.766Z",
"subscriptionPolicy": null,
"createdAt": "2021-06-22T23:24:58.766Z",
"filterId": 4,
"subscriptionType": "manual",
"isEqualized": false,
"acknowledgeRequired": false,
"subscriptionStatus": "owner",
"purposeCount": 0,
"hasDeletedPurposes": false,
"workspace": null,
"type": "Schema",
"allowMaskedJoins": false
},
{
"id": 6,
"name": "sample123",
"status": "open",
"description": null,
"deleted": false,
"updatedAt": "2021-07-12T21:32:37.020Z",
"subscriptionPolicy": null,
"createdAt": "2021-07-12T21:32:37.012Z",
"filterId": 6,
"subscriptionType": "manual",
"isEqualized": false,
"acknowledgeRequired": false,
"subscriptionStatus": "not_subscribed",
"purposeCount": 1,
"hasDeletedPurposes": false,
"workspace": null,
"type": null,
"allowMaskedJoins": false
},
{
"id": 2,
"name": "test",
"status": "open",
"description": null,
"deleted": false,
"updatedAt": "2021-07-19T20:48:00.758Z",
"subscriptionPolicy": null,
"createdAt": "2021-05-19T22:50:44.190Z",
"filterId": 2,
"subscriptionType": "manual",
"isEqualized": false,
"acknowledgeRequired": false,
"subscriptionStatus": "owner",
"purposeCount": 2,
"hasDeletedPurposes": false,
"workspace": null,
"type": null,
"allowMaskedJoins": false
},
{
"id": 3,
"name": "Tpc",
"status": "open",
"description": "This project contains all data sources under the schema, tpc, from [email protected]:1433/example.",
"deleted": false,
"updatedAt": "2021-05-20T16:29:09.679Z",
"subscriptionPolicy": null,
"createdAt": "2021-05-20T16:29:09.679Z",
"filterId": 3,
"subscriptionType": "manual",
"isEqualized": false,
"acknowledgeRequired": false,
"subscriptionStatus": "owner",
"purposeCount": 0,
"hasDeletedPurposes": false,
"workspace": null,
"type": "Schema",
"allowMaskedJoins": false
}
],
"facets": {},
"count": 5
}curl \
--request GET \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
https://demo.immuta.com/project/2{
"id": 2,
"projectKey": "test",
"name": "test",
"status": "open",
"description": null,
"documentation": "# test\n\n12345",
"deleted": true,
"allowMaskedJoins": true,
"subscriptionType": "manual",
"subscriptionPolicy": null,
"equalization": null,
"workspace": null,
"snowflake": null,
"type": null,
"schema": null,
"createdBy": 2,
"updatedBy": 2,
"createdAt": "2021-05-19T22:50:44.190Z",
"updatedAt": "2021-07-29T18:30:04.066Z",
"schemaEvolutionId": null,
"subscribedAsUser": true,
"subscriptionId": 5,
"acknowledgeRequired": false,
"subscriptionStatus": "owner",
"requestedState": "owner",
"approved": true,
"subscriptionExpiration": null,
"filterId": 2,
"purposeCount": null,
"purposes": [
{
"id": 8,
"name": "Analyzing Onboarding and Job Satisfaction",
"acknowledgement": null,
"description": "Data can only be accessed for analyzing the effectiveness of current onboarding practices and trends in employee job satisfaction reasons for data access must be approved by a compliance committee.",
"addedByProfile": 2,
"displayAcknowledgement": true,
"deleted": false,
"systemGenerated": false,
"policyMetadata": null,
"createdAt": "2021-07-07T19:56:06.360Z",
"updatedAt": "2021-07-07T19:56:06.360Z",
"createdBy": 2
},
{
"id": 4,
"name": "Use Case Outside De-identification",
"acknowledgement": "I agree to use the data associated with this project for the stated purpose of the project, and for that purpose only, as listed in the project's homepage, and to refrain from sharing that data outside of the project or Immuta. In the event that I discover risks that I believe could lead to unauthorized access, I agree to immediately notify the project owner or governance team and take immediate action t address and mitigate such risks.",
"description": null,
"addedByProfile": 1,
"displayAcknowledgement": true,
"deleted": false,
"systemGenerated": true,
"policyMetadata": null,
"createdAt": "2021-05-19T20:32:03.437Z",
"updatedAt": "2021-07-28T14:17:22.690Z",
"createdBy": 2
}
],
"stagedPurposes": [],
"tags": []
}curl \
--request PUT \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
--data @example-payload.json \
https://demo.immuta.com/project/2{
"name": "Documentation Project",
"deleted": false
}{
"workspace": null,
"createdBy": 2,
"updatedBy": 2,
"schemaEvolutionId": 1,
"projectKey": "Medical Records",
"name": "Documentation Project",
"status": "open",
"description": "This project contains all data sources under the schema, medical_records, from [email protected]:1433/example.",
"documentation": "This is an automatically generated project that collects data sources under the schema, medical_records, from [email protected]:1433/example. When data sources in this schema are added to the system, they will automatically be added to this project.",
"deleted": false,
"allowMaskedJoins": false,
"subscriptionType": "manual",
"subscriptionPolicy": null,
"equalization": null,
"snowflake": null,
"type": "Schema",
"schema": "medical_records",
"id": 2,
"createdAt": "2021-08-24T15:44:29.477Z",
"updatedAt": "2021-09-10T21:49:00.678Z",
"purposeCount": 0,
"tags": [],
"projectPurposes": [],
"stagedPurposes": [],
"purposes": [],
"workspaceWarnings": []
}curl \
--request GET \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
https://demo.immuta.com/project/2/activity?size=1{
"count": 40,
"activities": [
{
"modelType": "project",
"modelId": "2",
"createdAt": "2021-07-29T20:56:11.856Z",
"notificationType": "projectUpdated",
"metadata": {
"fields": [
"deleted",
"purposes"
],
"projectName": "test",
"approvedPurposeCount": 0,
"deniedPurposesCount": 0,
"requestedPurposeCount": 0,
"newPurposesAddedCount": 2
},
"read": false,
"id": 191,
"updatedAt": "2021-07-29T20:56:11.856Z",
"actionBy": {
"id": 2,
"name": "John Doe",
"email": "[email protected]"
},
"targetUser": {
"id": 2,
"name": "John Doe",
"email": "[email protected]"
}
}
],
"unread": 40,
"next": "191_2021-07-29T20:56:11.856Z"
}curl \
--request GET \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
https://demo.immuta.com/project/2/checkEqualizationState{
"equalizationState": "recommended"
}curl \
--request GET \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
https://demo.immuta.com/project/2/members{
"count": 1,
"members": [
{
"profile": 2,
"name": "John Doe",
"iamid": "bim",
"userid": "[email protected]",
"email": "[email protected]",
"type": "user",
"approved": true,
"state": "owner",
"systemGenerated": false,
"lastExternalRefresh": "2021-07-30T17:49:55.050Z",
"subscriptionId": 5,
"createdAt": "2021-05-19T22:50:44.206Z",
"updatedAt": "2021-07-19T20:47:53.069Z",
"approvals": [],
"currentUserCanApprove": false
}
]
}curl \
--request POST \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
--data @example-payload.json \
https://demo.immuta.com/project/1/checkEqualizedAuths{
"conditionsObj": {
"operator": "and",
"conditions": [
{
"type": "groups",
"group": {
"id": 1,
"name": "View Masked Values"
}
}
]
}
}{
"validSet": true,
"usersMissingAuths": {}
}curl \
--request POST \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
--data @example-payload.json \
https:demo.immuta.com/project/1/members{
"profileId": 3,
"state": "subscribed",
}{
"subscriptionId": 18,
"state": "subscribed",
"approved": true
}curl \
--request PUT \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
--data @example-payload.json \
https://demo.immuta.com/project/3/members/2{
"state": "subscribed"
}{
"state": "subscribed",
"expiration": null
}curl \
--request GET \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
https://demo.immuta.com/project/2/dataSources{
"count": 3,
"dataSources": [
{
"addedBy": "John Doe",
"dataSourceName": "Fake Medical Claims 2017",
"policyHandlerType": "Builder",
"addedOn": "2021-06-25T19:11:03.230Z",
"dataSourceId": 8,
"addedByProfile": 2,
"deleted": false,
"subscriptionType": "policy",
"subscriptionStatus": "owner",
"subscriptionPolicy": {
"type": "subscription",
"exceptions": {
"operator": "or",
"conditions": [
{
"type": "groups",
"group": {
"name": "HR Department"
}
},
{
"type": "authorizations",
"authorization": {
"auth": "Manager",
"value": "Receiving Surveys"
}
}
]
},
"shareResponsibility": false,
"automaticSubscription": true
},
"connectionString": "[email protected]:1433/example",
"blobHandlerType": "Snowflake",
"derivedInThisProject": false
},
{
"addedBy": "John Doe",
"dataSourceName": "Tpc Randomized",
"policyHandlerType": "Builder",
"addedOn": "2021-06-25T22:26:38.170Z",
"dataSourceId": 6,
"addedByProfile": 2,
"deleted": false,
"subscriptionType": "policy",
"subscriptionStatus": "owner",
"subscriptionPolicy": {
"type": "subscription",
"exceptions": {
"operator": "and",
"conditions": [
{
"type": "groups",
"group": {
"name": "HR"
}
}
]
},
"shareResponsibility": false,
"automaticSubscription": true
},
"connectionString": "[email protected]:1433/example",
"blobHandlerType": "Azure Synapse Analytics",
"derivedInThisProject": false
},
{
"addedBy": "John Doe",
"dataSourceName": "Tpc Web Sales",
"policyHandlerType": "None",
"addedOn": "2021-06-25T19:11:03.226Z",
"dataSourceId": 7,
"addedByProfile": 2,
"deleted": false,
"subscriptionType": "manual",
"subscriptionStatus": "owner",
"subscriptionPolicy": null,
"connectionString": "[email protected]:1433/example",
"blobHandlerType": "Azure Synapse Analytics",
"derivedInThisProject": false
}
]
}curl \
--request DELETE \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
https://demo.immuta.com/project/2/dataSources?ids=8{
"success": [
{
"id": 8,
"name": "Fake Medical Claims 2017",
"blobHandlerType": "Snowflake"
}
],
"inError": []
}curl \
--request POST \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
--data @example-payload.json \
https://demo.immuta.com/project/1/dataSources{
"dataSourceIds": [
2
]
}{
"success": [
{
"id": 2,
"name": "Credit Payments Bank Deposits",
"blobHandlerType": "Snowflake"
}
],
"inError": []
}curl \
--request PUT \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
--data @example-payload.json \
https://demo.immuta.com/project/1/dataSources/1curl \
--request DELETE \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
https://demo.immuta.com/project/5/unsubscribecurl \
--request POST \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
https://demo.immuta.com/project/current/1curl \
--request POST \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
https://demo.immuta.com/project/current/nullcurl \
--request POST \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
--data @example-payload.json \
https://demo.immuta.com/project/1/members/1/acknowledge{}{
"acknowledgeRequired": false,
"purposes": [
{
"id": 1,
"name": "Re-identification Prohibited",
"acknowledgement": "I agree to use the data associated with this project for the stated purpose of the project, and for that purpose only, as listed in the project's homepage, and to refrain from sharing that data outside of the project or Immuta. I also agree not to re-identify or take any steps to re-identify the individuals whose personal information is contained in the data sources attached to the project. In the event that these individuals have been identified or that I discover risks that I believe could lead to their identification, I agree to immediately notify the project owner or governance team and take immediate action to address and mitigate such risks. I further agree to refrain from contacting any individuals who might be identified."
}
]
}curl \
--request DELETE \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
https://demo.immuta.com/project/4{
"hardDelete": true
}Governance API reference guide
This page describes the /governance endpoint of the Immuta API and its request parameters used to generate governance reports.
Default 9-minute timeout
Governance report queries will timeout after 9 minutes to avoid overconsumption of resources. If your governance report was not generated because of this timeout, to change the default setting.
GET /governance/reports/user/allUserDataSourcesGenerate a report of all the data sources that all users are currently subscribed to.
GET /governance/reports/user/allUserStatusGenerate a report of all current users and details about them.
GET /governance/reports/user/{userId}/dataSourceGenerate a report of the data sources the specified user is currently subscribed to.
GET /governance/reports/user/{userId}/groupGenerate a report of the groups the specified user is currently a member of.
GET /governance/reports/user/{userId}/projectGenerate a report of the projects the specified user is currently a member of.
GET /governance/reports/user/{userId}/dataSourcePurposeAccessGenerate a report of all the purposes the user has accessed data for during the specified date range.
GET /governance/reports/user/{userId}/dataSourceUserAccessGenerate a report of all the data sources the user has directly accessed during the specified date range.
GET /governance/reports/user/{userId}/attributeGenerate a report of all the attributes the specified user currently has.
GET /governance/reports/group/allGroupDataSourceAccessGenerate a report of all the data sources that any member in any group is subscribed to.
GET /governance/reports/group/{groupId}/userGenerate a report of all the users who are currently a member of the group.
GET /governance/reports/group/{groupId}/dataSourceGenerate a report of all the data sources that members of the group are currently subscribed to.
GET /governance/reports/group/{groupId}/projectGenerate a report of all the projects that the members of the group are currently subscribed to.
GET /governance/reports/group/{groupId}/attributeGenerate a report of all the attributes currently assigned to the specified group.
GET /governance/reports/project/{projectId}/userGenerate a report of all the data sources and members currently in the project.
GET /governance/reports/project/{projectId}/dataSourceGenerate a report of all the data sources currently in the specified project.
GET /governance/reports/project/{projectId}/purposeGenerate a report of all the purposes currently assigned to the specified project.
GET /governance/reports/dataSource/allDataSourceUsersGenerate a report of every user and group currently subscribed to any data source.
GET /governance/reports/dataSource/{dataSourceId}/userGenerate a report of all the users and groups currently subscribed to the specified data source.
GET /governance/reports/dataSource/{dataSourceId}/projectGenerate a report of the projects that currently have the specified data source.
GET /governance/reports/dataSource/{dataSourceId}/purposeGenerate a report of the purpose of every project that has the specified data source.
GET /governance/reports/dataSource/{dataSourceId}/dataSourceUserAccessGenerate a report of the users that have accessed the data source during the specified date range.
GET /governance/reports/dataSource/{dataSourceId}/dataSourcePurposeAccessGenerate a report of the purposes the data source has been accessed for during the specified date range.
GET /governance/reports/dataSource/{dataSourceId}/subscriptionHistoryGenerate a report of the users and groups that have been subscribed to the data source during the specified date range.
GET /governance/reports/dataSource/{dataSourceId}/dataSourceSddScoringGenerate a report of data discovery scoring information for every column in the specified data source.
GET /governance/reports/purpose/{purposeId}/userGenerate a report of all current members of the projects that use the specified purpose.
GET /governance/reports/purpose/{purposeId}/dataSourceGenerate a report of all current data sources of the projects that use the specified purpose.
GET /governance/reports/purpose/{purposeId}/purposeGenerate a report of all other purposes currently combined with the specified purpose.
GET /governance/reports/purpose/{purposeId}/projectGenerate a report of projects with the specified purpose currently assigned.
GET /governance/reports/purpose/{purposeId}/dataSourcePurposeAccessGenerate a report of data sources that have been accessed for the specified purpose during the specified date range.
GET /governance/reports/tag/allDataSourceUserAccessGenerate a report of the users who have subscribed to data sources that were tagged with any tag since the specified start date.
GET /governance/reports/tag/allProjectsGenerate a report of the projects with data sources currently tagged with any tag.
GET /governance/reports/tag/allUserDataSourcesGenerate a report of every data source currently tagged with any tag.
GET /governance/reports/tag/{tagName}/dataSourceGenerate a report of the data sources currently tagged with the specified tag.
GET /governance/reports/tag/{tagName}/dataSourceUserAccessGenerate a report of users who have accessed data sources tagged with the specified tag during the specified date range.
GET /governance/reports/tag/{tagName}/dataSourcePurposeAccessGenerate a report of the purposes that have been used to access data with the specified tag during the specified date range.
GET /governance/reports/tag/{tagName}/projectGenerate a report of the projects that have data sources currently tagged with this tag.
GET /governance/reports/policy/{policyType}/dataSourceGenerate a report of the data sources this data policy type is currently applied to.
GET /governance/reports/globalPolicy/globalPolicyDisabledGenerate a report of all disabled global policies.
GET /governance/reports/globalPolicy/globalPolicyInConflictGenerate a report of all policies currently in conflict.
GET /governance/reports/globalPolicy/{policyId}/globalPolicyNotCertifiedGenerate a report of all data sources the specified policy has not been certified on.
GET /governance/reports/globalPolicy/{policyId}/globalPolicyCertifiedGenerate a report of all data sources the specified policy has been certified on.
GET /governance/reports/globalPolicy/{policyId}/dataSourceGenerate a report of all data sources the specified global policy is applied to.
GET /governance/reports/sdd/sddTagsOverviewGenerate a report of all columns with Discovered tags currently applied.
GET /governance/reports/sdd/legacySddTagsGenerate a report of all columns with legacy Discovered tags currently applied.
GET
Generate a report of the projects the specified user is currently a member of.
GET
Generate a report of all the purposes the user has accessed data for during the specified date range.
GET
Generate a report of all the data sources the user has directly accessed during the specified date range.
GET
Generate a report of all the attributes the specified user currently has.
GET
Generate a report of all the data sources that any member in any group is subscribed to.
GET
Generate a report of all the users who are currently a member of the group.
GET
Generate a report of all the data sources that members of the group are currently subscribed to.
GET
Generate a report of all the projects that the members of the group are currently subscribed to.
GET
Generate a report of all the attributes currently assigned to the specified group.
GET
Generate a report of all the data sources and members currently in the project.
GET
Generate a report of all the data sources currently in the specified project.
GET
Generate a report of all the purposes currently assigned to the specified project.
GET
Generate a report of every user and group currently subscribed to any data source.
GET
Generate a report of all the users and groups currently subscribed to the specified data source.
GET
Generate a report of the projects that currently have the specified data source.
GET
Generate a report of the purpose of every project that has the specified data source.
GET
Generate a report of the users that have accessed the data source during the specified date range.
GET
Generate a report of the purposes the data source has been accessed for during the specified date range.
GET
Generate a report of the users and groups that have been subscribed to the data source during the specified date range.
GET
Generate a report of data discovery scoring information for every column in the specified data source.
GET
Generate a report of all current members of the projects that use the purpose.
GET
Generate a report of all current data sources of the projects that use the specified purpose.
GET
Generate a report of all other purposes currently combined with the specified purpose.
GET
Generate a report of projects with the specified purpose currently assigned.
GET
Generate a report of data sources that have been accessed for the purpose during the specified date range.
GET
Generate a report of the users who have subscribed to data sources that were tagged with any tag since the specified start date.
GET
Generate a report of the projects with data sources currently tagged with any tag.
GET
Generate a report of every data source currently tagged with any tag.
GET
Generate a report of the data sources currently tagged with the specified tag.
GET
Generate a report of users who have accessed data sources tagged with the specified tag during the specified date range.
GET
Generate a report of the purposes that have been used to access data with the specified tag during the specified date range.
GET
Generate a report of the projects that have data sources currently tagged with this tag.
GET
Generate a report of the data sources this data policy type is currently applied to.
GET
Generate a report of all disabled global policies.
GET
Generate a report of all policies currently in conflict.
GET
Generate a report of all data sources the specified policy has not been certified on.
GET
Generate a report of all data sources the specified policy has been certified on.
GET
Generate a report of all data sources the specified global policy is applied to.
GET
Generate a report of all columns with Discovered tags currently applied.
GET
Generate a report of all columns with legacy Discovered tags currently applied.
export boolean
If true, the response will be provided in a downloadable csv file.
Optional
export boolean
If true, the response will be provided in a downloadable csv file.
Optional
export boolean
If true, the response will be provided in a downloadable csv file.
Optional
export boolean
If true, the response will be provided in a downloadable csv file.
Optional
export boolean
If true, the response will be provided in a downloadable csv file.
Optional
sortField string
Used to sort results by field.
Optional
sortOrder string
Sorts results by order, which must be asc or desc. The default is asc.
Optional
export boolean
If true, the response will be provided in a downloadable csv file.
Optional
sortField string
Used to sort results by field.
Optional
sortOrder string
Sorts results by order, which must be asc or desc. The default is asc.
Optional
export boolean
If true, the response will be provided in a downloadable csv file.
Optional
export boolean
If true, the response will be provided in a downloadable csv file.
Optional
export boolean
If true, the response will be provided in a downloadable csv file.
Optional
export boolean
If true, the response will be provided in a downloadable csv file.
Optional
export boolean
If true, the response will be provided in a downloadable csv file.
Optional
export boolean
If true, the response will be provided in a downloadable csv file.
Optional
export boolean
If true, the response will be provided in a downloadable csv file.
Optional
export boolean
If true, the response will be provided in a downloadable csv file.
Optional
export boolean
If true, the response will be provided in a downloadable csv file.
Optional
export boolean
If true, the response will be provided in a downloadable csv file.
Optional
export boolean
If true, the response will be provided in a downloadable csv file.
Optional
export boolean
If true, the response will be provided in a downloadable csv file.
Optional
export boolean
If true, the response will be provided in a downloadable csv file.
Optional
export boolean
If true, the response will be provided in a downloadable csv file.
Optional
sortField string
Used to sort results by field.
Optional
sortOrder string
Sorts results by order, which must be asc or desc. The default is asc.
Optional
export boolean
If true, the response will be provided in a downloadable csv file.
Optional
sortField string
Used to sort results by field.
Optional
sortOrder string
Sorts results by order, which must be asc or desc. The default is asc.
Optional
export boolean
If true, the response will be provided in a downloadable csv file.
Optional
sortField string
Used to sort results by field.
Optional
sortOrder string
Sorts results by order, which must be asc or desc. The default is asc.
Optional
export boolean
If true, the response will be provided in a downloadable csv file.
Optional
export boolean
If true, the response will be provided in a downloadable csv file.
Optional
export boolean
If true, the response will be provided in a downloadable csv file.
Optional
export boolean
If true, the response will be provided in a downloadable csv file.
Optional
export boolean
If true, the response will be provided in a downloadable csv file.
Optional
export boolean
If true, the response will be provided in a downloadable csv file.
Optional
sortField string
Used to sort results by field.
Optional
sortOrder string
Sorts results by order, which must be asc or desc. The default is asc.
Optional
export boolean
If true, the response will be provided in a downloadable csv file.
Optional
sortOrder string
Sorts results by order, which must be asc or desc. The default is asc.
Optional
export boolean
If true, the response will be provided in a downloadable csv file.
Optional
export boolean
If true, the response will be provided in a downloadable csv file.
Optional
export boolean
If true, the response will be provided in a downloadable csv file.
Optional
export boolean
If true, the response will be provided in a downloadable csv file.
Optional
sortField string
Used to sort results by field.
Optional
sortOrder string
Sorts results by order, which must be asc or desc. The default is asc.
Optional
export boolean
If true, the response will be provided in a downloadable csv file.
Optional
sortField string
Used to sort results by field.
Optional
sortOrder string
Sorts results by order, which must be asc or desc. The default is asc.
Optional
export boolean
If true, the response will be provided in a downloadable csv file.
Optional
export boolean
If true, the response will be provided in a downloadable csv file.
Optional
export boolean
If true, the response will be provided in a downloadable csv file.
Optional
export boolean
If true, the response will be provided in a downloadable csv file.
Optional
export boolean
If true, the response will be provided in a downloadable csv file.
Optional
export boolean
If true, the response will be provided in a downloadable csv file.
Optional
export boolean
If true, the response will be provided in a downloadable csv file.
Optional
export boolean
If true, the response will be provided in a downloadable csv file.
Optional
export boolean
If true, the response will be provided in a downloadable csv file.
Optional
export boolean
If true, the response will be provided in a downloadable csv file.
Optional
GET
Generate a report of all the data sources that all users are currently subscribed to.
GET
Generate a report of all current users and details about them.
GET
Generate a report of the data sources the specified user is currently subscribed to.
GET
Generate a report of the groups the specified user is currently a member of.
size number
The number of results to return per page.
Optional
offset number
The number of items from the beginning of the response to exclude. You can combine the offset and size parameters to return a specific set of report results.
Optional
sortField string
Used to sort results by field.
Optional
sortOrder string
Sorts results by order, which must be asc or desc. The default is asc.
size number
The number of results to return per page.
Optional
offset number
The number of items from the beginning of the response to exclude. You can combine the offset and size parameters to return a specific set of report results.
Optional
sortField string
Used to sort results by field.
Optional
sortOrder string
Sorts results by order, which must be asc or desc. The default is asc.
size number
The number of results to return per page.
Optional
offset number
The number of items from the beginning of the response to exclude. You can combine the offset and size parameters to return a specific set of report results.
Optional
sortField string
Used to sort results by field.
Optional
sortOrder string
Sorts results by order, which must be asc or desc. The default is asc.
userId number
The unique identifier of the user.
Required
size number
The number of results to return per page.
Optional
offset number
The number of items from the beginning of the response to exclude. You can combine the offset and size parameters to return a specific set of report results.
Optional
sortField string
Used to sort results by field.
Optional
sortOrder string
Sorts results by order, which must be asc or desc. The default is asc.
userId number
The unique identifier of the user.
Required
size number
The number of results to return per page.
Optional
offset number
The number of items from the beginning of the response to exclude. You can combine the offset and size parameters to return a specific set of report results.
Optional
sortField string
Used to sort results by field.
Optional
sortOrder string
Sorts results by order, which must be asc or desc. The default is asc.
userId number
The unique identifier of the user.
Required
startDate string
The beginning date of the date range. Must be within 90 days of the current date. Ex: 2024-10-07
Required
endDate string
The ending date of the date range. Must be within 90 days of the current date. Ex: 2024-10-07
Required
size number
The number of results to return per page.
Optional
offset number
The number of items from the beginning of the response to exclude. You can combine the offset and size parameters to return a specific set of report results.
userId number
The unique identifier of the user.
Required
startDate string
The beginning date of the date range. Must be within 90 days of the current date. Ex: 2024-10-07
Required
endDate string
The ending date of the date range. Must be within 90 days of the current date. Ex: 2024-10-07
Required
size number
The number of results to return per page.
Optional
offset number
The number of items from the beginning of the response to exclude. You can combine the offset and size parameters to return a specific set of report results.
userId number
The unique identifier of the user.
Required
size number
The number of results to return per page.
Optional
offset number
The number of items from the beginning of the response to exclude. You can combine the offset and size parameters to return a specific set of report results.
Optional
sortField string
Used to sort results by field.
Optional
sortOrder string
Sorts results by order, which must be asc or desc. The default is asc.
size number
The number of results to return per page.
Optional
offset number
The number of items from the beginning of the response to exclude. You can combine the offset and size parameters to return a specific set of report results.
Optional
sortField string
Used to sort results by field.
Optional
sortOrder string
Sorts results by order, which must be asc or desc. The default is asc.
groupId number
The unique identifier of the group.
Required
size number
The number of results to return per page.
Optional
offset number
The number of items from the beginning of the response to exclude. You can combine the offset and size parameters to return a specific set of report results.
Optional
sortField string
Used to sort results by field.
Optional
sortOrder string
Sorts results by order, which must be asc or desc. The default is asc.
groupId number
The unique identifier of the group.
Required
size number
The number of results to return per page.
Optional
offset number
The number of items from the beginning of the response to exclude. You can combine the offset and size parameters to return a specific set of report results.
Optional
sortField string
Used to sort results by field.
Optional
sortOrder string
Sorts results by order, which must be asc or desc. The default is asc.
groupId number
The unique identifier of the group.
Required
size number
The number of results to return per page.
Optional
offset number
The number of items from the beginning of the response to exclude. You can combine the offset and size parameters to return a specific set of report results.
Optional
sortField string
Used to sort results by field.
Optional
sortOrder string
Sorts results by order, which must be asc or desc. The default is asc.
groupId number
The unique identifier of the group.
Required
size number
The number of results to return per page.
Optional
offset number
The number of items from the beginning of the response to exclude. You can combine the offset and size parameters to return a specific set of report results.
Optional
sortField string
Used to sort results by field.
Optional
sortOrder string
Sorts results by order, which must be asc or desc. The default is asc.
projectId number
The unique identifier of the project.
Required
size number
The number of results to return per page.
Optional
offset number
The number of items from the beginning of the response to exclude. You can combine the offset and size parameters to return a specific set of report results.
Optional
sortField string
Used to sort results by field.
Optional
sortOrder string
Sorts results by order, which must be asc or desc. The default is asc.
projectId number
The unique identifier of the project.
Required
size number
The number of results to return per page.
Optional
offset number
The number of items from the beginning of the response to exclude. You can combine the offset and size parameters to return a specific set of report results.
Optional
sortField string
Used to sort results by field.
Optional
sortOrder string
Sorts results by order, which must be asc or desc. The default is asc.
projectId number
The unique identifier of the project.
Required
size number
The number of results to return per page.
Optional
offset number
The number of items from the beginning of the response to exclude. You can combine the offset and size parameters to return a specific set of report results.
Optional
sortField string
Used to sort results by field.
Optional
sortOrder string
Sorts results by order, which must be asc or desc. The default is asc.
size number
The number of results to return per page.
Optional
offset number
The number of items from the beginning of the response to exclude. You can combine the offset and size parameters to return a specific set of report results.
Optional
sortField string
Used to sort results by field.
Optional
sortOrder string
Sorts results by order, which must be asc or desc. The default is asc.
dataSourceId number
The unique identifier of the data source.
Required
size number
The number of results to return per page.
Optional
offset number
The number of items from the beginning of the response to exclude. You can combine the offset and size parameters to return a specific set of report results.
Optional
sortField string
Used to sort results by field.
Optional
sortOrder string
Sorts results by order, which must be asc or desc. The default is asc.
dataSourceId number
The unique identifier of the data source.
Required
size number
The number of results to return per page.
Optional
offset number
The number of items from the beginning of the response to exclude. You can combine the offset and size parameters to return a specific set of report results.
Optional
sortField string
Used to sort results by field.
Optional
sortOrder string
Sorts results by order, which must be asc or desc. The default is asc.
dataSourceId number
The unique identifier of the data source.
Required
size number
The number of results to return per page.
Optional
offset number
The number of items from the beginning of the response to exclude. You can combine the offset and size parameters to return a specific set of report results.
Optional
sortField string
Used to sort results by field.
Optional
sortOrder string
Sorts results by order, which must be asc or desc. The default is asc.
dataSourceId number
The unique identifier of the data source.
Required
startDate string
The beginning date of the date range. Must be within 90 days of the current date. Ex: 2024-10-07
Required
endDate string
The ending date of the date range. Must be within 90 days of the current date. Ex: 2024-10-07
Required
size number
The number of results to return per page.
Optional
offset number
The number of items from the beginning of the response to exclude. You can combine the offset and size parameters to return a specific set of report results.
dataSourceId number
The unique identifier of the data source.
Required
startDate string
The beginning date of the date range. Must be within 90 days of the current date. Ex: 2024-10-07
Required
endDate string
The ending date of the date range. Must be within 90 days of the current date. Ex: 2024-10-07
Required
size number
The number of results to return per page.
Optional
offset number
The number of items from the beginning of the response to exclude. You can combine the offset and size parameters to return a specific set of report results.
dataSourceId number
The unique identifier of the data source.
Required
startDate string
The beginning date of the date range. Must be within 90 days of the current date. Ex: 2024-10-07
Required
endDate string
The ending date of the date range. Must be within 90 days of the current date. Ex: 2024-10-07
Required
size number
The number of results to return per page.
Optional
offset number
The number of items from the beginning of the response to exclude. You can combine the offset and size parameters to return a specific set of report results.
dataSourceId number
The unique identifier of the data source.
Required
size number
The number of results to return per page.
Optional
offset number
The number of items from the beginning of the response to exclude. You can combine the offset and size parameters to return a specific set of report results.
Optional
sortField string
Used to sort results by field.
Optional
sortOrder string
Sorts results by order, which must be asc or desc. The default is asc.
purposeId string
The unique identifier of the purpose.
Required
size number
The number of results to return per page.
Optional
offset number
The number of items from the beginning of the response to exclude. You can combine the offset and size parameters to return a specific set of report results.
Optional
sortField string
Used to sort results by field.
Optional
sortOrder string
Sorts results by order, which must be asc or desc. The default is asc.
purposeId string
The unique identifier of the purpose.
Required
size number
The number of results to return per page.
Optional
offset number
The number of items from the beginning of the response to exclude. You can combine the offset and size parameters to return a specific set of report results.
Optional
sortField string
Used to sort results by field.
Optional
sortOrder string
Sorts results by order, which must be asc or desc. The default is asc.
purposeId string
The unique identifier of the purpose.
Required
size number
The number of results to return per page.
Optional
offset number
The number of items from the beginning of the response to exclude. You can combine the offset and size parameters to return a specific set of report results.
Optional
sortField string
Used to sort results by field.
Optional
sortOrder string
Sorts results by order, which must be asc or desc. The default is asc.
purposeId string
The unique identifier of the purpose.
Required
size number
The number of results to return per page.
Optional
offset number
The number of items from the beginning of the response to exclude. You can combine the offset and size parameters to return a specific set of report results.
Optional
sortField string
Used to sort results by field.
Optional
sortOrder string
Sorts results by order, which must be asc or desc. The default is asc.
purposeId number
The unique identifier of the purpose.
Required
startDate string
The beginning date of the date range. Must be within 90 days of the current date. Ex: 2024-10-07
Required
endDate string
The ending date of the date range. Must be within 90 days of the current date. Ex: 2024-10-07
Required
size number
The number of results to return per page.
Optional
offset number
The number of items from the beginning of the response to exclude. You can combine the offset and size parameters to return a specific set of report results.
startDate string
The date to start the report at. Must be within 90 days of the current date. Ex: 2024-10-07
Required
size number
The number of results to return per page.
Optional
offset number
The number of items from the beginning of the response to exclude. You can combine the offset and size parameters to return a specific set of report results.
Optional
sortField string
Used to sort results by field.
size number
The number of results to return per page.
Optional
offset number
The number of items from the beginning of the response to exclude. You can combine the offset and size parameters to return a specific set of report results.
Optional
sortField string
Used to sort results by field.
Optional
sortOrder string
Sorts results by order, which must be asc or desc. The default is asc.
size number
The number of results to return per page.
Optional
offset number
The number of items from the beginning of the response to exclude. You can combine the offset and size parameters to return a specific set of report results.
Optional
sortField string
Used to sort results by field.
Optional
sortOrder string
Sorts results by order, which must be asc or desc. The default is asc.
tagName string
The tag name.
Required
size number
The number of results to return per page.
Optional
offset number
The number of items from the beginning of the response to exclude. You can combine the offset and size parameters to return a specific set of report results.
Optional
sortField string
Used to sort results by field.
Optional
sortOrder string
Sorts results by order, which must be asc or desc. The default is asc.
tagName string
The tag name.
Required
startDate string
The beginning date of the date range. Must be within 90 days of the current date. Ex: 2024-10-07
Required
endDate string
The ending date of the date range. Must be within 90 days of the current date. Ex: 2024-10-07
Required
size number
The number of results to return per page.
Optional
offset number
The number of items from the beginning of the response to exclude. You can combine the offset and size parameters to return a specific set of report results.
tagName string
The tag name.
Required
startDate string
The beginning date of the date range. Must be within 90 days of the current date. Ex: 2024-10-07
Required
endDate string
The ending date of the date range. Must be within 90 days of the current date. Ex: 2024-10-07
Required
size number
The number of results to return per page.
Optional
offset number
The number of items from the beginning of the response to exclude. You can combine the offset and size parameters to return a specific set of report results.
tagName string
The tag name.
Required
size number
The number of results to return per page.
Optional
offset number
The number of items from the beginning of the response to exclude. You can combine the offset and size parameters to return a specific set of report results.
Optional
sortField string
Used to sort results by field.
Optional
sortOrder string
Sorts results by order, which must be asc or desc. The default is asc.
policyType string
The type of policy to generate a report on. Options include: exemption, visibility, masking, time, minimization, external, prerequisite, customWhere, and showRowsNever
Required
size number
The number of results to return per page.
Optional
offset number
The number of items from the beginning of the response to exclude. You can combine the offset and size parameters to return a specific set of report results.
Optional
sortField string
Used to sort results by field.
Optional
sortOrder string
Sorts results by order, which must be asc or desc. The default is asc.
size number
The number of results to return per page.
Optional
offset number
The number of items from the beginning of the response to exclude. You can combine the offset and size parameters to return a specific set of report results.
Optional
sortField string
Used to sort results by field.
Optional
sortOrder string
Sorts results by order, which must be asc or desc. The default is asc.
size number
The number of results to return per page.
Optional
offset number
The number of items from the beginning of the response to exclude. You can combine the offset and size parameters to return a specific set of report results.
Optional
sortField string
Used to sort results by field.
Optional
sortOrder string
Sorts results by order, which must be asc or desc. The default is asc.
policyId number
The unique identifier of the policy.
Required
size number
The number of results to return per page.
Optional
offset number
The number of items from the beginning of the response to exclude. You can combine the offset and size parameters to return a specific set of report results.
Optional
sortField string
Used to sort results by field.
Optional
sortOrder string
Sorts results by order, which must be asc or desc. The default is asc.
policyId number
The unique identifier of the policy.
Required
size number
The number of results to return per page.
Optional
offset number
The number of items from the beginning of the response to exclude. You can combine the offset and size parameters to return a specific set of report results.
Optional
sortField string
Used to sort results by field.
Optional
sortOrder string
Sorts results by order, which must be asc or desc. The default is asc.
policyId number
The unique identifier of the policy.
Required
size number
The number of results to return per page.
Optional
offset number
The number of items from the beginning of the response to exclude. You can combine the offset and size parameters to return a specific set of report results.
Optional
sortField string
Used to sort results by field.
Optional
sortOrder string
Sorts results by order, which must be asc or desc. The default is asc.
size number
The number of results to return per page.
Optional
offset number
The number of items from the beginning of the response to exclude. You can combine the offset and size parameters to return a specific set of report results.
Optional
sortField string
Used to sort results by field.
Optional
sortOrder string
Sorts results by order, which must be asc or desc. The default is asc.
size number
The number of results to return per page.
Optional
offset number
The number of items from the beginning of the response to exclude. You can combine the offset and size parameters to return a specific set of report results.
Optional
sortField string
Used to sort results by field.
Optional
sortOrder string
Sorts results by order, which must be asc or desc. The default is asc.
Optional
Optional
Optional
Optional
Optional
Optional
Optional
Optional
Optional
Optional
Optional
Optional
Optional
Optional
Optional
Optional
Optional
Optional
Optional
Optional
Optional
Optional
Optional
Optional
Optional
Optional
Optional
Optional
Optional
Optional
Optional
Optional
Optional
Optional
Optional
Optional
Optional
Optional
Optional
Optional
Optional
Optional
Optional
Optional
curl -X 'GET' \
'https://www.organization.immuta.com/governance/reports/user/allUserDataSources' \
-H 'accept: application/json' \
-H 'Authorization: Bearer c3e78316bd2a4f329156a9c8fcd7dd8f'{
"hits": [
{
"User": "Taylor Smith",
"Data Source ID": 996,
"Data Source": "Public Patientinfo",
"Owners": "Taylor Smith",
"Role": "Owner",
"Subscription Type": "Individual User",
"Last Subscription Date": "2024-09-10 15:17 UTC",
"Approvers": "Taylor Smith",
"Subscription Expiration": null,
"User Groups": null,
"Attributes": null
},
{
"User": "Taylor Smith",
"Data Source ID": 999,
"Data Source": "Public Fftest",
"Owners": "Taylor Smith",
"Role": "Owner",
"Subscription Type": "Individual User",
"Last Subscription Date": "2024-09-10 15:17 UTC",
"Approvers": "Taylor Smith",
"Subscription Expiration": null,
"User Groups": null,
"Attributes": null
},
{
"User": "Taylor Smith",
"Data Source ID": 1000,
"Data Source": "Public Patientbilling",
"Owners": "Taylor Smith",
"Role": "Owner",
"Subscription Type": "Individual User",
"Last Subscription Date": "2024-09-10 15:17 UTC",
"Approvers": "Taylor Smith",
"Subscription Expiration": null,
"User Groups": null,
"Attributes": null
},
{
"User": "John Doe",
"Data Source ID": 417,
"Data Source": "Builtin Classifier Test2",
"Owners": "John Doe",
"Role": "Owner",
"Subscription Type": "Group: Discover Team",
"Last Subscription Date": "2024-05-30 19:42 UTC",
"Approvers": "John Doe",
"Subscription Expiration": null,
"User Groups": "Discover Team",
"Attributes": null
},
{
"User": "John Doe",
"Data Source ID": 775,
"Data Source": "Classify Test Case",
"Owners": "John Doe",
"Role": "Owner",
"Subscription Type": "Individual User",
"Last Subscription Date": "2024-06-12 22:30 UTC",
"Approvers": "John Doe",
"Subscription Expiration": null,
"User Groups": "Discover Team",
"Attributes": null
}
]
}BIM API reference guide
This page details the bim API, which allows users to programmatically access information about users, their group memberships, and authentications. Most of the actions described here require ADMIN permissions.
Because the BIM endpoint encompasses groups, users, and authentications, there are three workflows.
.
.
.
.
.
.
.
.
.
.
.
.
POST /bim/iam/bim/user
Create a new BIM user.
This example request with the payload below will create a new BIM user with the username [email protected].
GET /bim/iam/{iamid}/user/authenticate
Authenticate a user from a 3rd-party identity provider.
This example request
POST /bim/iam/{iamid}/user/authenticate
Authenticate a user using their username and password and proxying it to the specified IAM service.
This example request with the payload below will authenticate the user using the bim IAM.
Payload example
PUT /bim/iam/{iamid}/user/{userid}/profile
Update a specified user's profile.
This example request will change the location to Boston, MA for the user with the username [email protected].
Payload example
DELETE /bim/iam/{iamid}/user/{userid}/permissions/{permission}
Remove the specified user's permission.
This example request will delete the permission CREATE_DATA_SOURCE_IN_PROJECT from the user with the username [email protected].
PUT /bim/iam/{iamid}/user/{userid}/permissions
Update the specified user's permission.
This example request with the payload below will change to permissions of the user with the username [email protected] to CREATE_DATA_SOURCE_IN_PROJECT, CREATE_PROJECT, and CREATE_DATA_SOURCE.
Payload example
PUT /bim/iam/{iamid}/user/{userid}/password
Update the specified user's password.
This example request with the payload below will change the password of the user with the ID [email protected].
Payload example
PUT /bim/iam/{iamid}/user/{userid}/disable/{disable}
Disable / enable the specified BIM user.
This example request will disabled the user with the username [email protected].
POST /bim/syncUsers
Sync users from an external IAM.
This example request will sync the users from the specified external IAM with Immuta.
Payload example
POST /iam/{iamId}/sync
Sync LDAP users with Immuta.
This example request will sync the users from Jump Cloud with Immuta.
Payload example
PUT /bim/iam/{iamid}/{modelType}/{modelId}/authorizations/{attributeName}/{attributeValue}
Update the specified user's attributes.
This example request will add the attribute Finance.Red Team to the user with the username [email protected].
DELETE /bim/iam/{iamid}/{modelType}/{modelId}/authorizations/{key}/{value}
Remove an attribute from the specified group or user.
This example request will remove the attribute Country.JP from the user with the user ID [email protected].
Configure SMTP: SMTP must be configured to use this endpoint. Additionally, after the users are created, they will not be active until they sign in to the Immuta UI.
POST /bim/iam/bim/user/{userid}/clone
Clones the provided user (including their permissions, groups, and attributes) to create multiple additional user accounts.
This example request will clone the user with the username [email protected].
GET /bim/iam
Get a listing of configured IAM services.
The request below will list all of the IAMs in use.
GET /bim/user
Administrative search over the aggregated view of all users.
The request below will search all of the users in Immuta.
GET /bim/rpc/user/current
Get the currently logged in user's information.
This request will return information on the user that is logged in.
GET /bim/iam/{iamid}/user/{id}
Gets the specified user's aggregated view.
This example request will return information about the user with the ID 2.
GET /bim/iam/{iamid}/user/{userid}/profile
Gets the specified user's profile.
This example request will return the profile of the user with the ID 2.
GET /bim/iam/{iamid}/user/{userid}/groups
Get the specified user's list of groups.
This example request will return information on the groups of the user with the username [email protected].
DELETE /bim/iam/bim/user/{userid}
Delete the specified user in Immuta.
This example request will delete the user with the username [email protected].
POST /bim/group
Create a new group.
This request with the payload below will create a group through the bim IAM with the name API Group.
PUT /bim/group/{groupId}
Update the specified group.
This request with the payload below will update the group with the ID 2 with the name API Group #2 and with a new description.
Payload example
DELETE /bim/group/{groupId}/user/{groupuserid}
Remove a user from a group.
POST /bim/group/{groupId}/user
Add a new user to a group.
This request with the payload below adds the user with the ID [email protected] to the group with the ID 2.
Payload example
PUT /bim/iam/{iamid}/group/{groupid}/authorizations/{attributeName}/{attributeValue}
Update the specified group's attributes.
This example request will add the attribute Finance.Red Team to the group with the ID 2.
GET /bim/group
Get the list of groups from all configured IAMs.
This request will return all of the groups in Immuta.
GET /bim/group/{groupid}
Get the specified group.
This request will search for the group with the ID 2.
GET /bim/group/{groupid}/user
Get group users.
This request will return information on the users in the group with the ID 2.
DELETE /bim/group/{groupId}
Delete the specified group.
This request will delete the group with the ID 3.
POST /bim/apikey
Authenticate the user and create a project API key.
The payload must have one or both of the two attributes above.
This example request with the payload below will authenticate the user Jane Doe in the project with the ID 1 and create a new API key for her.
POST /bim/apikey/authenticate
Authenticate with the Immuta API using an API key.
This example request will authenticate the user with the Immuta API.
Payload example
POST /bim/apikey/impersonate
Impersonate another user using an API key.
This example request will allow the requesting user to impersonate the user specified in example-payload.json.
Payload example
POST /bim/token
Get information for a given token, should it exist.
This example request will return information on the access token in the payload.
Payload example
GET /bim/iam/{iamid}/user/{userid}/apikeys
Get metadata for all of the user's API keys.
This example request will return information on the API keys of the user with the username [email protected].
DELETE /bim/apikey/{keyid}
Delete an API key, all auth tokens issued using that API key, and generate a new API key.
This example request will delete the API key with the ID 323, revoke all the auth tokens issued using that API key, and generate a new API key.
permissions
array Information on the new user's permissions. See for a list of Immuta permissions.
No
permissions
array The user's permissions.
profile
array Details on the user, including name, email, phone, about, location, organization, position, preferences, externalUserIds, scim, systemGenerated, id, createdAt
lastLogin
timestamp The date the user most recently logged into Immuta.
disabled
boolean If true, the user is disabled.
createdAt
timestamp The date the user was created.
updatedAt
timestamp The date the user was last updated.
newUserLink
string A link for the new user to log in and create a password.
emailFailed
boolean If true, the login email was unable to be sent to the user's provided email address.
emailSent
boolean If true, a login email was sent to the new user.
PUT
/bim/iam/{iamid}/user/{userid}/permissions
.
PUT
/bim/iam/{iamid}/user/{userid}/password
.
PUT
/bim/iam/{iamid}/user/{userid}/disable/{disable}
.
POST
/bim/syncUsers
.
POST
/iam/{iamId}/sync
.
PUT
/bim/iam/{iamid}/{modelType}/{modelId}/authorizations/{attributeName}/{attributeValue}
.
DELETE
/bim/iam/{iamid}/{modelType}/{modelId}/authorizations/{key}/{value}
.
POST
/bim/iam/bim/user/{userid}/clone
.
sqlUser
string The user's SQL username.
No
about
string Details about the user to be displayed on their profile.
No
location
string The user's location.
No
organization
string The user's organization.
No
position
string The user's position.
No
externalUserIds
array A list of the user's external usernames for hdfsUser, databricksUser, snowflakeUser, prestoUser, asaUser, and redshiftUser.
No
preferences
array
No
scim
array
No
disabled
boolean If true, the user is disabled.
lastLogin
timestamp The date the user last logged in.
bimAuthorizations
array The attributes and groups given to the user's BIM profile.
iamAuthorizations
array The attributes and groups given to the user's external IAM profile.
hasLogin
boolean If true, the user has logged into Immuta.
permissions
array[string] A list of the user's permissions.
profile
integer The user's profile ID.
lastLogin
timestamp The date the user last logged into Immuta.
disabled
boolean If true, the user is disabled.
createdAt
timestamp The date the user was created.
updatedAt
timestamp The date the user was last updated.
permissions
array A list of the user's permissions.
profile
integer The user's profile ID.
lastLogin
timestamp The date the user last logged into Immuta.
disabled
boolean If true, the user is disabled.
createdAt
timestamp The date the user was created.
updatedAt
timestamp The date the user was last updated.
supportedActions
string
No
type
string The type of IAM, ldap.
No
count
integer The number of users successfully updated from the IAM.
attributeValue
string The attribute value.
Yes
authorizations
array Details on the user's or group's and attributes.
permissions
array A list of the user's permissions.
profile
integer The user's profile ID.
lastLogin
timestamp The date the user last logged into Immuta.
disabled
boolean If true, the user is disabled.
createdAt
timestamp The date the user was created.
updatedAt
timestamp The date the user was last updated.
value
string The attribute value to remove.
No
createdAt
timestamp The date the user or group was created.
updatedAt
timestamp The date the user or group was last updated.
GET
/bim/iam/{iamid}/user/{userid}/profile
.
GET
/bim/iam/{iamid}/user/{userid}/groups
.
iamid
string[] Optionally provide the IAM to filter the users.
No
profileIds
string[] Filters results to return users with the specified profile IDs.
No
excludeSystemGenerated
boolean If true, the results will exclude accounts automatically created for handlers that periodically crawl and ingest.
No
excludeAdminAndGovernor
boolean If true, Admin and Governor accounts will be excluded.
No
excludeDeletediams
boolean If true, the results will exclude users for any IAMs that are no longer configured.
No
excludebim
boolean If true, users from the Immuta internal identity manager will be excluded.
No
includeDisabled
boolean If true, the results will include disabled users.
No
offset
integer Offset to start returning values.
No
sortField
string The field to sort results on. The default is user name. Possible values: name, createdAt, iamid, email.
No
sortOrder
string The order that the results will be sorted in. The default is asc. Possible values: asc, desc.
No
permission
string A permission to filter the users by.
No
iamAuthorizations
array The attributes and groups given to the user's external IAM profile. This attribute is excluded from the response if the requesting user does not have the USER_ADMIN Immuta permission.
authorizations
metadata Details on the user's attributes. This attribute is excluded from the response if the requesting user does not have the USER_ADMIN Immuta permission.
projectId
integer The project ID for the user's current project.
permissions
string A list of the user's permissions.
profile
metadata Details on the user, including name, email, phone, about, location, organization, position, preferences, externalUserIds, scim, systemGenerated, id, createdAt
lastLogin
timestamp The date of the user's last Immuta login.
disabled
boolean If true, the user has been disabled.
hasLogin
boolean If true, the user has logged into Immuta.
groups
metadata Information on the user's groups.
createdAt
timestamp The date the user was created.
updatedAt
timestamp The date of the last time the user's information was updated.
projectId
integer The project ID for the user's current project.
permissions
string A list of the user's permissions.
profile
metadata Details on the user, including name, email, phone, about, location, organization, position, preferences, externalUserIds, scim, systemGenerated, id, createdAt
lastLogin
timestamp The date of the user's last Immuta login.
disabled
boolean If true, the user has been disabled.
hasLogin
boolean If true, the user has logged into Immuta.
groups
metadata Information on the user's groups.
createdAt
timestamp The date the user was created.
updatedAt
timestamp The date of the last time the user's information was updated.
updatedAt
timestamp The date the user was last updated.
systemGenerated
boolean
disabled
boolean If true, the user is disabled.
lastLogin
timestamp The date the user last logged in.
lastExternalRefresh
timestamp
bimAuthorizations
array The attributes and groups given to the user's BIM profile.
iamAuthorizations
array The attributes and groups given to the user's external IAM profile.
hasLogin
boolean If true, the user has logged into Immuta.
position
string The user's position.
externalUserIds
array A list of user IDs for technologies outside of Immuta, if specified as different from the Immuta user ID.
createdAt
timestamp The date the user was created.
updatedAt
timestamp The date the profile was last updated.
preferences
array Information on the user's preferences including values for sortProjectState and currentProject.
createdAt
timestamp The date the group was created.
updatedAt
timestamp The date the group was last updated.
createdAt
timestamp The date the group was created.
updatedAt
timestamp The date the group was last updated.
createdAt
timestamp The date the group was created.
updatedAt
timestamp The date the group was last updated.
size
integer The maximum number of records to return. The default is 25.
No
offset
integer Offset to start returning values.
No
sortField
string The field to sort results on. Possible values: name, createdAt, iamid. Default is name.
No
sortOrder
string The order that the results will be sorted in. Possible values: asc, desc. The default is asc.
No
nameOnly
boolean If true, results will only return distinct group names.
No
authorizations
metadata Details on the group's attributes.
descriptions
string Details attached to the group.
createdAt
timestamp The date the group was created.
updatedAt
timestamp The date the group was last updated.
createdAt
timestamp The date the group was created.
updatedAt
timestamp The date the group was last updated.
disabled
boolean If true, the user has been disabled.
group
integer The group ID.
createdAt
timestamp The date the user was created.
updatedAt
timestamp The date of the last time the user's information was updated.
created
timestamp The date the token was created.
lastUsed
timestamp The date the token was last used.
expiration
timestamp The date the token will expire.
name
string The token name.
createdAt
timestamp The date the token was created.
updatedAt
timestamp The date the token was last updated.
scopes
string The scope of the token, such as impersonation.
impersonationuserid
string The user ID of the impersonating user.
impersonationiamid
string The IAM ID of the impersonating user.
iamid
string The IAM ID.
Yes
userid
string The new user's username.
Yes
password
string The new user's password.
No
profile
array Information on the new user's name and email.
id
integer The user ID.
iamid
string The IAM ID.
userid
string The user's username.
bimAuthorizations
array The attributes and groups given to the user's BIM profile.
iamAuthorizations
array The attributes and groups given to the user's external IAM profile.
authorizations
array The user's groups and attributes.
GET
/bim/iam/{iamid}/user/authenticate
POST
/bim/iam/{iamid}/user/authenticate
PUT
/bim/iam/{iamid}/user/{userid}/profile
DELETE
/bim/iam/{iamid}/user/{userid}/permissions/{permission}
iamid
string The IAM ID.
Yes
iamid
string The IAM ID.
Yes
username
string The user's username for the IAM dictated in the request.
Yes
password
string The user's password for the IAM dictated in the request.
Yes
authenticated
boolean If true, the user has been successfully authenticated.
token
string The user's access token.
tokenExpiration
timestamp The date the token will expire.
profileId
integer The user ID.
iamid
string The IAM ID.
Yes
userId
string The user's username.
Yes
iamid
string The IAM ID.
No
userid
string The user's username.
No
string The user email.
No
phone
string The user phone number.
profile
array Details information about the user, including name, email, phone, about, location, organization, position, preferences, externalUserIds, scim, id, and the date of creation.
permissions
array A list of the user's permissions.
iamid
string The IAM ID.
userid
string The user's username.
authorizations
array The user's attributes and groups.
updatedAt
timestamp The date the user was last updated.
iamid
string The IAM ID.
Yes
userid
string The user's username.
Yes
permission
string The permission to remove. See Immuta permissions and personas for a list of Immuta permissions.
Yes
id
integer The user's ID.
iamid
string The IAM ID.
userid
string The user's username.
bimAuthorizations
array The attributes and groups given to the user's BIM profile.
iamAuthorizations
array The attributes and groups given to the user's external IAM profile.
authorizations
array Details on the user's groups and attributes.
iamid
string The IAM ID.
Yes
userid
string The user's username.
Yes
permissions
array[string] A list of the user's permissions. This list is going to be a comprehensive list of all of the user's permissions. See Immuta permissions and personas for a list of Immuta permissions.
Yes
id
integer The user's ID.
iamid
string The IAM ID.
userid
string The user's username.
bimAuthorizations
array The attributes and groups given to the user's BIM profile.
iamAuthorizations
array The attributes and groups given to the user's external IAM profile.
authorizations
array Details on the user's groups and attributes.
iamid
string The IAM ID.
Yes
userid
string The user's username.
Yes
originalPassword
string The user's old password.
Yes
password
string The user's new password.
Yes
success
boolean If true, the user's password has been successfully changed to the new password.
iamid
string The IAM ID.
Yes
userid
string The user's username.
Yes
disable
boolean If true, the user will be disabled.
Yes
userid
string The user's username.
disabled
boolean If true, the user is disabled.
iamid
string The external IAM ID.
Yes
iamId
string The external IAM ID.
Yes
dryRun
boolean If true, no updates will actually be made.
Yes
iamConfig
array Details about the IAM configuration, including authenticationOnly, credentials, defaultPermissions, displayName, id, ldapSync, and options.
No
plugin
string The type of plugin the IAM uses, ldap.
No
schema
array Details about the IAM schema, including group, profile, authorizations, and externalUserIds.
totalCount
integer The total number of users in the external IAM that could be synced over into Immuta.
importedUsers
array Details about the users who were successfully imported from the sync, including userId and dn.
refreshedUsers
array Details about the users who were successfully refreshed from the sync, including userId and dn.
disabledUsers
array Details about the users who were successfully disabled from the sync, including userId and dn.
enabledUsers
array Details about the users who were successfully enabled from the sync, including userId and dn.
runningInBackground
boolean If true, the sync created a job to run in the background.
iamid
string The IAM ID.
Yes
modelType
string The type of model the attribute is added to. Options include group or user.
Yes
modelID
string The user or group ID.
Yes
attributeName
string The attribute name.
id
integer The user or group ID.
iamid
string The IAM ID.
userid
string The user's username.
name
string The group name.
bimAuthorizations
array The attributes and groups given to the user's BIM profile.
iamAuthorizations
array The attributes and groups given to the user's external IAM profile.
iamid
string The ID for the IAM the user or group is under.
Yes
modelId
string The user or group ID.
Yes
modelType
string The type of model the attribute is being removed from. Options include group or user.
Yes
key
string The attribute to remove.
id
integer The user or group ID.
iamid
string The IAM ID.
authorizations
array The user or group attributes after the request has been made.
permissions
array The user or group permissions.
profile
integer The profile ID, if the model is a user.
systemGenerated
boolean If true, the user was created by Immuta.
userId
string The user's username.
Yes
array The list of new users' emails.
Yes
failedEmails
array A list of any emails that failed to become users.
GET
/bim/iam
GET
/bim/user
GET
/bim/rpc/user/current
GET
/bim/iam/{iamid}/user/{id}
id
string The IAM ID.
displayName
string The name displayed in Immuta and entered at the time of configuration.
type
string The identity provider type.
oauth
boolean When true, the IAM service uses OAuth framework for authorization.
size
integer The maximum number of records to return. The default is 25.
No
name
string A partial name to match against user names.
No
userid
string A partial ID to match against user IDs.
No
string A partial email address to match against user email addresses.
count
integer Total number of results. May be greater than the length of hits if additional results exist. Use size and offset to page additional results.
hits
metadata Details for each result, including id, iamid, userid, bimAuthorizations, iamAuthorizations, authorizations, projectId, permissions, groupPermissions, profile, authentication, systemGenerated, lastLogin, lastExternalRefresh, disabled, hasLogin, groups, createdAt, updatedAt, and schema values. The following details are excluded from the response if the requesting user does not have the USER_ADMIN Immuta permission: bimAuthorizations, iamAuthorizations, and authorizations.
id
integer The user ID.
iamid
string The ID of the IAM the user is connected to.
userid
string The user's username.
bimAuthorizations
array The attributes and groups given to the user's BIM profile. This attribute is excluded from the response if the requesting user does not have the USER_ADMIN Immuta permission.
id
integer The user ID.
iamid
string The ID of the IAM the user is connected to.
userid
string The user's username.
bimAuthorizations
array The attributes and groups given to the user's BIM profile.
iamAuthorizations
array The attributes and groups given to the user's external IAM profile.
authorizations
metadata Details on the user's attributes.
iamid
string The IAM ID.
Yes
id
integer The user ID.
Yes
params
query
No
profile
array Details about the user, including name, email, phone, about, location, organization, position, preferences, externalUserIds, scim, id, and the date of creation.
preferences
array Information about the user's tabDataSourceState, tabProjectState, sortDataSourceState, and currentProject.
permissions
array A list of the user's permissions.
iamid
string The IAM ID.
userid
string The user's username.
authorizations
array The user's attributes and groups.
iamid
string The IAM ID.
Yes
id
integer The user ID.
Yes
name
string The user's name.
string The user's email.
phone
string The user's phone number.
about
string Details about the user.
location
string The user's location.
organization
string The user's organization.
iamid
string The IAM ID.
Yes
userid
string The user's username.
Yes
id
integer The group ID.
name
string The group name.
iamid
string The IAM ID.
groupUser
integer The user's ID within the group.
userid
string The user's username.
Yes
userid
string The user's username.
iamid
string The IAM ID.
iamid
string The IAM ID.
Yes
name
string The new group name.
Yes
string The new group's email.
No
description
string The new group's description.
id
integer The group ID.
iamid
string The IAM ID.
name
string The group name.
string The group email.
authorizations
array The group's attributes.
description
The group description.
PUT
/bim/group/{groupId}
DELETE
/bim/group/{groupId}/user/{groupuserid}
POST
/bim/group/{groupId}/user
PUT
/bim/iam/{iamid}/group/{groupid}/authorizations
groupId
integer The group ID.
Yes
name
string The group's new name.
No
string The group's new email.
No
description
string The group's new description.
No
id
integer The group ID.
iamid
string The IAM ID.
name
string The group name.
string The group email.
authorizations
string The group attributes.
description
string The group description.
groupId
integer The group ID.
Yes
groupuserid
integer The user's group ID.
Yes
groupId
integer The group ID.
Yes
userid
string The new user's ID.
Yes
iamid
string The new user's IAM.
Yes
id
integer The user's group ID.
group
integer The group ID.
profile
integer The user ID.
createdAt
timestamp The date the user was added to the group.
updatedAt
timestamp The date the user was last updated within the group.
iamid
string The IAM ID.
Yes
groupId
integer The group ID.
Yes
attributeName
string The attribute name.
Yes
attributeValue
string The attribute value.
id
integer The group ID.
iamid
string The IAM ID.
name
string The group name.
string The group email.
authorizations
string The group attributes.
description
string The group description.
GET
/bim/group
GET
/bim/group/{groupId}
GET
/bim/group/{groupId}/user
name
string A partial name to match against group names.
No
ids
string[] Filters results to return groups with specified IDs.
No
userid
integer The user ID. This will return the groups that the user is a member of.
No
iamid
array[string] Optionally provide IAMs to filter the groups returned.
count
integer Total number of results. May be greater than the length of hits if additional results exist. Use size and offset to page additional results.
hits
metadata Details on each result, including id, iamid, name, gid, email, authorizations, description, scim, scimid, createdAt, and updatedAt values.
id
integer The group ID.
iamid
string The IAM ID.
name
string The name of the group.
string The group email.
groupId
integer The ID of the group.
Yes
id
integer The group's ID.
iamid
string The IAM ID.
name
string The group's name.
string The group's email.
authorizations
metadata Details on the group's attributes.
descriptions
string The group's description.
groupId
integer The ID of the group.
Yes
offset
integer Offset to start returning values.
No
size
integer The maximum number of records to return. The default is 25.
No
sortOrder
string The order that the results will be sorted in. Possible values: asc, desc. The default is asc.
count
integer Total number of results. May be greater than the length of hits if additional results exist. Use size and offset to page additional results.
hits
metadata Details for each result, including id, group, profile, uid, iamid, userid, disabled, scim, scimid, createdAt, and updatedAt values.
id
integer The group ID.
iamid
string The ID of the IAM the user is connected to.
userid
string The user's username.
profile
metadata Details on the user, including iamid, userid, name, email, phone, about, location, organization, position, preferences, externalUserIds, scim, systemGenerated, id, createdAt, and updatedAt values.
groupId
integer The group ID.
Yes
projectId
integer The project ID.
No
name
string The name to associate with the API key.
No
apikey
string The new API key.
keyid
integer The new API key's ID.
project
integer The project ID.
name
string The name of the API key.
POST
/bim/apikey/authenticate
POST
/bim/apikey/impersonate
apikey
string The API key.
authenticated
boolean If true, the user has been successfully authenticated.
token
string The user's access token.
apikey
string The API key of the account with the user impersonation permission.
userid
string The username of the impersonated user.
iamid
string The IAM ID of the impersonated user.
projectId
integer The project ID of the impersonated user.
authenticated
boolean If true, the user has been successfully authenticated.
token
string The user's access token.
POST
/bim/token
GET
/bim/iam/{iamid}/user/{userid}/apikeys
token
string The access token.
id
integer The access token ID.
type
string The token type: bearer.
iamid
string The IAM ID.
userid
string The user's username.
project
integer If the token was generated using a project API key, this is the project ID.
token
string The access token.
iamid
string The IAM ID.
Yes
userid
string The user's username.
Yes
keyid
integer The API key ID.
created
timestamp The date the API key was created.
project
array Information on the project attached to the API key, including values for name, status, description, documentation, deleted, allowMaskedJoins, subscriptionType, subscriptionPolicy, equalization, snowflake, salt, type, schema, id, createdAt, updatedAt, workspace, createdBy, updatedBy, and schemaEvolutionId.
lastUsed
timestamp The date the API key was last used.
name
string The API key name.
keyid
integer The API key ID.
Yes
revokedTokens
integer The number of tokens revoked.
No
No
No
Yes
Yes
No
No
Yes
No
No
curl \
--request POST \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
--data @example-payload.json \
https://demo.immuta.com/bim/iam/bim/user{
"iamid": "bim",
"userid": "[email protected]",
"profile": {
"name": "Charlie Doe",
"email": "[email protected]"
},
"permissions": []
}{
"newUser": {
"id": 18,
"iamid": "bim",
"userid": "[email protected]",
"bimAuthorizations": null,
"iamAuthorizations": null,
"authorizations": {},
"permissions": ["CREATE_DATA_SOURCE_IN_PROJECT", "CREATE_PROJECT"],
"profile": {
"name": "Charlie Doe",
"email": "[email protected]",
"phone": null,
"about": null,
"location": null,
"organization": null,
"position": null,
"preferences": null,
"externalUserIds": {},
"scim": null,
"systemGenerated": false,
"id": 18,
"createdAt": "2021-10-07T01:35:13.382Z",
"updatedAt": "2021-10-07T01:35:13.382Z"
},
"authentication": null,
"systemGenerated": false,
"lastLogin": null,
"lastExternalRefresh": "2021-10-07T01:35:13.000Z",
"disabled": false,
"createdAt": "2021-10-07T01:35:13.389Z",
"updatedAt": "2021-10-07T01:35:13.389Z"
},
"newUserLink": "https://demo.immuta.com/login?token=******&userid=charlie.doe%40immuta.com&name=Charlie%20Doe",
"emailFailed": false,
"emailSent": false
}curl \
--request POST \
--header "Content-Type: application/json" \
https://demo.immuta.com/LDAPIAM/user/authenticatecurl \
--request POST \
--header "Content-Type: application/json" \
--data @example-payload.json \
https://demo.immuta.com/bim/iam/bim/user/authenticate{
"username": "[email protected]",
"password": "********"
}{
"authenticated": true,
"token": "6913229***********0d3da",
"tokenExpiration": "2021-09-29T19:12:51.467Z"
}curl \
--request PUT \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
https://demo.immuta.com/bim/iam/bim/user/[email protected]/profile{
"email": "[email protected]",
"phone": null,
"about": null,
"location": "Boston, MA",
"organization": null,
"position": "",
"preferences": {
"sortDataSourceState": {
"column": "name",
"order": "asc",
"size": 12
},
"sortProjectDataSourceState": {
"column": "dataSourceName",
"order": "asc",
"size": 12
},
"sortProjectState": {
"column": "name",
"order": "asc",
"size": 12
},
"notifications": {
"email": false
},
"tabDataSourceState": 0,
"tabProjectState": 0,
"dataSourceOverrides": {},
"showPolicySearchDetailLabels": true
},
"externalUserIds": {},
"scim": null,
"systemGenerated": false,
"iamid": "bim",
"userid": "[email protected]"
}{
"name": "Jane Doe",
"email": "[email protected]",
"phone": null,
"about": null,
"location": "Boston, MA",
"organization": null,
"position": null,
"externalUserIds": {},
"systemGenerated": false,
"id": 2,
"createdAt": "2021-08-16T20:30:43.698Z",
"updatedAt": "2021-10-18T20:49:06.237Z",
"preferences": {
"sortProjectState": {
"column": "name",
"order": "asc",
"size": 12
},
"currentProject": null,
"sortDataSourceState": {
"column": "name",
"order": "asc",
"size": 12
},
"sortProjectDataSourceState": {
"column": "dataSourceName",
"order": "asc",
"size": 12
},
"notifications": {
"email": false
},
"tabDataSourceState": 0,
"tabProjectState": 0,
"dataSourceOverrides": {},
"showPolicySearchDetailLabels": true
},
"scim": null
}curl \
--request DELETE \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
https://demo.immuta.com/bim/iam/bim/user/john.doe%40immuta.com/permissions/CREATE_DATA_SOURCE_IN_PROJECT{
"id": 3,
"iamid": "bim",
"userid": "[email protected]",
"bimAuthorizations": null,
"iamAuthorizations": null,
"authorizations": {},
"permissions": [
"CREATE_PROJECT",
"CREATE_DATA_SOURCE"
],
"profile": 3,
"authentication": 3,
"systemGenerated": false,
"lastLogin": "2021-09-27T15:29:00.154Z",
"lastExternalRefresh": "2021-09-27T15:29:00.154Z",
"disabled": false,
"createdAt": "2021-08-19T19:33:38.582Z",
"updatedAt": "2021-10-06T22:03:48.611Z"
}curl \
--request PUT \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
https://demo.immuta.com/bim/iam/bim/user/charlie.doe%40immuta.com/permissions[
"CREATE_DATA_SOURCE_IN_PROJECT", "CREATE_PROJECT", "CREATE_DATA_SOURCE"
]{
"id": 18,
"iamid": "bim",
"userid": "[email protected]",
"bimAuthorizations": null,
"iamAuthorizations": null,
"authorizations": {},
"permissions": [
"CREATE_DATA_SOURCE_IN_PROJECT",
"CREATE_PROJECT",
"CREATE_DATA_SOURCE"
],
"profile": 18,
"authentication": null,
"systemGenerated": false,
"lastLogin": null,
"lastExternalRefresh": "2021-10-07T01:35:13.000Z",
"disabled": false,
"createdAt": "2021-10-07T01:35:13.389Z",
"updatedAt": "2021-10-07T16:10:40.214Z"
}curl \
--request PUT \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
https://demo.immuta.com/bim/iam/bim/user/jane.doe%40immuta.com/password{
"originalPassword": "old********",
"password": "new********"
}{
"success": true
}curl \
--request PUT \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
https://demo.immuta.com/bim/iam/bim/user/jane.doe%40immuta.com/disable/true{
"userid": "[email protected]",
"disabled": true
}curl \
--request POST \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
--data @example-payload.json \
https://demo.immuta.com/bim/syncUsers{
"iamid": "ldap"
}curl -X 'POST' \
'https://demo.immuta.com/iam/JumpCloud/sync' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer 496ac257b8db4a96a16715fb4ed048dc' \{
"dryRun": true,
"iamConfig": {
"authenticationOnly": false,
"credentials": {
"bind_dn": "uid=bind-user,ou=Users,o=redacted,dc=jumpcloud,dc=com"
},
"defaultPermissions": ["CREATE_DATA_SOURCE", "CREATE_PROJECT"],
"displayName": "Jump Cloud LDAP",
"id": "jumpcloudLDAPIAM",
"ldapSync": {},
"options": {
"groupSearchFilter": "(&(objectClass=groupOfNames)(cn=%s*))",
"host": "ldap.jumpcloud.com",
"port": 636,
"useSSL": true,
"userGroupSearchFilter": "(member=<dn>)",
"userSearchBase": "o=redacted,dc=jumpcloud,dc=com",
"userSearchFilter": "mail=%s",
"allowIdPInitiatedSSO": false
},
"plugin": "ldap",
"schema": {
"group": {
"name": "cn"
},
"profile": {
"email": "mail",
"name": "cn",
"phone": "phone"
},
"authorizations": {},
"externalUserIds": {}
},
"supportedActions": ["syncGroups"],
"type": "ldap"
}
}{
"totalCount": 10,
"importedUsers": [{
"userId": "[email protected]",
"dn": "uid=user-1,ou=Users,o=redacted,dc=jumpcloud,dc=com"
}, {
"userId": "[email protected]",
"dn": "uid=user-2,ou=Users,o=redacted,dc=jumpcloud,dc=com"
}, {
"userId": "[email protected]",
"dn": "uid=user-3,ou=Users,o=redacted,dc=jumpcloud,dc=com"
}, {
"userId": "[email protected]",
"dn": "uid=user-4,ou=Users,o=redacted,dc=jumpcloud,dc=com"
}, {
"userId": "[email protected]",
"dn": "uid=user-5,ou=Users,o=redacted,dc=jumpcloud,dc=com"
}],
"refreshedUsers": [],
"disabledUsers": [],
"enabledUsers": [],
"count": 5
}curl \
--request PUT \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
https://demo.immuta.com/bim/iam/bim/user/[email protected]/authorizations/Finance/Red%20Team{
"id": 16,
"iamid": "bim",
"userid": "[email protected]",
"bimAuthorizations": {
"Finance": ["CFA", "Red Team"]
},
"iamAuthorizations": null,
"authorizations": {
"Finance": ["CFA", "Red Team"]
},
"permissions": ["CREATE_DATA_SOURCE_IN_PROJECT", "CREATE_PROJECT"],
"profile": 16,
"authentication": 5,
"systemGenerated": false,
"lastLogin": "2021-10-07T02:58:31.708Z",
"lastExternalRefresh": "2021-10-07T02:58:31.708Z",
"disabled": false,
"createdAt": "2021-10-06T22:17:46.500Z",
"updatedAt": "2021-10-18T17:09:53.711Z"
}curl \
--request DELETE \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
--data @example-payload.json \
https://demo.immuta.com/bim/iam/bim/user/[email protected]/authorizations/Country/JP{
"id": 4,
"iamid": "bim",
"userid": "[email protected]",
"bimAuthorizations": {
"Country": ["US"],
"Environment": ["Dev"],
"OfficeLocation": ["Japan"]
},
"iamAuthorizations": null,
"authorizations": {
"Country": ["US"],
"Environment": ["Dev"],
"OfficeLocation": ["Japan"]
},
"permissions": ["CREATE_DATA_SOURCE_IN_PROJECT", "CREATE_PROJECT", "USER_ADMIN", "GOVERNANCE"],
"profile": 4,
"authentication": 3,
"systemGenerated": false,
"lastLogin": "2022-08-11T01:36:01.947Z",
"lastExternalRefresh": "2022-08-11T01:36:01.947Z",
"disabled": false,
"createdAt": "2022-06-02T17:37:24.515Z",
"updatedAt": "2022-08-11T18:40:51.366Z"
}curl \
--request POST \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
https://demo.immuta.com/bim/iam/bim/user/jane.doe%40demo.com/clone[
"[email protected]"
]{
"failedEmails": []
}curl \
--request GET \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
https://demo.immuta.com/bim/iam[
{
"id": "bim",
"displayName": "Immuta",
"type": "built-in",
"oauth": false
},
{
"id": "oktaSamlIAM",
"displayName": "Okta SAML",
"type": "saml",
"oauth": false
},
{
"id": "ldap",
"displayName": "LDAP",
"type": "ldap"
}
]curl \
--request GET \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
https://demo.immuta.com/bim/user?size=25&name=bar&sortOrder=asc{
"count": "2",
"hits": [
{
"id": 18,
"iamid": "bim",
"userid": "[email protected]",
"permissions": [
"CREATE_DATA_SOURCE",
"CREATE_PROJECT"
],
"profile": {
"name": "Barrett Springer",
"email": "[email protected]",
"id": 18,
"createdAt": "2018-07-05T07:37:06.569Z",
"updatedAt": "2018-07-05T07:37:06.569Z"
},
"authentication": 18,
"systemGenerated": false,
"lastLogin": "2018-07-05T07:39:56.365Z",
"disabled": false,
"createdAt": "2018-07-05T07:37:05.987Z",
"updatedAt": "2018-07-05T07:37:05.987Z"
},
{
"id": 5,
"iamid": "bim",
"userid": "[email protected]",
"authorizations": {
"auth": [
"SOMETHING_ELSE"
]
},
"permissions": [
"CREATE_DATA_SOURCE",
"CREATE_PROJECT",
"AUDIT"
],
"profile": {
"name": "Barry Howard",
"email": "[email protected]",
"preferences": {
"sortDataSourceState": {
"column": "name",
"order": "asc",
"size": 12
},
"sortProjectState": {
"column": "name",
"order": "asc",
"size": 12
}
},
"id": 5,
"createdAt": "2018-07-05T07:37:06.392Z",
"updatedAt": "2018-07-05T22:32:43.864Z"
},
"authentication": 5,
"systemGenerated": false,
"lastLogin": "2018-07-05T22:32:44.167Z",
"disabled": false,
"createdAt": "2018-07-05T07:37:05.818Z",
"updatedAt": "2018-07-05T07:37:05.818Z"
}
]
}curl \
--request GET \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
https://demo.immuta.com/bim/rpc/user/current{
"profile": {
"name": "Barrett Springer",
"email": "[email protected]",
"phone": null,
"about": null,
"location": null,
"organization": null,
"position": null,
"preferences": null,
"hdfsUser": null,
"id": 18,
"createdAt": "2018-07-05T07:37:06.569Z",
"updatedAt": "2018-07-05T07:37:06.569Z"
},
"permissions": [
"CREATE_DATA_SOURCE",
"CREATE_PROJECT"
],
"authorizations": {
"Roles": [
"Analyst"
],
"Location": [
"Columbus"
]
},
"iamid": "bim",
"userid": "[email protected]",
"authorizations": null,
"updatedAt": "2018-07-05T07:37:05.987Z",
"systemGenerated": false,
"disabled": false,
"hasLogin": true,
"lastLogin": "2018-07-05T07:39:56.365Z"
}curl \
--request GET \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
https://demo.immuta.com/bim/iam/bim/user/2{
"profile": {
"name": "John Doe",
"email": "[email protected]",
"phone": null,
"about": null,
"location": null,
"organization": null,
"position": null,
"preferences": {
"sortProjectState": {
"column": "name",
"order": "asc",
"size": 12
},
"currentProject": null
},
"externalUserIds": {},
"scim": null,
"systemGenerated": false,
"id": 2,
"createdAt": "2021-08-16T20:30:43.698Z",
"updatedAt": "2021-09-14T01:17:02.786Z"
},
"permissions": [
"CREATE_DATA_SOURCE_IN_PROJECT",
"CREATE_PROJECT",
"CREATE_DATA_SOURCE",
"USER_ADMIN",
"APPLICATION_ADMIN",
"AUDIT",
"GOVERNANCE",
"IMPERSONATE_HDFS_USER",
"CREATE_S3_DATASOURCE_WITH_INSTANCE_ROLE",
"FETCH_POLICY_INFO",
"CREATE_FILTER",
"IMPERSONATE_USER",
"PROJECT_MANAGEMENT"
],
"iamid": "bim",
"userid": "[email protected]",
"authorizations": {},
"updatedAt": "2021-09-29T17:57:09.059Z",
"systemGenerated": false,
"disabled": false,
"lastLogin": "2021-09-30T19:20:03.327Z",
"lastExternalRefresh": "2021-09-30T19:20:03.327Z",
"bimAuthorizations": null,
"iamAuthorizations": null,
"hasLogin": true
}curl \
--request GET \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
https://demo.immuta.com/bim/iam/bim/user/2/profile{
"name": "John Doe",
"email": "[email protected]",
"phone": null,
"about": null,
"location": null,
"organization": null,
"position": null,
"preferences": {
"sortProjectState": {
"column": "name",
"order": "asc",
"size": 12
},
"currentProject": null
},
"externalUserIds": {},
"scim": null,
"systemGenerated": false,
"id": 2,
"createdAt": "2021-08-16T20:30:43.698Z",
"updatedAt": "2021-09-14T01:17:02.786Z"
}curl \
--request GET \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
https://demo.immuta.com/bim/iam/bim/user/john.doe%40immuta.com/groups[
{
"id": 2,
"name": "API Group #2",
"iamid": "bim",
"groupUser": 6
}
]curl \
--request DELETE \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
https://demo.immuta.com/bim/iam/bim/user/charlie.doe%40immuta.com{
"userid": "[email protected]",
"iamid": "bim"
}curl \
--request POST \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
--data @example-payload.json \
https://demo.immuta.com/bim/group{
"iamid": "bim",
"name": "API Group"
}{
"id": 3,
"iamid": "bim",
"name": "API Group",
"gid": null,
"email": null,
"authorizations": null,
"description": null,
"scim": null,
"scimid": null,
"createdAt": "2021-09-29T15:15:26.615Z",
"updatedAt": "2021-09-29T15:15:26.615Z"
}curl \
--request PUT \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
--data @example-payload.json \
https://demo.immuta.com/bim/group/2{
"name": "API Group #2",
"description": "This group was edited through the API"
}{
"id": 2,
"iamid": "bim",
"name": "API Group #2",
"gid": null,
"email": "[email protected]",
"authorizations": {
"Finance": [
"CFA"
]
},
"description": "This group was edited through the API",
"scim": null,
"scimid": null,
"createdAt": "2021-09-16T17:24:55.066Z",
"updatedAt": "2021-09-29T17:32:07.725Z"
}curl \
--request DELETE \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
https://demo.immuta.com/bim/group/1/user/2curl \
--request POST \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
--data @example-payload.json \
https://demo.immuta.com/bim/group/2/user{
"userid": "[email protected]",
"iamid": "bim"
}{
"id": 6,
"group": 2,
"profile": 2,
"createdAt": "2021-09-29T17:57:09.054Z",
"updatedAt": "2021-09-29T17:57:09.054Z"
}curl \
--request PUT \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
https://demo.immuta.com/bim/iam/bim/group/2/authorizations/Finance/Red%20Team{
"id": 2,
"iamid": "bim",
"name": "API Group #2",
"gid": null,
"email": "[email protected]",
"authorizations": {
"Finance": ["CFA", "Red Team"]
},
"description": "This group was edited through the API",
"scim": null,
"scimid": null,
"createdAt": "2021-09-16T17:24:55.066Z",
"updatedAt": "2021-10-08T13:41:06.211Z"
}curl \
--request GET \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
https://demo.immuta.com/bim/group?size=25&sortOrder=asc{
"count": "3",
"hits": [
{
"id": 2,
"iamid": "bim",
"name": "engineers",
"gid": null,
"email": "[email protected]",
"authorizations": null,
"description": null,
"createdAt": "2018-07-05T07:37:07.209Z",
"updatedAt": "2018-07-05T07:37:07.209Z"
},
{
"id": 1,
"iamid": "bim",
"name": "founders",
"gid": null,
"email": null,
"authorizations": null,
"description": null,
"createdAt": "2018-07-05T07:37:07.177Z",
"updatedAt": "2018-07-05T07:37:07.177Z"
},
{
"id": 20,
"iamid": "bim",
"name": "system administrators",
"gid": null,
"email": null,
"authorizations": null,
"description": null,
"createdAt": "2018-07-05T07:37:07.595Z",
"updatedAt": "2018-07-05T07:37:07.595Z"
}
]
}curl \
--request GET \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
https://demo.immuta.com/bim/group/2{
"id": 2,
"iamid": "bim",
"name": "engineers",
"gid": null,
"email": "[email protected]",
"authorizations": {
"Location": [
"College Park"
]
},
"description": null,
"createdAt": "2018-07-05T07:37:07.209Z",
"updatedAt": "2018-07-06T01:42:55.518Z"
}curl \
--request GET \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
https://demo.immuta.com/bim/group/2/user{
"count": 2,
"hits": [
{
"id": 1,
"group": 2,
"profile": {
"name": "Willie Gomez",
"email": "[email protected]",
"phone": null,
"about": null,
"location": null,
"organization": null,
"position": null,
"preferences": {
"tabDataSourceState": 1,
"tabProjectState": 1
},
"hdfsUser": "wgomez",
"id": 3,
"createdAt": "2018-07-05T07:37:06.373Z",
"updatedAt": "2018-07-05T07:37:06.373Z"
},
"createdAt": "2015-08-23T00:00:00.000Z",
"updatedAt": "2018-07-05T07:37:07.283Z",
"userid": "[email protected]",
"iamid": "bim"
},
{
"id": 2,
"group": 2,
"profile": {
"name": "Helen James",
"email": "[email protected]",
"phone": null,
"about": null,
"location": null,
"organization": null,
"position": null,
"preferences": null,
"hdfsUser": null,
"id": 13,
"createdAt": "2018-07-05T07:37:06.470Z",
"updatedAt": "2018-07-05T07:37:06.470Z"
},
"createdAt": "2018-07-05T07:37:07.291Z",
"updatedAt": "2018-07-05T07:37:07.291Z",
"userid": "[email protected]",
"iamid": "bim"
}
]
}curl \
--request DELETE \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
https://demo.immuta.com/bim/group/3curl \
--request POST \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
--data @example-payload.json \
https://demo.immuta.com/bim/apikey{
"projectId": 1,
"name": "My Project API Key"
}{
"apikey": "******",
"keyid": 334,
"project": 1,
"name": "My Project API Key",
"context": null
}curl \
--request POST \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
--data @example-payload.json \
https://demo.immuta.com/bim/apikey/authenticate{
"apikey": "100874dyour-api-key-79aa38bbfe0e8c787"
}{
"authenticated": true,
"token": "be420************2745ea0307"
}curl \
--request POST \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
--data @example-payload.json \
https://demo.immuta.com/bim/apikey/impersonate{
"apikey": "requesting-users-api-key",
"userid": "[email protected]",
"iamid": "bim"
}{
"authenticated": true,
"token": "0753*************c61d2"
}curl \
--request POST \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
--data @example-payload.json \
https://demo.immuta.com/bim/token{
"token": "48983da*********85220837d"
}{
"id": 384,
"type": "bearer",
"iamid": "bim",
"userid": "[email protected]",
"project": null,
"context": null,
"token": "4898*********220837d",
"created": "2021-10-15T03:59:03.000Z",
"lastUsed": "2021-10-15T03:59:57.185Z",
"expiration": "2021-10-15T04:59:57.185Z",
"name": null,
"application": null,
"derivedFrom": null,
"createdAt": "2021-10-15T03:59:03.562Z",
"updatedAt": "2021-10-15T03:59:57.186Z",
"scopes": null,
"impersonationuserid": null,
"impersonationiamid": null
}curl \
--request GET \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
https://demo.immuta.com/bim/iam/bim/user/john.doe%40immuta.com/apikeys[
{
"keyid": 323,
"created": "2021-10-06T18:28:13.000Z",
"project": {
"projectKey": "Credit Payments",
"name": "Credit Payments",
"status": "open",
"description": "This project contains all data sources under the schema, credit_payments, from [email protected]:3306/credit_payments.",
"documentation": "This is an automatically generated project that collects data sources under the schema, credit_payments, from [email protected]:3306/credit_payments. When data sources in this schema are added to the system, they will automatically be added to this project.",
"deleted": false,
"allowMaskedJoins": false,
"subscriptionType": "manual",
"subscriptionPolicy": null,
"equalization": null,
"snowflake": null,
"salt": "e0c4a8c5-2a5b-4488-9c43-cb3d816172f4",
"type": "Schema",
"schema": "credit_payments",
"id": 3,
"createdAt": "2021-09-09T17:06:39.839Z",
"updatedAt": "2021-09-09T17:06:39.839Z",
"workspace": null,
"createdBy": 2,
"updatedBy": 2,
"schemaEvolutionId": 2
},
"lastUsed": "2021-10-06T18:28:13.341Z",
"name": "Credit Payments",
"context": null
}
]curl \
--request DELETE \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
https://demo.immuta.com/bim/apikey/323{
"revokedTokens": 1
}updatedAtupdatedAtupdatedAtData Source API reference guide
This page describes the dataSource endpoint, through which users can subscribe to data sources and manage data source tasks. To create data sources, see the specific handler endpoints.
.
.
.
.
GET /dataSource
Search for data sources that you own or are authorized to see.
The response will return data sources you own or are authorized to see.
The following request returns 2 data sources.
GET /dataSource/{dataSourceId}
Get a data source based on the ID.
Query parameters
Response Schema
The following request gets a data source based on the ID 22.
GET /dataSource/name/{dataSourceName}
Get a data source based on the name.
The following request gets a data source based on the name Public Barfoo.
GET /dataSource/sqlTableName/{shortName}
Get a data source based on the SQL table name.
The following request gets a data source based on the SQL table name customer_data.
GET /dataSource/{dataSourceId}/lineage/{type}
Get parent and child relationship records for derived data sources using a specified data source ID.
The following request gets the parent relationship records for the derived data source with the data source ID 4.
GET /dataSource/{dataSourceId}/blob/{blobid*}
Retrieve a blob.
The response will download the blobs in a file you specify.
The following request retrieves a blob.
GET /dataSource/{dataSourceId}/access
Get all users with the provided access level for this data source.
The following request gets all users with the provided access level for this data source.
GET /dataSource/{dataSourceId}/users/{profileId}/policyInfo
Retrieves the visibilities, masking information, and filters that the passed in user has access to in the specified data source.
The following request gets the visibility information for the user with the profile ID 2 on the data source with the data source ID 16.
GET /dataSource/{dataSourceId}/users/{profileId}/visibilityReport
Retrieves a summary of total records, total visibilities (the unique values contained in a column protected by a row-level security policy that allow Immuta to determine whether or not a user can see a given row if they possess an attribute that matches the visibility of that row), and visibilities a given user has access to.
The following request gets all of the visibility information for the user with the profile ID 2 on the data source with the data source ID 16.
GET /dataSource/{dataSourceId}/visibilityReport
Retrieves a summary of total records, total visibilities (the unique values contained in a column protected by a row-level security policy that allow Immuta to determine whether or not a user can see a given row if they possess an attribute that matches the visibility of that row), and visibilities the current user has access to for a specified data source.
The following request gets all of the visibility information for the current user on the data source with the data source ID 16.
POST /dataSource/subscribe
Subscribe to a data source.
The following request subscribes to the data source with ID 22.
Payload example
Deprecation notice
Support for unmask requests has been deprecated.
POST /dataSource/{dataSourceId}/reverseMask
Makes a request for values to be unmasked.
The following requests for values to be unmasked.
Request payload example
POST /dataSource/{dataSourceId}/access
Add a user to a specific data source. Requestors cannot add themselves to a data source. To request access to a data source, .
The following request adds a user (saved in example-payload.json) to this data source.
Request payload example
GET /dataSource/tasks/pending
Get all pending tasks for this user and pending tasks this user has created.
The following request gets all pending tasks for a user and pending tasks the user has created.
GET /dataSource/tasks/{taskId}
Handles the given task and marks it as complete.
The following request handles the given task and marks it as complete.
GET /dataSource/{dataSourceId}/tasks
Returns all tasks the user has made, can approve or deny, or validate for this data source.
The following request returns all tasks the user has made, can approve or deny, or validate for this data source.
PUT /dataSource/{dataSourceId}/access/{subscriptionId}
Change user status for a specific data source. Requestors cannot update their own status for a data source.
The following request changes the user status to subscribed for the specified data source.
Payload example
PUT /dataSource/{dataSourceId}
Update a data source.
The following request updates the data source's documentation (saved in example-payload.json).
Request payload example
PUT /dataSource/bulk/{type}
Update data sources.
The following request adds the Address.email tag to two data sources.
Payload example
POST /dataSource/bulkRefreshViews
Refresh views.
The following request with the payload below refreshes the view for the data source with the ID 202.
Payload example
POST /dataSource/{dataSourceId}/blobs
Save blob metadata to Immuta.
The following request saves blob metadata to Immuta.
Payload example
POST /dataSource/{dataSourceId}/persistBlob
Save blob metadata to Immuta and store raw content in local blob store.
The following request saves blob metadata to Immuta and stores raw content in local blob stores.
Payload example
PUT /dataSource/detectRemoteChanges
Trigger the schema monitoring job for the specified detection group, or all groups if no payload parameters are given.
Responses may include bulkId, schemaDetection, or columnDetection objects, depending on the payload.
The following request triggers the schema monitoring job for the specified detection group.
Payload example
The tabs below illustrate payloads for triggering schema monitoring on a host, database, or table. The request will run schema monitoring for all databases registered under the hostname provided in the payload.
The request will run schema monitoring for all databases registered under the hostname provided in the payload.
The request will run schema monitoring on the database provided in the payload. If data sources were initially registered via the V2 API, this request will locate new schemas that contain tables Immuta has the ability to access, and Immuta will create a new schema project associated with these newly discovered schemas and create data sources for each table located. If data sources were initially registered via the V1 API, this request will only update the columns and tables of registered schema and tables of the specified database; it will not register any new schemas.
The request will run column detection and update the columns on the table specified in the payload.
The tabs below illustrate the example response for each example payload provided above.
GET /dataSource/{dataSourceId}/test
Refreshes tags from an external catalog on a data source. The external catalog must be linked to the data source.
The following request refreshes external catalog tags on the data source.
GET /dataSource/blobHandlerTypes
Retrieve all blob handlers the current user is allowed to create.
The following request retrieves all blob handlers the current user is allowed to create.
GET /dataSource/byPurposes
Get data sources that match a set of purposes.
The following request gets data sources that match a set of purposes.
GET /dataSource/rpc/mine
Retrieves all the data sources the current user has access to.
The following request retrieves all the data sources the current user has access to.
GET /dataSource/{dataSourceId}/activities
Get all of the recent policy activities for a given data source.
The following request gets all of the recent policy activities for a given data source.
GET /dataSource/{dataSourceId}/contacts
Gets the profiles for the data source owners and experts.
The following request gets all the profiles for the data source owners and experts.
GET /dataSource/{dataSourceId}/tags
Get the tags for a data source.
The following request gets the tags for data source 4.
GET /dataSource/{dataSourceId}/{columnName}/unmaskUsers
Return the users who can unmask the given column.
The following request returns the users who can unmask the given column.
DELETE /dataSource/{dataSourceId}
Delete a data source. This will perform a soft delete on the first call and a hard delete the second time.
The following request deletes the data source 23.
DELETE /dataSource/tasks/{taskId}
Delete the specified task.
The following request deletes a specified task.
DELETE /dataSource/{dataSourceId}/blob/{blobId*}
Delete a blob.
When the blob is successfully deleted, there will be no response.
The following request deletes a blob.
DELETE /dataSource/{dataSourceId}/unsubscribe
Unsubscribe from a data source.
The following request unsubscribes the user from data source 23.
GET
Get parent and child relationship records for derived data sources using a specified data source ID.
GET
Retrieve a blob.
GET
Get all users with the provided access level for this data source.
GET
Retrieves the visibilities, masking information, and filters that the passed in user has access to in the specified data source.
GET
Retrieves a summary of total records, total visibilities, and visibilities a given user has access to.
GET
Retrieves a summary of total records, total visibilities, and visibilities the current user has access to for a specified data source.
searchText
string Searches for data source names using the provided string.
No
column
array[string] Searches for data source column names.
No
connectionString
array[string] Searches by connection string.
No
schema
string Searches for data source schema.
No
nameOnly
boolean When true, searchText will only search data source names. Default is false.
No
idOnly
boolean When true, only returns the ID Of the data source and the user's subscription status.
No
dataSourceIds
array[integer] Searches for the provided data source IDs.
No
selectFields
array[string] This field accepts the values id, name, and columnEvolutionEnabled. When id or name are provided, the request will return only the ID or name of the data source and the subscription status. If columnEvolutionEnabled is provided, the response will also include information about the policies, policy conflicts, and workspaces associated with the data sources.
No
offset
integer Used in combination with size to fetch pages. Default is 0.
No
size
integer The number of results to return per page. Default is 10.
No
sortField
string Used to sort results by field, which must be createdAt, name, blobHandlerType, subscriptionStatus, recordCount, status, policy, or editable.
No
sortOrder
string Sorts results by order, which must be asc or desc.
No
excludedProjects
array[integer] Filter out any data sources that belong to the specified projects.
No
ephemeral
boolean When true, returns ephemeral data sources.
No
clusterName
string The name of the remote cluster the data source is connected to.
No
mode
integer Specifies the query mode, which must be 0 (FULL), 1 (COUNT), 4 (TAG), 5 (MIN_MAX), or 6 (STATUS).
No
globalPolicy
string Filter by data sources that have this Global Policy applied.
No
hostname
string Searches data sources by hostname.
No
determinePolicyContflicts
boolean When true, filters results to return the data sources with policy conflicts.
No
collectionId
string Filter by data sources in the domain with this ID.
No
collectionExclude
string When true, filters results to return the data sources in the domain of the provided ID.
No
sddTemplateName
string Filter by data sources that have the specified SDD identification framework applied.
No
excludeSddTemplateName
string Filter by data sources that do not have the specified SDD identification framework applied.
No
schemaEvolutionId
integer The schema evolution ID.
recordCount
integer The record count.
status
array[string] Accepted statuses are passed or failed.
subscriptionStatus
array[string] Accepted statuses are subscribed or unsubscribed.
blobHandlerType
array[string] Describes the type of underlying blob handler of this data source (e.g., Custom, MS SQL).
subscriptionType
string The type of subscription policy on the project. The type can be automatic (which allows anyone to subscribe), approval (which requires the subscriber to be manually approved), policy (which only allows users with specific groups or attributes to subscribe), or manual (which requires users to be manually added).
connectionString
string The connection string information.
sqlSchemaName
string The schema name.
policy
string When this value is none, there are no data policies applied to the data source. Otherwise, this field indicates whether or not there are policy conflicts among the data policies applied to the data source.
policyHandlerType
string The policy handler type, such as None or Builder.
blobHandler
array[object] A list of full URLs providing the locations of all blob store handlers to use with this data source.
blobHandlerType
string Describes the type of underlying blob handler that will be used with this data source (e.g., MS SQL).
createdBy
integer The ID of the profile creating the data source.
deleted
boolean If true, the data source was deleted.
type
string The data source type, such as queryable or ingested.
rowCount
integer The number of rows.
documentation
string Documentation associated with the data source.
id
integer The data source ID.
policyHandlerType
string The type of policy handler applied to the data source: Builder.
subscriptionType
string The type of subscription policy on the data source. The type can be automatic (which allows anyone to subscribe), approval (which requires the subscriber to be manually approved), policy (which only allows users with specific groups or attributes to subscribe), or manual (which requires users to be manually added).
subscriptionPolicy
array Details about the Subscription Policy applied to the data source.
globalPolicies
string Details about the Global Policies applied to the data source.
status
string The data source health status.
blobHandler
array[object] A list of full URLs providing the locations of all blob store handlers to use with this data source.
blobHandlerType
string Describes the type of underlying blob handler that will be used with this data source (e.g., MS SQL).
createdBy
integer The ID of the profile creating the data source.
deleted
boolean If true, the data source was deleted.
type
string The data source type, such as queryable or ingested.
rowCount
integer The number of rows.
documentation
string Documentation associated with the data source.
id
integer The data source ID.
policyHandlerType
string The type of policy handler applied to the data source: Builder.
subscriptionType
string The type of subscription policy on the data source. The type can be automatic (which allows anyone to subscribe), approval (which requires the subscriber to be manually approved), policy (which only allows users with specific groups or attributes to subscribe), or manual (which requires users to be manually added).
subscriptionPolicy
array Details about the Subscription Policy applied to the data source.
globalPolicies
string Details about the Global Policies applied to the data source.
status
string The data source health status.
blobHandler
array[object] A list of full URLs providing the locations of all blob store handlers to use with this data source.
blobHandlerType
string Describes the type of underlying blob handler that will be used with this data source (e.g., MS SQL).
createdBy
integer The ID of the profile creating the data source.
deleted
boolean If true, the data source was deleted.
type
string The data source type, such as queryable or ingested.
rowCount
integer The number of rows.
documentation
string Documentation associated with the data source.
id
integer The data source ID.
policyHandlerType
string The type of policy handler applied to the data source: Builder.
subscriptionType
string The type of subscription policy on the data source. The type can be automatic (which allows anyone to subscribe), approval (which requires the subscriber to be manually approved), policy (which only allows users with specific groups or attributes to subscribe), or manual (which requires users to be manually added).
subscriptionPolicy
array Details about the Subscription Policy applied to the data source.
globalPolicies
string Details about the Global Policies applied to the data source.
status
string The data source health status.
size
integer The number of results to return.
No
offset
integer The number of results to skip (for paging).
No
sortField
string The field on which to sort the result set.
No
sortOrder
string The order in which to sort the results.
No
expandGroups
boolean If true will return individual members of any group subscribed.
No
ignoreSystemGenerated
boolean If true, will not return system generated accounts.
No
filterBySchemaEvolution
boolean If true, will only return users who have the specified level of access across ALL data sources within the same schema evolution group as this one.
No
additionalFilters
array Policy information for the data source, including customWhere, differentialPrivacy, eventTimeColumn, minimization, time, filterSeconds, and isOlderOrNewer.
allowMaskedJoins
boolean If true the data source allows masked joins.
policySet
array Details about the policies on the data source.
dataSourceName
string The data source name.
additionalFilters
array Policy information for the data source, including customWhere, differentialPrivacy, eventTimeColumn, minimization, time, filterSeconds, and isOlderOrNewer.
allowMaskedJoins
boolean If true the data source allows masked joins.
policySet
array Details about the policies on the data source.
dataSourceId
integer The data source ID.
No
state
string The state of the task, such as pending.
createdAt
timestamp The date and time the task was created.
updatedAt
timestamp The date and time the task was updated.
expiration
date The date the user's data source subscription ends.
No
group
integer If a group was added, the group ID.
expiration
date The date the user's subscription to the data source will expire.
acknowledgeRequired
boolean If the data source is associated with a project, this value will be true if the user needs to confirm they have read the project acknowledgment.
createdAt
timestamp The date and time of creation.
updatedAt
timestamp The date and time of update.
approved
boolean When true, the user's request has been approved.
schemaEvolutionConnectionString
string The schema evolution connection string to filter by.
No
countBySchemaEvolution
boolean Iftrue, will only return the number of tasks, grouped by schema evolution.
No
countByDataSource
boolean Iftrue, will only return the number of tasks, grouped by data source.
No
countOnly
boolean When true, will only return a count of the pending tasks.
No
groupByDataSource
boolean If true, will return the results as an array of { dataSourceId: , rows: }.
No
types
Array[string] Filters the results by the type of task: unmask, dataSourceCreated, columnAdded, columnDeleted, or columnTypeChanged. The dataSourceCreated, columnAdded, columnDeleted, and columnTypeChanged tasks are only created if a policy that contains the New tag is active and identifies a change in the remote platform.
No
profileId
integer Returns tasks where either the target or requesting user has this profile ID.
No
searchText
string A string used to filter returned users. The query is executed with a wildcard prefix and suffix.
No
searchModel
string A string used to determine how results should be filtered using searchText.
No
types
Array[string] The type of task: unmask, dataSourceCreated, columnAdded, columnDeleted, or columnTypeChanged. The dataSourceCreated, columnAdded, columnDeleted, and columnTypeChanged tasks are only created if a policy that contains the New tag is active and identifies a change in the remote platform.
No
size
integer The number of results to return.
No
offset
integer The number of results to skip (for paging).
No
sortField
string The field by which to sort the result set.
No
sortOrder
string The order in which to sort the results. The default is desc.
No
countOnly
boolean If true, will only return the number of tasks.
No
expiration
timestamp The date the user will no longer have access to the data source.
acknowledgeRequired
boolean This attribute is specific to projects. When true the user needs to confirm they have read the project acknowledgement statement.
createdAt
timestamp The date and time created.
updatedAt
timestamp The date and time updated.
originalState
array The user's previous status for the data source.
approved
boolean If true, the status is approved.
POST
Save blob metadata to Immuta and store raw content in local blob store.
PUT
Trigger the schema monitoring job for the specified detection group, or all groups if no ID is given.
name
string The name of the data source. It must be unique within the Immuta tenant.
No
sqlTableName
string A string that represents this data source's table in Immuta.
No
organization
string The organization that owns the data source.
No
category
string The category of the data source.
No
description
string The description of the data source.
No
hasExamples
boolean When true, the data source contains examples.
No
sqlTableName
string A string that represents this data source's table in Immuta.
organization
string The organization that owns the data source.
description
string The description of the data source.
policyHandler
array The ID of the policy handler and details about the data policies enforced on the data source.
subscriptionPolicy
array Details about the subscription policy enforced on the data source, including the type of policy and exceptions.
date
data A date that corresponds to a date within the record itself.
No
filesize
integer The size of the file in bytes.
No
date
data A date that corresponds to a date within the record itself.
No
filesize
integer The size of the file in bytes.
No
table
string The table name. This will run column detection to just update the columns in this table. This parameter cannot be included in the payload if dataSourceIds or schemaEvolutionId is included.
No
schemaEvolutionId
integer The ID of the schema to run the schema monitoring job on. This will run on all tables associated with the specified ID. The schema ID can be found in the response body of . This parameter cannot be included in the payload if dataSourceIds or any combination of hostname, database, port, or table is included.
No
skipColumnDetection
boolean When true, Immuta will only pull new tables from the source server. This parameter can only be paired with schemaEvolutionId.
No
overrides.httpPath
string If Databricks are configured, provide the alternative HTTP path to trigger schema monitoring on that ephemeral cluster.
No
GET
Get all of the recent policy activities for a given data source.
GET
Get the profiles for the data source owners and experts.
GET
Get the tags for a data source.
GET
Return the users who can unmask the given column.
highCardinality
object Indicates whether or not the job run to calculate the data source's high cardinality column passed and when it was last run.
schemaEvolution
object Indicates whether or not the job run to check if a new table had been added in the remote database passed and when it was last run. If a new table was added, Immuta automatically creates a new data source. Correspondingly, if a remote table is removed, that data source will be disabled in the console.
sdd
object Indicates whether or not sensitive data discovery was successfully run on the data source.
sql
object Indicates whether or not the SQL query run to check the data source's health passed and when it was last run.
stats
object Indicates whether or not the job run to calculate the number of rows in the data source passed and when it was last run.
sparkUseJDBC
boolean When true, uses a JDBC driver.
dataSource
metadata details regarding the data source.
metadata
array Details about the deleted task.
GET
Search for data sources.
GET
Get a data source based on the ID.
GET
Get data source based on the name.
GET
Get data source based on the short name.
blobHandlerType
array[string] Describes the type of underlying blob handler that will be used with this data source (e.g., Custom, MS SQL).
No
subscription
array[string] The requesting user's subscription status: pending, owner, subscribed, not_subscribed, expert, or ingest.
No
status
array[string] The data source status: passed or failed.
No
tag
array[string] Filters data sources by tags associated with the data sources.
name
string Data source name.
id
integer Data source ID.
deleted
boolean If true the data source is a deleted data source.
description
string The data source description.
createdAt
timestamp The date and time the data source was created.
subscriptionPolicy
array Details the type of Subscription Policy applied to the data source.
dataSourceId
integer The data source ID .
Yes
name
string The data source name.
recordFormat
string The data format of blobs in the data source, such as json, xml, html, or jpeg.
description
string The description of the data source.
policyHandler
array The ID of the policy handler and details about the data policies enforced on the data source.
sqlSchemaName
string A string that represents this data source's schema name in Immuta.
sqlTableName
string The SQL table name in Immuta.
dataSourceName
string The data source name.
Yes
name
string The data source name.
recordFormat
string The data format of blobs in the data source, such as json, xml, html, or jpeg.
description
string The description of the data source.
policyHandler
array The ID of the policy handler and details about the data policies enforced on the data source.
sqlSchemaName
string A string that represents this data source's schema name in Immuta.
sqlTableName
string The SQL table name in Immuta.
shortName
string The data source SQL table name.
Yes
name
string The data source name.
recordFormat
string The data format of blobs in the data source, such as json, xml, html, or jpeg.
description
string The description of the data source.
policyHandler
array The ID of the policy handler and details about the data policies enforced on the data source.
sqlSchemaName
string A string that represents this data source's schema name in Immuta.
sqlTableName
string The SQL table name in Immuta.
type
string The type of lineage records to return. Options include: parents, children, and all.
Yes
dataSourceId
integer The target data source ID.
Yes
children
array Details of the child data source, including dataSourceId, dataSourceName, projectId, policyHandlerDiff, deleted, createdBy, and createdAt.
parents
array Details of the parent data source, including dataSourceId, dataSourceName, projectId, policyHandlerDiff, deleted, createdBy, and createdAt.
dataSourceId
integer The data source ID.
Yes
blobId
string The blob ID.
Yes
dataSourceId
integer The data source ID.
Yes
states
Array[string] The status levels to include when querying for user access.
No
approved
boolean Denotes whether the returned access objects should be approved.
No
searchText
string A string used to filter returned users. The query is executed with a wildcard prefix and suffix.
count
integer The number of users with access to the data source.
users
string The metadata regarding the users with access to the data source.
dataSourceId
integer The data source ID.
Yes
profileId
integer The profile ID of the user.
Yes
projectId
integer The project ID. If provided, this project will be used when evaluating the user's visibilities.
No
visibilities
array Details of the user's visibilities, including anyKey.
visibilityRuleApplies
boolean If true, a visibility rule exists and the user is not excepted from it.
masked
array Masking information for the data source, including metadata, name, type, and actionType.
additionalFilters
array Policy information for the data source, including customWhere, differentialPrivacy, eventTimeColumn, minimization, time, filterSeconds, and isOlderOrNewer.
dataSourceId
integer The data source ID.
Yes
profileId
integer The profile ID of the user.
Yes
informationOnly
boolean If true, the query will just return information for the UI and will skip running some queries for ephemeral data sources.
No
includeNestedColumns
boolean If true, the query will return just information for the dictionary page, including the masking policies for nested columns.
noVisibilities
boolean If true, the data source has no row-level security or purpose-based restriction policies applied to it.
dataSourceVisibilitiesCount
integer The total number of possible visibilities the given data source has.
userVisibilitiesCount
integer The number of visibilities the current user can see for the given data source.
masked
array Masking information for the data source, including metadata, name, type, and actionType.
dataSource
integer The data source ID.
dataSourceName
string The data source name.
dataSourceId
integer The data source ID.
Yes
noVisibilities
boolean If true, the data source has no row-level security or purpose-based restriction policies applied to it.
dataSourceVisibilitiesCount
integer The total number of possible visibilities the given data source has.
userVisibilitiesCount
integer The number of visibilities the current user can see for the given data source.
denialReason
string Reason the user was denied visibility.
masked
array Masking information for the data source, including metadata, name, type, and actionType.
dataSource
integer The data source ID.
POST
Subscribe to a data source.
POST
Make a request for values to be unmasked.
POST
Add a user to a specific data source.
dataSourceId
integer Data source ID number.
Yes
dataSourceIds
array The ID of the data source the user is subscribing to.
No
approvals
array Includes details about the Subscription policy on the data source: requiredPermissions, specificApproverRequired, specificApprover, and ownerModelId.
No
body
array Contains details about the data source, including the data source ID, subscription status of the user, the profile ID of the user, and the dates the data source was created and updated.
dataSourceId
integer The data source ID.
Yes
column
string The column to unmask.
Yes
unmaskingReason
string The reason the values need to be unmasked.
Yes
unmaskingUsers
array[integer] The profile ID of the users who can unmask the values for the requestor.
Yes
projectId
integer The ID of the associated project.
id
integer The ID of the request.
requestingUserProfile
integer The requesting user profile ID.
dataSourceId
integer The data source ID.
reason
string The reason for the unmasking request.
metadata
string Metadata regarding the masking, such as the column, values, and maskingConfig.
type
string The type of request.
dataSourceId
integer The data source ID.
Yes
state
string The status of the user: subscribed, owner, expert, or ingest.
Yes
profileId
integer The profile ID of the user being added to the data source.
Yes
groupId
integer The ID of the group being added to the data source.
No
approvals
array Details about the user approving access: requiredPermission, specificApproverRequired, and specificApprover.
id
integer The user's subscription ID.
modelId
integer The model ID.
modelType
string The Immuta component to add the user to: datasource or project.
state
string The user's data source role, such as subscribed.
denialReasoning
string If the user was denied access, the reason for denial.
profile
integer The user's profile ID.
GET
Get all pending tasks for this user and pending tasks this user has created.
GET
Handles the given task and marks it as complete.
GET
Returns all tasks the user has made, can approve or deny, or validate for this data source.
PUT
Change user status for a specific data source.
searchText
string If specified, will filter results using the specified string.
No
searchModel
string Will filter the results by model type: dataSource or schemaEvolution.
No
offset
integer The number of results to skip (for paging).
No
size
integer The number of results to return per page.
outgoing
array Includes details of the tasks or requests created by the user, such as the count, type, and targetEmails.
incoming
array Includes details about the tasks received by the user, such as the count, type, and targetEmails.
taskId
integer The task ID.
Yes
result
array Includes details about the task.
dataSourceId
integer The data source ID.
Yes
states
Array[string] The state of the tasks: pending or completed.
No
targetProfileId
integer Only returns tasks where the target user has this profile ID.
No
requestingUserProfileId
integer Only returns tasks where the requesting user has this profile ID.
hits
array Includes details about each task, such as the id, state, type, and requestor.
count
integer The total number of tasks.
dataSourceId
Integer The data source ID.
Yes
subscriptionId
Integer The data source member's subscription ID.
Yes
state
string The new status for the user: subscribed, owner, expert or ingest.
Yes
id
integer The data source member's subscription ID.
modelId
integer The model ID.
modelType
array The Immuta component the user's subscription was updated for: datasource or project.
state
array The current state of the user's role: subscribed, owner, expert, or ingest.
profile
integer The profile ID.
group
integer If a group's status is being updated, this is the group ID.
PUT
Update a data source.
PUT
Update multiple data sources.
POST
Refresh views.
POST
Save blob metadata to Immuta.
dataSourceId
integer The data source ID.
Yes
blobHandler
array[object] A list of full URLs providing the locations of all blob store handlers to use with this data source.
No
blobHandlerType
string Describes the type of underlying blob handler that will be used with this data source (e.g., MS SQL).
No
recordFormat
string The data format of blobs in the data source, such as json, xml, html, or jpeg.
No
type
string The type of data source: ingested (metadata will exist in Immuta) or queryable (metadata is dynamically queried).
private
boolean When false, the data source will be publicly available in the Immuta UI.
blobHandler
array[object] A list of full URLs providing the locations of all blob store handlers to use with this data source.
blobHandlerType
string Describes the type of underlying blob handler that will be used with this data source (e.g., MS SQL).
recordFormat
string The data format of blobs in the data source, such as json, xml, html, or jpeg.
type
string The type of data source: ingested (metadata will exist in Immuta) or queryable (metadata is dynamically queried).
name
string The name of the data source. It must be unique within the Immuta tenant.
type
string The action to perform on the data sources: add-users, disable, restore, delete, or tags.
Yes
ids
array[integer] The IDs of the data sources to update.
Yes
update
array[object] Only required for add-users (includes metadata about the users' profiles: id and state) and tags (includes metadata about the tags: name and source) types.
No
bulkId
string The ID of the bulk data source update.
jobsCreated
integer The number of jobs created.
dataSourceIds
array[integer] The IDs of the data sources of the views to update.
Yes
dataSourceId
integer The data source ID.
Yes
blobId
string The unique ID used to identify this blob within its data source.
Yes
file
string The binary file to add to the data source.
Yes
filename
string The name that will display in the filesystem.
No
tags
array[string] Tags to apply to the blob.
blobsWithoutIds
integer The number of blobs added without IDs.
blobsInError
array The blobs that were not added because of an error.
blobsInserted
array The blobs added to the data source.
tags
array[string] Tags applied to the blobs.
dataSourceId
integer The data source ID.
Yes
blobId
string The unique ID used to identify this blob within its data source.
Yes
file
string The binary file to add to the data source.
Yes
filename
string The name that will display in the filesystem.
No
tags
array[string] Tags to apply to the blob.
blobsWithoutIds
integer The number of blobs added without IDs.
blobsInError
array The blobs that were not added because of an error.
blobsInserted
array The blobs added to the data source.
tags
array[string] Tags applied to the blobs.
dataSourceIds
array[integer] The data source IDs to run the column detection job on. Leave empty to run this job globally on all data sources. This parameter cannot be included in the payload if schemaEvolutionId or any combination of hostname, database, port, or table is included.
No
hostname
string The hostname of the data sources. This parameter cannot be included in the payload if dataSourceIds or schemaEvolutionId is included.
No
port
integer The port used to connect the data sources to Immuta. This parameter cannot be included in the payload if dataSourceIds or schemaEvolutionId is included.
No
database
string The database name. This runs schema monitoring on the database provided. If data sources were initially registered via the V2 API, including this parameter will locate new schemas that contain tables Immuta has the ability to access, and Immuta will create a new schema project associated with these newly discovered schemas and create data sources for each table located. If data sources were initially registered via the V1 API, including this parameter will only update the columns and tables of registered schema and tables of the specified database; it will not register any new schemas. This parameter cannot be included in the payload if dataSourceIds or schemaEvolutionId is included.
schemaDetection
object Includes details about the resulting schema detection jobs.
columnDetection
object Includes details about the resulting column detection jobs.
bulkId
string The unique identifier of the jobs running schema monitoring and column detection.
GET
Refresh tags from an external catalog on a data source. The external catalog must be linked to the data source.
GET
Retrieve all blob handlers the current user is allowed to create.
GET
Get data sources that match a set of purposes.
GET
Retrieve all the data sources the current user has access to.
dataSourceId
integer The data source ID.
Yes
blob
object Indicates whether or not the blob was successfully crawled.
columnEvolution
object Indicates whether or not the job run to check for columns added or removed from the data source passed and when it was last run.
externalCatalog
object Indicates whether or not the external catalog was successfully linked to the data source.
fingerprint
object Indicates whether or not the fingerprint job was successful (passed) and when it was last run. The fingerprint captures summary statistics of the data source.
framework
object Indicates whether or not the classification was successfully run on the data source to determine its sensitivity.
globalPolicy
object Indicates whether or not global policies were successfully applied to the data source.
name
string The name of the blob handler.
baseUrl
string The base URL for the data source.
config
array Includes information about the connection configuration.
port
integer The port number.
driver
string The name of the driver.
purposes
array[string] The purposes to filter the data sources by.
Yes
excludedProjects
array[integer] Excludes data sources associated with specified project IDs.
No
id
integer The data source ID.
name
array The name of the data source.
policyId
integer The policy ID.
restrictions
array Details regarding the operator (and or or) and purposes.
id
integer The data source ID.
name
string The data source name.
type
string The type of data source, such as ingested.
sqlTableName
string The name of the table in Immuta.
sqlSchemaName
string The name of the schema in Immuta.
blobHandlerType
string The type of handler, such as Snowflake.
dataSourceId
integer The data source ID.
Yes
offset
integer The number of results to skip (for paging).
No
size
integer The number of results to return per page.
No
count
integer The number of results.
activities
array Includes details about the policy and the data source, including the policy and data source type, when the activity notification was triggered, and whether or not the policy change was triggered by a Global policy.
actionBy
array Details about who triggered the action.
targetUser
array Information about the user who received the notification.
dataSourceId
integer The data source ID.
Yes
id
integer The data source ID.
state
string The user's data source role, such as owner or subscribed.
name
string The user's name.
string The user's email.
profile
integer The user's profile ID.
dataSourceId
integer The data source ID.
Yes
blobId
string Returns the tags for the specified blob.
No
blobTagsOnly
boolean When true, will only display blob tags associated with a data source.
No
tags
array Includes details about the tags, such as the name, source, and the profile ID of the user who added the tag.
dataSourceId
integer The data source ID.
Yes
columnName
string The name of the column to unmask.
Yes
name
array The name of the user who can unmask the value.
profileId
integer The profile ID of the user who can unmask the value.
iamid
string The IAM ID of the user who can unmask the value.
DELETE
Delete a data source. This will perform a soft delete on the first call and a hard delete the second time.
DELETE
Delete the specified task.
DELETE
Delete a blob.
DELETE
Unsubscribe from a data source.
dataSourceId
integer The data source ID.
Yes
success
boolean If true, the request to disable or delete the data source was successful.
id
integer The data source ID.
schemaEvolutionId
integer The schema evolution ID.
name
string The data source name.
disabled
boolean If true, the data source is disabled.
handlerDeleteErrorMessage
string The delete error message.
taskId
integer Target task ID.
Yes
id
integer The deleted task ID.
state
array The state of the deleted task, such as pending.
type
array The type of deleted task, such as columnAdded.
targetNames
string The name of the user who received the request.
targetEmails
string The email of the user who received the request.
requester
metadata Details regarding the requesting profile.
dataSourceId
integer The data source ID.
Yes
blobId
string The blob ID.
Yes
dataSourceId
integer The data source ID.
Yes
status
boolean If true, the requesting user is unsubscribed from the data source.
No
No
No
No
No
No
No
No
No
No
No
curl \
--request GET \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
https://your-immuta-url.com/dataSource?size=2{
"name": "Public Barfoo",
"id": 22,
"recordFormat": "Not Provided",
"deleted": false,
"description": null,
"createdAt": "2021-07-22T14:11:55.539Z",
"subscriptionPolicy": {
"type": "subscription",
"automaticSubscription": true
},
"schemaEvolutionId": 1,
"recordCount": 0,
"status": "passed",
"subscriptionStatus": "subscribed",
"blobHandlerType": "Snowflake",
"subscriptionType": "automatic",
"connectionString": "[email protected]:###/test",
"sqlSchemaName": "public",
"policy": "None",
"policyHandlerType": "None",
"native": null,
"workspace": null
},
{
"name": "Public Aaa Tpc",
"id": 39,
"recordFormat": "Not Provided",
"deleted": false,
"description": null,
"createdAt": "2023-08-21T10:39:00.250Z",
"subscriptionPolicy": {
"type": "subscription",
"exceptions": {
"operator": "and",
"conditions": [
{
"type": "groups",
"group": {
"name": "alpha"
}
}
]
},
"allowDiscovery": true,
"automaticSubscription": true
},
"schemaEvolutionId": 1,
"recordCount": 0,
"blobHandlerType": "Snowflake",
"subscriptionType": "policy",
"sqlSchemaName": "public",
"status": "passed",
"subscriptionStatus": "owner",
"connectionString": "[email protected]:###/test",
"remoteTable": "tpc",
"remoteSchema": "public",
"domainId": null,
"domainName": null,
"policy": "None",
"policyHandlerType": "None",
"native": null,
"workspace": null
}curl \
--request GET \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
https://your-immuta-url.com/dataSource/22{
"name": "Public Barfoo",
"recordFormat": "Not Provided",
"description": null,
"policyHandler": null,
"sqlSchemaName": "public",
"sqlTableName": "barfoo",
"blobHandler": {
"url": "https://your-url/snowflake/handler/22",
"ca": {
"name": "Certificate Authority Bundle"
},
"manualDictionary": false
},
"createdBy": 2,
"deleted": false,
"type": "queryable",
"recordCount": 0,
"rowCount": 6,
"documentation": "# Public Barfoo",
"statsExpiration": "2021-08-27T16:34:47.846Z",
"id": 22,
"blobHandlerType": "Snowflake",
"policyHandlerType": "None",
"subscriptionType": "automatic",
"subscriptionPolicy": {
"type": "subscription",
"automaticSubscription": true
},
"globalPolicies": null,
"status": "passed",
"statusInfo": {
"sql": {
"status": "passed",
"message": "Passed"
}
}
}curl \
--request GET \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
https://your-immuta-url.com/dataSource/name/Public%20Barfoo{
"name": "Public Barfoo",
"recordFormat": "Not Provided",
"description": null,
"policyHandler": null,
"sqlSchemaName": "public",
"sqlTableName": "barfoo",
"blobHandler": {
"url": "https://your-url/snowflake/handler/22",
"ca": {
"name": "Certificate Authority Bundle"
},
"manualDictionary": false
},
"createdBy": 2,
"deleted": false,
"type": "queryable",
"recordCount": 0,
"rowCount": 6,
"documentation": "# Public Barfoo",
"statsExpiration": "2021-08-27T16:34:47.846Z",
"id": 22,
"blobHandlerType": "Snowflake",
"policyHandlerType": "None",
"subscriptionType": "automatic",
"subscriptionPolicy": {
"type": "subscription",
"automaticSubscription": true
},
"globalPolicies": null,
"status": "passed",
"statusInfo": {
"sql": {
"status": "passed",
"message": "Passed"
}
}
}curl \
--request GET \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
https://your-immuta-url.com/dataSource/sqlTableName/customer_data {
"name": "Dbo Customer Data",
"recordFormat": "Not Provided",
"description": null,
"policyHandler": {
"visibilitySchema": {
"fields": [],
"version": "2021-10-06T19:39:39.145Z"
},
"handlerId": 55,
"dataSourceId": 26
},
"sqlSchemaName": "dbo",
"sqlTableName": "customer_data",
"blobHandler": {
"url": "https://1.1.1.1.1/snowflake/testhandler/26",
"ca": {
"name": "Certificate Authority Bundle"
},
"manualDictionary": false
},
"createdBy": 2,
"deleted": false,
"type": "queryable",
"recordCount": 0,
"rowCount": 1000,
"documentation": "# Dbo Customer Data",
"statsExpiration": "2021-11-05T19:37:43.270Z",
"id": 26,
"blobHandlerType": "Snowflake",
"policyHandlerType": "Builder",
"subscriptionType": "automatic",
"subscriptionPolicy": {
"type": "subscription",
"automaticSubscription": false
},
"globalPolicies": null,
"status": "passed",
"statusInfo": {
"sql": {
"status": "passed",
"message": "Passed"
},
"stats": {
"status": "passed",
"lastAttempted": "2021-10-06T19:37:43.337Z"
},
"lastAttempt": {
"date": "2021-10-06T19:39:39.821Z"
},
"highCardinality": {
"status": "passed",
"lastAttempted": "2021-10-06T19:37:43.337Z"
}
},
"expiration": null,
"catalogMetadata": null,
"workspace": null,
"seeded": false,
"schemaEvolutionId": 4,
"columnEvolutionEnabled": true,
"createdAt": "2021-10-01T14:23:27.225Z",
"updatedAt": "2021-10-06T19:39:39.145Z",
"subscribedAsUser": true,
"subscriptionId": 45,
"acknowledgeRequired": false,
"subscriptionStatus": "owner",
"requestedState": "owner",
"approved": true,
"subscriptionExpiration": null,
"filterId": null
}curl \
--request GET \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
https://your-immuta-url.com/dataSource/4/lineage/parents{
"parents": [{
"dataSourceId": 3,
"dataSourceName": "Public Healthcare Data",
"deleted": false,
"createdAt": "2022-08-17T13:41:38.381Z",
"projectId": 2,
"projectName": "Derived Data Source",
"createdBy": "Your Username",
"policyHandlerDiff": {
"dsType": "queryable",
"currentHandlerId": null,
"previousHandlerId": null
}
}]
}curl \
--request GET \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
--output ./the-blobs-will-be-saved-here
https://your-immuta-url.com/dataSource/22/blob/22% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 215k 100 215k 0 0 541k 0 --:--:-- --:--:-- --:--:-- 541kcurl \
--request GET \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
https://your-immuta-url.com/dataSource/22/access?sortOrder=desc{
"count": 2,
"users": [
{
"profile": 2,
"name": "First Last",
"iamid": "bim",
"userid": "[email protected]",
"email": "[email protected]",
"type": "user",
"admin": "First Last",
"approved": true,
"state": "owner",
"systemGenerated": false,
"lastExternalRefresh": "2021-10-06T14:58:46.983Z",
"subscriptionId": 586,
"createdAt": "2021-10-05T14:33:01.518Z",
"updatedAt": "2021-10-05T14:33:01.518Z",
"approvals": [
{
"requiredPermission": "OWNER",
"state": "approved",
"approverId": null,
"ownerModelId": null,
"approver": "First Last",
"ownerModelName": null
}
],
"currentUserCanApprove": false
},
{
"profile": 3,
"name": "Tommy Test",
"iamid": "bim",
"userid": "[email protected]",
"email": "[email protected]",
"type": "user",
"admin": "First Last",
"approved": true,
"state": "subscribed",
"systemGenerated": false,
"lastExternalRefresh": "2021-09-07T16:16:29.957Z",
"subscriptionId": 649,
"createdAt": "2021-10-06T14:58:31.366Z",
"updatedAt": "2021-10-06T14:58:31.366Z",
"approvals": [
{
"requiredPermission": "OWNER",
"state": "approved",
"approverId": null,
"ownerModelId": null,
"approver": "First Last",
"ownerModelName": null
}
],
"currentUserCanApprove": false
}
]
}curl \
--request GET \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
https://your-immuta-url.com/dataSource/16/users/2/policyInfo{
"visibilities": [],
"visibilityRuleApplies": false,
"masked": [
{
"type": "Consistent Value",
"metadata": {
"constant": null
},
"name": "WS_SOLD_DATE_SK",
"actionType": "Nullify"
},
{
"type": "Consistent Value",
"metadata": {
"constant": null
},
"name": "WS_BILL_CUSTOMER_SK",
"actionType": "Nullify"
}
],
"additionalFilters": {}
}curl \
--request GET \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
https://your-immuta-url.com/dataSource/16/users/2/visibilityReport[
{
"noVisibilities": true,
"dataSourceVisibilitiesCount": 0,
"userVisibilitiesCount": 0,
"masked": [
{
"type": "Consistent Value",
"metadata": {
"constant": null
},
"name": "WS_SOLD_DATE_SK"
},
{
"type": "Consistent Value",
"metadata": {
"constant": null
},
"name": "WS_BILL_CUSTOMER_SK"
}
],
"dataSource": 16,
"dataSourceName": "Web Sales",
"additionalFilters": {},
"allowMaskedJoins": false,
"policySet": "[{\"type\":\"masking\",\"rules\":[{\"type\":\"masking\",\"config\":{\"fields\":[\"WS_BILL_CUSTOMER_SK\"],\"maskingConfig\":{\"type\":\"Consistent Value\",\"metadata\":{\"constant\":null}}},\"exceptions\":null,\"ruleAppliedForUser\":true}],\"global\":{\"id\":9,\"tag\":\"Confidential\",\"live\":true,\"name\":\"Data Policy\",\"reason\":null,\"staged\":false,\"deleted\":false,\"conflict\":null,\"disabled\":false,\"metadata\":null,\"template\":false,\"createdAt\":\"2022-08-09T17:23:02.634Z\",\"createdBy\":\"jane\",\"policyKey\":\"Data Policy\",\"updatedAt\":\"2022-08-09T17:23:02.634Z\",\"clonedFrom\":null,\"certification\":null,\"createdByName\":\"jane\",\"changedOnApply\":[\"dataTypeMismatch\"],\"parentPolicyId\":null,\"systemGenerated\":false,\"originalPolicyId\":\"masking(^_^)data policy(^_^)ws_bill_customer_sk(^_^)consistent value(^_^)(^_^)(^_^)\",\"ownerRestrictions\":null},\"description\":null,\"policyHash\":\"3a2faac13e332cca1829ed773afa298a5455ac5bb54e68c53ae00991575d2a4b\"},{\"type\":\"masking\",\"rules\":[{\"type\":\"masking\",\"config\":{\"fields\":[\"WS_SOLD_DATE_SK\"],\"maskingConfig\":{\"type\":\"Consistent Value\",\"metadata\":{\"constant\":null}}},\"exceptions\":null,\"ruleAppliedForUser\":true}],\"global\":{\"id\":9,\"tag\":\"Confidential\",\"live\":true,\"name\":\"Data Policy\",\"reason\":null,\"staged\":false,\"deleted\":false,\"conflict\":null,\"disabled\":false,\"metadata\":null,\"template\":false,\"createdAt\":\"2022-08-09T17:23:02.634Z\",\"createdBy\":\"jane\",\"policyKey\":\"Data Policy\",\"updatedAt\":\"2022-08-09T17:23:02.634Z\",\"clonedFrom\":null,\"certification\":null,\"createdByName\":\"jane\",\"changedOnApply\":[\"dataTypeMismatch\"],\"parentPolicyId\":null,\"systemGenerated\":false,\"originalPolicyId\":\"masking(^_^)data policy(^_^)ws_sold_date_sk(^_^)consistent value(^_^)(^_^)(^_^)\",\"ownerRestrictions\":null},\"description\":null,\"policyHash\":\"2877a1ace4cfa6427370fd39b254ce0ea75dc22cb024a2f857e033c82a987f9a\"}]"
}
]curl \
--request GET \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
https://your-immuta-url.com/dataSource/16/visibilityReport{
"noVisibilities": true,
"dataSourceVisibilitiesCount": 0,
"userVisibilitiesCount": 0,
"masked": [
{
"type": "Consistent Value",
"metadata": {
"constant": null
},
"name": "WS_SOLD_DATE_SK"
},
{
"type": "Consistent Value",
"metadata": {
"constant": null
},
"name": "WS_BILL_CUSTOMER_SK"
}
],
"dataSource": 16,
"dataSourceName": "Web Sales",
"additionalFilters": {},
"allowMaskedJoins": false,
"policySet": "[{\"type\":\"masking\",\"rules\":[{\"type\":\"masking\",\"config\":{\"fields\":[\"WS_BILL_CUSTOMER_SK\"],\"maskingConfig\":{\"type\":\"Consistent Value\",\"metadata\":{\"constant\":null}}},\"exceptions\":null,\"ruleAppliedForUser\":true}],\"global\":{\"id\":9,\"tag\":\"Confidential\",\"live\":true,\"name\":\"Data Policy\",\"reason\":null,\"staged\":false,\"deleted\":false,\"conflict\":null,\"disabled\":false,\"metadata\":null,\"template\":false,\"createdAt\":\"2022-08-09T17:23:02.634Z\",\"createdBy\":\"jane\",\"policyKey\":\"Data Policy\",\"updatedAt\":\"2022-08-09T17:23:02.634Z\",\"clonedFrom\":null,\"certification\":null,\"createdByName\":\"jane\",\"changedOnApply\":[\"dataTypeMismatch\"],\"parentPolicyId\":null,\"systemGenerated\":false,\"originalPolicyId\":\"masking(^_^)data policy(^_^)ws_bill_customer_sk(^_^)consistent value(^_^)(^_^)(^_^)\",\"ownerRestrictions\":null},\"description\":null,\"policyHash\":\"3a2faac13e332cca1829ed773afa298a5455ac5bb54e68c53ae00991575d2a4b\"},{\"type\":\"masking\",\"rules\":[{\"type\":\"masking\",\"config\":{\"fields\":[\"WS_SOLD_DATE_SK\"],\"maskingConfig\":{\"type\":\"Consistent Value\",\"metadata\":{\"constant\":null}}},\"exceptions\":null,\"ruleAppliedForUser\":true}],\"global\":{\"id\":9,\"tag\":\"Confidential\",\"live\":true,\"name\":\"Data Policy\",\"reason\":null,\"staged\":false,\"deleted\":false,\"conflict\":null,\"disabled\":false,\"metadata\":null,\"template\":false,\"createdAt\":\"2022-08-09T17:23:02.634Z\",\"createdBy\":\"jane\",\"policyKey\":\"Data Policy\",\"updatedAt\":\"2022-08-09T17:23:02.634Z\",\"clonedFrom\":null,\"certification\":null,\"createdByName\":\"jane\",\"changedOnApply\":[\"dataTypeMismatch\"],\"parentPolicyId\":null,\"systemGenerated\":false,\"originalPolicyId\":\"masking(^_^)data policy(^_^)ws_sold_date_sk(^_^)consistent value(^_^)(^_^)(^_^)\",\"ownerRestrictions\":null},\"description\":null,\"policyHash\":\"2877a1ace4cfa6427370fd39b254ce0ea75dc22cb024a2f857e033c82a987f9a\"}]"
}curl \
--request POST \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
--data @example-payload.json \
https://your-immuta-url.com/dataSource/subscribe?dataSourceId=22{
"dataSourceIds": [
22
],
"metadata": {},
"approvals": [
{
"requiredPermission": "Owner",
"specificApproverRequired": false,
"specificApprover": 2,
"ownerModelId": 23
}
],
"groupId": 12
}{
"inError": [],
"success": [{
"id": 64,
"modelId": "22",
"modelType": "datasource",
"state": "subscribed",
"metadata": {},
"admin": null,
"denialReasoning": null,
"profile": 2,
"group": null,
"expiration": null,
"acknowledgeRequired": false,
"createdAt": "2021-08-26T16:36:09.587Z",
"updatedAt": "2021-08-26T16:36:09.587Z",
"approved": true
}]
}curl \
--request POST \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
--data @example-payload.json \
https://your-immuta-url.com/dataSource/23/reverseMask{
"column": "cc_county",
"values": ["WlRObU9ERTVNVE0yTVdabU9XVXdPQT09OktYN2lkNEZqZjlaWUluck8xTnVHOGlSN25wWmdudVZjbnZES1ArUkxhMGc9"],
"unmaskReasoning": "Marketing project",
"unmaskingUsers": [1]
}{
"id": 1,
"requestingUserProfile": 13,
"dataSourceId": 12,
"reason": "Marketing Campaign",
"metadata": {
"salt": "**********87",
"column": "cc_county",
"values": ["WlRObU9ERTVNVE0yTVdabU9XVXdPQT09OktYN2lkNEZqZjlaWUluck8xTnVHOGlSN25wWmdudVZjbnZES1ArUkxhMGc9"],
"maskingConfig": {
"type": "Reversible",
"metadata": {}
}
},
"type": "unmask",
"state": "pending",
"createdAt": "2021-10-27T20:35:48.253Z",
"updatedAt": "2021-10-27T20:35:48.253Z"
}curl \
--request POST \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
--data @example-payload.json \
https://your-immuta-url.com/dataSource/22/access{
"profileId": 3,
"state": "subscribed"
}{
"id": 19,
"modelId": "1",
"modelType": "datasource",
"state": "subscribed",
"metadata": null,
"admin": 2,
"denialReasoning": null,
"profile": 3,
"group": null,
"expiration": null,
"acknowledgeRequired": false,
"createdAt": "2021-09-21T14:24:12.528Z",
"updatedAt": "2021-09-21T14:24:12.528Z",
"approved": true
}curl \
--request GET \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
https://your-immuta-url.com/dataSource/tasks/pending{
"outgoing": [],
"incoming": [{
"fullCount": 1,
"dataSource": {
"id": 11,
"name": "Public Customer"
},
"isOutgoing": false,
"rows": [{
"id": 1,
"state": "pending",
"type": "columnAdded",
"reason": "Immuta has detected a new column \"org\" in the remote table and has added it to \"Public Customer\"",
"targetNames": [
"Katie"
],
"targetEmails": [
"[email protected]"
],
"requester": {
"name": "Immuta System Account",
"id": 1,
"email": null
},
"dataSource": {
"id": 11,
"name": "Public Customer"
},
"createdAt": "2024-08-06T14:37:09.279+00:00",
"metadata": {
"colName": "org",
"colType": "VARCHAR(16777216)"
},
"isOutgoing": false
}]
}]
}curl \
--request GET \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
https://your-immuta-url.com/dataSource/tasks/7{
"result": {
"unmaskPairs": [
{
"masked": "TnpjNFpXSXdOR1pqWkdNeE5EYzJPQT09OktaWjJEVldXZVluTmQ2SUVQdW1MajJtVTdqL2ZBT1JlaGFUUHJidmhkWmM9",
"unmasked": "[email protected]"
}
],
"column": "email"
}
}curl \
--request GET \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
https://your-immuta-url.com/dataSource/23/tasks?sortOrder=desc{
"hits": [
{
"fullCount": 2,
"id": 6,
"state": "completed",
"type": "columnAdded",
"reason": "Immuta has detected a new column \"org\" in the remote table and has added it to \"Public Customer\"",
"targetNames": [
"John"
],
"targetEmails": [
"[email protected]"
],
"requester": {
"name": "Immuta System Account",
"id": 1,
},
"dataSource": {
"id": 11,
"name": "Public Customer"
},
"createdAt": "2021-10-12T15:48:23.095Z"
},
{
"fullCount": 2,
"id": 7,
"state": "completed",
"type": "columnAdded",
"reason": "Immuta has detected a new column \"org\" in the remote table and has added it to \"Public Fake Medical Claims 2017\"",
"targetNames": [
"John"
],
"targetEmails": [
"[email protected]"
],
"requester": {
"name": "Immuta System Account",
"id": 1
},
"dataSource": {
"id": 3,
"name": "Public Fake Medical Claims 2017"
},
"createdAt": "2021-10-12T18:56:22.954Z"
}
],
"count": 2
}curl \
--request PUT \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
--data @example-payload.json \
https://your-immuta-url.com/dataSource/23/access/95{
"state": "subscribed"
}{
"id": 95,
"modelId": "3",
"modelType": "datasource",
"state": "subscribed",
"metadata": {},
"admin": 2,
"profile": 3,
"group": null,
"expiration": null,
"acknowledgeRequired": false,
"createdAt": "2021-10-12T15:40:13.878Z",
"updatedAt": "2021-10-12T16:10:46.801Z",
"originalState": "expert",
"approved": true
}curl \
--request PUT \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
--data @example-payload.json \
https://your-immuta-url.com/dataSource/22{
"documentation": "# Public Credit Accounts\nThis request updates the data source documentation."
}{
"name": "Public Credit Accounts",
"recordFormat": "Not Provided",
"description": null,
"policyHandler": {
"handlerId": 21,
"visibilitySchema": {
"fields": [],
"version": "2021-09-15T17:44:20.678Z"
},
"previousHandlerId": 20,
"dataSourceId": 1
},
"sqlSchemaName": "public",
"sqlTableName": "credit_accounts",
"blobHandler": {
"url": "https://1.1.1.1:1111/snowflake/handler/1",
"ca": {
"name": "Certificate Authority Bundle"
},
"manualDictionary": false
},
"createdBy": 2,
"deleted": false,
"type": "queryable",
"recordCount": 0,
"rowCount": "100000",
"documentation": "# Public Credit Accounts\nThis request updates the data source documentation.",
"statsExpiration": "2021-09-22T13:51:46.646Z",
"id": 1,
"blobHandlerType": "Snowflake",
"policyHandlerType": "Builder",
"subscriptionType": "approval",
"subscriptionPolicy": {
"type": "subscription",
"approvals": [{
"requiredPermission": "OWNER",
"specificApproverRequired": false
}]
},
"globalPolicies": null,
"status": "failed",
"statusInfo": {
"sql": {
"status": "passed",
"message": "Passed"
},
"stats": {
"status": "passed",
"lastAttempted": "2021-09-21T13:51:46.674Z"
},
"fingerprint": {
"status": "passed",
"lastAttempted": "2021-09-09T14:12:25.177Z"
},
"lastAttempt": {
"date": "2021-09-20T19:35:21.929Z"
},
"globalPolicy": {
"status": "passed",
"lastAttempted": "2021-09-17T19:07:38.092Z"
},
"highCardinality": {
"status": "failed",
"message": "Error could not connect to remote database",
"lastAttempted": "2021-09-20T16:43:19.426Z"
}
},
"expiration": null,
"catalogMetadata": null,
"workspace": null,
"seeded": false,
"schemaEvolutionId": 1,
"columnEvolutionEnabled": true,
"createdAt": "2021-09-09T14:12:09.511Z",
"updatedAt": "2021-09-21T13:52:42.908Z"
}curl \
--request PUT \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
--data @example-payload.json \
https://your-immuta-url.com/dataSource/bulk/tags{
"ids": [49, 50],
"update": {
"tags": [{
"name": "Address.email",
"source": "curated"
}]
}
}{
"bulkId": "bulk_ds_update_4896d300e04c4a8f89493ebf125c5c6b",
"jobsCreated": 2
}curl \
--request POST \
--header "Content-Type: application/json" \
--header "Authorization: Bearer <TOKEN>" \
--data @example-payload.json \
https://your-immuta-url.com/dataSource/bulkRefreshViews{
"dataSourceIds": [202]
}curl \
--request POST \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
https://your-immuta-url.com/dataSource/23/blobs[
{
"blobId": "testblob",
"filename": "testfile",
"tags": [
"update"
],
"visibility": {},
"metadata": {},
"date": "2021-10-21",
"filesize": 2
}
]{
"blobsWithoutIds": 0,
"blobsInError": [],
"blobsInserted": [
"string"
],
"tags": [
"string"
]
}curl \
--request POST \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
--data @example-payload.json
https://your-immuta-url.com/dataSource/23/persistBlob{
"blobId": "test/pov-queries-2.dbc",
"filename": "pov-queries",
"date": "2021-10-26",
"file": "pov-queries.dbc"
}{
"blobsWithoutIds": 0,
"blobsInError": [],
"blobsInserted": ["test/pov-queries.dbc"],
"tags": []
}curl \
--request PUT \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
--data @example-payload.json \
https://your-immuta-url.com/dataSource/detectRemoteChanges{
"hostname": "organization.us-east-1.snowflakecomputing.com"
}{
"database": "public"
}{
"database": "public",
"table": "healthcare"
}{
"bulkId": "31ab4312-b90a-49a6-baf8-70f87cd92a89"
}{
"bulkId": "5d129011-6254-413d-a365-6e394c06e277"
}{
"bulkId": "5d129011-6254-413d-a365-6e394c06e277",
"schemaDetection": {
"jobs": ["7d129033-6254-413d-a345-9o3242c06f242"]
},
"columnDetection" : {
"jobs": ["8d129033-6254-413d-a345-9o3123c06f123"]
}
}curl \
--request GET \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
https://your-immuta-url.com/dataSource/23/test{
"sql": {
"status": "passed",
"message": "Passed"
},
"stats": {
"status": "passed",
"lastAttempted": "2021-09-09T13:43:43.948Z"
},
"fingerprint": {
"status": "passed",
"lastAttempted": "2021-07-22T14:12:01.525Z"
},
"lastAttempt": {
"date": "2021-09-09T16:47:05.173Z"
},
"columnEvolution": {
"status": "passed",
"lastAttempted": "2021-09-08T16:36:05.557Z"
},
"highCardinality": {
"status": "passed",
"lastAttempted": "2021-07-22T14:11:58.439Z"
},
"schemaEvolution": {
"status": "passed",
"lastAttempted": "2021-09-08T16:35:57.867Z"
},
"status": "passed"
}curl \
--request GET \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
https://your-immuta-url.com/dataSource/blobHandlerTypes{
"name": "Azure Synapse Analytics",
"pluginType": "odbcHandler",
"clientUrl": "/asa",
"baseUrl": "https://0.0.0.0:8823/asa",
"config": {
"port": 1433,
"allowSSLToggle": false
},
"displayOrder": 41,
"requiresHashPhraseForDP": true,
"driver": "Azure Synapse Analytics"
}curl \
--request GET \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
https://your-immuta-url.com/dataSource/byPurposes?purposes=Data+Analysis[{
"id": 42,
"name": "Army Army Records",
"policyId": 56,
"restrictions": [{
"operator": "and",
"purposes": ["Data Analysis"]
}]
}]curl \
--request GET \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
https://your-immuta-url.com/dataSource/rpc/mine{
"id": 23,
"name": "Public Record",
"type": "queryable",
"sqlTableName": "record",
"sqlSchemaName": "public",
"blobHandlerType": "Snowflake",
"sparkUseJDBC": true
}curl \
--request GET \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
https://your-immuta-url.com/dataSource/23/activities{
"count": 3,
"activities": [{
"modelType": "datasource",
"modelId": "23",
"createdAt": "2021-09-07T16:13:25.197Z",
"notificationType": "policyUpdated",
"metadata": {
"dataSourceName": "Public Foobar",
"triggeredByGlobal": false,
"conflictCount": 0,
"policyType": "data",
"handlerId": 3,
"previousHandlerId": 2,
"dataSourceType": "queryable"
},
"read": false,
"id": 256,
"updatedAt": "2021-09-07T16:13:25.197Z",
"actionBy": {
"id": 2,
"name": "first last",
"email": "[email protected]"
},
"targetUser": {
"id": 2,
"name": "first last",
"email": "[email protected]"
}
}]
}curl \
--request GET \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
https://your-immuta-url.com/dataSource/23/contacts{
"type": "profile",
"id": 23,
"state": "owner",
"name": "first last",
"email": "[email protected]",
"profile": 2
},
{
"type": "profile",
"id": 23,
"state": "owner",
"name": "Tommy Test",
"email": "[email protected]",
"profile": 3
}curl \
--request GET \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
https://your-immuta-url.com/dataSource/4/tags{
"tags": [
{
"name": "Discovered.Entity.Medicare Number",
"source": "curated",
"modelType": "datasource",
"modelId": "4",
"addedBy": 1,
"deleted": false
}
]
}curl \
--request GET \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
https://your-immuta-url.com/dataSource/47/gender/unmaskUsers[
{
"name": "Katie",
"profileId": 2,
"iamid": "bim"
}
]curl \
--request DELETE \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
https://your-immuta-url.com/dataSource/23{
"success": true,
"id": 23,
"schemaEvolutionId": 1,
"name": "Public Foobar",
"disabled": true,
"handlerDeleteErrorMessage": null
}curl \
--request DELETE \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
https://your-immuta-url.com/dataSource/tasks/8{
"fullCount": 1,
"id": 8,
"state": "pending",
"type": "columnAdded",
"reason": "Immuta has detected a new column \"org\" in the remote table and has added it to \"Public Customer\"",
"targetNames": ["Katie"],
"targetEmails": ["[email protected]"],
"requester": {
"name": "Immuta System Account",
"id": 1
},
"dataSource": {
"id": 11,
"name": "Public Customer"
},
"createdAt": "2021-10-12T19:28:04.999Z"
}curl \
--request DELETE \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
https://your-immuta-url.com/dataSource/23/blob/1curl \
--request DELETE \
--header "Content-Type: application/json" \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
https://your-immuta-url.com/dataSource/23/unsubscribe{
"success": true
}