Manage Data Products

Public preview: The Marketplace app is available to select accounts. Contact your Immuta representative for details.

Data product managers are able to publish and manage data products.

Requirement: Immuta permission GOVERNANCE or Manage Data Products in a domain

Publishing a data product

With the UI

From the Marketplace app,

  1. Click Publish product.

  2. Select the Domain from the dropdown. You will only be able to include data sources from this domain in your data product. If you do not see a domain available, create one with at least one data source.

  3. Click Next.

  4. Click Next.

  5. Enter the following metadata for your new data product:

    • Name of the data product

    • Description of the data product (optional)

    • Enter the subject matter expert (optional). This should be a user that data consumers and stewards can reach out to for any questions about the data product.

  6. Click Next.

  7. Using the dropdown, select a request form or scroll down to Create new +. Any data consumer requesting access or making a masking exception request to your data product will need to complete the same request form:

    1. Select an existing request form: Review the form details, review flow, data use agreement, and linked products.

    2. Create new: This will create a new request form that will be used for this data product and can be used in data products published in the future.

      1. Enter the form name, which is how other data product owners can add the request form to their own data product.

      2. Enter one or more request questions for the data consumer to answer:

        1. Enter a question and select the answer format in the dropdown.

        2. Use the switch to dictate if the question is required.

        3. Click the + icon to add more questions.

      3. Select how you want the review flow determined:

        1. Delegate to data product: Data products that use this form will configure their own review flow.

        2. In this request form: The review flow defined here will apply to all assigned data products.

          1. Choose if you would like to require approval for requests on this data product:

            • Yes: When the user makes a request on a data product, in addition to acknowledging the data use agreement and answering the required question, they will need to be approved by the data stewards.

              • Assign the data stewards: Choose the Immuta source from the dropdowns that will dictate who is a data steward. If you select a domain permission, the data steward must have that domain-specific permission for the domain that the data product is built off of.

              • Choose if you would like to require all or any data stewards to approve:

                • All stewards: For every source you select, a data steward from that source must make a determination. If a data steward qualifies multiple sources, their determination will count for each of the sources they have. If any of the data stewards deny the request, it will be denied. If any of the data stewards temporarily approve the request, once the determination is made, the user will be approved for temporary access for the shortest time period given.

                • Any steward: A single determination is required for the request, and any data steward with any of the sources dictated can make the determination.

            • No: When the user makes a request on a data product, they will be automatically approved once they acknowledge the data use agreement and answer any question required for access:

              • Auto approve: Enter the reason users do not need approval.

              • Auto approve with expiration: Enter the reason users do not need approval and use the dropdown to select how long users will have access to the data before the access expires.

      4. Add a data use agreement (optional). Use the default data use agreement or Create new +. The data use agreement is what the data consumer must agree to when requesting access or a masking exception to your data product.

  8. Click Next.

  9. If your request form has the review flow set to Delegate to data product you must set your data stewards:

    1. Choose if you would like to require approval for requests on this data product:

      • Yes: When the user makes a request on a data product, in addition to acknowledging the data use agreement and answering the required question, they will need to be approved by the data stewards.

        • Assign the data stewards: Choose the Immuta source from the dropdowns that will dictate who is a data steward. If you select a domain permission, the data steward must have that domain-specific permission for the domain that the data product is built off of.

        • Choose if you would like to require all or any data stewards to approve:

          • All stewards: For every source you select, a data steward from that source must make a determination. If a data steward qualifies multiple sources, their determination will count for each of the sources they have. If any of the data stewards deny the request, it will be denied. If any of the data stewards temporarily approve the request, once the determination is made, the user will be approved for temporary access for the shortest time period given.

          • Any steward: A single determination is required for the request, and any data steward with any of the sources dictated can make the determination.

      • No: When the user makes a request on a data product, they will be automatically approved once they acknowledge the data use agreement and answer any question required for access:

        • Auto approve: Enter the reason users do not need approval.

        • Auto approve with expiration: Enter the reason users do not need approval and use the dropdown to select how long users will have access to the data before the access expires.

  10. Click Publish data product.

