Projects API Reference Guide
This page details how to use the projects API to query projects and the data sources associated
with them in Immuta.
Projects workflow
- Create a project.
- Search for Immuta projects.
- Manage your Immuta projects.
- Manage project members.
- Manage project data sources.
- Manage project comments.
- Use projects.
- Delete projects.
Create a project
Endpoint
| Method | Path | Purpose | 
|---|---|---|
| POST | /project | Create the project. | 
Query Parameters
None.
Payload Parameters
| Attribute | Description | Required | 
|---|---|---|
| id | integerProject ID. | Yes | 
| projectKey | stringName of the project. | Yes | 
| name | stringName of the project. | Yes | 
| status | string(Accepted statuses areopenorclosed.) | Yes | 
| description | stringProject description. | No | 
| documentation | stringProject documentation. | No | 
| tags | arrayProject tags. | No | 
| purposes | arrayProject purposes. | No | 
| stagedPurposes | arrayProject purposes staged for approval. | No | 
| deleted | booleanIftrue, the project will be deleted. | No | 
| snowflake | arrayThis enables a Snowflake workspace for the project and details theschema,hostname, andwarehouse. | No | 
| allowMaskedJoins | booleanIftrue, masked joins will be allowed. | No | 
| subscriptionPolicy | array[object]A policy object for the Subscription Policy on the project. Details includetype,exceptions,conditions,allowDiscovery, andautomaticSubscription. If this is not set, it will be the defaultmanual. | No | 
| subscriptionType | stringThe type of subscription policy on the project. The type can beautomatic(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), ormanual(which requires users to be manually added). | No | 
| equalization | arrayDetails the policy conditions of the equalization, including the configured (or recommended) user groups and attributes. | No | 
| workspace | arrayInformation on native workspaces in the project. | No | 
| type | stringThe type of Immuta project, either user created project (user) or system generated project (schema). | No | 
| createdAt | timestampDate of the project creation. | No | 
| updatedAt | timestampDate of the most recent update. | No | 
| Attribute | Description | 
|---|---|
| id | integerProject ID. | 
| projectKey | stringName of the project. | 
| name | stringName of the project. | 
| status | string(Statuses areopenorclosed.) | 
| description | stringProject description. | 
| documentation | stringProject documentation. | 
| tags | arrayProject tags. | 
| purposes | arrayProject purposes. | 
| stagedPurposes | arrayProject purposes staged for approval. | 
| deleted | booleanIftrue, the project has been deleted. | 
| snowflake | arrayIf a Snowflake workspace has been enabled for the project, this attribute will detail theschema,hostname, andwarehouse. | 
| allowMaskedJoins | booleanIftrue, masked joins are allowed. | 
| subscriptionPolicy | array[object]A policy object for the Subscription Policy on the project. Details includetype,exceptions,conditions,allowDiscovery, andautomaticSubscription. | 
| subscriptionType | stringThe type of subscription policy on the project. The type can beautomatic(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), ormanual(which requires users to be manually added). | 
| equalization | arrayDetails the policy conditions of the equalization, including the configured (or recommended) user groups and attributes. | 
| workspace | arrayInformation on native workspaces in the project. | 
| type | stringThe type of Immuta project, either user created project (user) or system generated project (schema). | 
| createdAt | timestampDate of the project creation. | 
| updatedAt | timestampDate of the most recent update. | 
| workspaceWarnings | stringThis message describes issues with the created workspace. | 
Example request
This example request with the payload below will create a new project.
curl \
  --request POST \
  --header "Content-Type: application/json" \
  --header "Authorization: Bearer dea464c07bd07300095caa8" \
  --data @example-payload.json \
  https://demo.immuta.com/project
Example request payload
This example payload will create a new project named API Project.
{
  "id": 4,
  "projectKey": "api project",
  "name": "API Project",
  "status": "open",
  "description": "project created with api",
  "deleted": false,
  "allowMaskedJoins": false,
  "createdAt": "2021-09-10",
  "updatedAt": "2021-09-10"
}
Example response
{
  "id": 4,
  "projectKey": "api project",
  "name": "API Project",
  "status": "open",
  "description": "project created with api",
  "documentation": "# API Project",
  "deleted": false,
  "allowMaskedJoins": false,
  "subscriptionType": "manual",
  "subscriptionPolicy": null,
  "equalization": null,
  "workspace": null,
  "snowflake": null,
  "type": null,
  "schema": null,
  "createdBy": 2,
  "updatedBy": 2,
  "createdAt": "2021-09-10T00:00:00.000Z",
  "updatedAt": "2021-09-10T00:00:00.000Z",
  "schemaEvolutionId": null,
  "purposes": [],
  "stagedPurposes": []
}
Search projects
| Method | Path | Purpose | 
|---|---|---|
| GET | /project | Search for projects. | 
| GET | /project/{projectId} | Get the project with the given ID. | 
Search all projects
Endpoint
| Method | Path | Purpose | 
|---|---|---|
| GET | /project | Search for projects. | 
Query Parameters
| Attribute | Description | Required | 
|---|---|---|
| offset | integerUsed in combination withsizeto fetch pages. The default is0. | No | 
| size | integerThe number of results to return per page. | No | 
| sortField | stringUsed to sort results by field. | No | 
| sortOrder | stringSorts results by order, which must beascordesc. The default isasc. | No | 
| subscription | array[string]Filters projects by subscription types, which must beautomatic,approval, orpolicy. | No | 
| status | array[string]Filters projects based on their status:openorclosed. | No | 
| searchText | stringSearches text. By default this will filter projects byname,description,documentation,category, andorganization. | No | 
| tag | array[string]Filters projects by tags associated with the projects. | No | 
| nameOnly | booleanIftrue,searchTextwill only filter by project name, allowing you to retrieve specific projects. The default isfalse. | No | 
| isEqualized | booleanIftrue, only equalized projects will be included. | No | 
| snowflake | booleanIftrue, only projects with a Snowflake workspace will be included. | No | 
| dataSourceId | integerFilters projects by whether they have the data source associated with the data source ID. | No | 
| mode | integerSpecifies the query mode, which must be0(FULL),1(COUNT),4(TAG),5(MIN_MAX), or6(STATUS). | No | 
Response Parameters
| Attribute | Description | 
|---|---|
| count | integerNumber of projects found. | 
| hits | arrayDetails about each project listed. | 
| id | integerThe project ID. | 
| projectKey | stringName of the project. | 
| name | stringName of the project. | 
| status | stringStatuses areopenorclosed. | 
| description | stringProject description. | 
| documentation | stringProject documentation. | 
| tags | arrayProject tags. | 
| purposes | arrayProject purposes. | 
| stagedPurposes | arrayProject purposes staged for approval. | 
| deleted | booleanIftrue, the project has been deleted. | 
| snowflake | arrayIf a Snowflake workspace has been enabled for the project, this attribute will detail theschema,hostname, andwarehouse. | 
| allowMaskedJoins | booleanIftrue, masked joins are allowed. | 
| subscriptionPolicy | array[object]A policy object for the Subscription Policy on the project. Details includetype,exceptions,conditions,allowDiscovery, andautomaticSubscription. | 
| subscriptionType | stringThe type of subscription policy on the project. The type can beautomatic(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), ormanual(which requires users to be manually added). | 
| equalization | arrayDetails the policy conditions of the equalization, including the configured (or recommended) user groups and attributes. | 
| workspace | arrayInformation on native workspaces in the project. | 
| type | stringThe type of Immuta project, either user created project (user) or system generated project (schema). | 
| createdAt | timestampDate of the project creation. | 
| updatedAt | timestampDate of the most recent update. | 
| acknowledgeRequired | booleanWhentrue, the requesting user has not yet agreed to the project acknowledgement. | 
| subscriptionId | integerThe project member's subscription ID. | 
| subscribedAsUser | booleanIftrue, the user running the request is currently subscribed. | 
| subscriptionStatus | stringSubscription status of the user running the request. | 
| filterId | integerCorresponds with the ID of the project. | 
| facets | arrayFacets (categories) relevant to the search. | 
Request example
This example request gets a list of all of the projects.
curl \
  --request GET \
  --header "Content-Type: application/json" \
  --header "Authorization: Bearer dea464c07bd07300095caa8" \
  https://demo.immuta.com/project
