arrow-left

All pages
gitbookPowered by GitBook
1 of 3

Loading...

Loading...

Loading...

Manage Purposes

Governance API reference guide

This page describes the governance endpoint of the Immuta API and its request and response parameters used to manage purposes.

circle-info

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

hashtag
Governance workflow

  1. .

  2. .

  3. .

hashtag
Create a purpose

POST /governance/purpose

Create a purpose.

hashtag
Payload parameters

Attribute
Description
Required

hashtag
Response parameters

Attribute
Description

hashtag
Request example

This example request with the payload below creates a new purpose.

hashtag
Payload example

hashtag
Response example

hashtag
Search purposes

Method
Path
Purpose

hashtag
Search all purposes

GET /governance/purpose

Search for purposes.

hashtag
Query parameters

Attribute
Description
Required

hashtag
Response parameters

Attribute
Description

hashtag
Request example

This example request returns a list of all of the purposes.

hashtag
Response example

hashtag
Search purposes by ID

GET /governance/purpose/{purposeId}

Get a purpose by ID.

hashtag
Query parameters

Attribute
Description
Required

hashtag
Response parameters

Attribute
Description

hashtag
Request example

This example request returns information on the purpose with the ID 1, including its sub-purposes.

hashtag
Response example

hashtag
Update a purpose

PUT /governance/purpose/{purposeId}

Update a purpose.

Required Immuta permission: GOVERNANCE

hashtag
Query parameters

Attribute
Description
Required

hashtag
Payload parameters

Attribute
Description
Required

hashtag
Response parameters

Attribute
Description

hashtag
Request example

This example request with the payload below will update the description of the purpose with the ID 8.

hashtag
Payload example

hashtag
Response example

hashtag
Delete a purpose

DELETE /governance/purpose/{purposeId}

Delete the purpose with the given ID and its associated sub-purposes.

Required Immuta permission: GOVERNANCE

hashtag
Query parameters

Attribute
Description
Required

hashtag
Response parameters

Attribute
Description

hashtag
Request example

This example request deletes the purpose with the ID 8.

hashtag
Response example

.

displayAcknowledgement

boolean When true, the acknowledgement text will display for users when they are prompted to agree to use the data in the project only for that purpose. Default is true.

No

deleted

boolean If true, the purpose has been deleted.

No

subpurposes

array A list of the sub-purposes.

No

staged

boolean If true, the purpose is staged.

No

deleted

boolean If true, the purpose has been deleted.

subpurposes

array A list of the sub-purposes.

staged

boolean If true, the purpose is staged.

createdAt

timestamp The date the purpose was created.

updatedAt

timestamp The date the purpose was last updated.

sortOrder

string Sorts results by order, which must be asc or desc. Default is asc.

No

searchText

string Search for purpose names by text.

No

root

string Restrict results to provided root or sub-purposes of root.

No

strictSearch

boolean When true, will search for a complete match of the whole string provided in searchText.

No

getAffectedCount

boolean If true, returns the count of projects with each purpose.

No

includeDeleted

boolean If true, includes deleted purposes in the results.

No

deleted

boolean If true, the purpose has been deleted.

subpurposes

array A list of the sub-purposes.

staged

boolean If true, the purpose is staged.

createdAt

timestamp The date the purpose was created.

updatedAt

timestamp The date the purpose was last updated.

reAcknowledge

boolean When true, users will have to re-acknowledge the purpose after it is updated.

No

applyToSubpurposes

boolean It true, the updates will be applied to the sub-purposes.

No

deleted

boolean If true, the purpose has been deleted.

subpurposes

array A list of the sub-purposes.

staged

boolean If true, the purpose is staged.

createdAt

timestamp The date the purpose was created.

updatedAt

timestamp The date the purpose was last updated.

deleted

boolean If true, the purpose has been deleted.

subpurposes

array A list of the sub-purposes.

staged

boolean If true, the purpose is staged.

createdAt

timestamp The date the purpose was created.

updatedAt

timestamp The date the purpose was last updated.

name

string The purpose name.

Yes

id

integer The ID of the purpose.

No

acknowledgement

string The purpose acknowledgement.

No

description

string The purpose description.

id

integer The purpose ID.

name

string The purpose name.

acknowledgement

string The purpose acknowledgement.

description

string The purpose description.

addedByProfile

integer The profile ID of the user who created the purpose.

displayAcknowledgement

boolean When true, the acknowledgement text is displayed for users when they are prompted to agree to use the data in the project only for that purpose.

GET

/governance/purpose

Search for purposes.

GET

/governance/purpose/{purposeId}

Get a purpose by ID.

offset

integer Used in combination with size to fetch pages.

No

size

integer The number of results to return per page.

No

noLimit

boolean When true, the number of results to return per page will not be limited to the number defined by size. Default is false.

No

sortField

string Used to sort results by field. Default is name.

count

integer The number of results.

purposes

array Information on each purpose returned, including id, name, acknowledgement, description, subpurposes, the creation date, and the staged status.

purposeId

integer The purpose ID.

Yes

includeSubpurposes

boolean If true, sub-purposes will be included in the results.

No

id

integer The purpose ID.

name

string The purpose name.

acknowledgement

string The purpose acknowledgement.

description

string The purpose description.

addedByProfile

integer The profile ID of the user who created the purpose.

displayAcknowledgement

boolean When true, the acknowledgement text is displayed for users when they are prompted to agree to use the data in the project only for that purpose.

purposeId

integer The purpose ID.

Yes

name

string The purpose name.

No

acknowledgement

string The purpose acknowledgement.

No

description

string The purpose description.

No

displayAcknowledgement

boolean When true, the acknowledgement text will display for users when they are prompted to agree to use the data in the project only for that purpose. Default is true.

id

integer The purpose ID.

name

string The purpose name.

acknowledgement

string The purpose acknowledgement.