With the API

Ensure you set the correct global segment and use a Marketplace-specific personal access token (PAT) when using the Marketplace API. See the Marketplace API docs for additional guidance or to download the OpenAPI YAML for your own client generation.

Add new data products to the marketplace

post

Add one or more data products to the marketplace

Authorizations
Body
namestring · min: 1 · max: 64Required

Data product name

Pattern: ^[a-zA-Z0-9)(\-_/\\\s]*$
descriptionone of | nullableOptional

Data product description

stringOptional

Data product description

Example: All sales records from the current fiscal year
domainsstring[]RequiredExample: ["4d004a3a-4568-4c1d-822e-30958ef898dc"]
statusstring · enumOptionalExample: PENDINGPossible values:
expirationone of | nullableOptional
string · date-timeOptional
idstring · uuidOptional

Data product ID

metadataone of | nullableRequired
requestFormIdone ofRequired
string · cuidOptional
or
string · uuidOptional
Responses
201Success
application/json
post
POST /marketplace/api/data-product HTTP/1.1
Host: na.api.immutacloud.com
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 808

{
  "name": "text",
  "description": "All sales records from the current fiscal year",
  "domains": [
    "4d004a3a-4568-4c1d-822e-30958ef898dc"
  ],
  "status": "PENDING",
  "expiration": "2025-10-08T11:14:50.840Z",
  "stats": {
    "dataSourceCount": 1,
    "pendingRequestCount": 1,
    "approvedRequestCount": 1,
    "revokedRequestCount": 1,
    "canceledRequestCount": 1,
    "deniedRequestCount": 1,
    "totalRequestCount": 1
  },
  "dataAccessPolicy": {
    "version": "text",
    "rules": [
      {
        "conditions": {
          "all": []
        },
        "event": {
          "type": "approve",
          "params": {
            "comment": "text",
            "duration": 1,
            "durationUnit": "HOURS"
          }
        }
      }
    ],
    "defaultEvent": {
      "type": "approve",
      "params": {
        "comment": "text",
        "duration": 1,
        "durationUnit": "HOURS"
      }
    }
  },
  "id": "123e4567-e89b-12d3-a456-426614174000",
  "dataSources": [
    {
      "sourceId": "text"
    }
  ],
  "metadata": {
    "subjectMatterExpert": {
      "id": "123e4567-e89b-12d3-a456-426614174000"
    }
  },
  "requestFormId": "text"
}
{
  "id": "text",
  "name": "text",
  "description": "All sales records from the current fiscal year",
  "domains": [
    "4d004a3a-4568-4c1d-822e-30958ef898dc"
  ],
  "suspended": false,
  "createdBy": "123e4567-e89b-12d3-a456-426614174000",
  "createdAt": "2025-10-08T11:14:50.840Z",
  "updatedAt": "2025-10-08T11:14:50.840Z",
  "status": "PENDING",
  "expiration": "2025-10-08T11:14:50.840Z",
  "stats": {
    "dataSourceCount": 1,
    "pendingRequestCount": 1,
    "approvedRequestCount": 1,
    "revokedRequestCount": 1,
    "canceledRequestCount": 1,
    "deniedRequestCount": 1,
    "totalRequestCount": 1
  },
  "requestId": "text",
  "sourceTypes": [
    "Databricks",
    "Redshift",
    "Snowflake"
  ],
  "metadata": {
    "subjectMatterExpert": {
      "id": "123e4567-e89b-12d3-a456-426614174000",
      "username": "text"
    }
  },
  "dataAccessPolicy": {
    "version": "text",
    "rules": [
      {
        "conditions": {
          "all": []
        },
        "event": {
          "type": "approve",
          "params": {
            "comment": "text",
            "duration": 1,
            "durationUnit": "HOURS"
          }
        }
      }
    ],
    "defaultEvent": {
      "type": "approve",
      "params": {
        "comment": "text",
        "duration": 1,
        "durationUnit": "HOURS"
      }
    }
  }
}