Response example
{
  "hits": [
    {
      "id": 8,
      "name": "Improving Employee Onboarding and Retention",
      "status": "open",
      "description": null,
      "deleted": false,
      "updatedAt": "2021-07-14T23:14:46.210Z",
      "subscriptionPolicy": null,
      "createdAt": "2021-07-14T23:13:53.752Z",
      "filterId": 8,
      "subscriptionType": "manual",
      "isEqualized": false,
      "acknowledgeRequired": false,
      "subscriptionStatus": "not_subscribed",
      "purposeCount": 1,
      "hasDeletedPurposes": false,
      "workspace": null,
      "type": null,
      "allowMaskedJoins": false
    },
    {
      "id": 4,
      "name": "Medical Records",
      "status": "open",
      "description": "This project contains all data sources under the schema, medical_records, from immuta@example.database.sample.net:1433/example.",
      "deleted": false,
      "updatedAt": "2021-06-22T23:24:58.766Z",
      "subscriptionPolicy": null,
      "createdAt": "2021-06-22T23:24:58.766Z",
      "filterId": 4,
      "subscriptionType": "manual",
      "isEqualized": false,
      "acknowledgeRequired": false,
      "subscriptionStatus": "owner",
      "purposeCount": 0,
      "hasDeletedPurposes": false,
      "workspace": null,
      "type": "Schema",
      "allowMaskedJoins": false
    },
    {
      "id": 6,
      "name": "sample123",
      "status": "open",
      "description": null,
      "deleted": false,
      "updatedAt": "2021-07-12T21:32:37.020Z",
      "subscriptionPolicy": null,
      "createdAt": "2021-07-12T21:32:37.012Z",
      "filterId": 6,
      "subscriptionType": "manual",
      "isEqualized": false,
      "acknowledgeRequired": false,
      "subscriptionStatus": "not_subscribed",
      "purposeCount": 1,
      "hasDeletedPurposes": false,
      "workspace": null,
      "type": null,
      "allowMaskedJoins": false
    },
    {
      "id": 2,
      "name": "test",
      "status": "open",
      "description": null,
      "deleted": false,
      "updatedAt": "2021-07-19T20:48:00.758Z",
      "subscriptionPolicy": null,
      "createdAt": "2021-05-19T22:50:44.190Z",
      "filterId": 2,
      "subscriptionType": "manual",
      "isEqualized": false,
      "acknowledgeRequired": false,
      "subscriptionStatus": "owner",
      "purposeCount": 2,
      "hasDeletedPurposes": false,
      "workspace": null,
      "type": null,
      "allowMaskedJoins": false
    },
    {
      "id": 3,
      "name": "Tpc",
      "status": "open",
      "description": "This project contains all data sources under the schema, tpc, from immuta@example.database.sample.net:1433/example.",
      "deleted": false,
      "updatedAt": "2021-05-20T16:29:09.679Z",
      "subscriptionPolicy": null,
      "createdAt": "2021-05-20T16:29:09.679Z",
      "filterId": 3,
      "subscriptionType": "manual",
      "isEqualized": false,
      "acknowledgeRequired": false,
      "subscriptionStatus": "owner",
      "purposeCount": 0,
      "hasDeletedPurposes": false,
      "workspace": null,
      "type": "Schema",
      "allowMaskedJoins": false
    }
  ],
  "facets": {},
  "count": 5
}
Search for projects by ID
Endpoint
| Method | Path | Purpose | 
|---|---|---|
| GET | /project/{projectId} | Get the project with the given ID. | 
Query Parameters
| Attribute | Description | Required | 
|---|---|---|
| projectId | integerThe project ID. | Yes | 
| checkForSqlAccount | booleanDefault istrue. | No | 
Response Parameters
| Attribute | Description | 
|---|---|
| id | integerProject ID. | 
| projectKey | stringName of the project. | 
| name | stringName of the project. | 
| status | stringStatuses areopenorclosed. | 
| description | stringProject description. | 
| documentation | stringProject documentation. | 
| tags | arrayProject tags. | 
| purposes | arrayProject purposes. | 
| stagedPurposes | arrayProject purposes staged for approval. | 
| deleted | booleanIftrue, the project has been deleted. | 
| snowflake | arrayIf a Snowflake workspace has been enabled for the project, this attribute will detail theschema,hostname, andwarehouse. | 
| allowMaskedJoins | booleanIftrue, masked joins are allowed. | 
| subscriptionPolicy | array[object]A policy object for the Subscription Policy on the project. Details includetype,exceptions,conditions,allowDiscovery, andautomaticSubscription. | 
| subscriptionType | stringThe type of subscription policy on the project. The type can beautomatic(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), ormanual(which requires users to be manually added). | 
| equalization | arrayDetails the policy conditions of the equalization, including the configured (or recommended) user groups and attributes. | 
| workspace | arrayInformation on native workspaces in the project. | 
| type | stringThe type of Immuta project, either user created project (user) or system generated project (schema). | 
| createdAt | timestampDate of the project creation. | 
| updatedAt | timestampDate of the most recent update. | 
| acknowledgeRequired | booleanWhentrue, the requesting user has not yet agreed to the project acknowledgement. | 
| subscriptionId | integerThe project member's subscription ID. | 
| subscribedAsUser | booleanIftrue, the user running the request is currently subscribed. | 
| subscriptionStatus | stringSubscription status of the user running the request. | 
Example request
This example gets the project object for the project with the ID 2 and checks for a SQL account.
curl \
  --request GET \
  --header "Content-Type: application/json" \
  --header "Authorization: Bearer dea464c07bd07300095caa8" \
  https://demo.immuta.com/project/2?checkForSqlAccount=true
