Domains API Reference Guide
Collections
The collections object represents a domain you've created that contains data sources and assigned permissions. Currently, the only collection type available is a domain, so collections and domains are referred to interchangeably throughout this page.
Object attributes
Attribute | Data type | Description |
---|---|---|
id | String | The unique identifier of the domain. |
name | String | The name of the domain. |
description | String | The description of the domain that will be displayed for users. |
collectionPermissions.id | String | The unique identifier of the permission. |
collectionPermissions.profileId | String | The unique identifier of the user profile in the IAM. |
collectionPermissions.collectionId | String | The unique identifier of the domain for which the user has the assigned permission. |
collectionPermissions.permission | String | The permission they are granted for that domain. Accepted value is Manage Policies . |
collectionDataSources.dataSourceId | Integer | The unique identifier for the data source in Immuta. |
createdBy | Integer | The unique identifier of the user who created the domain. |
profileId | String | The name of the user who created the domain. |
createdAt | Timestamp | The date and time the domain was created. |
updatedAt | Timestamp | The date and time the domain was updated. |
type | String | The type of collection. Value is domain . |
Endpoints and methods
- POST /collection: Creates a new domain.
- GET /collection: Retrieves all domains.
- GET /collection/{collectionId}: Retrieves a specific domain.
- PUT /collection/{collectionId}: Updates a domain name or description.
- DELETE /collection/{collectionId}: Deletes a domain.
- POST /collection/{collectionId}/datasources: Adds data sources to a domain.
- GET /collection/{collectionId}/datasources: Retrieves the data sources in the domain.
- DELETE /collection/{collectionId}/datasources/{dataSourceId}: Deletes a data source from a domain.
- POST /collection/{collectionId}/permissions: Assigns a domain permission to a user.
- GET /collection/{collectionId}/permissions: Retrieves user permissions assigned in the domain.
- DELETE /collection/{collectionId}/permissions/{permissionId}: Removes a domain permission from a user.
Create a new domain
Create a new domain. Currently in preview, you cannot add data sources to the domain when creating the domain.
You must have the global GOVERNANCE
permission to create a domain.
POST /collection
curl -X 'POST' \
'https://your.immuta.url.com/collection' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer 09a0ffd7512f4aeeb66c09f3111c436c' \
-d '{
"id": "c7458ee9-03e5-4b6f-8395-ad4e49235428",
"name": "Research",
"description": "This domain is for research team data.",
"type": "domain"
}'
Body parameters
Parameter | Data type | Description | Required or Optional | Default values | Accepted values |
---|---|---|---|---|---|
id | String | The unique identifier of the domain. | Required | - | - |
name | String | The name of the domain. | Required | - | - |
description | String | The description of the domain that will be displayed for users. | Optional | - | - |
type | String | The type of collection. | Required | domain |
domain |
Returns
Returns a collections object.
Response
{
"id": "c7458ee9-03e5-4b6f-8395-ad4e49235428",
"type": "domain",
"name": "Research",
"description": "This domain is for research team data.",
"createdAt": "2023-05-10T14:55:29.289Z",
"updatedAt": "2023-05-10T14:55:29.289Z",
"createdBy": 2,
"profile": {
"name": "Example User"
}
}
Retrieve all domains
Retrieve domains created in Immuta. These results can be filtered by permission or by name.
GET /collection
curl -X 'GET' \
'https://your.immuta.url.com/collection?type=domain&offset=0&size=10' \
-H 'accept: application/json' \
-H 'Authorization: Bearer 9b06b571ab2c45f7ba315a3d80b6b6ec'
Query parameters
The following table describes optional query parameters for retrieving domains.
Parameter | Data type | Description | Accepted values |
---|---|---|---|
type | String | The type of collection. | domain |
offset | Integer | The number of items from the beginning of the response to exclude. You can combine the offset and size parameters to return a specific set of domains. For example, to return the second and third domain in the response, you would set offset=1 and size=2 . |
Minimum value is 0 . Maximum value is the total number of domains minus size . |
size | Integer | The number of domains to return. | Minimum value is 1 . Maximum value is the total number of domains. |
searchText | String | The text to search for in domain names. This will return domains with a name that contains this search text. | - |
withPermissions | String | Only returns domains that the querying user has been granted the permission in. | Manage Policies |
Returns
Returns a data property that contains an array of up to size
domain objects. If no domains
exist, the array will be empty.
Response
{
"data": [{
"id": "c7458ee9-03e5-4b6f-8395-ad4e49235428",
"type": "domain",
"name": "Marketing domain",
"description": "This is a collection of marketing data.",
"createdAt": "2023-05-10T14:55:29.289Z",
"updatedAt": "2023-05-10T14:55:29.289Z",
"createdBy": 2,
"profile": {
"name": "Example User"
}
},
{
"id": "2",
"type": "domain",
"name": "Test 2",
"description": "Another test",
"createdAt": "2023-05-10T15:06:15.047Z",
"updatedAt": "2023-05-10T15:06:15.047Z",
"createdBy": 2,
"profile": {
"name": "Example User"
}
}],
"total": 2
}
Retrieve a single domain
Retrieve a domain with the given collectionId
to view the data sources, description, and assigned permissions
associated with the domain.
GET /collection/{collectionId}
curl -X 'GET' \
'https://your.immuta.url.com/collection/c7458ee9-03e5-4b6f-8395-ad4e49235428' \
-H 'accept: application/json' \
-H 'Authorization: Bearer 9b06b571ab2c45f7ba315a3d80b6b6ec'
Path parameter
Parameter | Data type | Description |
---|---|---|
collectionId | String | The unique identifier of the domain. |
Returns
Returns a collections object.
Response
{
"id": "c7458ee9-03e5-4b6f-8395-ad4e49235428",
"type": "domain",
"name": "Research",
"description": "This domain is for research team data.",
"createdAt": "2023-05-10T14:55:29.289Z",
"updatedAt": "2023-05-10T14:55:29.289Z",
"createdBy": 2,
"profile": {
"name": "Example User"
}
}
Update a domain
Change the domain name or description. You must have the global GOVERNANCE
permission to update the domain.
PUT /collection/{collectionId}
curl -X 'PUT' \
'https://your.immuta.url.com/collection/c7458ee9-03e5-4b6f-8395-ad4e49235428' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer 71bd4a7088554159a7ad1ade9242568f' \
-d '{
"name": "HR Research",
"description": "This domain is specifically for human resources data and research."
}'
Parameters
Path parameter
Parameter | Data type | Description |
---|---|---|
collectionId | String | The unique identifier of the domain. |
Body parameters
Parameter | Data type | Description | Required or Optional | Default values | Accepted values |
---|---|---|---|---|---|
name | String | The name of the domain. | Optional | - | - |
description | String | The description of the domain that will be displayed for users. | Optional | - | - |
Returns
Returns a collections object with the new name or description.
Response
{
"id": "c7458ee9-03e5-4b6f-8395-ad4e49235428",
"type": "domain",
"name": "HR Research",
"description": "This domain is specifically for human resources data and research.",
"createdAt": "2023-05-11T14:50:40.855Z",
"updatedAt": "2023-05-11T14:53:21.235Z",
"createdBy": 2,
"profile": {
"name": "Example User"
}
}
Delete a domain
Delete a domain. The domain must have zero data sources for a user with the global GOVERNANCE
permission to delete the
domain.
DELETE /collection/{collectionId}
curl -X 'DELETE' \
'https://your.immuta.url.com/collection/c7458ee9-03e5-4b6f-8395-ad4e49235428' \
-H 'accept: application/json' \
-H 'Authorization: Bearer 71bd4a7088554159a7ad1ade9242568f'
Parameters
Path parameter
Parameter | Data type | Description |
---|---|---|
collectionId | String | The unique identifier of the domain. |
Query parameter
Parameter | Data type | Description |
---|---|---|
dryRun | Boolean | If true , the domain will not be deleted. |
Returns
Returns a 204 code when the domain is successfully deleted. Additional responses are provided below:
- 400: An invalid ID was provided.
- 404: The domain was not found.
Add domain data sources
Add existing data sources to a domain. You must have the GOVERNANCE
permission.
POST /collection/{collectionId}/datasources
curl -X 'POST' \
'https://your.immuta.url.com/collection/c7458ee9-03e5-4b6f-8395-ad4e49235428/datasources' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer 71bd4a7088554159a7ad1ade9242568f' \
-d '[
{
"dataSourceId": 36
}
]'
Parameters
Path parameter
Parameter | Data type | Description |
---|---|---|
collectionId | String | The unique identifier of the domain. |
Body parameter
Parameter | Data type | Description | Required or Optional | Default values | Accepted values |
---|---|---|---|---|---|
dataSourceId | Integer | The unique identifier of the data source in Immuta. | Required | - | - |
Returns
Returns a unique identifier of the background job that adds the data sources to the domain.
Response
{
"jobId": "e48e15a0-ef5c-11ed-892c-a75afcd86969"
}
Retrieve domain data sources
Retrieve the data sources within a domain.
GET /collection/{collectionId}/datasources
curl -X 'GET' \
'https://your.immuta.url.com/collection/c7458ee9-03e5-4b6f-8395-ad4e49235428/datasources?offset=0&size=10' \
-H 'accept: application/json' \
-H 'Authorization: Bearer 71bd4a7088554159a7ad1ade9242568f'
Parameters
Path parameter
Parameter | Data type | Description |
---|---|---|
collectionId | String | The unique identifier of the domain. |
Query parameters
Parameter | Data type | Description | Accepted values |
---|---|---|---|
offset | Integer | The number of items from the beginning of the response to exclude. You can combine the offset and size parameters to return a specific set of data sources. For example, to return the second and third data source in the response, you would set offset=1 and size=2 . |
Minimum value is 0 . Maximum value is the total number of data sources minus size . |
size | Integer | The number of data sources to return. | Minimum value is 1 . Maximum value is the total number of data sources. |
Returns
Returns a data property that contains an array of up to size
data sources. Each entry in the array is a separate data
source. If there are no data sources in the domain, the array will be empty.
Response
{
"data": [{
"dataSourceId": 36,
"createdAt": "2023-05-10T18:02:57.068Z",
"name": "HR Data",
"type": "queryable",
"platform": "PostgreSQL",
"connectionString": "immuta@your.database.host.com:5432/public",
"schema": "public",
"table": "research_data",
"tags": []
}],
"total": 1
}
Delete domain data sources
Remove data sources from a domain. To remove data sources from a domain, you must have the
global CREATE_DATA_SOURCE
permission.
DELETE /collection/{collectionId}/datasources/{dataSourceId}
curl -X 'DELETE' \
'https://your.immuta.url.com/collection/c7458ee9-03e5-4b6f-8395-ad4e49235428/datasources/36' \
-H 'accept: application/json' \
-H 'Authorization: Bearer 71bd4a7088554159a7ad1ade9242568f'
Path parameters
Parameter | Data type | Description |
---|---|---|
collectionId | String | The unique identifier of the domain from which to remove the data source. |
dataSourceId | Integer | The unique identifier of the data source to remove. |
Returns
Returns a 204 code when the data source is successfully removed from the domain. Additional responses are included below:
- 403: Requesting user does not have permission to remove the data source.
- 404: The specified collection or data source was not found.
Assign domain permissions
Assign domain permissions to a specific user. You must have the global USER_ADMIN
permission to assign
domain permissions to users.
POST /collection/{collectionId}/permissions
curl -X 'POST' \
'https://your.immuta.url.com/collection/c7458ee9-03e5-4b6f-8395-ad4e49235428/permissions' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer 71bd4a7088554159a7ad1ade9242568f' \
-d '[
{
"profileId": 3,
"permission": "Manage Policies"
}
]'
Domains permissions object attributes
Attribute | Data type | Description |
---|---|---|
id | String | The unique identifier of the permissions object. |
profileId | Integer | The unique identifier of the user the permission is assigned to. |
collectionId | String | The unique identifier of the domain. |
permission | String | The permission assigned to the user. Accepted value is Manage Policies . |
createdAt | Timestamp | The date and time the permission object was created. |
Parameters
Path parameter
Parameter | Data type | Description |
---|---|---|
collectionId | String | The unique identifier of the domain. |
Body parameters
Parameter | Data type | Description | Required or Optional | Default values | Accepted values |
---|---|---|---|---|---|
profileId | Integer | The unique identifier of the user in the identity manager. | Required | - | - |
permission | String | The domain permission assigned to the user. | Required | - | Manage Policies |
Returns
Returns an array of domain permission objects that represent a permission in a domain assigned to a specific user.
Response
[{
"id": "c2ec9049-ac93-4700-9e21-f0ec3a0de6bb",
"profileId": 3,
"collectionId": "c7458ee9-03e5-4b6f-8395-ad4e49235428",
"permission": "Manage Policies",
"createdAt": "2023-05-10T18:37:05.847Z"
}]
Retrieve domain user permissions
Retrieve a list of permissions associated with the domain.
GET /collection/{collectionId}/permissions
curl -X 'GET' \
'https://your.immuta.url.com/collection/c7458ee9-03e5-4b6f-8395-ad4e49235428/permissions?offset=0&size=10' \
-H 'accept: application/json' \
-H 'Authorization: Bearer 71bd4a7088554159a7ad1ade9242568f'
Parameters
Path parameter
Parameter | Data type | Description |
---|---|---|
collectionId | String | The unique identifier of the domain. |
Query parameters
Parameter | Data type | Description | Accepted values |
---|---|---|---|
type | String | The permission to return. | Manage Policies |
offset | Integer | The number of items from the beginning of the response to exclude. You can combine the offset and size parameters to return a specific set of domain users. For example, to return the second and third domain users in the response, you would set offset=1 and size=2 . |
Minimum value is 0 . Maximum value is the total number of domain users minus size . |
size | Integer | The number of users to return. | Minimum value is 1 . Maximum value is the total number of domain users. |
Returns
Returns a data property that contains an array of users who have been assigned that permission in the domain.
Response
{
"data": [{
"id": "1bf5fa36-8130-4f72-8f4f-d1f18c25c2a2",
"name": "Example User",
"profileId": 2,
"collectionId": "c7458ee9-03e5-4b6f-8395-ad4e49235428",
"permission": "Manage Policies",
"createdAt": "2023-05-10T14:55:29.289Z"
},
{
"id": "6172d495-c560-4ae1-bceb-cc6ce15e55ec",
"name": "Example User 2",
"profileId": 3,
"collectionId": "c7458ee9-03e5-4b6f-8395-ad4e49235428",
"permission": "Manage Policies",
"createdAt": "2023-05-10T14:55:29.289Z"
}],
"total": 2
}
Delete domain permissions
Remove a domain permission from a specific user. You must have the global USER_ADMIN
permission to remove
domain permissions from users.
DELETE /collection/{collectionId}/permissions/{permissionsId}
curl -X 'DELETE' \
'https://your.immuta.url.com/collection/c7458ee9-03e5-4b6f-8395-ad4e49235428/permissions/c2ec9049-ac93-4700-9e21-f0ec3a0de6bb' \
-H 'accept: application/json' \
-H 'Authorization: Bearer 71bd4a7088554159a7ad1ade9242568f'
Path parameters
Parameter | Data type | Description |
---|---|---|
collectionId | String | The unique identifier of the domain. |
permissionsId | String | The unique identifier of the assigned permission. |
Returns
Returns a 204 code when the permission is successfully removed from the user. Additional responses are provided below:
- 400: Invalid permission.
- 404: Collection or permission not found.