Remove members from data products

To revoke a member's access, you can remove them from the a data product,

With the UI

From the Marketplace app,

  1. Select the data product and navigate to the Members tab.

  2. Click the more actions icon.

  3. Select Revoke Access.

Editing data products

Once a data product has been published, many components can be edited from different parts of the data product:

  • Details: Edit the name, description, or subject matter expert

  • Data sources: Add or remove data sources from the data product

  • Request form: Edit the request form assigned to the data product

Editing a data product name

If you are updating a data product name and have an integration set up between Marketplace and an existing catalog, ensure you update the name of the data product in the deep link and in the data catalog.

With the UI

From the Marketplace app,

  1. Select the data product.

  2. Navigate to the tab with the information you want to edit.

  3. Click Edit.

  4. Make your edits and click Save.

With the API

Ensure you set the correct global segment and use a Marketplace-specific personal access token (PAT) when using the Marketplace API. See the Marketplace API docs for additional guidance or to download the OpenAPI YAML for your own client generation.

Update the request form

To update the request form of a data product:

  1. Run POST /api/request-form to create a new request form: Use the ID from the response in the next call.

  2. Run PUT/api/data-product/{id} to add the new request form to the data product: The {id} in the request should be the data product ID and the request form ID from the previous call should be included in the payload.

Create request form

post

Create a request form

Authorizations
Body
idstring · uuidOptional
namestringRequired
dataUseAgreementIdsstring · uuid[]Optional
Responses
201Success
application/json
post
POST /marketplace/api/request-form HTTP/1.1
Host: na.api.immutacloud.com
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 510

{
  "id": "123e4567-e89b-12d3-a456-426614174000",
  "name": "text",
  "fields": [
    {
      "id": "065de2e5-4366-4b1a-b9c0-e7ef82552e87",
      "type": "DROPDOWN",
      "label": "text",
      "required": true,
      "options": [
        {
          "value": "text"
        }
      ]
    }
  ],
  "policy": {
    "version": "text",
    "rules": [
      {
        "conditions": {
          "all": []
        },
        "event": {
          "type": "approve",
          "params": {
            "comment": "text",
            "duration": 1,
            "durationUnit": "HOURS"
          }
        }
      }
    ],
    "defaultEvent": {
      "type": "approve",
      "params": {
        "comment": "text",
        "duration": 1,
        "durationUnit": "HOURS"
      }
    }
  },
  "dataUseAgreementIds": [
    "123e4567-e89b-12d3-a456-426614174000"
  ]
}
{
  "id": "123e4567-e89b-12d3-a456-426614174000",
  "name": "text",
  "fields": [
    {
      "id": "84afc80f-a4ab-4522-9fb9-374b6da27e86",
      "type": "DROPDOWN",
      "label": "text",
      "required": true,
      "options": [
        {
          "value": "text"
        }
      ]
    }
  ],
  "policy": {
    "version": "text",
    "rules": [
      {
        "conditions": {
          "all": []
        },
        "event": {
          "type": "approve",
          "params": {
            "comment": "text",
            "duration": 1,
            "durationUnit": "HOURS"
          }
        }
      }
    ],
    "defaultEvent": {
      "type": "approve",
      "params": {
        "comment": "text",
        "duration": 1,
        "durationUnit": "HOURS"
      }
    }
  },
  "dataUseAgreements": [
    {
      "id": "123e4567-e89b-12d3-a456-426614174000",
      "name": "text",
      "body": "text"
    }
  ],
  "createdBy": {
    "globalUserId": "123e4567-e89b-12d3-a456-426614174000",
    "name": "text"
  },
  "createdAt": "2025-10-08T11:14:50.840Z",
  "updatedBy": {
    "globalUserId": "123e4567-e89b-12d3-a456-426614174000",
    "name": "text"
  },
  "updatedAt": "2025-10-08T11:14:50.840Z",
  "version": "text"
}