Example response
{
  "id": 2,
  "projectKey": "test",
  "name": "test",
  "status": "open",
  "description": null,
  "documentation": "# test\n\n12345",
  "deleted": true,
  "allowMaskedJoins": true,
  "subscriptionType": "manual",
  "subscriptionPolicy": null,
  "equalization": null,
  "workspace": null,
  "snowflake": null,
  "type": null,
  "schema": null,
  "createdBy": 2,
  "updatedBy": 2,
  "createdAt": "2021-05-19T22:50:44.190Z",
  "updatedAt": "2021-07-29T18:30:04.066Z",
  "schemaEvolutionId": null,
  "subscribedAsUser": true,
  "subscriptionId": 5,
  "acknowledgeRequired": false,
  "subscriptionStatus": "owner",
  "requestedState": "owner",
  "approved": true,
  "subscriptionExpiration": null,
  "filterId": 2,
  "purposeCount": null,
  "hasSqlAccount": false,
  "purposes": [
    {
      "id": 8,
      "name": "Analyzing Onboarding and Job Satisfaction",
      "acknowledgement": null,
      "description": "Data can only be accessed for analyzing the effectiveness of current onboarding practices and trends in employee job satisfaction  reasons for data access must be approved by a compliance committee.",
      "addedByProfile": 2,
      "displayAcknowledgement": true,
      "deleted": false,
      "systemGenerated": false,
      "policyMetadata": null,
      "createdAt": "2021-07-07T19:56:06.360Z",
      "updatedAt": "2021-07-07T19:56:06.360Z",
      "createdBy": 2
    },
    {
      "id": 4,
      "name": "Use Case Outside De-identification",
      "acknowledgement": "I agree to use the data associated with this project for the stated purpose of the project, and for that purpose only, as listed in the project's homepage, and to refrain from sharing that data outside of the project or Immuta. In the event that I discover risks that I believe could lead to unauthorized access, I agree to immediately notify the project owner or governance team and take immediate action t  address and mitigate such risks.",
      "description": null,
      "addedByProfile": 1,
      "displayAcknowledgement": true,
      "deleted": false,
      "systemGenerated": true,
      "policyMetadata": null,
      "createdAt": "2021-05-19T20:32:03.437Z",
      "updatedAt": "2021-07-28T14:17:22.690Z",
      "createdBy": 2
    }
  ],
  "stagedPurposes": [],
  "tags": []
}
Manage projects
| Method | Path | Purpose | 
|---|---|---|
| PUT | /project/{projectId} | Update the project with the given ID. | 
| GET | /project/{projectId}/activity | Get all of the recent activity for a given project. | 
| GET | /project/{projectId}/checkEqualizationState | Get current state of an equalized project. | 
Update project by ID
Endpoint
| Method | Path | Purpose | 
|---|---|---|
| PUT | /project/{projectId} | Update the project with the given ID. | 
Query Parameters
| Attribute | Description | Required | 
|---|---|---|
| projectId | integerThe project ID. | Yes | 
| deleteDataSources | booleanIftrue, the data sources in the project will be deleted. | No | 
Payload Parameters
| Attribute | Description | Required | 
|---|---|---|
| type | stringThe type of Immuta project, either user created project (user) or system generated project (schema). | No | 
| name | stringThe project's new name. | No | 
| description | stringThe project's new description. | No | 
| documentation | stringThe project's new documentation. | No | 
| status | stringAccepted statuses areopenorclosed. | No | 
| subscriptionType | stringThe type of subscription policy on the project. The type can beautomatic(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), ormanual(which requires users to be manually added). | No | 
| tags | arrayThe project's new tags. | No | 
| purposes | arrayThe project's new purposes. | No | 
| stagedPurposes | arrayThe project's new purposes staged for approval. | No | 
| deleted | booleanIftrue, the project will be deleted. | No | 
| snowflake | arrayThis enables a Snowflake workspace for the project and details theschema,hostname, andwarehouse. | No | 
| allowMaskedJoins | booleanIftrue, masked joins will be allowed. | No | 
| subscriptionPolicy | array[object]A policy object for the Subscription Policy on the project. Details includetype,exceptions,conditions,allowDiscovery, andautomaticSubscription. If this is not set, it will be the defaultmanual. | No | 
| equalization | arrayDetails the policy conditions of the equalization, including the configured (or recommended) user groups and attributes. | No | 
| workspace | arrayInformation on native workspaces in the project. | No | 
Response Parameters
| Attribute | Description | 
|---|---|
| id | integerProject ID. | 
| projectKey | stringName of the project. | 
| name | stringName of the project. | 
| status | stringStatuses areopenorclosed. | 
| description | stringProject description. | 
| documentation | stringProject documentation. | 
| tags | arrayProject tags. | 
| purposes | arrayProject purposes. | 
| stagedPurposes | arrayProject purposes staged for approval. | 
| deleted | booleanIftrue, the project will be deleted. | 
| snowflake | arrayIf a Snowflake workspace has been enabled for the project, this attribute will detail theschema,hostname, andwarehouse. | 
| allowMaskedJoins | booleanIftrue, masked joins will be allowed. | 
| subscriptionPolicy | array[object]A policy object for the Subscription Policy on the project. Details includetype,exceptions,conditions,allowDiscovery, andautomaticSubscription. | 
| subscriptionType | stringThe type of subscription policy on the project. The type can beautomatic(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), ormanual(which requires users to be manually added). | 
| equalization | arrayDetails the policy conditions of the equalization, including the configured (or recommended) user groups and attributes. | 
| workspace | arrayInformation on native workspaces in the project. | 
| type | stringThe type of Immuta project, either user created project (user) or system generated project (schema). | 
| createdAt | timestampDate of the project creation. | 
| updatedAt | timestampDate of the most recent update. | 
| workspaceWarnings | stringThis message describes issues with the created workspace. | 
Example request
This example request with the payload below will update the project with the project ID 2.
curl \
    --request PUT \
    --header "Content-Type: application/json" \
    --header "Authorization: Bearer dea464c07bd07300095caa8" \
    --data @example-payload.json \
    https://demo.immuta.com/project/2
Example request payload
This example payload will update the project to be named Documentation Project.
{
  "name": "Documentation Project",
  "deleted": false
}
Example response
{
  "workspace": null,
  "createdBy": 2,
  "updatedBy": 2,
  "schemaEvolutionId": 1,
  "projectKey": "Medical Records",
  "name": "Documentation Project",
  "status": "open",
  "description": "This project contains all data sources under the schema, medical_records, from immuta@example.database.sample.net:1433/example.",
  "documentation": "This is an automatically generated project that collects data sources under the schema, medical_records, from immuta@example.database.sample.net:1433/example. When data sources in this schema are added to the system, they will automatically be added to this project.",
  "deleted": false,
  "allowMaskedJoins": false,
  "subscriptionType": "manual",
  "subscriptionPolicy": null,
  "equalization": null,
  "snowflake": null,
  "type": "Schema",
  "schema": "medical_records",
  "id": 2,
  "createdAt": "2021-08-24T15:44:29.477Z",
  "updatedAt": "2021-09-10T21:49:00.678Z",
  "purposeCount": 0,
  "tags": [],
  "projectPurposes": [],
  "stagedPurposes": [],
  "purposes": [],
  "workspaceWarnings": []
}
View project activity by project ID
Endpoint
| Method | Path | Purpose | 
|---|---|---|
| GET | /project/{projectId}/activity | Get all of the recent activity for a given project. | 
Query Parameters
| Attribute | Description | Required | 
|---|---|---|
| projectId | integerThe project ID. | Yes | 
| offset | integerUsed in combination withsizeto fetch pages. | No | 
| size | integerUsed to select the number of activities. | No | 
Response Parameters
| Attribute | Description | 
|---|---|
| count | integerThe total number of actions. | 
| activities | arrayTheid,modelType,modelId,notificationType,actionsBy,targetUser,targetGroup,additionalText,array,createdAt,updatedAt, andreadfor each action listed. | 
| id | integerThe activity ID. | 
| modelType | stringThe Immuta feature the activity is attached to. | 
| modelId | stringThe ID of the Immuta feature the activity is attached to. | 
| notificationType | stringThe type of activity or notification, such asmodelCreated,modelUserAdded, orprojectUpdated. | 
| actionBy | arrayThe user data for the user who took the action. | 
| targetUser | arrayThe user data for the user who the action was directed towards. | 
| targetGroup | arrayThe group data for the group who the action was directed towards. | 
| metadata | arrayDetails about the action. For example, if thenotificationTypewasmodelCreated, themetadataattribute would include the project name. | 
| createdAt | timestampDate the action was taken. | 
| updatedAt | timestampDate of the most recent activity on the action. | 
| read | booleanIftrue, the activity has been viewed. | 
| unread | integerThe number of unviewed activities on that project. | 
Example request
This example gets one activity for the project with the project ID 2.
curl \
    --request GET \
    --header "Content-Type: application/json" \
    --header "Authorization: Bearer dea464c07bd07300095caa8" \
    https://demo.immuta.com/project/2/activity?size=1
