All pages
Powered by GitBook
1 of 1

Loading...

Manage Data Products

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

,

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

  3. Click Next.

  4. Select the data sources you want in the data product. .

With the API

Ensure you set the and use a when using the Marketplace API. See the 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

,

  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 and use a when using the Marketplace API. See the 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

,

  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 and use a when using the Marketplace API. See the 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 and use a when using the Marketplace API. See the 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

,

  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 and use a when using the Marketplace API. See the 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

,

  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 and use a when using the Marketplace API. See the for additional guidance or to download the OpenAPI YAML for your own client generation.

Click Next.

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

  • Click Next.

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

      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.

  • Click Next.

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

  • Click Publish data product.

  • From the Marketplace app
    If you do not see a domain available, create one with at least one data source
    If you do not see a data source you expected to see, it is not in the domain you selected
    correct global segment
    Marketplace-specific personal access token (PAT)
    Marketplace API docs
    From the Marketplace app
    correct global segment
    Marketplace-specific personal access token (PAT)
    Marketplace API docs
    From the Marketplace app
    correct global segment
    Marketplace-specific personal access token (PAT)
    Marketplace API docs
    correct global segment
    Marketplace-specific personal access token (PAT)
    Marketplace API docs
    From the Marketplace app
    correct global segment
    Marketplace-specific personal access token (PAT)
    Marketplace API docs
    From the Marketplace app
    correct global segment
    Marketplace-specific personal access token (PAT)
    Marketplace API docs
    • 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.

    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

    No content

    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
    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:54:09.410Z",
      "updatedAt": "2025-12-14T17:54:09.410Z",
      "status": "PENDING",
      "expiration": "2025-12-14T17:54:09.410Z",
      "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:54:09.410Z",
      "updatedBy": {
        "globalUserId": "123e4567-e89b-12d3-a456-426614174000",
        "name": "text"
      },
      "updatedAt": "2025-12-14T17:54:09.410Z",
      "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:54:09.410Z",
      "updatedAt": "2025-12-14T17:54:09.410Z",
      "status": "PENDING",
      "expiration": "2025-12-14T17:54:09.410Z",
      "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:54:09.410Z",
      "updatedAt": "2025-12-14T17:54:09.410Z",
      "status": "PENDING",
      "expiration": "2025-12-14T17:54:09.410Z",
      "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:54:09.410Z",
      "updatedAt": "2025-12-14T17:54:09.410Z",
      "status": "PENDING",
      "expiration": "2025-12-14T17:54:09.410Z",
      "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: */*