Update an existing data product

put

Update an existing data product by ID

Authorizations
Path parameters
idstringRequired
Body
namestring · min: 1 · max: 64Optional

Data product name

Pattern: ^[a-zA-Z0-9)(\-_/\\\s]*$
descriptionone of | nullableOptional

Data product description

stringOptional

Data product description

Example: All sales records from the current fiscal year
domainsstring[]OptionalExample: ["4d004a3a-4568-4c1d-822e-30958ef898dc"]
statusstring · enumOptionalExample: PENDINGPossible values:
expirationone of | nullableOptional
string · date-timeOptional
idstring · uuidOptional

Data product ID

metadataone of | nullableOptional
requestFormIdone ofOptional
string · cuidOptional
or
string · uuidOptional
suspendedbooleanOptional

Whether access to the data product's data sources is suspended

Example: false
Responses
200Success
application/json
put
PUT /marketplace/api/data-product/{id} HTTP/1.1
Host: na.api.immutacloud.com
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 826

{
  "name": "text",
  "description": "All sales records from the current fiscal year",
  "domains": [
    "4d004a3a-4568-4c1d-822e-30958ef898dc"
  ],
  "status": "PENDING",
  "expiration": "2025-10-08T11:14:50.840Z",
  "stats": {
    "dataSourceCount": 1,
    "pendingRequestCount": 1,
    "approvedRequestCount": 1,
    "revokedRequestCount": 1,
    "canceledRequestCount": 1,
    "deniedRequestCount": 1,
    "totalRequestCount": 1
  },
  "dataAccessPolicy": {
    "version": "text",
    "rules": [
      {
        "conditions": {
          "all": []
        },
        "event": {
          "type": "approve",
          "params": {
            "comment": "text",
            "duration": 1,
            "durationUnit": "HOURS"
          }
        }
      }
    ],
    "defaultEvent": {
      "type": "approve",
      "params": {
        "comment": "text",
        "duration": 1,
        "durationUnit": "HOURS"
      }
    }
  },
  "id": "123e4567-e89b-12d3-a456-426614174000",
  "dataSources": [
    {
      "sourceId": "text"
    }
  ],
  "metadata": {
    "subjectMatterExpert": {
      "id": "123e4567-e89b-12d3-a456-426614174000"
    }
  },
  "requestFormId": "text",
  "suspended": false
}
200Success
{
  "id": "text",
  "name": "text",
  "description": "All sales records from the current fiscal year",
  "domains": [
    "4d004a3a-4568-4c1d-822e-30958ef898dc"
  ],
  "suspended": false,
  "createdBy": "123e4567-e89b-12d3-a456-426614174000",
  "createdAt": "2025-10-08T11:14:50.840Z",
  "updatedAt": "2025-10-08T11:14:50.840Z",
  "status": "PENDING",
  "expiration": "2025-10-08T11:14:50.840Z",
  "stats": {
    "dataSourceCount": 1,
    "pendingRequestCount": 1,
    "approvedRequestCount": 1,
    "revokedRequestCount": 1,
    "canceledRequestCount": 1,
    "deniedRequestCount": 1,
    "totalRequestCount": 1
  },
  "requestId": "text",
  "sourceTypes": [
    "Databricks",
    "Redshift",
    "Snowflake"
  ],
  "metadata": {
    "subjectMatterExpert": {
      "id": "123e4567-e89b-12d3-a456-426614174000",
      "username": "text"
    }
  },
  "dataAccessPolicy": {
    "version": "text",
    "rules": [
      {
        "conditions": {
          "all": []
        },
        "event": {
          "type": "approve",
          "params": {
            "comment": "text",
            "duration": 1,
            "durationUnit": "HOURS"
          }
        }
      }
    ],
    "defaultEvent": {
      "type": "approve",
      "params": {
        "comment": "text",
        "duration": 1,
        "durationUnit": "HOURS"
      }
    }
  }
}