Example response
{
  "count": 40,
  "activities": [
    {
      "modelType": "project",
      "modelId": "2",
      "createdAt": "2021-07-29T20:56:11.856Z",
      "notificationType": "projectUpdated",
      "metadata": {
        "fields": [
          "deleted",
          "purposes"
        ],
        "projectName": "test",
        "approvedPurposeCount": 0,
        "deniedPurposesCount": 0,
        "requestedPurposeCount": 0,
        "newPurposesAddedCount": 2
      },
      "read": false,
      "id": 191,
      "updatedAt": "2021-07-29T20:56:11.856Z",
      "actionBy": {
        "id": 2,
        "name": "John Doe",
        "email": "john.doe@immuta.com"
      },
      "targetUser": {
        "id": 2,
        "name": "John Doe",
        "email": "john.doe@immuta.com"
      }
    }
  ],
  "unread": 40,
  "next": "191_2021-07-29T20:56:11.856Z"
}
View the state of an equalized project
Endpoint
| Method | Path | Purpose | 
|---|---|---|
| GET | /project/{projectId}/checkEqualizationState | Get current state of an equalized project. | 
Query Parameters
| Attribute | Description | Required | 
|---|---|---|
| projectId | integerThe project ID. | Yes | 
Response Parameters
| Attribute | Description | 
|---|---|
| equalizationState | stringThe state of the project's equalization. Options include:off,recommended,active,upgrade, ornonCompliantMembers. | 
Example request
This example gets the state of project equalization of the project with the project ID 2.
curl \
    --request GET \
    --header "Content-Type: application/json" \
    --header "Authorization: Bearer dea464c07bd07300095caa8" \
    https://demo.immuta.com/project/2/checkEqualizationState
Example response
{
  "equalizationState": "recommended"
}
Manage project members
| Method | Path | Purpose | 
|---|---|---|
| GET | /project/{projectId}/members | Get all of the members for a given project. | 
| POST | /project/{projectId}/checkEqualizedAuths | Check that all members meet the provided equalized entitlements. | 
| POST | /project/{projectId}/members | Add a member to the project. | 
| PUT | /project/{projectId}/members/{subscriptionId} | Update a member of the project. | 
View project members
Endpoint
| Method | Path | Purpose | 
|---|---|---|
| GET | /project/{projectId}/members | Get all of the members for a given project. | 
Query Parameters
| Attribute | Description | Required | 
|---|---|---|
| projectId | integerThe project ID. | Yes | 
| offset | integerUsed in combination withsizeto fetch pages. | No | 
| size | integerThe number of results to return per page. | No | 
| sortField | stringSorts results by field. The default isname. | No | 
| sortOrder | stringSorts results by order, which must beascordesc. The default isasc. | No | 
| searchText | stringSearches text of member names. | No | 
| approved | booleanFilters results based on whether or not members' subscription status has been approved. | No | 
| checkDataSources | booleanWhentrue, will check if users' meet the compliance requirements set on data sources within the project. | No | 
| expandGroups | boolean | No | 
Response Parameters
| Attribute | Description | 
|---|---|
| count | integerThe number of members in the project. | 
| members | arrayTheprofile,name,iamId,userId,email,type,approved,state,systemGenerated,lastExternalRefresh,subscriptionId,createdAt,updatedAt,approvals,currentUserCanApprove, andcompliancefor each member result. | 
| profile | integerThe user's profile ID. | 
| name | stringThe user's name. | 
| iamId | stringThe ID of the IAM, which is configured on the App Settings page. | 
| userId | stringThe user's Immuta username. | 
| stringThe user's email. | |
| type | stringThe type of Immuta project, either user created project (user) or system generated project (schema). | 
| approved | booleanWhentrue, the members' subscription status has been approved. | 
| state | stringThe user's relationship to the project. Options includeowner,not_subscribed,pending,subscribed, andexpert. | 
| systemGenerated | booleanWhentrue, the user is a system generated account. | 
| lastExternalRefresh | timestampThe date of the last time this user's information was updated from an external IAM. | 
| subscriptionId | integerThe project member's subscription ID. | 
| createdAt | timestampThe date that this user was created in Immuta. | 
| updatedAt | timestampThe date of the most recent update of the user. | 
| approvals | arrayDetails on how this new member will fit into the project's approval process. | 
| compliance | arrayDetails about the compliance requirements of the project, includingmissingDataSourcesandinvalidSubscriptions. | 
Example request
This request gets all of the members of the project with the project ID 2.
curl \
    --request GET \
    --header "Content-Type: application/json" \
    --header "Authorization: Bearer dea464c07bd07300095caa8" \
    https://demo.immuta.com/project/2/members
Example response
{
  "count": 1,
  "members": [
    {
      "profile": 2,
      "name": "John Doe",
      "iamid": "bim",
      "userid": "john.doe@immuta.com",
      "email": "john.doe@immuta.com",
      "type": "user",
      "approved": true,
      "state": "owner",
      "systemGenerated": false,
      "lastExternalRefresh": "2021-07-30T17:49:55.050Z",
      "subscriptionId": 5,
      "createdAt": "2021-05-19T22:50:44.206Z",
      "updatedAt": "2021-07-19T20:47:53.069Z",
      "approvals": [],
      "currentUserCanApprove": false
    }
  ]
}
Check the members' equalized entitlements
Endpoint
| Method | Path | Purpose | 
|---|---|---|
| POST | /project/{projectId}/checkEqualizedAuths | Check that all members meet the provided equalized entitlements. | 
Query Parameters
| Attribute | Description | Required | 
|---|---|---|
| projectId | integerThe project ID. | Yes | 
Payload Parameters
| Attribute | Description | Required | 
|---|---|---|
| conditionsObj | arrayDetails containingoperator,conditions,type,group, andfieldvalues. | Yes | 
| operator | string | Yes | 
| conditions | arrayDetails containingtype,group, andfield. | Yes | 
| type | stringThe type of Immuta project, either user created project (user) or system generated project (schema). | No | 
| group | arrayIncludes the groupid,name, andiam. | No | 
Response Parameters
| Attribute | Description | 
|---|---|
| validSet | booleanWhentrue, users meet the specified entitlements. | 
| usersMissingAuths | arrayMetadata about the user (nameand subscriptionid) and thenameof the group they're missing. | 
Request example
This request with the payload below will check if the requesting user is in the "View Masked Values" group.
curl \
    --request POST \
    --header "Content-Type: application/json" \
    --header "Authorization: Bearer dea464c07bd07300095caa8" \
    --data @example-payload.json \
    https://demo.immuta.com/project/1/checkEqualizedAuths
