All pages
Powered by GitBook
1 of 10

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

How-to Guides

Marketplace App Requirements

To ensure Marketplace functions seamlessly with your Governance app, there are some setup requirements.

  1. Users registered in Immuta to ensure users can log in to the Marketplace app, request access, and be provisioned access in the data platform.

    1. If the configured identity manager (IAM) to Immuta is syncing attributes (groups don't matter) from it, the checkbox to allow Immuta attributes to be applied to the IAM's users and groups must be enabled. To enable this setting, edit the IAM from the Governance app settings page.

  2. An integration configured and data sources registered in Immuta: Tables, views, and files registered as data sources in the Governance app can be used in data products from the Marketplace app. These registered data sources within the data products are provisioned to the data consumers in the data platform when approved for access. Additionally, users can request masking exceptions on supported columns from these data sources.

  3. : Each data product is comprised of data sources from a single domain, and delegate permissions to specific users that are knowledgeable about the data.

Customize the Marketplace Branding

Give your Marketplace app the custom look and feel of your company by supplying your own branding:

  • Add your logo (with light and dark mode options)

  • Select a primary and accent color

Customizing Marketplace adds appeal for your data consumers and makes the Marketplace app appear more proprietary to your business.

Requirement: Immuta permission APPLICATION_ADMIN

Add a brand logo

From the Governance app,

  1. Navigate to the App Settings page and click on the Marketplace tab.

  2. In the Logo section, click Upload. Upload both a light mode and dark mode version of the logo since the mode is specific to the client's preference. It can be the same image if visible in both modes.

  3. In the pop-up, select your logo. Images should be transparent PNG or SVG and a maximum size of 1 MB. For best results, use a horizontally aligned image 100px by 800px or smaller.

  4. Click Save.

You will need to refresh the Marketplace app in order to see your changes after saving.

Customize the primary and accent color

From the Governance app,

  1. Navigate to the App Settings page and click on the Marketplace tab.

  2. In the Color section, click the dropdown and select the primary and accent colors.

  3. You can see the preview of the colors in the preview section.

  4. Click Save.

You will need to refresh the Marketplace app in order to see your changes after saving.

Data sources assigned to domains
allowing you to segment your organization's data

Reference Guides

Share Data Products

This section is for understanding Marketplace and data products.

How-to guides

  • Manage data products: Publish and manage new data products in Marketplace.

  • : Add your own logo and colors to the Marketplace app.

Reference guides

  • : This reference guide describes the setup requirements and prerequisites that must be completed in the Governance app to prepare for the Marketplace app.

  • : This reference guide describes data products and their features.

  • : This reference guide describes Immuta permissions and the actions users with those permissions can take in the Governance and Marketplace app.

  • : This reference guide describes your options for automated data source assignment when creating domains in the Governance app for seamless data product creation in the Marketplace app.

Data Products

Data products are what are published to the Marketplace app by data product managers. They are typically highly curated and ready for consumption by the business.

They contain the following metadata:

  • Name

  • Description (optional)

  • Subject matter expert (optional)

Request form

  • Data sources

  • Columns

  • Access requests, including access requests for the data product and masking exceptions

  • Members

  • Request forms

    Request forms work as templates that can be added to multiple data products and dictate the same access request process for any data product that uses it. Request forms provide consistent and reliable information from the requesters to the data stewards approving or denying access requests. One request form is applied to each data product and will be used for both data access and masking exception requests. Request forms contain the following content:

    • Form details: Details about the request form such as the name and request questions. Request questions are the questions a data consumer must answer, and the answers will be recorded in the access request for the data steward to review.

    • Review flow: The review flow configures if the access request requires approval or not, the data stewards who will approve the requests, or the ability for data product owners to select their own data stewards.

    • Data use agreement: A data use agreement can optionally be included. If it is, the data consumer must acknowledge it before they can request access, ensuring they agree to how the data should be used.

    • Linked data products: This is a list of all the data products in Marketplace that use this request form.

    Data sources

    Data sources represent any type of data that could be provided by a data product and registered in Immuta. These are currently tables and views from your data platform and objects from S3 storage. What data sources are available for the data product manager to add are dependent on the domain specified when publishing the data product.

    Columns

    Every data product has a list of the columns in the data sources of the data product. The list is separated by data source and provides details about the column like the name, tags applied to the column, and if the column is impacted by a masking data policy. Data consumers can make masking exception requests on the masked columns, which allow approved users to see unmasked data.

    Editing the data product

    Note that all data product settings and metadata are point-in-time of when the access request was made and approved. For example, if you change the data use agreement for a data product after access requests were approved for five users, those five users would remain approved under the previous data use agreement. Immuta only updates the data product with the changes for new requests, not approved or pending requests.

  • Integrating with existing catalogs: This reference guide describes how to connect data products in your existing catalogs with data products in Marketplace with automated deep links.

  • Customize the Marketplace branding
    Marketplace app requirements
    Data products reference guide
    Marketplace permissions matrix
    Setting up domains for Marketplace

    Setting Up Domains for Marketplace

    Typically, you would give a data product manager CREATE permission in a schema or database that they can use as their sandbox for generating new tables/views natively in their data platform using data engineering tools like dbt. Those newly generated tables/views (or even S3 objects) are what they can use as the data sources for their data products.

    You must get these new data objects from the data platform as registered in Immuta and assigned to a domain so that they can be published in data products:

    • Immuta automatically registers objects through periodic polling (24 hours by default) to detect changes in the data platform and represent those changes in Immuta, as data sources. These checks can also be manually triggered.

    • Once the objects are registered in Immuta as data sources, they are assigned to a domain one of two ways:

      • Manually: The data source is assigned to the domain through the (or ) by a user with GOVERNANCE permission.

      • Dynamically (recommended): The data source is automatically assigned to the domain based on if it has a specific tag.

        Tags can be applied directly to the tables/views in the data platform (Snowflake, Databricks Unity Catalog, and AWS Lake Formation only), imported from a , or applied through the Immuta UI.

    See the examples in the tabs below to understand your options when dynamically assigning data sources to domains for data products.

    Requirement:

    1. An administrator of the data platform GRANTs CREATE permission to the hypothetical schema business.hr-data-products to the data engineers.

    2. User with GOVERNANCE permission HR Domain and selects based on the tag Immuta Connections . Snowflake . business . hr-data-products.

    As you can see in all the examples, the GOVERNANCE user was able to still limit what data sources land in the HR Domain by limiting the scope of power where the data engineer could apply tags. In the first two examples, they are limited to applying tags only in the schema where they have CREATE permission in the data platform. In the second example, they are limited to where they can apply tags by where they were made data owners.

    Integrating with Existing Catalogs

    If you would like data consumers to discover data products through your existing catalog rather than through the Immuta Marketplace app, you can redirect requests for access from your catalog to the Marketplace app. However, .

    Integration is made possible through deep link URLs provided by the Marketplace app that direct the user to the correct request access screen for any given data product. At a high level the workflow looks like this:

    • A data product is published in your catalog that the same data product in the Marketplace app.

    • The consumer discovers the data product in your catalog.

    User with USER_ADMIN permission provides the data engineers with permission Manage Data Products in that domain.

  • Data engineer creates 6 new tables in the schema business.hr-data-products and wants to now have them available as data sources for a data product.

  • When Immuta registers those objects, it will include the connection tag to represent the schema and database.

    1. If Immuta hasn't yet found those new tables through periodic polling, the data engineer executes object sync over the Immuta API so that Immuta will find them.

  • Those 6 tables will appear as data sources within the domain and are now available for data products.

  • Requirement: Snowflake, Databricks Unity Catalog, or AWS Lake Formation data sources

    1. An administrator of the data platform GRANTs CREATE permission to the hypothetical schema business.hr-data-products to the data engineers. This administrator also creates the tag HR Domain in the data platform to tag the tables.

    2. User with the APPLICATION_ADMIN permission configures Snowflake, Databricks Unity Catalog, or AWS Lake Formation to ingest tags.

    3. User with GOVERNANCE permission HR Domain and selects based on the tag HR Domain.

    4. User with USER_ADMIN permission Manage Data Products in that domain.

    5. Data engineer creates 6 new tables in the schema business.hr-data-products and wants to now have them available as data sources for a data product.

    6. Data engineer tags those data sources with the HR Domain tag directly in the data platform. When Immuta registers those objects, it will include the data platform tag(s).

      1. If Immuta hasn't yet found those new tables through periodic polling, the data engineer executes over the Immuta API so that Immuta will find them.

    7. Those 6 tables will appear as data sources within the domain and are now available for data products.

    1. An administrator of the data platform GRANTs CREATE permission to the hypothetical schema business.hr-data-products to the data engineers. This administrator also creates the tag HR Domain in the data platform to tag the tables.

    2. User with GOVERNANCE permission creates the new tag HR Domain.

    3. User with GOVERNANCE permission HR Domain and selects based on the tag HR Domain.

    4. User with GOVERNANCE permission . Being the data owner allows you to manage tags on the tables in the Governance app.

    5. Data engineer creates 6 new tables in the schema business.hr-data-products and wants to now have them available as data sources for a data product.

      1. If Immuta hasn't yet found those new tables through periodic polling, the data engineer executes over the Immuta API so that Immuta will find them.

    6. Data engineer tags those data sources with the HR Domain tag from within the Governance app (or with the API).

    7. Those 6 tables will appear as data sources within the domain and are now available for data products.

    Governance app
    API
    supported external catalog
    Data sources from a connection
    creates the domain
    dynamic assignment

    The consumer initiates a redirect from your catalog to the request access page for that mirrored data product in the Marketplace app.

  • From this point forward, the access request works the same.

  • Mirroring data products

    In order to request access to a data product, your catalog must have a mirrored representation of the corresponding data product that exists in the Marketplace app. Depending how you configure the redirect, it's likely these need to be named exactly the same so that the redirect works correctly and you don't confuse your data consumers.

    You can either separately publish the data product in your catalog, or you can use webhooks to listen and automate publishing in your catalog when published in the Marketplace app.

    Redirecting to access requests

    To support redirects, Marketplace exposes deep link URLs to the access request page for each data product or access request page for masking exceptions. The URL can be built using this format or copy the pre-built link to your clipboard by clicking Request access link on the data product's details tab:

    • {data product name} : This can be either the data product name or the data product ID for the specific data product. The data product ID can be found by examining the data product details page's URL here: https://app.immutacloud.com/marketplace/data-product/{data product id}/details

    • {access type}: This can be either data-access (providing access to the data product and its data sources) or masking-exception (providing unmasked access to the masked columns of the data sources in the data product).

    • {account identifier}: This is . This will ensure the user being redirected to request access does not need to know the accountId in order to log in

    When publishing a data product using the API, you can customize the data product ID as any valid UUID. This allows you to create data products in Marketplace with an ID that matches the ID in your catalog, which is a more resilient redirect method than using the data product name in redirect links.

    These URLs will direct the user to the data product's access request screen or, if they are not authenticated, to the Marketplace login screen with a redirect back to the access request screen.

    Catalog redirect approach recommendations

    The following are only recommendations for popular catalogs, you can do this however you feel appropriate and can reuse some of these approaches in different catalogs or custom marketplace applications you may have built yourselves.

    Collibra

    The first thing to consider when linking a catalog is how you appropriately represent a domain, data product, and data source in that catalog should it not have those object types. The most common approach with Collibra is the following:

    • Domain (which contains the data product(s)) = Collibra Collection

    • Data product (which contains the data source(s)) = Collibra Data Set

    • Data source = Collibra Data Asset

    A Collibra custom workflow can be leveraged to redirect to the Marketplace app to request access. Download a sample workflow below. This workflow was exported in a way that allows you to import it and see its workflow "code" in the Collibra Workflow designer should you want to make changes.

    This workflow is intended to be an example you can use and is not part of the Immuta software product nor SLAs.

    Once you are happy with the workflow "code", you must deploy it with the button at the top of the Collibra workflow designer. Then complete the setup:

    1. Navigate to Settings, and then Workflows.

    2. Find the newly deployed Request Access Through Immuta workflow and select it.

    3. Uncheck "Show in global create"

    4. This workflow "attaches" to a Data Set by configuring the "Applies To" in Collibra to a Data Set. You can change this to whatever object you represent data products with in Collibra.

    5. Ensure the variables are empty

    6. For the "Start Events" choose "Workflow Started"

    7. Under "Other" ensure "Any user can start the workflow"

    8. Save

    Once complete, when you visit a Data Set in Collibra there should be a new action "Request Access through Immuta". When clicked, a modal will appear asking to request access, and when selected, will dynamically redirect to the appropriate data product in the Immuta Marketplace app using the data product ID URL option. Since it uses the ID to reference the data product in Immuta Marketplace, you must create the data product using the same ID as Collibra. It is possible to create data products with your own provided ID using the Immuta Marketplace API, but it must be a UUID, which is the case with Collibra IDs.

    Alation

    Alation Marketplace

    The Alation Marketplace has a seamless integration with the Immuta Marketplace app. Simply add Immuta as a delivery system within the Alation data products, which will redirect users to request access in Immuta. See the example delivery system configuration below and view the Alation documentation for additional details. Ensure the uri aligns with the specific link to the Immuta data product that represents to the Alation data product as described above.

    Alation without Alation Marketplace

    The first thing to consider when linking a catalog is how you appropriately represent a domain, data product, and data source in that catalog should it not have those object types. There is not an obvious approach to this in Alation; the best we've seen is:

    • Domain (which contains the data product(s)) = Alation Glossary

    • Data product (which contains the data source(s)) = Alation Domain

    • Data source = Alation Data

    Unlike with the Alation Marketplace, there is not a dynamic way to redirect to the Immuta Marketplace app to request access. Instead, you should include a Description in the Alation Domain which includes a hyperlink to request access using the data product ID URL option.

    Atlan

    The first thing to consider when linking a catalog is how you appropriately represent a domain, data product, and data source in that catalog should it not have those object types. Atlan's object mapping is very close to the Marketplace app:

    • Domain (which contains the data product(s)) = Atlan Domain

    • Data product (which contains the data source(s)) = Atlan Data Product

    • Data source = Atlan Data Asset

    Unlike Collibra, there is not a dynamic way to redirect to the Marketplace app to request access. Instead, we recommend that you include a READ ME in the Atlan data product which includes a hyperlink to request access using the data product ID URL option.

    We hope to work closely with Atlan to make this smoother in the future - ask them about it!

    Always request and approve in the Marketplace app

    While you are able to create request and approval flows in some catalogs and even other tools, it is not recommended. Doing data request and approval flows in Immuta has various benefits:

    • When approved, the access is automatically provisioned in the data platform.

    • Approvals can be temporary, and when that time limit expires, access will be de-provisioned automatically.

    • The person making a determination on a request is presented with details about the request, including existing data access, in order to make a meaningful access decision. Furthermore, users doing approvals to data are different from the users doing approvals to applications, and require a more specific process and workflow more coupled to the data platform and its metadata

    • Multiple approvers can be configured.

    it's often beneficial to have a separate user experience for consuming data products (Marketplace app) from creating them (catalog)
    mirrors
    2KB
    Immuta Marketplace Example.zip
    archive
    Open

    Manage Data Products

    Data product managers are able to publish and manage .

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

    Publishing a data product

    https://app.immutacloud.com/marketplace/data-product/{data product}/request-access?type={access type}?accountId={account identifier}
    deliverySystems:
      Immuta:
        type: SQL
        uri: "https://app.immutacloud.com/marketplace/data-product/{data product name}/request-access?accountId={account identifier}"
        accessRequestInstruction:
            instruction: "Go [here](https://app.immutacloud.com/marketplace/data-product/{data product name}/request-access?type=data-access?accountId={account identifier}) to request access to this data product. 
                          Go [here](https://app.immutacloud.com/marketplace/data-product/{data product name}/request-access?type=masking-exception?accountId={account identifier}) to request a masking exception for data in this data product."
            type: text
    creates the domain
    dynamic assignment
    provides the data engineers with permission
    schema monitoring
    creates the domain
    dynamic assignment
    configures the data engineers to be data owners of all the tables in the schema business.hr-data-products (includes future tables)
    schema monitoring
    the account ID of the Marketplace tenant
    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. Select the data sources you want in the data product. If you do not see a data source you expected to see, it is not in the domain you selected.

    5. Click Next.

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

    7. Click Next.

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

    9. Click Next.

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

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

    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.

    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.

    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.

    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:

    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:

    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.

    data products

    Marketplace Permissions Matrix

    Anything a Data Steward can do -> a Data Product Manager can do; anything a Data Product Manager can do -> a user with GOVERNANCE permission can do. However, both the Data Product Manager and GOVERNANCE users must be assigned as a Data Steward in order to approve or deny an access request.

    Data stewards
    Data product manager
    Users with the GOVERNANCE permission

    And the scope of their permissions grow as you move up the layers:

    See the table below for the full breakdown of what Marketplace actions require which Immuta permissions:

    Action
    GOVERNANCE
    Manage Data Products
    Data steward
    USER_ADMIN
    APPLICATION_ADMIN
    None

    Yes

    Manage a data product

    Yes

    Yes

    Make access request determinations

    Yes

    Alter a data product

    Yes

    Yes

    Yes (partial)

    Create a request form

    Yes

    Yes

    Create an access request

    Yes

    Yes

    Yes

    Yes

    Revoke a member from a data product

    Yes

    Yes

    Yes

    Revoke a masking exception

    Yes

    Yes

    Yes

    Configure webhooks

    Yes

    Customize the Marketplace app

    Yes

    Install Immuta Slack app

    Yes

    Enable Slack and email notifications

    Yes, all users

    Yes, self

    Can act in each data product they are assigned to

    Can act in the domain they have the Manage Data Products permission in

    Can act across all of Immuta, regardless of domain

    Create a domain

    Yes

    Grant Manage Data Products in a domain

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

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

  • 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:

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

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

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

  • Add new data products to the marketplace

    post

    Add one or more data products to the marketplace

    Authorizations
    AuthorizationstringRequired
    Bearer authentication header of the form Bearer <token>.
    Body
    post
    /api/data-product

    Revoke access to a data product

    delete

    Updates the specified access request to revoked and revokes access to data sources associated with the data product

    Authorizations
    AuthorizationstringRequired
    Bearer authentication header of the form Bearer <token>.
    Path parameters
    idstringRequired
    requestIdstringRequired
    Responses
    204Success
    delete
    /api/data-product/{id}/request/{requestId}
    post

    Create a request form

    Authorizations
    AuthorizationstringRequired
    Bearer authentication header of the form Bearer <token>.
    Body
    namestringRequired
    idstring · uuidOptional
    dataUseAgreementIdsstring · uuid[]Optional
    Responses
    201Success
    application/json
    409

    Request form with name already exists.

    post
    /api/request-form

    Update an existing data product

    put

    Update an existing data product by ID

    Authorizations
    AuthorizationstringRequired
    Bearer authentication header of the form Bearer <token>.
    Path parameters
    idstringRequired
    Body
    Responses
    200Success
    application/json
    put
    /api/data-product/{id}

    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
    AuthorizationstringRequired
    Bearer authentication header of the form Bearer <token>.
    Path parameters
    idstringRequired
    Body
    Responses
    200Success
    application/json
    put
    /api/data-product/{id}/datasources

    Update an existing data product

    put

    Update an existing data product by ID

    Authorizations
    AuthorizationstringRequired
    Bearer authentication header of the form Bearer <token>.
    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
    metadataone of | nullableOptional
    domainsstring[]OptionalExample: ["4d004a3a-4568-4c1d-822e-30958ef898dc"]
    idstring · uuidOptional

    Data product ID

    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
    /api/data-product/{id}

    Delete data product by ID

    delete

    Delete the specified data product from the system

    Authorizations
    AuthorizationstringRequired
    Bearer authentication header of the form Bearer <token>.
    Path parameters
    idstringRequired
    Responses
    200Success

    No content

    delete
    /api/data-product/{id}
    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
    metadataone of | nullableRequired
    domainsstring[]RequiredExample: ["4d004a3a-4568-4c1d-822e-30958ef898dc"]
    idstring · uuidOptional

    Data product ID

    requestFormIdone ofRequired
    string · cuidOptional
    or
    string · uuidOptional
    Responses
    201Success
    application/json
    409

    Data Product name in use.

    204Success

    No content

    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
    metadataone of | nullableOptional
    domainsstring[]OptionalExample: ["4d004a3a-4568-4c1d-822e-30958ef898dc"]
    idstring · uuidOptional

    Data product ID

    requestFormIdone ofOptional
    string · cuidOptional
    or
    string · uuidOptional
    suspendedbooleanOptional

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

    Example: false
    200Success
    200Success
    200Success
    200Success

    No content

    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: 877
    
    {
      "name": "text",
      "description": "All sales records from the current fiscal year",
      "metadata": {
        "subjectMatterExpert": {
          "id": "123e4567-e89b-12d3-a456-426614174000",
          "username": "text",
          "name": "text"
        }
      },
      "domains": [
        "4d004a3a-4568-4c1d-822e-30958ef898dc"
      ],
      "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"
          }
        }
      },
      "maskingExceptionPolicy": {
        "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"
        }
      ],
      "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-12-14T17:28:25.679Z",
      "updatedAt": "2025-12-14T17:28:25.679Z",
      "status": "PENDING",
      "expiration": "2025-12-14T17:28:25.679Z",
      "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",
          "name": "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"
          }
        }
      },
      "maskingExceptionPolicy": {
        "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",
      "name": "text",
      "fields": [
        {
          "id": "123e4567-e89b-12d3-a456-426614174000",
          "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-12-14T17:28:25.679Z",
      "updatedBy": {
        "globalUserId": "123e4567-e89b-12d3-a456-426614174000",
        "name": "text"
      },
      "updatedAt": "2025-12-14T17:28:25.679Z",
      "version": "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-12-14T17:28:25.679Z",
      "updatedAt": "2025-12-14T17:28:25.679Z",
      "status": "PENDING",
      "expiration": "2025-12-14T17:28:25.679Z",
      "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",
          "name": "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"
          }
        }
      },
      "maskingExceptionPolicy": {
        "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": "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-12-14T17:28:25.679Z",
      "updatedAt": "2025-12-14T17:28:25.679Z",
      "status": "PENDING",
      "expiration": "2025-12-14T17:28:25.679Z",
      "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",
          "name": "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"
          }
        }
      },
      "maskingExceptionPolicy": {
        "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": "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-12-14T17:28:25.679Z",
      "updatedAt": "2025-12-14T17:28:25.679Z",
      "status": "PENDING",
      "expiration": "2025-12-14T17:28:25.679Z",
      "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",
          "name": "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"
          }
        }
      },
      "maskingExceptionPolicy": {
        "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"
          }
        }
      }
    }
    DELETE /marketplace/api/data-product/{id}/request/{requestId} HTTP/1.1
    Host: na.api.immutacloud.com
    Authorization: Bearer YOUR_SECRET_TOKEN
    Accept: */*
    
    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
    
    {
      "name": "text",
      "fields": [
        {
          "id": "123e4567-e89b-12d3-a456-426614174000",
          "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"
          }
        }
      },
      "id": "123e4567-e89b-12d3-a456-426614174000",
      "dataUseAgreementIds": [
        "123e4567-e89b-12d3-a456-426614174000"
      ]
    }
    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: 895
    
    {
      "name": "text",
      "description": "All sales records from the current fiscal year",
      "metadata": {
        "subjectMatterExpert": {
          "id": "123e4567-e89b-12d3-a456-426614174000",
          "username": "text",
          "name": "text"
        }
      },
      "domains": [
        "4d004a3a-4568-4c1d-822e-30958ef898dc"
      ],
      "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"
          }
        }
      },
      "maskingExceptionPolicy": {
        "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"
        }
      ],
      "requestFormId": "text",
      "suspended": false
    }
    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"
        }
      ]
    }
    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: 895
    
    {
      "name": "text",
      "description": "All sales records from the current fiscal year",
      "metadata": {
        "subjectMatterExpert": {
          "id": "123e4567-e89b-12d3-a456-426614174000",
          "username": "text",
          "name": "text"
        }
      },
      "domains": [
        "4d004a3a-4568-4c1d-822e-30958ef898dc"
      ],
      "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"
          }
        }
      },
      "maskingExceptionPolicy": {
        "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"
        }
      ],
      "requestFormId": "text",
      "suspended": false
    }
    DELETE /marketplace/api/data-product/{id} HTTP/1.1
    Host: na.api.immutacloud.com
    Authorization: Bearer YOUR_SECRET_TOKEN
    Accept: */*