Skip to content

Sensitive Data Discovery (SDD) API Reference Guide

Note

In previous documentation, rule is referred to as classifier or identifier and framework is referred to as template.

Workflow

  1. Create a rule.
  2. Create an identification framework containing one or more rules.
  3. Search for rules or identification frameworks.
  4. Apply an identification framework to one or more data sources.
  5. Run SDD on one more more data sources; tags are applied to columns where rules were found.
  6. Update rules or identification frameworks.
  7. Delete rules or identification frameworks.

Create a rule

Endpoint

Method Path Purpose
POST sdd/classifier Create a rule.

Query Parameters

None.

Payload Parameters

Attribute Description Required
name string Unique, request-friendly rule name. Yes
displayName string Unique, human-readable rule name. Yes
description string The rule description. Yes
type string The type of pattern: regex, dictionary, columnNameRegex, or builtIn. Yes
config object The configuration of the rule, which includes config.minConfidence, config.values, config.caseSensitive, config.regex, config.columnNameRegex, and config.tags. Yes
config.minConfidence number When the detection confidence is at least this percentage, tags are applied. Yes
config.tags array[string] The resulting tags to apply when the pattern is matched. 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

Response Parameters

Attribute Description
createdBy array Includes details about the user who created the rule, such as their profile id, name, and email.
name string Unique, request-friendly rule name.
displayName string Unique, human-readable rule name.
description string The rule description.
type string The type of pattern: regex, dictionary, columnNameRegex, or builtIn.
config object May include config.minConfidence, config.values, config.caseSensitive, config.regex, config.columnNameRegex, and config.tags.
config.minConfidence number When the detection confidence is at least this percentage, tags are applied.
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.
config.caseSensitive boolean Indicates whether or not values are case sensitive. Defaults to false.
createdAt date When the rule was created.
updatedAt date When the rule was last updated.

Request example

The following request creates a rule, saved in example-payload.json.

curl \
    --request POST \
    --header "Content-Type: application/json" \
    --header "Authorization: Bearer dea464c07bd07300095caa8" \
    --data @example-payload.json \
    https://your-immuta-url.immuta.com/sdd/classifier

Payload examples

Regex pattern payload
{
  "name": "MY_REGEX_RULE",
  "displayName": "My Regex Rule",
  "description": "A rule using regex pattern",
  "type": "regex",
  "config": {
    "regex": "^[A-Z][a-z]+",
    "minConfidence": 0.5,
    "tags": ["Discovered.regex-example"]
  }
}
Dictionary pattern payload
{
  "name": "MY_DICTIONARY_RULE",
  "displayName": "My Dictionary Rule",
  "description": "A rule using dictionary pattern",
  "type": "dictionary",
  "config": {
    "values": ["Bob", "Eve"],
    "caseSensitive": true,
    "minConfidence": 0.6,
    "tags": ["Discovered.dictionary-example", "Discovered.dictionary-pattern-example"]
  }
}
Column name pattern payload
{
  "name": "MY_COLUMN_NAME_RULE",
  "displayName": "My Column Name Rule",
  "description": "A rule using column name pattern",
  "type": "columnNameRegex",
  "config": {
    "columnNameRegex": "ssn|social ?security",
    "tags": ["Discovered.column-name-regex"]
  }
}

Response example

{
  "createdBy": {
    "id": 1,
    "name": "John",
    "email": "john@example.com"
  },
  "name": "MY_REGEX_RULE",
  "displayName": "My Regex Rule",
  "description": "A rule using regex pattern",
  "type": "regex",
  "config": {
    "tags": [
      "Discovered.regex-example"
    ],
    "regex": "^[A-Z][a-z]+",
    "minConfidence": 0.5
  },
  "id": 67,
  "createdAt": "2021-10-14T18:48:56.289Z",
  "updatedAt": "2021-10-14T18:48:56.289Z"
}

Create an identification framework

Endpoint

Method Path Purpose
POST sdd/template Create an identification framework.

Query Parameters

None.

Payload Parameters

Attribute Description Required
name string Unique, request-friendly framework name. Yes
displayName string Unique, human-readable framework name. Yes
description string The framework description. Yes
classifiers array Includes each rule's name and overrides for minConfidence and tags. Yes
sampleSize integer Override for how many records to sample from the data source. No