Payload example
{
  "conditionsObj": {
    "operator": "and",
    "conditions": [
      {
        "type": "groups",
        "group": {
          "id": 1,
          "name": "View Masked Values"
        }
      }
    ]
  }
}
Response example
{
  "validSet": true,
  "usersMissingAuths": {}
}
Add a member to a project
Endpoint
| Method | Path | Purpose | 
|---|---|---|
| POST | /project/{projectId}/members | Add a member to the project. | 
Query Parameters
| Attribute | Description | Required | 
|---|---|---|
| projectId | integerThe project ID. | Yes | 
Payload Parameters
| Attribute | Description | Required | 
|---|---|---|
| profileId | integerThe new user's ID. | Yes | 
| groupId | integerThe group ID that the new user is a part of. This will add a whole group. | No | 
| state | stringThe new user's connection to the project. Options includeowner,not_subscribed,pending,subscribed, andexpert. | No | 
| expiration | timestampThe date when the member should no longer have access to the project. | No | 
| approvals | arrayDetails on how this new member will fit into the project's approval process. | No | 
Response Parameters
None.
Example request
This example request with the payload below will add a new member to the project with the project ID 1.
curl \
    --request POST \
    --header "Content-Type: application/json" \
    --header "Authorization: Bearer dea464c07bd07300095caa8" \
    --data @example-payload.json \
    https:demo.immuta.com/project/1/members
Example request payload
{
  "profileId": 3,
  "state": "subscribed",
}
Example response
{
  "subscriptionId": 18,
  "state": "subscribed",
  "approved": true
}
Update a project member
Endpoint
| Method | Path | Purpose | 
|---|---|---|
| PUT | /project/{projectId}/members/{subscriptionId} | Update a member of the project. | 
Query Parameters
| Attribute | Description | Required | 
|---|---|---|
| projectId | integerThe project ID. | Yes | 
| subscriptionId | integerThe project member's subscription ID. | Yes | 
Payload Parameters
| Attribute | Description | Required | 
|---|---|---|
| state | array[string]The user's role in the project. Options includeowner,not_subscribed,pending,subscribed, andexpert. | Yes | 
| expiration | timestampThe date when the member should no longer have access to the project. | No | 
Response Parameters
| Attribute | Description | 
|---|---|
| state | array[string]The user's role in the project. Options includeowner,not_subscribed,pending,subscribed, andexpert. | 
| expiration | timestampThe date when the member should no longer have access to the project. | 
Request example
This example request with the payload below will update the user with the subscription ID 2 to be a subscriber of the
project with the project ID 3.
curl \
    --request PUT \
    --header "Content-Type: application/json" \
    --header "Authorization: Bearer dea464c07bd07300095caa8" \
    --data @example-payload.json \
    https://demo.immuta.com/project/3/members/2
Payload example
{
  "state": "subscribed"
}
Response example
{
  "state": "subscribed",
  "expiration": null
}
Manage project data sources
| Method | Path | Purpose | 
|---|---|---|
| GET | /project/{projectId}/dataSources | Get all of the data sources for a given project. | 
| DELETE | /project/{projectId}/dataSources | Remove supplied data sources from the project. | 
| POST | /project/{projectId}/dataSources | Add data sources to a project. | 
| PUT | /project/{projectId}/dataSources/{dataSourceId} | Update the reason for adding a data source to a project. | 
View project data sources by project ID
Endpoint
| Method | Path | Purpose | 
|---|---|---|
| GET | project/{projectId}/dataSources | Get all of the data sources for a given project. | 
Query Parameters
| Attribute | Description | Required | 
|---|---|---|
| projectId | integerThe project ID. | Yes | 
| offset | integerUsed in combination with size to fetch pages. | No | 
| searchText | stringSearches text of the data source names. | No | 
| size | integerThe number of results to return per page. | No | 
| sortField | stringUsed to sort results by field. Options includeaddedBy,addedOn, anddataSourceName. The default isdataSourceName. | No | 
| sortOrder | stringSorts results by order, which must beascordesc. The default isasc. | No | 
| unsubscribed | booleanIftrue, filters by unsubscribed status (includes data sources with a pending subscription). Iffalse, filters by subscribed status. | No | 
| subscription | stringSearches based on the subscription status of the user. Options includenot_subscribed,owner,pending, orsubscribed. | No | 
Response Parameters
| Attribute | Description | 
|---|---|
| count | integerThe total number of data sources in the project. | 
| dataSources | array[object]An array of data source objects that includesaddedBy,dataSourceName,policyHandlerType,addedOn,dataSourceId,addedByProfile,comment,deleted,subscriptionType,subscriptionStatus,subscriptionPolicy,connectionString,blobHandlerType, andderivedThisProjectvalues for each data source. | 
| addedBy | stringThe user who added the data source to the project. | 
| dataSourceName | stringThe name of the data source. | 
| policyHandlerType | string | 
| addedOn | timestampThe date the data source was added to the project. | 
| dataSourceId | integerThe data source ID. | 
| addedByProfile | integerThe profile ID of the user who added the data source to the project. | 
| comment | stringThe reason provided by a project member for adding the data source to the project. | 
| deleted | booleanIftrue, the data source has been deleted. | 
| subscriptionType | stringThe type of subscription policy on the project. The type can beautomatic(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), ormanual(which requires users to be manually added). | 
| subscriptionStatus | string | 
| subscriptionPolicy | array[object]A policy object for the Subscription Policy on the data source. Details includetype,exceptions,conditions,allowDiscovery, andautomaticSubscription. | 
| connectionString | stringThe data source connection string. | 
| blobHandlerType | stringThe storage technology. | 
| derivedInThisProject | booleanIftrue, this data source was created as a derived data source in this project. | 
Example request
This example gets the data source details for all of the data sources of the project with the project ID 2.
curl \
    --request GET \
    --header "Content-Type: application/json" \
    --header "Authorization: Bearer dea464c07bd07300095caa8" \
    https://demo.immuta.com/project/2/dataSources
