For the complete documentation index, see llms.txt. This page is also available as Markdown.

Manage Data Products

Publish, remove, edit, or hide data products

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

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

Hide data products from consumers

Hiding data products from your data consumers in the Request app will only allow them to access data products through links, which can be added to your data catalog. To hide data products from your consumers,

  1. Navigate to the Application page.

  2. Flip the Allow Consumers to discover data products toggle to off.

Publishing a data product

With the UI

  1. From the Data products page, 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:

    • Data Product Name: Name your data product clearly.

    • Data Product ID (optional): Enter a data product ID to ensure the ID in Immuta matches the ID from your catalog in order to set up access requests from your catalog.

    • Description (optional): Provide a description that helps consumers understand the purpose and contents of the data product.

    • 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 an existing request form for access requests. Any data consumer requesting access to your data product will need to complete the same request form.

  9. Opt to Select an existing request form for masking exceptions. Any data consumer requesting a masking exception on your data product will need to complete the same request form. If you do not select a masking exception request form, the access request form will be used for both types of requests.

  10. Click Next.

  11. If your request form has the review flow set to Delegate you must set your data stewards. The review flow must be set for each request form. Choose if you would like to require approval for requests on this data product:

    • Review required: When the user makes a request on a data product, in addition to acknowledging the data use agreement and answering the required questions, 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.

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

      • Enter the reason these requests can be automatically approved.

      • Enter the time of expiration for the automatically approved requests:

        • Never: The requests will not expire and may be manually revoked, if needed.

        • After a set duration: Use the dropdown to select how long users will have access to the data before the access expires.

  12. Click Publish data product.

With the API

Ensure you set the correct global segment and use a Request app personal access token (PAT) when using the Request app API. See the Request app 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
AuthorizationstringRequired
Bearer authentication header of the form Bearer <token>.
Body
namestring · min: 1 · max: 255Required

Data product name

Pattern: ^[\p{L}\p{M}\p{N})(\-_/\\\s]*$
descriptionone of · nullableOptional

Data product description

stringOptional

Data product description

Example: All sales records from the current fiscal year
metadataone of · nullableRequired
domainsstring[] · min: 1RequiredExample: ["4d004a3a-4568-4c1d-822e-30958ef898dc"]
idstring · uuidOptional

Data product ID

requestFormIdone ofOptionalDeprecated

Deprecated. Use dataAccessRequestFormId and maskingExceptionRequestFormId together, or keep using this field to set both to the same form.

string · cuidOptional
or
string · uuidOptional
dataAccessRequestFormIdone ofOptional

The request form ID for the data access review flow.

string · cuidOptional
or
string · uuidOptional
maskingExceptionRequestFormIdone ofOptional

The request form ID for the masking exception review flow.

string · cuidOptional
or
string · uuidOptional
Responses
201Success
application/json
idone ofRequired
string · cuidOptional
or
string · uuidOptional
namestring · min: 1 · max: 255Required

Data product name

Pattern: ^[\p{L}\p{M}\p{N})(\-_/\\\s]*$
descriptionone of · nullableOptional

Data product description

stringOptional

Data product description

Example: All sales records from the current fiscal year
domainsstring[] · min: 1RequiredExample: ["4d004a3a-4568-4c1d-822e-30958ef898dc"]
suspendedbooleanRequired

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

Example: false
createdBystring · uuidRequired

Immuta global user ID of the user who created the data product

createdAtstring · date-timeRequired
updatedAtstring · date-timeRequired
statusstring · enumOptionalExample: PENDINGPossible values:
expirationone of · nullableOptional
string · date-timeOptional
requestIdstring · cuidOptional

If requested, the ID of the access request for the data product

sourceTypesstring[]Optional

The types of data sources contained in the data product.

Example: ["Databricks","Redshift","Snowflake"]
metadataone of · nullableRequired
post/api/data-product
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: 934

{
  "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"
  ],
  "id": "123e4567-e89b-12d3-a456-426614174000",
  "dataSources": [
    {
      "sourceId": "text"
    }
  ],
  "dataAccessRequestFormId": "text",
  "maskingExceptionRequestFormId": "text",
  "dataAccessReviewFlow": {
    "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"
      }
    }
  },
  "maskingExceptionReviewFlow": {
    "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": "2026-01-01T00:00:00.000Z",
  "updatedAt": "2026-01-01T00:00:00.000Z",
  "status": "PENDING",
  "expiration": "2026-01-01T00:00:00.000Z",
  "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"
      }
    }
  }
}