description

string The purpose description.

addedByProfile

integer The profile ID of the user who created the purpose.

displayAcknowledgement

boolean When true, the acknowledgement text is displayed for users when they are prompted to agree to use the data in the project only for that purpose.

purposeId

integer The purpose ID.

Yes

id

integer The purpose ID.

name

string The purpose name.

acknowledgement

string The purpose acknowledgement.

description

string The purpose description.

addedByProfile

integer The profile ID of the user who created the purpose.

displayAcknowledgement

boolean When true, the acknowledgement text is displayed for users when they are prompted to agree to use the data in the project only for that purpose.

Create a purpose
Search for purposes
Update purposes

No

No

No

Delete purposes
curl \
    --request POST \
    --header "Content-Type: application/json" \
    --header "Authorization: Bearer dea464c07bd07300095caa8" \
    --data @example-payload.json \
    https://demo.immuta.com/governance/purpose
{
  "name": "Compliance Requirement #2"
}
{
  "id": 10,
  "name": "Compliance Requirement #2",
  "acknowledgement": null,
  "description": null,
  "addedByProfile": 2,
  "displayAcknowledgement": true,
  "deleted": false,
  "systemGenerated": false,
  "createdAt": "2021-10-04T15:52:38.060Z",
  "updatedAt": "2021-10-04T15:52:38.060Z",
  "subpurposes": []
}
curl \
    --request GET \
    --header "Content-Type: application/json" \
    --header "Authorization: Bearer dea464c07bd07300095caa8" \
    https://demo.immuta.com/governance/purpose
{
  "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.",
      "description": null,
      "addedByProfile": 1,
      "displayAcknowledgement": true,
      "deleted": false,
      "systemGenerated": true,
      "createdAt": "2021-08-16T20:25:44.423Z",
      "updatedAt": "2021-09-30T00:36:25.215Z"
    },
    {
      "id": 3,
      "name": "Re-identification Prohibited.CCPA",
      "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.",
      "description": null,
      "addedByProfile": 1,
      "displayAcknowledgement": true,
      "deleted": false,
      "systemGenerated": true,
      "createdAt": "2021-08-16T20:25:44.443Z",
      "updatedAt": "2021-09-30T00:36:25.250Z"
    },
    {
      "id": 2,
      "name": "Re-identification Prohibited.Safe Harbor Method",
      "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 health 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.",
      "description": null,
      "addedByProfile": 1,
      "displayAcknowledgement": true,
      "deleted": false,
      "systemGenerated": true,
      "createdAt": "2021-08-16T20:25:44.434Z",
      "updatedAt": "2021-09-30T00:36:25.234Z"
    },
    {
      "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 to address and mitigate such risks.",
      "description": null,
      "addedByProfile": 1,
      "displayAcknowledgement": true,
      "deleted": false,
      "systemGenerated": true,
      "createdAt": "2021-08-16T20:25:44.452Z",
      "updatedAt": "2021-09-30T00:36:25.270Z"
    }
  ],
  "count": 4
}
curl \
    --request GET \
    --header "Content-Type: application/json" \
    --header "Authorization: Bearer dea464c07bd07300095caa8" \
    https://demo.immuta.com/governance/purpose/1?includeSubpurposes=true
{
  "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.",
  "description": null,
  "addedByProfile": 1,
  "displayAcknowledgement": true,
  "deleted": false,
  "systemGenerated": true,
  "id": 1,
  "createdAt": "2021-08-16T20:25:44.423Z",
  "updatedAt": "2021-09-30T00:36:25.215Z",
  "addedBy": "Immuta System Account",
  "projectCount": 1,
  "projects": [
    1
  ],
  "subpurposes": [
    {
      "id": 3,
      "name": "Re-identification Prohibited.CCPA",
      "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.",
      "description": null,
      "addedByProfile": 1,
      "displayAcknowledgement": true,
      "deleted": false,
      "systemGenerated": true,
      "createdAt": "2021-08-16T20:25:44.443Z",
      "updatedAt": "2021-09-30T00:36:25.250Z",
      "projectCount": 0,
      "projects": [],
      "addedBy": "Immuta System Account"
    },
    {
      "id": 2,
      "name": "Re-identification Prohibited.Safe Harbor Method",
      "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 health 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.",
      "description": null,
      "addedByProfile": 1,
      "displayAcknowledgement": true,
      "deleted": false,
      "systemGenerated": true,
      "createdAt": "2021-08-16T20:25:44.434Z",
      "updatedAt": "2021-09-30T00:36:25.234Z",
      "addedBy": "Immuta System Account",
      "projectCount": 0,
      "projects": []
    }
  ]
}
curl \
    --request PUT \
    --header "Content-Type: application/json" \
    --header "Authorization: Bearer dea464c07bd07300095caa8" \
    --data @example-payload.json \
    https://demo.immuta.com/governance/purpose/8
{
  "description": "This requirement has been amended to include an updated model."
}
{
  "id": 8,
  "name": "Compliance Requirement #1",
  "acknowledgement": null,
  "description": "This requirement has been amended to include an updated model.",
  "addedByProfile": 2,
  "displayAcknowledgement": true,
  "deleted": false,
  "systemGenerated": false,
  "createdAt": "2021-10-01T21:08:00.517Z",
  "updatedAt": "2021-10-04T14:21:59.834Z"
}
curl \
    --request DELETE \
    --header "Content-Type: application/json" \
    --header "Authorization: Bearer dea464c07bd07300095caa8" \
    https://demo.immuta.com/governance/purpose/8
[
  {
    "id": 8,
    "name": "Compliance Requirement #1",
    "acknowledgement": null,
    "description": "This requirement has been amended to include an updated model.",
    "addedByProfile": 2,
    "displayAcknowledgement": true,
    "deleted": true,
    "systemGenerated": false,
    "createdAt": "2021-10-01T21:08:00.517Z",
    "updatedAt": "2021-10-04T14:27:07.203Z"
  }
]