Example response
{
  "count": 3,
  "dataSources": [
    {
      "addedBy": "John Doe",
      "dataSourceName": "Fake Medical Claims 2017",
      "policyHandlerType": "Builder",
      "addedOn": "2021-06-25T19:11:03.230Z",
      "dataSourceId": 8,
      "addedByProfile": 2,
      "comment": null,
      "deleted": false,
      "subscriptionType": "policy",
      "subscriptionStatus": "owner",
      "subscriptionPolicy": {
        "type": "subscription",
        "exceptions": {
          "operator": "or",
          "conditions": [
            {
              "type": "groups",
              "group": {
                "name": "HR Department"
              }
            },
            {
              "type": "authorizations",
              "authorization": {
                "auth": "Manager",
                "value": "Receiving Surveys"
              }
            }
          ]
        },
        "shareResponsibility": false,
        "automaticSubscription": true
      },
      "connectionString": "immuta@example.database.sample.net:1433/example",
      "blobHandlerType": "Snowflake",
      "derivedInThisProject": false
    },
    {
      "addedBy": "John Doe",
      "dataSourceName": "Tpc Randomized",
      "policyHandlerType": "Builder",
      "addedOn": "2021-06-25T22:26:38.170Z",
      "dataSourceId": 6,
      "addedByProfile": 2,
      "comment": null,
      "deleted": false,
      "subscriptionType": "policy",
      "subscriptionStatus": "owner",
      "subscriptionPolicy": {
        "type": "subscription",
        "exceptions": {
          "operator": "and",
          "conditions": [
            {
              "type": "groups",
              "group": {
                "name": "HR"
              }
            }
          ]
        },
        "shareResponsibility": false,
        "automaticSubscription": true
      },
      "connectionString": "immuta@example.database.sample.net:1433/example",
      "blobHandlerType": "Azure Synapse Analytics",
      "derivedInThisProject": false
    },
    {
      "addedBy": "John Doe",
      "dataSourceName": "Tpc Web Sales",
      "policyHandlerType": "None",
      "addedOn": "2021-06-25T19:11:03.226Z",
      "dataSourceId": 7,
      "addedByProfile": 2,
      "comment": null,
      "deleted": false,
      "subscriptionType": "manual",
      "subscriptionStatus": "owner",
      "subscriptionPolicy": null,
      "connectionString": "immuta@example.database.sample.net:1433/example",
      "blobHandlerType": "Azure Synapse Analytics",
      "derivedInThisProject": false
    }
  ]
}
Remove data sources from a project
Endpoint
| Method | Path | Purpose | 
|---|---|---|
| DELETE | /project/{projectId}/dataSources | Remove supplied data sources from the project. | 
Query Parameters
| Attribute | Description | Required | 
|---|---|---|
| projectId | integerThe project ID. | Yes | 
| ids | integerThe IDs of the data sources to remove from the project. | Yes | 
Response Parameters
| Attribute | Description | 
|---|---|
| success | arrayTheid,blobHandlerType, andnamevalues of the data sources that have been successfully removed. | 
| inError | arrayTheid,blobHandlerType, andnamevalues of the data sources that have not been successfully removed. | 
| id | integerThe data source ID. | 
| blobHandlerType | stringThe type of blob handler of the data source. | 
| name | stringThe data source name. | 
Example request
This example request deletes the data source with the ID 8 from the project with the project ID 2.
curl \
    --request DELETE \
    --header "Content-Type: application/json" \
    --header "Authorization: Bearer dea464c07bd07300095caa8" \
    https://demo.immuta.com/project/2/dataSources?ids=8
Example response
{
  "success": [
    {
      "id": 8,
      "name": "Fake Medical Claims 2017",
      "blobHandlerType": "Snowflake"
    }
  ],
  "inError": []
}
Add data sources to a project
Endpoint
| Method | Path | Purpose | 
|---|---|---|
| POST | /project/{projectId}/dataSources | Adds data sources to a project. | 
Query Parameters
| Attribute | Description | Required | 
|---|---|---|
| projectId | integerThe project ID. | Yes | 
Payload Parameters
| Attribute | Description | Required | 
|---|---|---|
| dataSourceIds | integerThe data source IDs for the data sources to add to the project. | Yes | 
| comment | stringThe comment attached to that data source in the project. | No | 
Response Parameters
| Attribute | Description | 
|---|---|
| success | arrayTheid,blobHandlerType, andnamevalues of the data sources that have been successfully added. | 
| inError | arrayTheid,blobHandlerType, andnamevalues of the data sources that have not been successfully added. | 
| id | integerThe data source ID. | 
| blobHandlerType | stringThe type of blob handler of the data source. | 
| name | stringThe data source name. | 
Example request
This example request with the payload below will add the data source with the data source
ID 1 to the project with the project ID 1.
curl \
    --request POST \
    --header "Content-Type: application/json" \
    --header "Authorization: Bearer dea464c07bd07300095caa8" \
    --data @example-payload.json \
    https://demo.immuta.com/project/1/dataSources
Example request payload
This example payload will add the data source with the data source ID 2 to the project.
{
  "dataSourceIds": [
    2
  ]
}
Example response
{
  "success": [
    {
      "id": 2,
      "name": "Credit Payments Bank Deposits",
      "blobHandlerType": "Snowflake"
    }
  ],
  "inError": []
}
Update the reason for adding a data source
Endpoint
| Method | Path | Purpose | 
|---|---|---|
| PUT | /project/{projectId}/dataSources/{dataSourceId} | Updates the reason for adding a data source to a project. | 
Query Parameters
| Attribute | Description | Required | 
|---|---|---|
| projectId | integerThe project ID. | Yes | 
| dataSourceId | integerThe data source ID. | Yes | 
Payload Parameters
| Attribute | Description | Required | 
|---|---|---|
| comment | stringThe new reason for adding the data source. | Yes | 
Response Parameters
None.
Request example
This example request with the payload below will update the reason that the data source with the data
source ID 1 was added to the project with the project ID 1.
curl \
    --request PUT \
    --header "Content-Type: application/json" \
    --header "Authorization: Bearer dea464c07bd07300095caa8" \
    --data @example-payload.json \
    https://demo.immuta.com/project/1/dataSources/1
Payload example
This example payload will add the reason this data source is in the project to This project will use the data source for Billing purposes only..
{
  "comment": "This project will use the data source for Billing purposes only."
}
Response example
None.
Manage project comments
| Method | Path | Purpose | 
|---|---|---|
| GET | /project/{projectId}/comments | Get all of the comments for a given project. | 
| POST | /project/{projectId}/comments | Add a comment to the project. | 
| GET | /project/{projectId}/comments/count | Count the comments for a project. | 
| GET | /project/{projectId}/comments/{commentId} | Get a comment by ID for a given project. | 
| DELETE | /project/{projectId}/comments/{commentId} | Delete a project comment. | 
| GET | /project/{projectId}comments/{parentId}/replies | Get all of the replies for a given comment. | 
| POST | /project/{projectId}/comments/{commentId}/resolve | Resolve a comment for a project. | 
| POST | /project/{projectId}/comments/{commentId}/reply | Reply to a project comment. | 
View all project comments
Endpoint
| Method | Path | Purpose | 
|---|---|---|
| GET | /project/{projectId}/comments | Get all of the comments for a given project. | 
Query Parameters
| Attribute | Description | Required | 
|---|---|---|
| projectId | integerThe project ID. | Yes | 
| dataSources | array[integer]The project-data source IDs to retrieve comments for. | No | 
| resolved | booleanWhentrue, returns resolved comments. | No | 
| sortField | stringUsed to sort results by field. Options includelastReply,totalReplies,body,profileNameandcreateAt. The default iscreatedAt. | No | 
| sortOrder | stringSort results in ascending (asc) or descending order (desc). The default isdesc. | No | 
Response Parameters
For each comment listed based on the request there will be
| Attribute | Description | 
|---|---|
| author | arrayDetails about the author of the comment. | 
| body | stringThe content of the comment. | 
| resolved | booleanIftrue, the comment has been marked resolved. | 
| id | integerThe ID of the comment within the project. | 
| createdAt | timestampA timestamp of the date the comment was first made. | 
| updatedAt | timestampA timestamp of the date of the most recent edit to the comment. | 
| models | arrayDetails of the project that has the comment. | 
| totalReplies | integerThe number of replies to the comment. | 
| lastReply | timestampA timestamp of the date the last reply to the comment was made. | 
| public | booleanIftrue, the comment is public. | 
Request example
This example request gets all of the comments for the project with the project ID 1.
curl \
    --request GET \
    --header "Content-Type: application/json" \
    --header "Authorization: Bearer dea464c07bd07300095caa8" \
    https://demo.immuta.com/project/1/comments
