arrow-left

All pages
gitbookPowered by GitBook
1 of 1

Loading...

Subscribe to and Manage Data Sources

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

circle-info

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

hashtag
Data source workflow

  1. .

  2. .

  3. .

hashtag
Search data sources and data source details

Method
Path
Purpose

hashtag
Search for data sources

GET /dataSource

Search for data sources that you own or are authorized to see.

Required: To appear in the response, you must own the data source, the data source must be publicly visible, or you must have access to see the data source through the GOVERNANCE permission or a subscription policy

hashtag
Query parameters

Attribute
Description
Required

hashtag
Response schema

The response will return data sources you own or are authorized to see.

Attribute
Description

hashtag
Request example

The following request returns 2 data sources.

hashtag
Response example

hashtag
Get a data source by ID

GET /dataSource/{dataSourceId}

Get a data source based on the ID.

Required: The data source must be publicly visible, you must own the data source, or you must have access to see the data source through the GOVERNANCE permission or a subscription policy

Query parameters

Attribute
Description
Required

Response Schema

Attribute
Description

hashtag
Request example

The following request gets a data source based on the ID 22.

hashtag
Response example

hashtag
Get data source by name

GET /dataSource/name/{dataSourceName}

Get a data source based on the name.

Required: The data source must be publicly visible, you must own the data source, or you must have access to see the data source through the GOVERNANCE permission or a subscription policy

hashtag
Query parameters

Attribute
Description
Required

hashtag
Response schema

Attribute
Description

hashtag
Request example

The following request gets a data source based on the name Public Barfoo.

hashtag
Response example

hashtag
Get a data source by the short name

GET /dataSource/sqlTableName/{shortName}

Get a data source based on the SQL table name.

Required: The data source must be publicly visible, you must own the data source, or you must have access to see the data source through the GOVERNANCE permission or a subscription policy

hashtag
Query parameters

Attribute
Description
Required

hashtag
Response schema

Attribute
Description

hashtag
Request example

The following request gets a data source based on the SQL table name customer_data.

hashtag
Response example

hashtag
Get users by access level

GET /dataSource/{dataSourceId}/access

Get all users with the provided access level for this data source.

Required: The data source must be publicly visible, you must own the data source, or you must have access to see the data source through the GOVERNANCE permission or a subscription policy

hashtag
Query parameters

Attribute
Description
Required

hashtag
Response schema

Attribute
Description

hashtag
Request example

The following request gets all users with the provided access level for this data source.

hashtag
Response example

hashtag
Get user access info for a 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.

Required Immuta permission: FETCH_POLICY_INFO

hashtag
Query parameters

Attribute
Description
Required

hashtag
Response schema

Attribute
Description

hashtag
Request example

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.

hashtag
Response example

hashtag
Get user visibility info for a data source

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.

Required: The global GOVERNANCE permission or be the data source owner

hashtag
Query parameters

Attribute
Description
Required

hashtag
Response schema

Attribute
Description

hashtag
Request example

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.

hashtag
Response example

hashtag
Get current user visibility info

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.

Required: The data source must be publicly visible, you must own the data source, or you must have access to see the data source through the GOVERNANCE permission or a subscription policy

hashtag
Query parameters

Attribute
Description
Required

hashtag
Response schema

Attribute
Description

hashtag
Request example

The following request gets all of the visibility information for the current user on the data source with the data source ID 16.

hashtag
Response example

hashtag
Access data sources and make data source requests

Method
Path
Purpose

hashtag
Subscribe to a data source

POST /dataSource/subscribe

Subscribe to a data source.

hashtag
Query parameters

Attribute
Description
Required

hashtag
Payload parameters

Attribute
Description
Required

hashtag
Response schema

Attribute
Description

hashtag
Request example

The following request subscribes to the data source with ID 22.

Payload example

hashtag
Response example

hashtag
Add a user to a data source

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

Required: The global GOVERNANCE permission or be the data source owner

hashtag
Query parameters

Attribute
Description
Required

hashtag
Payload parameters

Attribute
Description
Required

hashtag
Response schema

Attribute
Description

hashtag
Request example

The following request adds a user (saved in example-payload.json) to this data source.

Request payload example

hashtag
Response example

hashtag
Manage data source requests

Method
Path
Purpose

hashtag
Get pending tasks by user

GET /dataSource/tasks/pending

Get all pending tasks for this user and pending tasks this user has created.

hashtag
Query parameters

Attribute
Description
Required

hashtag
Response schema

Attribute
Description

hashtag
Request example

The following request gets all pending tasks for a user and pending tasks the user has created.

hashtag
Response example

hashtag
Return tasks for a data source

GET /dataSource/{dataSourceId}/tasks