Remove members from data products

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

With the UI

  1. From the Data products page, 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 Request app personal access token (PAT) when using the Request app API. See the Request app API docs for additional guidance or to download the OpenAPI YAML for your own client generation.

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

No content

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

No content

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 forms: Edit the request forms 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 Immuta 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

  1. From the Data products page, 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 Request app personal access token (PAT) when using the Request app API. See the Request app 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
AuthorizationstringRequired
Bearer authentication header of the form Bearer <token>.
Body
namestringRequired
idstring · uuidOptional
dataUseAgreementIdsstring · uuid[]Optional
Responses
201Success
application/json
idstring · uuidRequired
namestringRequired
createdAtone ofRequired
string · date-timeOptional
or
string · date-timeOptional
updatedAtone ofRequired
string · date-timeOptional
or
string · date-timeOptional
versionstring · cuidRequired

The current version of the request form

post/api/request-form
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"
  ]
}
{
  "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": "2026-01-01T00:00:00.000Z",
  "updatedBy": {
    "globalUserId": "123e4567-e89b-12d3-a456-426614174000",
    "name": "text"
  },
  "updatedAt": "2026-01-01T00:00:00.000Z",
  "version": "text"
}

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: 255Optional

Data product name

Pattern: ^[\p{L}\p{M}\p{N})(\-_/\\\s]*$
descriptionone of · nullableOptional

Data product description

stringOptional

Data product description

Example: All sales records from the current fiscal year
metadataone of · nullableOptional
domainsstring[] · min: 1OptionalExample: ["4d004a3a-4568-4c1d-822e-30958ef898dc"]
idstring · uuidOptional

Data product ID

requestFormIdone ofOptionalDeprecated

Deprecated. Use dataAccessRequestFormId and maskingExceptionRequestFormId together, or keep using this field to set both to the same form.

string · cuidOptional
or
string · uuidOptional
dataAccessRequestFormIdone ofOptional

The request form ID for the data access review flow.

string · cuidOptional
or
string · uuidOptional
maskingExceptionRequestFormIdone ofOptional

The request form ID for the masking exception review flow.

string · cuidOptional
or
string · uuidOptional
suspendedbooleanOptional

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

Example: false
Responses
200Success
application/json
idone ofRequired
string · cuidOptional
or
string · uuidOptional
namestring · min: 1 · max: 255Required

Data product name

Pattern: ^[\p{L}\p{M}\p{N})(\-_/\\\s]*$
descriptionone of · nullableOptional

Data product description

stringOptional

Data product description

Example: All sales records from the current fiscal year
domainsstring[] · min: 1RequiredExample: ["4d004a3a-4568-4c1d-822e-30958ef898dc"]
suspendedbooleanRequired

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

Example: false
createdBystring · uuidRequired

Immuta global user ID of the user who created the data product

createdAtstring · date-timeRequired
updatedAtstring · date-timeRequired
statusstring · enumOptionalExample: PENDINGPossible values:
expirationone of · nullableOptional
string · date-timeOptional
requestIdstring · cuidOptional

If requested, the ID of the access request for the data product

sourceTypesstring[]Optional

The types of data sources contained in the data product.

Example: ["Databricks","Redshift","Snowflake"]
metadataone of · nullableRequired
put/api/data-product/{id}
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: 916

{
  "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"
  ],
  "id": "123e4567-e89b-12d3-a456-426614174000",
  "dataAccessRequestFormId": "text",
  "maskingExceptionRequestFormId": "text",
  "dataAccessReviewFlow": {
    "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"
      }
    }
  },
  "maskingExceptionReviewFlow": {
    "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"
      }
    }
  },
  "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": "2026-01-01T00:00:00.000Z",
  "updatedAt": "2026-01-01T00:00:00.000Z",
  "status": "PENDING",
  "expiration": "2026-01-01T00:00:00.000Z",
  "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"
      }
    }
  }
}

Update the data sources

Ensure you set the correct global segment and use a Request app personal access token (PAT) when using the Request app API. See the Request app 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
AuthorizationstringRequired
Bearer authentication header of the form Bearer <token>.
Path parameters
idstringRequired
Body
Responses
200Success
application/json
idone ofRequired
string · cuidOptional
or
string · uuidOptional
namestring · min: 1 · max: 255Required

Data product name