Response Parameters

Attribute Description
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 Includes details about the rules within the identification framework, such as the name and overrides.
sampleSize integer Optional override of how many records to sample from the data source.
createdAt date When the framework was created.
updatedAt date When the framework was last updated.

Request example

The following request creates an identification framework that contains 2 rules, saved in example-payload.json.

curl \
    --request POST \
    --header "Content-Type: application/json" \
    --header "Authorization: Bearer dea464c07bd07300095caa8" \
    --data @example-payload.json \
    https://your-immuta-url.immuta.com/sdd/template

Payload example

{
  "name": "MY_FIRST_FRAMEWORK",
  "displayName": "My First Framework",
  "description": "This is the first framework I've created.",
  "classifiers": [
    {
      "name": "MY_COLUMN_NAME_RULE"
    },
    {
      "name": "MY_REGEX_RULE"
    }
  ],
  "sampleSize": 100
}

Response example

{
  "name": "MY_FIRST_FRAMEWORK",
  "displayName": "My First Framework",
  "description": "This is the first framework I've created.",
  "sampleSize": 100,
  "createdBy": {
    "id": 1,
    "name": "John",
    "email": "john@example.com"
  },
  "id": 1,
  "createdAt": "2021-10-14T19:12:22.092Z",
  "updatedAt": "2021-10-14T19:12:22.092Z",
  "classifiers": [
    {
      "name": "MY_COLUMN_NAME_REGEX_RULE",
      "overrides": {}
    },
    {
      "name": "MY_REGEX_RULE",
      "overrides": {}
    }
  ]
}

Search for rules or identification frameworks

Method Path Purpose
GET sdd/classifier List or search rules.
GET sdd/template List or search identification frameworks.
GET sdd/classifier/{classifierName} View a specific rule by name.
GET sdd/template/{templateName} View a specific identification framework by name.
GET sdd/template/global View the current global framework.

List or search for rules

Endpoint

Method Path Purpose
GET sdd/classifier List or search rules.

Query Parameters

Attribute Description Required
sortField string The field by which 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. No
type array[string] Searches for rules based on pattern type: regex, dictionary, builtIn, or columnNameRegex. No
searchText string A partial, case-insensitive search on name. No

Response Parameters

Attribute Description
count integer The number of rules found matching the search criteria.
createdBy array Includes details about the user who created the rule, such as their profile id, name, and email.
name string Unique, request-friendly rule name.
displayName string Unique, human-readable rule name.
description string The rule description.
type string The type of pattern: regex, dictionary, columnNameRegex, or builtIn.
config object May include config.minConfidence, config.values, config.caseSensitive, config.regex, config.columnNameRegex, and config.tags.
config.minConfidence number When the detection confidence is at least this percentage, tags are applied.
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.
config.caseSensitive boolean Indicates whether or not values are case sensitive. Defaults to false.
createdAt date When the rule was created.
updatedAt date When the rule was last updated.

Request example

The following request lists 5 rules.

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

Response example