Update the data sources

Ensure you set the correct global segment and use a Marketplace-specific personal access token (PAT) when using the Marketplace API. See the Marketplace API docs for additional guidance or to download the OpenAPI YAML for your own client generation.

To update data sources associated with a data product:

Update the data product's data sources

put

Update the data sources associated with the data product. Any currently associated data sources not included in the payload will be removed.

Authorizations
Path parameters
idstringRequired
Body
Responses
200Success
application/json
put
PUT /marketplace/api/data-product/{id}/datasources HTTP/1.1
Host: na.api.immutacloud.com
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 37

{
  "dataSources": [
    {
      "sourceId": "text"
    }
  ]
}
200Success
{
  "id": "text",
  "name": "text",
  "description": "All sales records from the current fiscal year",
  "domains": [
    "4d004a3a-4568-4c1d-822e-30958ef898dc"
  ],
  "suspended": false,
  "createdBy": "123e4567-e89b-12d3-a456-426614174000",
  "createdAt": "2025-10-08T11:14:50.840Z",
  "updatedAt": "2025-10-08T11:14:50.840Z",
  "status": "PENDING",
  "expiration": "2025-10-08T11:14:50.840Z",
  "stats": {
    "dataSourceCount": 1,
    "pendingRequestCount": 1,
    "approvedRequestCount": 1,
    "revokedRequestCount": 1,
    "canceledRequestCount": 1,
    "deniedRequestCount": 1,
    "totalRequestCount": 1
  },
  "requestId": "text",
  "sourceTypes": [
    "Databricks",
    "Redshift",
    "Snowflake"
  ],
  "metadata": {
    "subjectMatterExpert": {
      "id": "123e4567-e89b-12d3-a456-426614174000",
      "username": "text"
    }
  },
  "dataAccessPolicy": {
    "version": "text",
    "rules": [
      {
        "conditions": {
          "all": []
        },
        "event": {
          "type": "approve",
          "params": {
            "comment": "text",
            "duration": 1,
            "durationUnit": "HOURS"
          }
        }
      }
    ],
    "defaultEvent": {
      "type": "approve",
      "params": {
        "comment": "text",
        "duration": 1,
        "durationUnit": "HOURS"
      }
    }
  }
}

Suspend access to data products

Data products can be suspended. Suspending access revokes all access to data sources in the data product that was gained from the approvals in the Marketplace and all masking exceptions granted by approvals. However, the data product access can be resumed to grant the approvals again.

With the UI

From the Marketplace app,

  1. Select the data product.

  2. Navigate to the Settings tab.

  3. Select Suspend access and then click Suspend access on the modal.

With the API

Ensure you set the correct global segment and use a Marketplace-specific personal access token (PAT) when using the Marketplace API. See the Marketplace API docs for additional guidance or to download the OpenAPI YAML for your own client generation.

Update the suspended parameter using the endpoint below:

Update an existing data product

put

Update an existing data product by ID

Authorizations
Path parameters
idstringRequired
Body
namestring · min: 1 · max: 64Optional

Data product name

Pattern: ^[a-zA-Z0-9)(\-_/\\\s]*$
descriptionone of | nullableOptional

Data product description

stringOptional

Data product description

Example: All sales records from the current fiscal year
domainsstring[]OptionalExample: ["4d004a3a-4568-4c1d-822e-30958ef898dc"]
statusstring · enumOptionalExample: PENDINGPossible values:
expirationone of | nullableOptional
string · date-timeOptional
idstring · uuidOptional

Data product ID

metadataone of | nullableOptional
requestFormIdone ofOptional
string · cuidOptional
or
string · uuidOptional
suspendedbooleanOptional

Whether access to the data product's data sources is suspended