Pattern: ^[\p{L}\p{M}\p{N})(\-_/\\\s]*$
descriptionone of · nullableOptional

Data product description

stringOptional

Data product description

Example: All sales records from the current fiscal year
domainsstring[] · min: 1RequiredExample: ["4d004a3a-4568-4c1d-822e-30958ef898dc"]
suspendedbooleanRequired

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

Example: false
createdBystring · uuidRequired

Immuta global user ID of the user who created the data product

createdAtstring · date-timeRequired
updatedAtstring · date-timeRequired
statusstring · enumOptionalExample: PENDINGPossible values:
expirationone of · nullableOptional
string · date-timeOptional
requestIdstring · cuidOptional

If requested, the ID of the access request for the data product

sourceTypesstring[]Optional

The types of data sources contained in the data product.

Example: ["Databricks","Redshift","Snowflake"]
metadataone of · nullableRequired
put/api/data-product/{id}/datasources
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": "2026-01-01T00:00:00.000Z",
  "updatedAt": "2026-01-01T00:00:00.000Z",
  "status": "PENDING",
  "expiration": "2026-01-01T00:00:00.000Z",
  "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"
      }
    }
  }
}

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 and all masking exceptions granted by approvals. However, the data product access can be resumed to grant the approvals again.

With the UI

  1. From the Data products page, 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 Request app personal access token (PAT) when using the Request app API. See the Request app 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
AuthorizationstringRequired
Bearer authentication header of the form Bearer <token>.
Path parameters
idstringRequired
Body
namestring · min: 1 · max: 255Optional

Data product name

Pattern: ^[\p{L}\p{M}\p{N})(\-_/\\\s]*$
descriptionone of · nullableOptional

Data product description

stringOptional

Data product description

Example: All sales records from the current fiscal year
metadataone of · nullableOptional
domainsstring[] · min: 1OptionalExample: ["4d004a3a-4568-4c1d-822e-30958ef898dc"]
idstring · uuidOptional

Data product ID

requestFormIdone ofOptionalDeprecated

Deprecated. Use dataAccessRequestFormId and maskingExceptionRequestFormId together, or keep using this field to set both to the same form.

string · cuidOptional
or
string · uuidOptional
dataAccessRequestFormIdone ofOptional

The request form ID for the data access review flow.

string · cuidOptional
or
string · uuidOptional
maskingExceptionRequestFormIdone ofOptional

The request form ID for the masking exception review flow.

string · cuidOptional
or
string · uuidOptional
suspendedbooleanOptional

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

Example: false
Responses
200Success
application/json
idone ofRequired
string · cuidOptional
or
string · uuidOptional
namestring · min: 1 · max: 255Required

Data product name

Pattern: ^[\p{L}\p{M}\p{N})(\-_/\\\s]*$
descriptionone of · nullableOptional

Data product description

stringOptional

Data product description

Example: All sales records from the current fiscal year
domainsstring[] · min: 1RequiredExample: ["4d004a3a-4568-4c1d-822e-30958ef898dc"]
suspendedbooleanRequired

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

Example: false
createdBystring · uuidRequired

Immuta global user ID of the user who created the data product

createdAtstring · date-timeRequired
updatedAtstring · date-timeRequired
statusstring · enumOptionalExample: PENDINGPossible values:
expirationone of · nullableOptional
string · date-timeOptional
requestIdstring · cuidOptional

If requested, the ID of the access request for the data product

sourceTypesstring[]Optional

The types of data sources contained in the data product.

Example: ["Databricks","Redshift","Snowflake"]
metadataone of · nullableRequired
put/api/data-product/{id}
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: 916

{
  "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"
  ],
  "id": "123e4567-e89b-12d3-a456-426614174000",
  "dataAccessRequestFormId": "text",
  "maskingExceptionRequestFormId": "text",
  "dataAccessReviewFlow": {
    "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"
      }
    }
  },
  "maskingExceptionReviewFlow": {
    "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"
      }
    }
  },
  "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": "2026-01-01T00:00:00.000Z",
  "updatedAt": "2026-01-01T00:00:00.000Z",
  "status": "PENDING",
  "expiration": "2026-01-01T00:00:00.000Z",
  "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"
      }
    }
  }
}

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

  1. From the Data products page, 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 Request app personal access token (PAT) when using the Request app API. See the Request app 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
AuthorizationstringRequired
Bearer authentication header of the form Bearer <token>.
Path parameters
idstringRequired
Responses
200Success

No content

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