Manage Projects and Purposes

circle-info

and can also be created and managed using the V2 API.

hashtag
Section Contents

: Create and manage projects, including project policies and access requests.

  • : Create purposes that can be applied to projects and used in policies.

  • Projects
    purposes
    Manage Projects
    Manage Purposes

    Manage Projects

    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.

    hashtag
    Projects workflow

    1. Create a project.

    2. .

    3. .

    4. .

    5. .

    6. .

    7. .

    hashtag
    Create a project

    POST /project

    Create the project.

    Required Immuta permission: CREATE_PROJECT

    hashtag
    Payload parameters

    Attribute
    Description
    Required

    hashtag
    Response parameters

    Attribute
    Description

    hashtag
    Example request

    This example request with the payload below will create a new project.

    hashtag
    Example request payload

    This example payload will create a new project named API Project.

    hashtag
    Example response

    hashtag
    Search projects

    Method
    Path
    Purpose

    hashtag
    Search all projects

    GET /project

    Search for projects.

    hashtag
    Query parameters

    Attribute
    Description
    Required

    hashtag
    Response parameters

    Attribute
    Description

    hashtag
    Request example

    This example request gets a list of all of the projects.

    hashtag
    Response example

    hashtag
    Search for projects by ID

    GET /project/{projectId}

    Get the project with the given ID.

    Requirement: PROJECT_MANAGEMENT permission, GOVERNANCE permission, or you must be a member of the project

    hashtag
    Query parameters

    Attribute
    Description
    Required

    hashtag
    Response parameters

    Attribute
    Description

    hashtag
    Example request

    This example gets the project object for the project with the ID 2.

    hashtag
    Example response

    hashtag
    Manage projects

    Method
    Path
    Purpose

    hashtag
    Update project by ID

    PUT /project/{projectId}

    Update the project with the given ID.

    Requirement: PROJECT_MANAGEMENT permission, GOVERNANCE permission, or you must be the owner of the project

    hashtag
    Query parameters

    Attribute
    Description
    Required

    hashtag
    Payload parameters

    Attribute
    Description
    Required

    hashtag
    Response parameters

    Attribute
    Description

    hashtag
    Example request

    This example request with the payload below will update the project with the project ID 2.

    Example request payload

    This example payload will update the project to be named Documentation Project.

    hashtag
    Example response

    hashtag
    View project activity by project ID

    GET /project/{projectId}/activity

    Get all of the recent activity for a given project.

    Requirement: PROJECT_MANAGEMENT permission, GOVERNANCE permission, or you must be a member of the project

    hashtag
    Query parameters

    Attribute
    Description
    Required

    hashtag
    Response parameters

    Attribute
    Description

    hashtag
    Example request

    This example gets one activity for the project with the project ID 2.

    hashtag
    Example response

    hashtag
    View the state of an equalized project

    GET /project/{projectId}/checkEqualizationState

    Get current state of an equalized project.

    Requirement: PROJECT_MANAGEMENT permission, GOVERNANCE permission, or you must be a member of the project

    hashtag
    Query parameters

    Attribute
    Description
    Required

    hashtag
    Response parameters

    Attribute
    Description

    hashtag
    Example request

    This example gets the state of project equalization of the project with the project ID 2.

    hashtag
    Example response

    hashtag
    Manage project members

    Method
    Path
    Purpose

    hashtag
    View project members

    GET /project/{projectId}/members

    Get all of the members for a given project.

    Requirement: PROJECT_MANAGEMENT permission, GOVERNANCE permission, or you must be a member of the project

    hashtag
    Query parameters

    Attribute
    Description
    Required

    hashtag
    Response parameters

    Attribute
    Description

    hashtag
    Example request

    This request gets all of the members of the project with the project ID 2.

    hashtag
    Example response

    hashtag
    Check the members' equalized entitlements

    POST /project/{projectId}/checkEqualizedAuths

    Check that all members meet the provided equalized entitlements.

    Requirement: PROJECT_MANAGEMENT permission, GOVERNANCE permission, or you must be a member of the project

    hashtag
    Query parameters

    Attribute
    Description
    Required

    hashtag
    Payload parameters

    Attribute
    Description
    Required

    hashtag
    Response parameters

    Attribute
    Description

    hashtag
    Request example

    This request with the payload below will check if the requesting user is in the "View Masked Values" group.

    Payload example

    hashtag
    Response example

    hashtag
    Add a member to a project

    POST /project/{projectId}/members

    Add a member to the project.

    Requirement: GOVERNANCE permission or you must be the owner of the project

    hashtag
    Query parameters

    Attribute
    Description
    Required

    hashtag
    Payload parameters

    Attribute
    Description
    Required

    hashtag
    Example request

    This example request with the payload below will add a new member to the project with the project ID 1.

    Example request payload

    hashtag
    Example response

    hashtag
    Update a project member

    PUT /project/{projectId}/members/{subscriptionId}

    Update a member of the project.

    Requirement: GOVERNANCE permission or you must be the owner of the project

    hashtag
    Query parameters

    Attribute
    Description
    Required

    hashtag
    Payload parameters

    Attribute
    Description
    Required

    hashtag
    Response parameters

    Attribute
    Description

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

    Payload example

    hashtag
    Response example

    hashtag
    Manage project data sources

    Method
    Path
    Purpose

    hashtag
    View project data sources by project ID

    GET project/{projectId}/dataSources

    Get all of the data sources for a given project.

    Requirement: PROJECT_MANAGEMENT permission, GOVERNANCE permission, or you must be a member of the project

    hashtag
    Query parameters

    Attribute
    Description
    Required

    hashtag
    Response parameters

    Attribute
    Description

    hashtag
    Example request

    This example gets the data source details for all of the data sources of the project with the project ID 2.

    hashtag
    Example response

    hashtag
    Remove data sources from a project

    DELETE /project/{projectId}/dataSources

    Remove data sources from the project.

    Requirement: PROJECT_MANAGEMENT permission, GOVERNANCE permission, or you must be the owner of the project

    hashtag
    Query parameters

    Attribute
    Description
    Required

    hashtag
    Response parameters

    Attribute
    Description

    hashtag
    Example request

    This example request deletes the data source with the ID 8 from the project with the project ID 2.

    hashtag
    Example response

    hashtag
    Add data sources to a project

    POST /project/{projectId}/dataSources

    Adds data sources to a project.

    Requirement: PROJECT_MANAGEMENT permission, GOVERNANCE permission, or you must be the owner of the project

    hashtag
    Query parameters

    Attribute
    Description
    Required

    hashtag
    Payload parameters

    Attribute
    Description
    Required

    hashtag
    Response parameters

    Attribute
    Description

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

    Example request payload

    This example payload will add the data source with the data source ID 2 to the project.

    hashtag
    Example response

    hashtag
    Update the reason for adding a data source

    PUT /project/{projectId}/dataSources/{dataSourceId}

    Updates the reason for adding a data source to a project.

    Requirement: PROJECT_MANAGEMENT permission, GOVERNANCE permission, or you must be the owner of the project

    hashtag
    Query parameters

    Attribute
    Description
    Required

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

    hashtag
    Response example

    None.

    hashtag
    Use projects

    Method
    Path
    Purpose

    hashtag
    Unsubscribe from a project

    DELETE /project/{projectId}/unsubscribe

    Unsubscribe from a project.

    Requirement: You must be a member of the project

    hashtag
    Query parameters

    Attribute
    Description
    Required

    hashtag
    Request example

    This example request unsubscribes the user from the project with the project ID 5.

    hashtag
    Select the current project to act under

    POST /project/current/{projectId}

    Set the current project ID the current user is acting under.

    Requirement: You must be a member of the project

    hashtag
    Query parameters

    Attribute
    Description
    Required

    hashtag
    Request example

    This example request sets the current project to act under as the project with the project ID 1.

    hashtag
    Acknowledge the project restrictions

    POST /project/{projectId}/members/{subscriptionId}/acknowledge

    Acknowledge all the restrictions on this project.

    Requirement: You must be a member of the project to acknowledge for yourself or have the GOVERNANCE or PROJECT_MANAGEMENT permission to acknowledge on behalf of another user

    hashtag
    Query parameters

    Attribute
    Description
    Required

    hashtag
    Payload parameters

    Attribute
    Description
    Required

    hashtag
    Response parameters

    Attribute
    Description

    hashtag
    Request example

    This example request acknowledges all of the purposes in the project with the project ID 1.

    Payload example

    hashtag
    Response example

    hashtag
    Delete project by ID

    DELETE /project/{projectId}

    Delete the project with the given ID.

    Requirement: You must be the owner of the project

    hashtag
    Query parameters

    Attribute
    Description
    Required

    hashtag
    Response parameters

    Attribute
    Description

    hashtag
    Example request

    This example request will delete the project with the project ID 4.

    hashtag
    Example response

    description

    string Project description.

    No

    documentation

    string Project documentation.

    No

    tags

    array Project tags.

    No

    purposes

    array Project purposes.

    No

    stagedPurposes

    array Project purposes staged for approval.

    No

    deleted

    boolean If true, the project will be deleted.

    No

    snowflake

    array This enables a Snowflake workspace for the project and details the schema, hostname, and warehouse. Support for Snowflake project workspaces has been deprecated.

    No

    allowMaskedJoins

    boolean If true, masked joins will be allowed.

    No

    subscriptionPolicy

    array[object] A policy object for the Subscription Policy on the project. Details include type, exceptions, conditions, allowDiscovery, and automaticSubscription. If this is not set, it will be the default manual.

    No

    subscriptionType

    string The type of subscription policy on the project. The type can be automatic (which allows anyone to subscribe), approval (which requires the subscriber to be manually approved), policy (which only allows users with specific groups or attributes to subscribe), or manual (which requires users to be manually added).

    No

    equalization

    array Details the policy conditions of the equalization, including the configured (or recommended) user groups and attributes.

    No

    workspace

    array Information on workspaces in the project.

    No

    type

    string The type of Immuta project, either user created project (user) or system generated project (schema).

    No

    createdAt

    timestamp Date of the project creation.

    No

    updatedAt

    timestamp Date of the most recent update.

    No

    tags

    array Project tags.

    purposes

    array Project purposes.

    stagedPurposes

    array Project purposes staged for approval.

    deleted

    boolean If true, the project has been deleted.

    snowflake

    array If a Snowflake workspace has been enabled for the project, this attribute will detail the schema, hostname, and warehouse.

    allowMaskedJoins

    boolean If true, masked joins are allowed.

    subscriptionPolicy

    array[object] A policy object for the Subscription Policy on the project. Details include type, exceptions, conditions, allowDiscovery, and automaticSubscription.

    subscriptionType

    string The type of subscription policy on the project. The type can be automatic (which allows anyone to subscribe), approval (which requires the subscriber to be manually approved), policy (which only allows users with specific groups or attributes to subscribe), or manual (which requires users to be manually added).

    equalization

    array Details the policy conditions of the equalization, including the configured (or recommended) user groups and attributes.

    workspace

    array Information on workspaces in the project.

    type

    string The type of Immuta project, either user created project (user) or system generated project (schema).

    createdAt

    timestamp Date of the project creation.

    updatedAt

    timestamp Date of the most recent update.

    workspaceWarnings

    string This message describes issues with the created workspace.

    subscription

    array[string] Filters projects by subscription types, which must be automatic, approval, or policy.

    No

    status

    array[string] Filters projects based on their status: open or closed.

    No

    searchText

    string Searches text. By default, this will filter projects by name, description, documentation, category, and organization.

    No

    tag

    array[string] Filters projects by tags associated with the projects.

    No

    nameOnly

    boolean If true, searchText will only filter by project name, allowing you to retrieve specific projects. The default is false.

    No

    isEqualized

    boolean If true, only equalized projects will be included.

    No

    snowflake

    boolean If true, only projects with a Snowflake workspace will be included.

    No

    dataSourceId

    integer Filters projects by whether they have the data source associated with the data source ID.

    No

    mode

    integer Specifies the query mode, which must be 0 (FULL), 1 (COUNT), 4 (TAG), 5 (MIN_MAX), or 6 (STATUS).

    No

    description

    string Project description.

    documentation

    string Project documentation.

    tags

    array Project tags.

    purposes

    array Project purposes.

    stagedPurposes

    array Project purposes staged for approval.

    deleted

    boolean If true, the project has been deleted.

    snowflake

    array If a Snowflake workspace has been enabled for the project, this attribute will detail the schema, hostname, and warehouse.

    allowMaskedJoins

    boolean If true, masked joins are allowed.

    subscriptionPolicy

    array[object] A policy object for the Subscription Policy on the project. Details include type, exceptions, conditions, allowDiscovery, and automaticSubscription.

    subscriptionType

    string The type of subscription policy on the project. The type can be automatic (which allows anyone to subscribe), approval (which requires the subscriber to be manually approved), policy (which only allows users with specific groups or attributes to subscribe), or manual (which requires users to be manually added).

    equalization

    array Details the policy conditions of the equalization, including the configured (or recommended) user groups and attributes.

    workspace

    array Information on workspaces in the project.

    type

    string The type of Immuta project, either user created project (user) or system generated project (schema).

    createdAt

    timestamp Date of the project creation.

    updatedAt

    timestamp Date of the most recent update.

    acknowledgeRequired

    boolean When true, the requesting user has not yet agreed to the project acknowledgement.

    subscriptionId

    integer The project member's subscription ID.

    subscribedAsUser

    boolean If true, the user running the request is currently subscribed.

    subscriptionStatus

    string Subscription status of the user running the request.

    filterId

    integer Corresponds with the ID of the project.

    facets

    array Facets (categories) relevant to the search.

    tags

    array Project tags.

    purposes

    array Project purposes.

    stagedPurposes

    array Project purposes staged for approval.

    deleted

    boolean If true, the project has been deleted.

    snowflake

    array If a Snowflake workspace has been enabled for the project, this attribute will detail the schema, hostname, and warehouse.

    allowMaskedJoins

    boolean If true, masked joins are allowed.

    subscriptionPolicy

    array[object] A policy object for the Subscription Policy on the project. Details include type, exceptions, conditions, allowDiscovery, and automaticSubscription.

    subscriptionType

    string The type of subscription policy on the project. The type can be automatic (which allows anyone to subscribe), approval (which requires the subscriber to be manually approved), policy (which only allows users with specific groups or attributes to subscribe), or manual (which requires users to be manually added).

    equalization

    array Details the policy conditions of the equalization, including the configured (or recommended) user groups and attributes.

    workspace

    array Information on workspaces in the project.

    type

    string The type of Immuta project, either user created project (user) or system generated project (schema).

    createdAt

    timestamp Date of the project creation.

    updatedAt

    timestamp Date of the most recent update.

    acknowledgeRequired

    boolean When true, the requesting user has not yet agreed to the project acknowledgement.

    subscriptionId

    integer The project member's subscription ID.

    subscribedAsUser

    boolean If true, the user running the request is currently subscribed.

    subscriptionStatus

    string Subscription status of the user running the request.

    status

    string Accepted statuses are open or closed.

    No

    subscriptionType

    string The type of subscription policy on the project. The type can be automatic (which allows anyone to subscribe), approval (which requires the subscriber to be manually approved), policy (which only allows users with specific groups or attributes to subscribe), or manual (which requires users to be manually added).

    No

    tags

    array The project's new tags.

    No

    purposes

    array The project's new purposes.

    No

    stagedPurposes

    array The project's new purposes staged for approval.

    No

    deleted

    boolean If true, the project will be deleted.

    No

    snowflake

    array This enables a Snowflake workspace for the project and details the schema, hostname, and warehouse.

    No

    allowMaskedJoins

    boolean If true, masked joins will be allowed.

    No

    subscriptionPolicy

    array[object] A policy object for the Subscription Policy on the project. Details include type, exceptions, conditions, allowDiscovery, and automaticSubscription. If this is not set, it will be the default manual.

    No

    equalization

    array Details the policy conditions of the equalization, including the configured (or recommended) user groups and attributes.

    No

    workspace

    array Information on workspaces in the project.

    No

    tags

    array Project tags.

    purposes

    array Project purposes.

    stagedPurposes

    array Project purposes staged for approval.

    deleted

    boolean If true, the project will be deleted.

    snowflake

    array If a Snowflake workspace has been enabled for the project, this attribute will detail the schema, hostname, and warehouse.

    allowMaskedJoins

    boolean If true, masked joins will be allowed.

    subscriptionPolicy

    array[object] A policy object for the Subscription Policy on the project. Details include type, exceptions, conditions, allowDiscovery, and automaticSubscription.

    subscriptionType

    string The type of subscription policy on the project. The type can be automatic (which allows anyone to subscribe), approval (which requires the subscriber to be manually approved), policy (which only allows users with specific groups or attributes to subscribe), or manual (which requires users to be manually added).

    equalization

    array Details the policy conditions of the equalization, including the configured (or recommended) user groups and attributes.

    workspace

    array Information on workspaces in the project.

    type

    string The type of Immuta project, either user created project (user) or system generated project (schema).

    createdAt

    timestamp Date of the project creation.

    updatedAt

    timestamp Date of the most recent update.

    workspaceWarnings

    string This message describes issues with the created workspace.

    actionBy

    array The user data for the user who took the action.

    targetUser

    array The user data for the user who the action was directed towards.

    targetGroup

    array The group data for the group who the action was directed towards.

    metadata

    array Details about the action. For example, if the notificationType was modelCreated, the metadata attribute would include the project name.

    createdAt

    timestamp Date the action was taken.

    updatedAt

    timestamp Date of the most recent activity on the action.

    read

    boolean If true, the activity has been viewed.

    unread

    integer The number of unviewed activities on that project.

    sortOrder

    string Sorts results by order, which must be asc or desc. The default is asc.

    No

    searchText

    string Searches text of member names.

    No

    approved

    boolean Filters results based on whether or not members' subscription status has been approved.

    No

    checkDataSources

    boolean When true, will check if users' meet the compliance requirements set on data sources within the project.

    No

    expandGroups

    boolean

    No

    email

    string The user's email.

    type

    string The type of Immuta project, either user created project (user) or system generated project (schema).

    approved

    boolean When true, the members' subscription status has been approved.

    state

    string The user's relationship to the project. Options include owner, not_subscribed, pending, subscribed, and expert.

    systemGenerated

    boolean When true, the user is a system generated account.

    lastExternalRefresh

    timestamp The date of the last time this user's information was updated from an external IAM.

    subscriptionId

    integer The project member's subscription ID.

    createdAt

    timestamp The date that this user was created in Immuta.

    updatedAt

    timestamp The date of the most recent update of the user.

    approvals

    array Details on how this new member will fit into the project's approval process.

    compliance

    array Details about the compliance requirements of the project, including missingDataSources and invalidSubscriptions.

    group

    array Includes the group id, name, and iam.

    No

    approvals

    array Details on how this new member will fit into the project's approval process.

    No

    sortField

    string Used to sort results by field. Options include addedBy, addedOn, and dataSourceName. The default is dataSourceName.

    No

    sortOrder

    string Sorts results by order, which must be asc or desc. The default is asc.

    No

    unsubscribed

    boolean If true, filters by unsubscribed status (includes data sources with a pending subscription). If false, filters by subscribed status.

    No

    subscription

    string Searches based on the subscription status of the user. Options include not_subscribed, owner, pending, or subscribed.

    No

    dataSourceId

    integer The data source ID.

    addedByProfile

    integer The profile ID of the user who added the data source to the project.

    deleted

    boolean If true, the data source has been deleted.

    subscriptionType

    string The type of subscription policy on the project. The type can be automatic (which allows anyone to subscribe), approval (which requires the subscriber to be manually approved), policy (which only allows users with specific groups or attributes to subscribe), or manual (which requires users to be manually added).

    subscriptionStatus

    string

    subscriptionPolicy

    array[object] A policy object for the Subscription Policy on the data source. Details include type, exceptions, conditions, allowDiscovery, and automaticSubscription.

    connectionString

    string The data source connection string.

    blobHandlerType

    string The data platform.

    id

    integer Project ID.

    Yes

    projectKey

    string Name of the project.

    Yes

    name

    string Name of the project.

    Yes

    status

    string (Accepted statuses are open or closed.)

    id

    integer Project ID.

    projectKey

    string Name of the project.

    name

    string Name of the project.

    status

    string (Statuses are open or closed.)

    description

    string Project description.

    documentation

    string Project documentation.

    GET

    /project

    Search for projects.

    GET

    /project/{projectId}

    Get the project with the given ID.

    offset

    integer Used in combination with size to fetch pages. The default is 0.

    No

    size

    integer The number of results to return per page.

    No

    sortField

    string Used to sort results by field.

    No

    sortOrder

    string Sorts results by order, which must be asc or desc. The default is asc.

    count

    integer Number of projects found.

    hits

    array Details about each project listed.

    id

    integer The project ID.

    projectKey

    string Name of the project.

    name

    string Name of the project.

    status

    string Statuses are open or closed.

    projectId

    integer The project ID.

    Yes

    checkForSqlAccount

    boolean Default is true.

    No

    id

    integer Project ID.

    projectKey

    string Name of the project.

    name

    string Name of the project.

    status

    string Statuses are open or closed.

    description

    string Project description.

    documentation

    string Project documentation.

    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.

    projectId

    integer The project ID.

    Yes

    deleteDataSources

    boolean If true, the data sources in the project will be deleted.

    No

    type

    string The type of Immuta project, either user created project (user) or system generated project (schema).

    No

    name

    string The project's new name.

    No

    description

    string The project's new description.

    No

    documentation

    string The project's new documentation.

    id

    integer Project ID.

    projectKey

    string Name of the project.

    name

    string Name of the project.

    status

    string Statuses are open or closed.

    description

    string Project description.

    documentation

    string Project documentation.

    projectId

    integer The project ID.

    Yes

    offset

    integer Used in combination with size to fetch pages.

    No

    size

    integer Used to select the number of activities.

    No

    count

    integer The total number of actions.

    activities

    array The id, modelType, modelId, notificationType, actionsBy, targetUser, targetGroup, additionalText, array, createdAt, updatedAt, and read for each action listed.

    id

    integer The activity ID.

    modelType

    string The Immuta feature the activity is attached to.

    modelId

    string The ID of the Immuta feature the activity is attached to.

    notificationType

    string The type of activity or notification, such as modelCreated, modelUserAdded, or projectUpdated.

    projectId

    integer The project ID.

    Yes

    equalizationState

    string The state of the project's equalization. Options include: off, recommended, active, upgrade, or nonCompliantMembers.

    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.

    projectId

    integer The project ID.

    Yes

    offset

    integer Used in combination with size to fetch pages.

    No

    size

    integer The number of results to return per page.

    No

    sortField

    string Sorts results by field. The default is name.

    count

    integer The number of members in the project.

    members

    array The profile, name, iamId, userId, email, type, approved, state, systemGenerated, lastExternalRefresh, subscriptionId, createdAt, updatedAt, approvals, currentUserCanApprove, and compliance for each member result.

    profile

    integer The user's profile ID.

    name

    string The user's name.

    iamId

    string The ID of the IAM, which is configured on the App Settings page.

    userId

    string The user's Immuta username.

    projectId

    integer The project ID.

    Yes

    conditionsObj

    array Details containing operator, conditions, type, group, and field values.

    Yes

    operator

    string

    Yes

    conditions

    array Details containing type, group, and field.

    Yes

    type

    string The type of Immuta project, either user created project (user) or system generated project (schema).

    validSet

    boolean When true, users meet the specified entitlements.

    usersMissingAuths

    array Metadata about the user (name and subscription id) and the name of the group they're missing.

    projectId

    integer The project ID.

    Yes

    profileId

    integer The new user's ID.

    Yes

    groupId

    integer The group ID that the new user is a part of. This will add a whole group.

    No

    state

    string The new user's connection to the project. Options include owner, not_subscribed, pending, subscribed, and expert.

    No

    expiration

    timestamp The date when the member should no longer have access to the project.

    projectId

    integer The project ID.

    Yes

    subscriptionId

    integer The project member's subscription ID.

    Yes

    state

    array[string] The user's role in the project. Options include owner, not_subscribed, pending, subscribed, and expert.

    Yes

    expiration

    timestamp The date when the member should no longer have access to the project.

    No

    state

    array[string] The user's role in the project. Options include owner, not_subscribed, pending, subscribed, and expert.

    expiration

    timestamp The date when the member should no longer have access to the project.

    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.

    projectId

    integer The project ID.

    Yes

    offset

    integer Used in combination with size to fetch pages.

    No

    searchText

    string Searches text of the data source names.

    No

    size

    integer The number of results to return per page.

    count

    integer The total number of data sources in the project.

    dataSources

    array[object] An array of data source objects that includes addedBy, dataSourceName, policyHandlerType, addedOn, dataSourceId, addedByProfile, deleted, subscriptionType, subscriptionStatus, subscriptionPolicy, connectionString, and blobHandlerType values for each data source.

    addedBy

    string The user who added the data source to the project.

    dataSourceName

    string The name of the data source.

    policyHandlerType

    string

    addedOn

    timestamp The date the data source was added to the project.

    projectId

    integer The project ID.

    Yes

    ids

    integer The IDs of the data sources to remove from the project.

    Yes

    success

    array The id, blobHandlerType, and name values of the data sources that have been successfully removed.

    inError

    array The id, blobHandlerType, and name values of the data sources that have not been successfully removed.

    id

    integer The data source ID.

    blobHandlerType

    string The type of blob handler of the data source.

    name

    string The data source name.

    projectId

    integer The project ID.

    Yes

    dataSourceIds

    integer The data source IDs for the data sources to add to the project.

    Yes

    success

    array The id, blobHandlerType, and name values of the data sources that have been successfully added.

    inError

    array The id, blobHandlerType, and name values of the data sources that have not been successfully added.

    id

    integer The data source ID.

    blobHandlerType

    string The type of blob handler of the data source.

    name

    string The data source name.

    projectId

    integer The project ID.

    Yes

    dataSourceId

    integer The data source ID.

    Yes

    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.

    projectId

    string The project ID.

    Yes

    projectId

    integer The project ID. To set the project context to "None", use null

    Yes

    projectId

    integer The project ID.

    Yes

    subscriptionId

    integer The project member's subscription ID.

    Yes

    text

    string

    Yes

    acknowledgeRequired

    boolean When true, the requesting user has not yet agreed to the project acknowledgement.

    purposes

    array Details of the purpose that has been acknowledged.

    projectId

    integer The project ID.

    Yes

    hardDelete

    boolean If true, the project was permanently deleted.

    Search for Immuta projects
    Manage your Immuta projects
    Manage project members
    Manage project data sources
    Use projects
    Delete projects

    Yes

    No

    No

    No

    No

    No

    No

    curl \
      --request POST \
      --header "Content-Type: application/json" \
      --header "Authorization: Bearer dea464c07bd07300095caa8" \
      --data @example-payload.json \
      https://demo.immuta.com/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"
    }
    {
      "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": []
    }
    curl \
      --request GET \
      --header "Content-Type: application/json" \
      --header "Authorization: Bearer dea464c07bd07300095caa8" \
      https://demo.immuta.com/project
    {
      "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 [email protected]: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 [email protected]: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
    }
    curl \
      --request GET \
      --header "Content-Type: application/json" \
      --header "Authorization: Bearer dea464c07bd07300095caa8" \
      https://demo.immuta.com/project/2
    {
      "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,
      "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,
          "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,
          "createdAt": "2021-05-19T20:32:03.437Z",
          "updatedAt": "2021-07-28T14:17:22.690Z",
          "createdBy": 2
        }
      ],
      "stagedPurposes": [],
      "tags": []
    }
    curl \
        --request PUT \
        --header "Content-Type: application/json" \
        --header "Authorization: Bearer dea464c07bd07300095caa8" \
        --data @example-payload.json \
        https://demo.immuta.com/project/2
    {
      "name": "Documentation Project",
      "deleted": false
    }
    {
      "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 [email protected]:1433/example.",
      "documentation": "This is an automatically generated project that collects data sources under the schema, medical_records, from [email protected]: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": []
    }
    curl \
        --request GET \
        --header "Content-Type: application/json" \
        --header "Authorization: Bearer dea464c07bd07300095caa8" \
        https://demo.immuta.com/project/2/activity?size=1
    {
      "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": "[email protected]"
          },
          "targetUser": {
            "id": 2,
            "name": "John Doe",
            "email": "[email protected]"
          }
        }
      ],
      "unread": 40,
      "next": "191_2021-07-29T20:56:11.856Z"
    }
    curl \
        --request GET \
        --header "Content-Type: application/json" \
        --header "Authorization: Bearer dea464c07bd07300095caa8" \
        https://demo.immuta.com/project/2/checkEqualizationState
    {
      "equalizationState": "recommended"
    }
    curl \
        --request GET \
        --header "Content-Type: application/json" \
        --header "Authorization: Bearer dea464c07bd07300095caa8" \
        https://demo.immuta.com/project/2/members
    {
      "count": 1,
      "members": [
        {
          "profile": 2,
          "name": "John Doe",
          "iamid": "bim",
          "userid": "[email protected]",
          "email": "[email protected]",
          "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
        }
      ]
    }
    curl \
        --request POST \
        --header "Content-Type: application/json" \
        --header "Authorization: Bearer dea464c07bd07300095caa8" \
        --data @example-payload.json \
        https://demo.immuta.com/project/1/checkEqualizedAuths
    {
      "conditionsObj": {
        "operator": "and",
        "conditions": [
          {
            "type": "groups",
            "group": {
              "id": 1,
              "name": "View Masked Values"
            }
          }
        ]
      }
    }
    {
      "validSet": true,
      "usersMissingAuths": {}
    }
    curl \
        --request POST \
        --header "Content-Type: application/json" \
        --header "Authorization: Bearer dea464c07bd07300095caa8" \
        --data @example-payload.json \
        https:demo.immuta.com/project/1/members
    {
      "profileId": 3,
      "state": "subscribed",
    }
    {
      "subscriptionId": 18,
      "state": "subscribed",
      "approved": true
    }
    curl \
        --request PUT \
        --header "Content-Type: application/json" \
        --header "Authorization: Bearer dea464c07bd07300095caa8" \
        --data @example-payload.json \
        https://demo.immuta.com/project/3/members/2
    {
      "state": "subscribed"
    }
    {
      "state": "subscribed",
      "expiration": null
    }
    curl \
        --request GET \
        --header "Content-Type: application/json" \
        --header "Authorization: Bearer dea464c07bd07300095caa8" \
        https://demo.immuta.com/project/2/dataSources
    {
      "count": 3,
      "dataSources": [
        {
          "addedBy": "John Doe",
          "dataSourceName": "Fake Medical Claims 2017",
          "policyHandlerType": "Builder",
          "addedOn": "2021-06-25T19:11:03.230Z",
          "dataSourceId": 8,
          "addedByProfile": 2,
          "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": "[email protected]:1433/example",
          "blobHandlerType": "Snowflake"
        },
        {
          "addedBy": "John Doe",
          "dataSourceName": "Tpc Randomized",
          "policyHandlerType": "Builder",
          "addedOn": "2021-06-25T22:26:38.170Z",
          "dataSourceId": 6,
          "addedByProfile": 2,
          "deleted": false,
          "subscriptionType": "policy",
          "subscriptionStatus": "owner",
          "subscriptionPolicy": {
            "type": "subscription",
            "exceptions": {
              "operator": "and",
              "conditions": [
                {
                  "type": "groups",
                  "group": {
                    "name": "HR"
                  }
                }
              ]
            },
            "shareResponsibility": false,
            "automaticSubscription": true
          },
          "connectionString": "[email protected]:1433/example",
          "blobHandlerType": "Azure Synapse Analytics"
        },
        {
          "addedBy": "John Doe",
          "dataSourceName": "Tpc Web Sales",
          "policyHandlerType": "None",
          "addedOn": "2021-06-25T19:11:03.226Z",
          "dataSourceId": 7,
          "addedByProfile": 2,
          "deleted": false,
          "subscriptionType": "manual",
          "subscriptionStatus": "owner",
          "subscriptionPolicy": null,
          "connectionString": "[email protected]:1433/example",
          "blobHandlerType": "Azure Synapse Analytics"
        }
      ]
    }
    curl \
        --request DELETE \
        --header "Content-Type: application/json" \
        --header "Authorization: Bearer dea464c07bd07300095caa8" \
        https://demo.immuta.com/project/2/dataSources?ids=8
    {
      "success": [
        {
          "id": 8,
          "name": "Fake Medical Claims 2017",
          "blobHandlerType": "Snowflake"
        }
      ],
      "inError": []
    }
    curl \
        --request POST \
        --header "Content-Type: application/json" \
        --header "Authorization: Bearer dea464c07bd07300095caa8" \
        --data @example-payload.json \
        https://demo.immuta.com/project/1/dataSources
    {
      "dataSourceIds": [
        2
      ]
    }
    {
      "success": [
        {
          "id": 2,
          "name": "Credit Payments Bank Deposits",
          "blobHandlerType": "Snowflake"
        }
      ],
      "inError": []
    }
    curl \
        --request PUT \
        --header "Content-Type: application/json" \
        --header "Authorization: Bearer dea464c07bd07300095caa8" \
        --data @example-payload.json \
        https://demo.immuta.com/project/1/dataSources/1
    curl \
        --request DELETE \
        --header "Content-Type: application/json" \
        --header "Authorization: Bearer dea464c07bd07300095caa8" \
        https://demo.immuta.com/project/5/unsubscribe
    curl \
        --request POST \
        --header "Content-Type: application/json" \
        --header "Authorization: Bearer dea464c07bd07300095caa8" \
        https://demo.immuta.com/project/current/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
    {}
    {
      "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."
        }
      ]
    }
    curl \
        --request DELETE \
        --header "Content-Type: application/json" \
        --header "Authorization: Bearer dea464c07bd07300095caa8" \
        https://demo.immuta.com/project/4
    {
      "hardDelete": true
    }