Response example
[
  {
    "author": {
      "id": 2,
      "name": "John Doe",
      "email": "john.doe@immuta.com"
    },
    "body": "This is a discussion for Blue Team",
    "resolved": false,
    "id": 2,
    "createdAt": "2021-09-1T22:47:21.553Z",
    "updatedAt": "2021-09-1T22:47:21.553Z",
    "models": [
      {
        "modelType": "project",
        "modelId": "1",
        "modelName": "demo"
      }
    ],
    "totalreplies": 0,
    "lastreply": "0001-01-01T00:00:00.000Z",
    "public": true
  },
  {
    "author": {
      "id": 2,
      "name": "John Doe",
      "email": "john.doe@immuta.com"
    },
    "body": "This is a discussion for Red Team",
    "resolved": false,
    "id": 1,
    "createdAt": "2021-09-1T22:47:02.203Z",
    "updatedAt": "2021-09-1T22:47:02.203Z",
    "models": [
      {
        "modelType": "project",
        "modelId": "1",
        "modelName": "demo"
      }
    ],
    "totalreplies": 0,
    "lastreply": "0001-01-01T00:00:00.000Z",
    "public": true
  }
]
Add a comment to a project
Endpoint
| Method | Path | Purpose | 
|---|---|---|
| POST | /project/{projectId}/comments | Add a comment to the project. | 
Query Parameters
| Attribute | Description | Required | 
|---|---|---|
| projectId | integerThe project ID. | Yes | 
Payload Parameters
| Attribute | Description | Required | 
|---|---|---|
| body | stringThe body of the new comment. | Yes | 
| dataSource | integerThe data source the new comment will be attached to. | No | 
Response Parameters
| Attribute | Description | 
|---|---|
| author | integerThe ID of the author of the new comment. | 
| body | stringThe body of the new comment. | 
| parentId | integerIf the comment is a reply to another, this is the ID of the parent comment. This value will benullfor comments that are not replies. | 
| resolved | booleanIftrue, the comment has been marked resolved. | 
| id | integerThe ID of the comment within the project. | 
| createdAt | timestampThe timestamp of the date the comment was created. | 
| updatedAt | timestampThe timestamp of the date the comment was most recently updated. | 
Example request
This example request with the payload below writes a new comment for the project with the project ID 1 stating
Comment made in the API.
curl \
    --request POST \
    --header "Content-Type: application/json" \
    --header "Authorization: Bearer dea464c07bd07300095caa8" \
    --data @example-payload.json \
    https://demo.immuta.com/project/1/comments
Example request payload
{
  "body": "Comment made in the API"
}
Example response
{
  "author": 2,
  "body": "Comment made in the API",
  "parentId": null,
  "resolved": false,
  "id": 3,
  "createdAt": "2021-09-1T02:13:24.363Z",
  "updatedAt": "2021-09-1T02:13:24.363Z"
}
Count the project's comments
Endpoint
| Method | Path | Purpose | 
|---|---|---|
| GET | /project/{projectId}/comments/count | Count the comments for a project. | 
Query Parameters
| Attribute | Description | Required | 
|---|---|---|
| projectId | integerThe project ID. | Yes | 
| dataSources | integerThe data source IDs; comments will be counted for the data source IDs specified here. | No | 
| resolved | booleanIftrue, the comment has been resolved. | No | 
Response Parameters
| Attribute | Description | 
|---|---|
| modelId | integerThe project ID. | 
| modelType | stringThe type of Immuta feature. This should sayproject. | 
| count | integerThe total number of comments on that project. | 
Example request
This example counts the comments on the project with the project ID 2.
curl \
    --request GET \
    --header "Content-Type: application/json" \
    --header "Authorization: Bearer dea464c07bd07300095caa8" \
    https://demo.immuta.com/project/2/comments/count
Example response
{
  "modelId": "2",
  "modelType": "project",
  "count": 2
}
View a project comment by comment ID
Endpoint
| Method | Path | Purpose | 
|---|---|---|
| GET | /project/{projectId}/comments/{commentId} | Get a comment by ID for a given project. | 
Query Parameters
| Attribute | Description | Required | 
|---|---|---|
| projectId | integerThe project ID. | Yes | 
| commentId | integerThe comment ID. | Yes | 
Response Parameters
| Attribute | Description | 
|---|---|
| id | integerThe comment ID. | 
| author | stringThe author of the comment. | 
| resolved | booleanIftrue, the comment has been resolved. | 
| body | stringThe content of the comment. | 
| parentId | integerintegerIf the comment is a reply to another, this is the ID of the parent comment. This value will benullfor comments that are not replies. | 
| replies | arrayDetails on the comment's replies. | 
| createdAt | timestampThe date when the comment was written. | 
| updatedAt | timestampThe date of the most recent edit to the comment. | 
Example request
This example gets the comment with the ID 1 on the project with the project ID 2.
curl \
    --request GET \
    --header "Content-Type: application/json" \
    --header "Authorization: Bearer dea464c07bd07300095caa8" \
    https://demo.immuta.com/project/2/comments/1
Example response
{
  "author": 2,
  "parentId": null,
  "resolved": false,
  "body": "This is a discussion for Red Team",
  "id": 1,
  "createdAt": "2021-09-1T22:47:02.203Z",
  "updatedAt": "2021-09-1T22:47:02.203Z"
}
View a project comment's replies by comment ID
Endpoint
| Method | Path | Purpose | 
|---|---|---|
| GET | /project/{projectId}/comments/{parentId}/replies | Get all of the replies for a given comment. | 
Query Parameters
| Attribute | Description | Required | 
|---|---|---|
| projectId | integerThe project ID. | Yes | 
| parentId | integerThe parent comment ID that the replies are attached to. | Yes | 
Response Parameters
| Attribute | Description | 
|---|---|
| id | integerThe reply ID. | 
| author | arrayDetails on the author of the reply. | 
| resolved | booleanIftrue, the reply has been resolved. | 
| body | stringThe content of the reply. | 
| parentId | integerThe parent comment ID that the replies are attached to. | 
| createdAt | timestampThe date when the comment was written. | 
| updatedAt | timestampThe date of the most recent edit to the comment. | 
| totalReplies | integerThe number of replies to that reply. | 
| public | booleanIftrue, the reply is public. | 
Example request
This example gets the replies to the comment with the comment ID 2 on the project with the project ID 1.
curl \
    --request GET \
    --header "Content-Type: application/json" \
    --header "Authorization: Bearer dea464c07bd07300095caa8" \
    https://demo.immuta.com/project/1/comments/2/replies
