Data Dictionary API Reference Guide
The data dictionary API allows you to manage the data dictionary for your data sources.
Note
Additional fields may be included in some responses you receive; however, these attributes are for internal purposes and are therefore undocumented.
Data dictionary workflow
- Manage the dictionary for a data source.
- Search dictionaries.
- Delete a dictionary for a data source.
Manage data dictionaries
| Method | Path | Purpose |
|---|---|---|
| POST | /dictionary/{dataSourceId} |
Create the dictionary for the specified data source. |
| PUT | /dictionary/{dataSourceId} |
Update the data dictionary for the specified data source. |
Create a data dictionary
Endpoint
| Method | Path | Purpose |
|---|---|---|
| POST | /dictionary/{dataSourceId} |
Create the dictionary for the specified data source. |
Query Parameters
| Attribute | Description | Required |
|---|---|---|
| dataSourceId | integer The ID of the data source that will contain the data dictionary. |
Yes |
| body | array[object] Data dictionary metadata, including column names, data types, description and tags. |
Yes |
Payload Parameters
| Attribute | Description | Required |
| --- | --- |
| name | string The name of the column. | Yes |
| dataType | string The type of data in the column. | Yes |
| remoteType | string The type of data in the remote column. | Yes |
Response Parameters
| Attribute | Description |
|---|---|
| createdAt | timestamp When the object was created. |
| dataSource | integer The ID of the data source the dictionary is associated with. |
| id | integer The ID of the dictionary object. |
| metadata | array[string] Metadata for the individual fields in the dictionary, including name, dataType, and remoteType. |
| types | array[string] A list of all data types the dictionary contains, such as text, integer, json, or timestamp with time zone. |
Request example
The following request creates a data dictionary (saved in example-payload.json) for the data source with ID 1.
curl \
--request POST \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
--header "Content-Type: application/json" \
--data @example-payload.json \
https://demo.immuta.com/dictionary/1
Payload example
{
"metadata": [
{
"name": "notificationType",
"dataType": "text",
"remoteType": "text"
},
{
"name": "actionBy",
"dataType": "text",
"remoteType": "integer"
},
{
"name": "targetUser",
"dataType": "integer",
"remoteType": "integer"
},
{
"name": "metadata",
"dataType": "json",
"remoteType": "json"
},
{
"name": "id",
"dataType": "integer",
"remoteType": "integer"
},
{
"name": "notifyInitiator",
"dataType": "text",
"remoteType": "boolean"
},
{
"name": "eventTime",
"dataType": "timestamp with time zone",
"remoteType": "timestamp with time zone"
}
]
}
Response example
{
"createdAt": "2018-03-21T10:52:30.535Z",
"dataSource": 1,
"id": 1,
"metadata": [
{
"name": "notificationType",
"dataType": "text",
"remoteType": "text"
},
{
"name": "actionBy",
"dataType": "text",
"remoteType": "integer"
},
{
"name": "targetUser",
"dataType": "integer",
"remoteType": "integer"
},
{
"name": "metadata",
"dataType": "json",
"remoteType": "json"
},
{
"name": "id",
"dataType": "integer",
"remoteType": "integer"
},
{
"name": "notifyInitiator",
"dataType": "text",
"remoteType": "boolean"
},
{
"name": "eventTime",
"dataType": "timestamp with time zone",
"remoteType": "timestamp with time zone"
}
],
"types": [
"text",
"integer",
"json",
"timestamp with time zone"
],
"updatedAt": "2018-03-21T12:18:25.531Z"
}
Other status codes returned include:
| Status Code | Message |
|---|---|
| 400 | Bad request: (detailed reason). |
| 401 | A valid Authorization token must be provided. |
| 403 | User must have one of the following roles to delete dictionary: owner,expert. |
| 404 | Data source not found. |
Update a data dictionary
Endpoint
| Method | Path | Purpose |
|---|---|---|
| PUT | /dictionary/{dataSourceId} |
Update the dictionary for the specified data source. |
Query Parameters
| Attribute | Description | Required |
|---|---|---|
| dataSourceId | integer The ID of the data source that will contain the data dictionary. |
Yes |
| body | array[object] Data dictionary metadata, including column names, data types, description and tags. |
Yes |
| Attribute | Description | Required |
| --- | --- |
| name | string The name of the column. | Yes |
| dataType | string The type of data in the column. | Yes |
| remoteType | string The type of data in the remote column. | Yes |
Response Parameters
| Attribute | Description |
|---|---|
| createdAt | timestamp When the object was created. |
| dataSource | integer The ID of the data source the dictionary is associated with. |
| id | integer The ID of the dictionary object. |
| metadata | array[string] Metadata for the individual fields in the dictionary, including name, dataType, and remoteType. |
| types | array[string] A list of all data types the dictionary contains, such as text, integer, json, or timestamp with time zone. |
Request example
The request below updates the data dictionary for the data source with the ID 1.
curl \
--request PUT \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
--header "Content-Type: application/json" \
--data @example-payload.json \
https://demo.immuta.com/dictionary/1
Payload example
{
"metadata": [
{
"name": "notificationType",
"dataType": "text",
"remoteType": "text"
},
{
"name": "actionBy",
"dataType": "text",
"remoteType": "integer"
},
{
"name": "targetUser",
"dataType": "integer",
"remoteType": "integer"
},
{
"name": "metadata",
"dataType": "json",
"remoteType": "json"
},
{
"name": "id",
"dataType": "integer",
"remoteType": "integer"
},
{
"name": "notifyInitiator",
"dataType": "text",
"remoteType": "boolean"
},
{
"name": "eventTime",
"dataType": "timestamp with time zone",
"remoteType": "timestamp with time zone"
}
]
}
Response example
{
"createdAt": "2018-03-21T10:52:30.535Z",
"dataSource": 1,
"id": 1,
"metadata": [
{
"name": "notificationType",
"dataType": "text",
"remoteType": "text"
},
{
"name": "actionBy",
"dataType": "text",
"remoteType": "integer"
},
{
"name": "targetUser",
"dataType": "integer",
"remoteType": "integer"
},
{
"name": "metadata",
"dataType": "json",
"remoteType": "json"
},
{
"name": "id",
"dataType": "integer",
"remoteType": "integer"
},
{
"name": "notifyInitiator",
"dataType": "text",
"remoteType": "boolean"
},
{
"name": "eventTime",
"dataType": "timestamp with time zone",
"remoteType": "timestamp with time zone"
}
],
"types": [
"text",
"integer",
"json",
"timestamp with time zone"
],
"updatedAt": "2018-03-21T12:18:25.531Z"
}
Other status codes returned include
| Status Code | Message |
|---|---|
| 400 | Bad request: (detailed reason). |
| 401 | A valid Authorization token must be provided. |
| 403 | User must have one of the following roles to delete dictionary: owner,expert. |
| 404 | Data source not found. |
Search data dictionaries
| Method | Path | Purpose |
|---|---|---|
| GET | /dictionary/{dataSourceId} |
Get the dictionary for the specified data source. |
| GET | /dictionary/columns |
Search across all dictionary columns. |
Get the dictionary for a specified data source
Endpoint
| Method | Path | Purpose |
|---|---|---|
| GET | /dictionary/{dataSourceId} |
Get the dictionary for the specified data source. |
Query Parameters
| Attribute | Description | Required |
|---|---|---|
| dataSourceId | integer The ID of the data source that contains the data dictionary. |
Yes |
Response Parameters
| Attribute | Description |
|---|---|
| createdAt | timestamp When the object was created. |
| dataSource | integer The ID of the data source the dictionary is associated with. |
| id | integer The ID of the dictionary object. |
| metadata | array[string] Metadata for the individual fields in the dictionary, including name, dataType, and remoteType. |
| types | array[string] A list of all data types the dictionary contains, such as text, integer, json, or timestamp with time zone. |
Request example
The request below gets the data dictionary for the data source with the ID 1.
curl \
--request GET \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
--header "Content-Type: application/json" \
https://demo.immuta.com/dictionary/1
Response example
{
"createdAt": "2018-03-21T10:52:30.535Z",
"dataSource": 1,
"id": 1,
"metadata": [
{
"name": "notificationType",
"dataType": "text",
"remoteType": "text"
},
{
"name": "actionBy",
"dataType": "text",
"remoteType": "integer"
},
{
"name": "targetUser",
"dataType": "integer",
"remoteType": "integer"
},
{
"name": "metadata",
"dataType": "json",
"remoteType": "json"
},
{
"name": "id",
"dataType": "integer",
"remoteType": "integer"
},
{
"name": "notifyInitiator",
"dataType": "text",
"remoteType": "boolean"
},
{
"name": "eventTime",
"dataType": "timestamp with time zone",
"remoteType": "timestamp with time zone"
}
],
"types": [
"text",
"integer",
"json",
"timestamp with time zone"
],
"updatedAt": "2018-03-21T12:18:25.531Z"
}
Search across all dictionary columns
Endpoint
| Method | Path | Purpose |
|---|---|---|
| GET | /dictionary/columns |
Search across all dictionary columns. |
Query Parameters
| Attribute | Description | Required |
|---|---|---|
| searchText | string A string used to filter returned columns. The query is executed with a wildcard prefix and suffix. |
No |
| limit | integer The maximum number of search results that will be returned. Default is 10. |
No |
Response Parameters
| Attribute | Description |
|---|---|
| columnName | string The name of the column. |
Request example
The following request searches for columns in all dictionaries that contain the text address in their name, with a
limit of 10 results.
curl \
--request GET \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
--header "Content-Type: application/json" \
https://demo.immuta.com/dictionary/columns?searchText=address&limit=10
Response example
[
"address_city",
"address_state",
"address_street"
]
Delete a data dictionary
Endpoint
| Method | Path | Purpose |
|---|---|---|
| DELETE | /dictionary/{dataSourceId} |
Delete the data dictionary for the specified data source. |
Query Parameters
| Attribute | Description | Required |
|---|---|---|
| dataSourceId | integer The ID of the data source. |
Yes |
Response Parameters
None.
Request example
The request below deletes the data dictionary for the data source with ID 1.
curl \
--request DELETE \
--header "Authorization: Bearer dea464c07bd07300095caa8" \
--header "Content-Type: application/json" \
https://demo.immuta.com/dictionary/1
Response example
This endpoint returns {} on success.
Other status codes returned include
| Status Code | Message |
|---|---|
| 401 | A valid Authorization token must be provided. |
| 403 | User must have one of the following roles to delete dictionary: owner,expert. |
| 404 | Data source not found. |