Example: false
Responses
200Success
application/json
put
PUT /marketplace/api/data-product/{id} HTTP/1.1
Host: na.api.immutacloud.com
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 826

{
  "name": "text",
  "description": "All sales records from the current fiscal year",
  "domains": [
    "4d004a3a-4568-4c1d-822e-30958ef898dc"
  ],
  "status": "PENDING",
  "expiration": "2025-10-08T11:14:50.840Z",
  "stats": {
    "dataSourceCount": 1,
    "pendingRequestCount": 1,
    "approvedRequestCount": 1,
    "revokedRequestCount": 1,
    "canceledRequestCount": 1,
    "deniedRequestCount": 1,
    "totalRequestCount": 1
  },
  "dataAccessPolicy": {
    "version": "text",
    "rules": [
      {
        "conditions": {
          "all": []
        },
        "event": {
          "type": "approve",
          "params": {
            "comment": "text",
            "duration": 1,
            "durationUnit": "HOURS"
          }
        }
      }
    ],
    "defaultEvent": {
      "type": "approve",
      "params": {
        "comment": "text",
        "duration": 1,
        "durationUnit": "HOURS"
      }
    }
  },
  "id": "123e4567-e89b-12d3-a456-426614174000",
  "dataSources": [
    {
      "sourceId": "text"
    }
  ],
  "metadata": {
    "subjectMatterExpert": {
      "id": "123e4567-e89b-12d3-a456-426614174000"
    }
  },
  "requestFormId": "text",
  "suspended": false
}
200Success
{
  "id": "text",
  "name": "text",
  "description": "All sales records from the current fiscal year",
  "domains": [
    "4d004a3a-4568-4c1d-822e-30958ef898dc"
  ],
  "suspended": false,
  "createdBy": "123e4567-e89b-12d3-a456-426614174000",
  "createdAt": "2025-10-08T11:14:50.840Z",
  "updatedAt": "2025-10-08T11:14:50.840Z",
  "status": "PENDING",
  "expiration": "2025-10-08T11:14:50.840Z",
  "stats": {
    "dataSourceCount": 1,
    "pendingRequestCount": 1,
    "approvedRequestCount": 1,
    "revokedRequestCount": 1,
    "canceledRequestCount": 1,
    "deniedRequestCount": 1,
    "totalRequestCount": 1
  },
  "requestId": "text",
  "sourceTypes": [
    "Databricks",
    "Redshift",
    "Snowflake"
  ],
  "metadata": {
    "subjectMatterExpert": {
      "id": "123e4567-e89b-12d3-a456-426614174000",
      "username": "text"
    }
  },
  "dataAccessPolicy": {
    "version": "text",
    "rules": [
      {
        "conditions": {
          "all": []
        },
        "event": {
          "type": "approve",
          "params": {
            "comment": "text",
            "duration": 1,
            "durationUnit": "HOURS"
          }
        }
      }
    ],
    "defaultEvent": {
      "type": "approve",
      "params": {
        "comment": "text",
        "duration": 1,
        "durationUnit": "HOURS"
      }
    }
  }
}

Deleting data products

It is also possible to delete data products, which will remove all users' access to the data sources within the data product and any masking exceptions associated with the data product. Deleting a data product cannot be undone.

With the UI

From the Marketplace app,

  1. Select the data product.

  2. Navigate to the Settings tab.

  3. Click Delete data product.

  4. Enter the name of your data product in the textbox and then click Delete again.

With the API

Ensure you set the correct global segment and use a Marketplace-specific personal access token (PAT) when using the Marketplace API. See the Marketplace API docs for additional guidance or to download the OpenAPI YAML for your own client generation.

Delete data product by ID

delete

Delete the specified data product from the system

Authorizations
Path parameters
idstringRequired
Responses
200Success

No content

delete
DELETE /marketplace/api/data-product/{id} HTTP/1.1
Host: na.api.immutacloud.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
200Success

No content

Last updated

Was this helpful?