Example response
[
  {
    "author": {
      "id": 2,
      "name": "John Doe",
      "email": "john.doe@immuta.com"
    },
    "body": "This is a reply from the Blue Team.",
    "parentId": 2,
    "resolved": false,
    "id": 4,
    "createdAt": "2021-09-1T01:00:35.104Z",
    "updatedAt": "2021-09-1T01:00:35.104Z",
    "totalreplies": 0,
    "public": true
  }
]
Delete a project comment
Replies will be deleted, too.
Deleting a project comment will delete the replies to that comment as well.
Endpoint
| Method | Path | Purpose | 
|---|---|---|
| DELETE | /project/{projectId}/comments/{commentId} | Delete a project comment. | 
Query Parameters
| Attribute | Description | Required | 
|---|---|---|
| projectId | integerThe project ID. | Yes | 
| commentId | integerThe comment ID. | Yes | 
Response Parameters
None.
Example request
This example deletes the comment with the comment ID 1 on the project with the project ID 1.
curl \
    --request DELETE \
    --header "Content-Type: application/json" \
    --header "Authorization: Bearer dea464c07bd07300095caa8" \
    https://demo.immuta.com/project/1/comments/1
Resolve a project comment
Endpoint
| Method | Path | Purpose | 
|---|---|---|
| POST | /project/{projectId}/comments/{commentId}/resolve | Resolve a comment for a project. | 
Query Parameters
| Attribute | Description | Required | 
|---|---|---|
| projectId | integerThe project ID. | Yes | 
| commentId | integerThe comment ID. | Yes | 
Response Parameters
None.
Request example
This example request marks the comment with the comment ID 2 resolved in the project with the project ID 1.
curl \
    --request POST \
    --header "Content-Type: application/json" \
    --header "Authorization: Bearer dea464c07bd07300095caa8" \
    https://demo.immuta.com/project/1/comments/2/resolve
Reply to a project comment
Endpoint
| Method | Path | Purpose | 
|---|---|---|
| POST | /project/{projectId}/comments/{parentId}/reply | Reply to a project comment. | 
Query Parameters
| Attribute | Description | Required | 
|---|---|---|
| projectId | integerThe project ID. | Yes | 
| parentId | integerThe parent comment ID that the reply should be made to. | Yes | 
Payload Parameters
| Attribute | Description | Required | 
|---|---|---|
| body | stringThe reply comment text. | Yes | 
Response Parameters
| Attribute | Description | 
|---|---|
| id | integerThe ID of the new reply that was written. | 
Request example
This example request with the payload below will reply to the comment with the comment ID 2 in the project with the
project ID 1.
curl \
    --request POST \
    --header "Content-Type: application/json" \
    --header "Authorization: Bearer dea464c07bd07300095caa8" \
    --data @example-payload.json \
    https://demo.immuta.com/project/1/comments/2/reply
Payload example
This example payload will reply to the comment with the text This is a reply through the API.
{
  "body": "This is a reply through the API"
}
Response example
{
  "id": 6
}
Use projects
| Method | Path | Purpose | 
|---|---|---|
| DELETE | /project/{projectId}/unsubscribe | Unsubscribe from a project. | 
| POST | /project/current/{projectId} | Set the current project ID the current user is acting under. | 
| POST | /project/{projectId}/members/{subscriptionId}/acknowledge | Acknowledge all the restrictions on this project. | 
Unsubscribe from a project
Endpoint
| Method | Path | Purpose | 
|---|---|---|
| DELETE | /project/{projectId}/unsubscribe | Unsubscribe from a project. | 
Query Parameters
| Attribute | Description | Required | 
|---|---|---|
| projectId | stringThe project ID. | Yes | 
Response Parameters
None.
Request example
This example request unsubscribes the user from the project with the project ID 5.
curl \
    --request DELETE \
    --header "Content-Type: application/json" \
    --header "Authorization: Bearer dea464c07bd07300095caa8" \
    https://demo.immuta.com/project/5/unsubscribe
Select the current project to act under
Endpoint
| Method | Path | Purpose | 
|---|---|---|
| POST | /project/current/{projectId} | Set the current project ID the current user is acting under. | 
Query Parameters
| Attribute | Description | Required | 
|---|---|---|
| projectId | integerThe project ID. | Yes | 
Response Parameters
None.
Request example
This example request sets the current project to act under as the project with the project ID 1.
curl \
    --request POST \
    --header "Content-Type: application/json" \
    --header "Authorization: Bearer dea464c07bd07300095caa8" \
    https://demo.immuta.com/project/current/1
Acknowledge the project restrictions
Endpoint
| Method | Path | Purpose | 
|---|---|---|
| POST | /project/{projectId}/members/{subscriptionId}/acknowledge | Acknowledge all the restrictions on this project. | 
Query Parameters
| Attribute | Description | Required | 
|---|---|---|
| projectId | integerThe project ID. | Yes | 
| subscriptionId | integerThe project member's subscription ID. | Yes | 
Payload Parameters
| Attribute | Description | Required | 
|---|---|---|
| text | string | Yes | 
Response Parameters
| Attribute | Description | 
|---|---|
| acknowledgeRequired | booleanbooleanWhentrue, the requesting user has not yet agreed to the project acknowledgement. | 
| purposes | arrayDetails of the purpose that has been acknowledged. | 
Request example
This example request acknowledges all of the purposes in the project with the project ID 1.
curl \
    --request POST \
    --header "Content-Type: application/json" \
    --header "Authorization: Bearer dea464c07bd07300095caa8" \
    --data @example-payload.json \
    https://demo.immuta.com/project/1/members/1/acknowledge
Payload example
{}
Response example
{
  "acknowledgeRequired": false,
  "purposes": [
    {
      "id": 1,
      "name": "Re-identification Prohibited",
      "acknowledgement": "I agree to use the data associated with this project for the stated purpose of the project, and for that purpose only, as listed in the project's homepage, and to refrain from sharing that data outside of the project or Immuta. I also agree not to re-identify or take any steps to re-identify the individuals whose personal information is contained in the data sources attached to the project. In the event that these individuals have been identified or that I discover risks that I believe could lead to their identification, I agree to immediately notify the project owner or governance team and take immediate action to address and mitigate such risks. I further agree to refrain from contacting any individuals who might be identified."
    }
  ]
}
Delete project by ID
Endpoint
| Method | Path | Purpose | 
|---|---|---|
| DELETE | /project/{projectId} | Delete the project with the given ID. | 
Query Parameters
| Attribute | Description | Required | 
|---|---|---|
| projectId | integerThe project ID. | Yes | 
Response Parameters
| Attribute | Description | 
|---|---|
| hardDelete | booleanIftrue, the project was permanently deleted. | 
Example request
This example request will delete the project with the project ID 4.
curl \
    --request DELETE \
    --header "Content-Type: application/json" \
    --header "Authorization: Bearer dea464c07bd07300095caa8" \
    https://demo.immuta.com/project/4
Example response
{
  "hardDelete": true
}