Returns all tasks the user has made, can approve or deny, or validate for this data source.

hashtag
Query parameters

Attribute
Description
Required

hashtag
Response schema

Attribute
Description

hashtag
Request example

The following request returns all tasks the user has made, can approve or deny, or validate for this data source.

hashtag
Response example

hashtag
Change user status

PUT /dataSource/{dataSourceId}/access/{subscriptionId}

Change user status for a specific data source. Requestors cannot update their own status for a data source.

Required: The global GOVERNANCE permission or be the data source owner

hashtag
Query parameters

Attribute
Description
Required

hashtag
Payload parameters

Attribute
Description
Required

hashtag
Response schema

Attribute
Description

hashtag
Request example

The following request changes the user status to subscribed for the specified data source.

Payload example

hashtag
Response example

hashtag
Update data sources

Method
Path
Purpose

hashtag
Update a data source

PUT /dataSource/{dataSourceId}

Update a data source.

Required: The global GOVERNANCE permission or be the data source owner

hashtag
Query parameters

Attribute
Description
Required

hashtag
Payload parameters

Attribute
Description
Required

hashtag
Response schema

Attribute
Description

hashtag
Request example

The following request updates the data source's documentation (saved in example-payload.json).

Request payload example

hashtag
Response example

hashtag
Update multiple data sources

PUT /dataSource/bulk/{type}

Update data sources.

Required: The global GOVERNANCE permission or be the data source owner for all data sources included in the payload

hashtag
Query parameters

Attribute
Description
Required

hashtag
Payload parameters

Attribute
Description
Required

hashtag
Response schema

Attribute
Description

hashtag
Request example

The following request adds the Address.email tag to two data sources.

Payload example

hashtag
Response example

hashtag
Resync data policies and grants

POST /dataSource/bulkRefreshViews

Refresh the data policies and grants for a data source in the remote data platform.

Required: The global GOVERNANCE permission or be the data source owner for all data sources included in the payload

hashtag
Payload parameters

Attribute
Description
Required

hashtag
Request example

The following request with the payload below refreshes the data policies and grants in the remote data platform for the data source with the ID 202.

Payload example

hashtag
Trigger schema monitoring jobs

PUT /dataSource/detectRemoteChanges

Trigger the schema monitoring job for the specified detection group, or all groups if no payload parameters are given.

Required: The global GOVERNANCE permission or be the data source owner for all data sources included in the payload

hashtag
Payload parameters

Attribute
Description
Required

hashtag
Response schema

Attribute
Description

Responses may include bulkId, schemaDetection, or columnDetection objects, depending on the payload.

hashtag
Request example

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.

hashtag
Response examples

The tabs below illustrate the example response for each example payload provided above.

hashtag
View and Review Data Sources

Method
Path
Purpose

hashtag
Refresh data source health checks

GET /dataSource/{dataSourceId}/test

Refreshes the data source health checks.

Required: The global GOVERNANCE permission or be the data source owner

hashtag
Query parameters

Attribute
Description
Required

hashtag
Response schema

Attribute
Description

hashtag
Request example

The following request refreshes external catalog tags on the data source.

hashtag
Response example

hashtag
Retrieve blob handlers

GET /dataSource/blobHandlerTypes

Retrieve all blob handlers the current user is allowed to create.

hashtag
Response schema

Attribute
Description

hashtag
Request example

The following request retrieves all blob handlers the current user is allowed to create.

hashtag
Response example

hashtag
Get data sources by purpose

GET /dataSource/byPurposes

Get data sources that match a set of purposes.

hashtag
Query parameters

Attribute
Description
Required

hashtag
Response schema

Attribute
Description

hashtag
Request example

The following request gets data sources that match a set of purposes.

hashtag
Response example

hashtag
Retrieve data sources by user

GET /dataSource/rpc/mine

Retrieves all the data sources the current user has access to.

hashtag
Response schema

Attribute
Description

hashtag
Request example

The following request retrieves all the data sources the current user has access to.

hashtag
Response example

hashtag
Get recent policy activities for a data source

GET /dataSource/{dataSourceId}/activities

Get all of the recent policy activities for a given data source.

Required: The data source must be publicly visible, you must own the data source, or you must have access to see the data source through the GOVERNANCE permission or a subscription policy

hashtag
Query parameters

Attribute
Description
Required

hashtag
Response schema

Attribute
Description

hashtag
Request example

The following request gets all of the recent policy activities for a given data source.

hashtag
Response example

hashtag
Get profiles for data source owners and experts

GET /dataSource/{dataSourceId}/contacts

Gets the profiles for the data source owners and experts.

hashtag
Query parameters