{
  "count": 67,
  "hits": [
    {
      "createdBy": {
        "id": 21,
        "name": "Immuta System Account",
        "email": "immuta_system@immuta.com"
      },
      "name": "AGE",
      "displayName": "Age",
      "description": "Detects numeric strings between 10 and 199.",
      "type": "builtIn",
      "config": {
        "minConfidence": 0.7,
        "tags": [
          "Discovered.PII",
          "Discovered.Identifier Indirect",
          "Discovered.PHI",
          "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": "immuta_system@immuta.com"
      },
      "name": "ARGENTINA_DNI_NUMBER",
      "displayName": "Argentina DNI Number",
      "description": "Detects 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": {
        "minConfidence": 0.7,
        "tags": [
          "Discovered.PII",
          "Discovered.Identifier Direct",
          "Discovered.Country.Argentina",
          "Discovered.PHI",
          "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": "immuta_system@immuta.com"
      },
      "name": "AUSTRALIA_MEDICARE_NUMBER",
      "displayName": "Australia Medicare Number",
      "description": "Detects 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": {
        "minConfidence": 0.7,
        "tags": [
          "Discovered.PII",
          "Discovered.Identifier Direct",
          "Discovered.Country.Australia",
          "Discovered.PHI",
          "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": "immuta_system@immuta.com"
      },
      "name": "AUSTRALIA_PASSPORT",
      "displayName": "Australia Passport",
      "description": "Detects 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": {
        "minConfidence": 0.7,
        "tags": [
          "Discovered.PII",
          "Discovered.Identifier Direct",
          "Discovered.Country.Australia",
          "Discovered.PHI",
          "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": "immuta_system@immuta.com"
      },
      "name": "AUSTRALIA_TAX_FILE_NUMBER",
      "displayName": "Australia Tax File Number",
      "description": "Detects 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": {
        "minConfidence": 0.7,
        "tags": [
          "Discovered.PII",
          "Discovered.Identifier Direct",
          "Discovered.Country.Australia",
          "Discovered.PHI",
          "Discovered.Entity.Tax File Number"
        ],
        "conditionalTags": {}
      },
      "id": 6,
      "createdAt": "2021-10-28T07:34:58.789Z",
      "updatedAt": "2021-10-28T07:34:58.789Z"
    }
  ]
}

List or search for identification frameworks

Endpoint

Method Path Purpose
GET sdd/template List or search identification frameworks.

Query Parameters

Attribute Description Required
sortField string The field by which 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. No
classifiers array[string] Filters framework results to those containing the specified rules. No
searchText string A partial, case-insensitive search on the framework name. No

Response Parameters

Attribute Description
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.
classifiers array Includes details about the rules within the identification framework, such as the name and overrides.
sampleSize integer Optional override of how many records to sample from the data source.
createdAt date When the framework was created.
updatedAt date When the framework was last updated.

Request example

The following request lists all identification frameworks.

curl \
    --request GET \
    --header "Content-Type: application/json" \
    --header "Authorization: Bearer dea464c07bd07300095caa8" \
    https://your-immuta-url.immuta.com/sdd/template

Response example

{
  "count": 1,
  "hits": [
    {
      "name": "MY_FIRST_FRAMEWORK",
      "displayName": "My First Framework",
      "description": "This is the first framework I've created.",
      "sampleSize": 100,
      "createdBy": {
        "id": 1,
        "name": "John",
        "email": "john@example.com"
      },
      "id": 1,
      "createdAt": "2021-10-14T19:12:22.092Z",
      "updatedAt": "2021-10-14T19:12:22.092Z",
      "classifiers": [
        {
          "name": "MY_COLUMN_NAME_RULE",
          "overrides": {}
        },
        {
          "name": "MY_REGEX_RULE",
          "overrides": {}
        }
      ]
    }
  ]
}

View a rule by name

Endpoint

Method Path Purpose
GET sdd/classifier/{classifierName} Get a rule by name.

Query Parameters

Attribute Description Required
classifierName string The name of the rule. Yes

Response Parameters

Attribute Description
id integer The unique ID of the rule.
createdBy array Includes details about the user who created the rule, such as their profile id, name, and email.
name string Unique, request-friendly rule name.
displayName string Unique, human-readable rule name.
description string The rule description.
type string The type of pattern: regex, dictionary, columnNameRegex, or builtIn.
config object May include config.minConfidence, config.values, config.caseSensitive, config.regex, config.columnNameRegex, and config.tags.
config.minConfidence number When the detection confidence is at least this percentage, tags are applied.
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.
config.caseSensitive boolean Indicates whether or not values are case sensitive. Defaults to false.
createdAt date When the rule was created.
updatedAt date When the rule was last updated.

Request example

This request gets the rule named MY_REGEX_RULE.

curl \
    --request GET \
    --header "Content-Type: application/json" \
    --header "Authorization: Bearer dea464c07bd07300095caa8" \
    https://your-immuta-url.immuta.com/sdd/classifier/MY_REGEX_RULE

Response example

{
  "createdBy": {
    "id": 1,
    "name": "John",
    "email": "john@example.com"
  },
  "name": "MY_REGEX_RULE",
  "displayName": "My Regex Rule",
  "description": "A rule using regex pattern",
  "type": "regex",
  "config": {
    "tags": [
      "Discovered.regex-example"
    ],
    "regex": "^[A-Z][a-z]+",
    "minConfidence": 0.5
  },
  "id": 67,
  "createdAt": "2021-10-18T16:48:18.819Z",
  "updatedAt": "2021-10-18T16:48:18.819Z"
}

View an identification framework by name

Endpoint

Method Path Purpose
GET sdd/template/{templateName} Get an identification framework by name.

Query Parameters

Attribute Description Required
templateName string The name of the identification framework. Yes

Response Parameters

Attribute Description
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 Includes details about the rules within the identification framework, such as the name and overrides.
sampleSize integer Optional override of how many records to sample from the data source.
createdAt date When the framework was created.
updatedAt date When the framework was last updated.

Request example

This request gets the identification framework named MY_FIRST_FRAMEWORK.

curl \
    --request GET \
    --header "Content-Type: application/json" \
    --header "Authorization: Bearer dea464c07bd07300095caa8" \
    https://your-immuta-url.immuta.com/sdd/template/MY_FIRST_FRAMEWORK

Response example

{
  "name": "MY_FIRST_FRAMEWORK",
  "displayName": "My First Framework",
  "description": "This is the first framework I've created.",
  "sampleSize": 100,
  "createdBy": {
    "id": 1,
    "name": "John",
    "email": "john@immuta.com"
  },
  "id": 1,
  "createdAt": "2021-10-18T16:54:24.920Z",
  "updatedAt": "2021-10-18T16:54:24.920Z",
  "classifiers": [
    {
      "name": "MY_DICTIONARY_RULE",
      "overrides": {}
    },
    {
      "name": "MY_REGEX_RULE",
      "overrides": {}
    }
  ]
}

View the current global framework

Endpoint

Method Path Purpose
GET sdd/template/global View the current global framework.

Query Parameters

None.

Response Parameters

Attribute Description
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 Includes details about the rules within the identification framework, such as the name and overrides.
sampleSize integer Optional override of how many records to sample from the data source.
createdBy array Includes details about the user who created the framework, such as their profile id, name, and email.
createdAt date When the framework was created.
updatedAt date When the framework was last updated.

Request example

This request gets the current global framework information.

curl -X 'GET' \
  'https://demo.immuta.com/sdd/template/global' \
  -H 'accept: application/json' \
  -H 'Authorization: Bearer 9ba76f3c64c345ad817fa467d7110556'

Response example

{
  "name": "MY_FIRST_FRAMEWORK",
  "displayName": "My First Framework",
  "description": "This is the first framework I've created.",
  "sampleSize": 100,
  "createdBy": {
    "id": 2,
    "name": "Jane Doe",
    "email": "jane.doe@immuta.com"
  },
  "id": 1,
  "createdAt": "2022-08-10T20:35:43.252Z",
  "updatedAt": "2022-08-10T20:35:43.252Z",
  "classifiers": [
    {
      "name": "AGE",
      "overrides": {}
    },
    {
      "name": "ETHNIC_GROUP",
      "overrides": {}
    }
  ]
}

Apply identification frameworks to data sources

Endpoint

Method Path Purpose
PUT sdd/template/apply Apply an identification framework to a set of data sources.

Query Parameters

None.

Payload Parameters

Attribute Description Required
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

Response Parameters

Attribute Description
success boolean When true, the request was successful.

Request example

This request applies the MY_FIRST_FRAMEWORK framework to the Public Case data source.

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

Payload example

{
  "template": "MY_FIRST_FRAMEWORK",
  "sources": [
    "Public Case"
  ]
}

Response example

{
  "success": true
}

Run SDD on data sources

Endpoint

Method Path Purpose
POST sdd/run Run SDD on specified data sources.

Query Parameters

None.

Payload Parameters

Attribute Description Required
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) and will just return what tags would have been applied or removed. Default is false. No
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

Response Parameters

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

Request example: Run SDD on a single data source

This request runs SDD on the data source Public Case.

curl \
    --request POST \
    --header "Content-Type: application/json" \
    --header "Authorization: Bearer dea464c07bd07300095caa8" \
    --data @example-payload.json \
    https://your-immuta-url.immuta.com/sdd/run

Payload example

{
  "sources": [
    "Insurance Data"
  ]
}

Response example

{
  "Insurance Data": {
    "id": "d2edc1d0-328c-11ec-9d5a-6793988ccf95",
    "state": "completed",
    "output": {
      "diff": {
        "addedTags": {
          "ssn": [
            "Discovered.PII"
          ],
          "email": [
            "Discovered.PII"
          ]
        },
        "removedTags": {
          "ssn": [
            "Discovered.Country.US"
          ]
        }
      },
      "sddTagResult": {
        "ssn": [
          "Discovered.Entity.Social Security Number",
          "Discovered.Identifier Direct",
          "Discovered.PHI",
          "Discovered.PII"
        ],
        "email": [
          "Discovered.Entity.Electronic Mail Address",
          "Discovered.Identifier Direct",
          "Discovered.PHI",
          "Discovered.PII"
        ]
      }
    }
  }
}

Request example: Run SDD on all data sources

This request runs SDD on all your data sources.

curl \
    --request POST \
    --header "Content-Type: application/json" \
    --header "Authorization: Bearer dea464c07bd07300095caa8" \
    --data @example-payload.json \
    https://your-immuta-url.immuta.com/sdd/run

Payload example

{
  "all": true
}

Response example

{
  "Insurance Data": {
    "id": "d2edc1d0-328c-11ec-9d5a-6793988ccf95",
    "state": "completed",
    "output": {
      "diff": {
        "addedTags": {
          "ssn": [
            "Discovered.PII"
          ],
          "email": [
            "Discovered.PII"
          ]
        },
        "removedTags": {
          "ssn": [
            "Discovered.Country.US"
          ]
        }
      },
      "sddTagResult": {
        "ssn": [
          "Discovered.Entity.Social Security Number",
          "Discovered.Identifier Direct",
          "Discovered.PHI",
          "Discovered.PII"
        ],
        "email": [
          "Discovered.Entity.Electronic Mail Address",
          "Discovered.Identifier Direct",
          "Discovered.PHI",
          "Discovered.PII"
        ]
      }
    }
  }
  "Finance Data": {
    "id": "d2edc1d0-328c-11ec-9d5a-695e896d59s",
    "state": "completed",
    "output": {
      "diff": {
        "addedTags": {
          "ssn": [
            "Discovered.PII"
          ],
          "email": [
            "Discovered.PII"
          ]
        },
        "removedTags": {
          "ssn": [
            "Discovered.Country.US"
          ]
        }
      },
      "sddTagResult": {
        "ssn": [
          "Discovered.Entity.Social Security Number",
          "Discovered.Identifier Direct",
          "Discovered.PHI",
          "Discovered.PII"
        ],
        "email": [
          "Discovered.Entity.Electronic Mail Address",
          "Discovered.Identifier Direct",
          "Discovered.PHI",
          "Discovered.PII"
        ]
      }
    }
  }
}

Update rules or identification frameworks

Method Path Purpose
PUT /sdd/classifier/{classifierName} Update a rule. Partial updates are not supported.
POST sdd/classifier/template/{templateName}/clone Clone an identification framework.
PUT /sdd/template/{templateName} Update an identification framework.

Update a rule

Endpoint

Method Path Purpose
PUT sdd/classifier/{classifierName} Update a rule. Partial updates are not supported.

Query Parameters

Attribute Description Required
classifierName string The name of the rule to update. Yes

Payload Parameters

Attribute Description Required
name string Unique, request-friendly rule name. Yes
displayName string Unique, human-readable rule name. Yes
description string The rule description. Yes
type string The type of pattern: regex, dictionary, columnNameRegex, or builtIn. Yes
config object May include config.minConfidence, config.values, config.caseSensitive, config.regex, config.columnNameRegex, and config.tags. Yes
config.minConfidence number When the detection confidence is at least this percentage, tags are applied. Yes
config.tags array[string] The name of the resulting tags to apply to the data source. Yes
config.columnNameRegex string A case-insensitive regular expression to optionally match against column names. No
config.regex string A case-insensitive regular expression to match against column values. No
config.values array[string] The list of words included in the dictionary. No
config.caseSensitive boolean Indicates whether or not values are case sensitive. Defaults to false. No

Response Parameters

Attribute Description
createdBy array Includes details about the user who created the rule, such as their profile id, name, and email.
name string Unique, request-friendly rule name.
displayName string Unique, human-readable rule name.
description string The rule description.
type string The type of pattern: regex, dictionary, columnNameRegex, or builtIn.
config object May include config.minConfidence, config.values, config.caseSensitive, config.regex, config.columnNameRegex, and config.tags.
config.minConfidence number When the detection confidence is at least this percentage, tags are applied.
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.
config.caseSensitive boolean Indicates whether or not values are case sensitive. Defaults to false.
createdAt date When the rule was created.
updatedAt date When the rule was last updated.

Request example

The following request updates the name and description of the MY_REGEX_RULE rule.

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_RULE
Payload example
{
  "name": "REGULAR_EXPRESSIONS",
  "displayName": "Regular Expressions",
  "description": "This rule uses regular expressions",
  "type": "regex",
  "config": {
    "regex": "^[A-Z][a-z]+",
    "minConfidence": 0.5,
    "tags": ["Discovered.regex-example"]
  }
}

Response example

{
  "createdBy": {
    "id": 1,
    "name": "John",
    "email": "john@example.com"
  },
  "name": "REGULAR_EXPRESSIONS",
  "displayName": "Regular Expressions",
  "description": "This rule uses regular expressions",
  "type": "regex",
  "config": {
    "tags": [
      "Discovered.regex-example"
    ],
    "regex": "^[A-Z][a-z]+",
    "minConfidence": 0.5
  },
  "id": 67,
  "createdAt": "2021-10-14T18:48:56.289Z",
  "updatedAt": "2021-10-19T12:48:56.289Z"
}

Clone an identification framework

Endpoint

Method Path Purpose
POST sdd/template/{templateName}/clone Clone an identification framework.

Query Parameters

Attribute Description Required
templateName string The name of the identification framework to clone. Yes

Payload Parameters

Attribute Description Required
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

Response Parameters

Attribute Description
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 Includes details about the rules within the identification framework, such as the name and overrides.
sampleSize integer Optional override of how many records to sample from the data source.
createdAt date When the framework was created.
updatedAt date When the framework was last updated.

Request example

This request clones the MY_FIRST_FRAMEWORK identification framework.

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
Payload example
{
  "name": "CLONE_OF_FIRST_FRAMEWORK",
  "displayName": "Clone of My First Framework",
  "description": "This is a clone of my first framework."
}

Response example

{
  "name": "CLONE_OF_FIRST_FRAMEWORK",
  "displayName": "Clone of My First Framework",
  "description": "This is a clone of my first framework.",
  "sampleSize": 100,
  "createdBy": {
    "id": 1,
    "name": "John",
    "email": "john@example.com"
  },
  "id": 4,
  "createdAt": "2021-10-19T16:21:17.660Z",
  "updatedAt": "2021-10-19T16:21:17.660Z",
  "classifiers": [
    {
      "name": "MY_COLUMN_NAME_REGEX_RULE",
      "overrides": {}
    },
    {
      "name": "MY_REGEX_RULE",
      "overrides": {}
    }
  ]
}

Update an identification framework

Endpoint

Method Path Purpose
PUT sdd/template/{templateName} Update an identification framework.

Query Parameters

Attribute Description Required
templateName string The name of the identification framework to update. Yes

Payload Parameters

Attribute Description Required
name string Unique, request-friendly framework name. Yes
displayName string Unique, human-readable framework name. Yes
description string The framework description. Yes
classifiers array Includes each rule's name and overrides for minConfidence and tags. Yes
sampleSize integer Override for how many records to sample from the data source. No

Response Parameters

Attribute Description
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 Includes details about the rules within the identification framework, such as the name and overrides.
sampleSize integer Optional override of how many records to sample from the data source.
createdAt date When the framework was created.
updatedAt date When the framework was last updated.

Request example

The following request updates the name of, description of, and rules in the MY_FIRST_FRAMEWORK identification framework.

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
Payload example
{
  "name": "HEALTH_DATA",
  "displayName": "Health Data",
  "description": "This framework uses the column regex and regex patterns.",
  "classifiers": [
    {
      "name": "MY_COLUMN_NAME_REGEX_RULE"
    },
    {
      "name": "REGULAR_EXPRESSION"
    }
  ],
  "sampleSize": 100
}

Response example

{
  "name": "HEALTH_DATA",
  "displayName": "Health Data",
  "description": "This framework uses the column regex and regex patterns.",
  "sampleSize": 100,
  "createdBy": {
    "id": 1,
    "name": "John",
    "email": "john@example.com"
  },
  "id": 1,
  "createdAt": "2021-10-14T19:12:22.092Z",
  "updatedAt": "2021-10-20T19:12:22.092Z",
  "classifiers": [
    {
      "name": "MY_COLUMN_NAME_REGEX_RULE",
      "overrides": {}
    },
    {
      "name": "REGULAR_EXPRESSION",
      "overrides": {}
    }
  ]
}

Delete rules or identification frameworks

Method Path Purpose
DELETE /sdd/classifier/{classifierName} Delete a rule.
DELETE /sdd/template/{templateName} Delete an identification framework.

Delete a rule

Endpoint

Method Path Purpose
DELETE sdd/classifier/{classifierName} Delete a rule.

Query Parameters

Attribute Description Required
classifierName string The name of the rule to delete. Yes

Response Parameters

Attribute Description
createdBy array Includes details about the user who created the rule, such as their profile id, name, and email.
name string Unique, request-friendly rule name.
displayName string Unique, human-readable rule name.
description string The rule description.
type string The type of pattern: regex, dictionary, columnNameRegex, or builtIn.
config object May include config.minConfidence, config.values, config.caseSensitive, config.regex, config.columnNameRegex, and config.tags.
config.minConfidence number When the detection confidence is at least this percentage, tags are applied.
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.
config.caseSensitive boolean Indicates whether or not values are case sensitive. Defaults to false.
createdAt date When the rule was created.
updatedAt date When the rule was last updated.

Request example

The following request deletes the REGULAR_EXPRESSION rule.

curl \
    --request DELETE \
    --header "Content-Type: application/json" \
    --header "Authorization: Bearer dea464c07bd07300095caa8" \
    https://your-immuta-url.immuta.com/sdd/classifier/REGULAR_EXPRESSION

Response example

{
  "createdBy": {
    "id": 1,
    "name": "John",
    "email": "john@example.com"
  },
  "name": "REGULAR_EXPRESSION",
  "displayName": "Regular Expression",
  "description": "This rule uses regular expression",
  "type": "regex",
  "config": {
    "tags": [
      "Discovered.regex-example"
    ],
    "regex": "^[A-Z][a-z]+",
    "minConfidence": 0.5
  },
  "id": 67,
  "createdAt": "2021-10-19T15:54:28.695Z",
  "updatedAt": "2021-10-19T16:00:02.329Z"
}

Delete an identification framework

Endpoint

Method Path Purpose
DELETE sdd/template/{templateName} Delete an identification framework.

Query Parameters

Attribute Description Required
templateName string The name of the identification framework to delete. Yes

Response Parameters

Attribute Description
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 Includes details about the rules within the identification framework, such as the name and overrides.
sampleSize integer Optional override of how many records to sample from the data source.
createdAt date When the framework was created.
updatedAt date When the framework was last updated.

Request example

The following request deletes the HEALTH_DATA identification framework.

curl \
    --request DELETE \
    --header "Content-Type: application/json" \
    --header "Authorization: Bearer dea464c07bd07300095caa8" \
    https://your-immuta-url.immuta.com/sdd/template/HEALTH_DATA

Response example

{
  "name": "HEALTH_DATA",
  "displayName": "Health Data",
  "description": "This is a framework for health data.",
  "sampleSize": 100,
  "createdBy": {
    "id": 1,
    "name": "John",
    "email": "john@immuta.com"
  },
  "id": 1,
  "createdAt": "2021-10-19T16:07:39.356Z",
  "updatedAt": "2021-10-19T16:07:39.356Z",
  "classifiers": [
    {
      "name": "MY_COLUMN_NAME_REGEX_RULE",
      "overrides": {}
    }
  ]
}