Attribute
Description
Required

hashtag
Response schema

Attribute
Description

hashtag
Request example

The following request gets all the profiles for the data source owners and experts.

hashtag
Response example

hashtag
Get tags by data source

GET /dataSource/{dataSourceId}/tags

Get the tags for a data source.

Required: The data source must be publicly visible, you must own the data source, or you must have access to see the data source through the GOVERNANCE permission or a subscription policy

hashtag
Query parameters

Attribute
Description
Required

hashtag
Response schema

Attribute
Description

hashtag
Request example

The following request gets the tags for data source 4.

hashtag
Response example

hashtag
Delete Data Sources and More

Method
Path
Purpose

hashtag
Delete a data source

DELETE /dataSource/{dataSourceId}

Delete a data source. This will perform a soft delete on the first call and a hard delete the second time.

Required: The global GOVERNANCE permission or be the data source owner

hashtag
Query parameters

Attribute
Description
Required

hashtag
Response schema

Attribute
Description

hashtag
Request example

The following request deletes the data source 23.

hashtag
Response example

hashtag
Delete a task

DELETE /dataSource/tasks/{taskId}

Delete the specified task.

hashtag
Query parameters

Attribute
Description
Required

hashtag
Response schema

Attribute
Description

hashtag
Request example

The following request deletes a specified task.

hashtag
Response example

hashtag
Unsubscribe from a data source

DELETE /dataSource/{dataSourceId}/unsubscribe

Unsubscribe from a data source.

hashtag
Query parameters

Attribute
Description
Required

hashtag
Response schema

Attribute
Description

hashtag
Request example

The following request unsubscribes the user from data source 23.

hashtag
Response example

.
  • Delete a data source.

  • 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

    determinePolicyConflicts

    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

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

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

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

    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.

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

    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: 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 or 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: 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 or a 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.

    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.

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

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

    /dataSource

    Search for data sources.

    GET

    /dataSource/{dataSourceId}

    Get a data source based on the ID.

    GET

    /dataSource/name/{dataSourceName}

    Get data source based on the name.

    GET

    /dataSource/sqlTableName/{shortName}

    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.

    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

    /dataSource/subscribe

    Subscribe to a data source.

    POST

    /dataSource/{dataSourceId}/access

    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

    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

    /dataSource/tasks/pending

    Get all pending tasks for this user and pending tasks this user has created.

    GET

    /dataSource/{dataSourceId}/tasks

    Returns all tasks the user has made, can approve or deny, or validate for this data source.

    PUT

    /dataSource/{dataSourceId}/access/{id}

    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.

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

    /dataSource/{dataSourceId}

    Update a data source.

    PUT

    /dataSource/bulk/{type}

    Update multiple data sources.

    POST

    /dataSource/bulkRefreshViews

    Refresh the data policies and grants for a data source in the remote data platform.

    PUT

    /dataSource/detectRemoteChanges

    Trigger the schema monitoring job for the specified detection group, or all groups if no ID is given.

    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: 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: 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 to update.

    Yes

    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

    /dataSource/{dataSourceId}/test

    Refresh tags from an external catalog on a data source. The external catalog must be linked to the data source.

    GET

    /dataSource/blobHandlerTypes

    Retrieve all blob handlers the current user is allowed to create.

    GET

    /dataSource/byPurposes

    Get data sources that match a set of purposes.

    GET

    /dataSource/rpc/mine

    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 a Snowflake 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: queryable.

    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.

    email

    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.

    DELETE

    /dataSource/{dataSourceId}

    Delete a data source. This will perform a soft delete on the first call and a hard delete the second time.

    DELETE

    /dataSource/tasks/{taskId}

    Delete the specified task.

    DELETE

    /dataSource/{dataSourceId}/unsubscribe

    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

    status

    boolean If true, the requesting user is unsubscribed from the data source.

    Search data sources and data source details
    Access data sources and make data source requests
    Manage data source requests
    use the /dataSource/subscribe endpoint

    No

    No

    No

    No

    No

    No

    No

    No

    Update data sources
    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/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/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/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 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": "queryable",
      "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 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/unsubscribe
    {
      "success": true
    }
    /dataSource/{dataSourceId}/access
    /dataSource/{dataSourceId}/users/{profileId}/policyInfo
    /dataSource/{dataSourceId}/users/{profileId}/visibilityReport
    /dataSource/{dataSourceId}/visibilityReport
    schema monitoring
    object sync
    schema monitoring
    object sync
    /dataSource/{dataSourceId}
    Databricks ephemeral overrides
    /dataSource/{dataSourceId}/activities
    /dataSource/{dataSourceId}/contacts
    /dataSource/{dataSourceId}/tags