Immuta Data Marketplace API

The Immuta Data Marketplace API — the REST surface behind the Immuta Request (Provision) app. It supports discovery and management of data products, the data sources and assets attached to them, request forms and data use agreements, and the full access-request lifecycle including approvals, masking-exception requests, determinations and revocation. Published by Immuta as an OpenAPI 3.0 document with 83 operations across 11 tags, authenticated with a bearer JWT personal access token, and served per global segment (na, eu, ap) from api.immutacloud.com.

OpenAPI Specification

immuta-marketplace-api-openapi.yml Raw ↑
openapi: 3.0.0
paths:
  /health:
    get:
      operationId: liveness[0]
      parameters: []
      responses:
        '200':
          description: The Health Check is successful
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    example: ok
                  info:
                    type: object
                    example: &ref_0
                      database: &ref_1
                        status: up
                    additionalProperties:
                      type: object
                      required:
                        - status
                      properties:
                        status:
                          type: string
                      additionalProperties: true
                    nullable: true
                  error:
                    type: object
                    example: {}
                    additionalProperties:
                      type: object
                      required:
                        - status
                      properties:
                        status:
                          type: string
                      additionalProperties: true
                    nullable: true
                  details:
                    type: object
                    example: *ref_0
                    additionalProperties:
                      type: object
                      required:
                        - status
                      properties:
                        status:
                          type: string
                      additionalProperties: true
        '503':
          description: The Health Check is not successful
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    example: error
                  info:
                    type: object
                    example: *ref_0
                    additionalProperties:
                      type: object
                      required:
                        - status
                      properties:
                        status:
                          type: string
                      additionalProperties: true
                    nullable: true
                  error:
                    type: object
                    example:
                      redis: &ref_2
                        status: down
                        message: Could not connect
                    additionalProperties:
                      type: object
                      required:
                        - status
                      properties:
                        status:
                          type: string
                      additionalProperties: true
                    nullable: true
                  details:
                    type: object
                    example:
                      database: *ref_1
                      redis: *ref_2
                    additionalProperties:
                      type: object
                      required:
                        - status
                      properties:
                        status:
                          type: string
                      additionalProperties: true
      tags: &ref_6
        - Health
  /health/live:
    get:
      operationId: liveness[1]
      parameters: []
      responses:
        '200':
          description: The Health Check is successful
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    example: ok
                  info:
                    type: object
                    example: &ref_3
                      database: &ref_4
                        status: up
                    additionalProperties:
                      type: object
                      required:
                        - status
                      properties:
                        status:
                          type: string
                      additionalProperties: true
                    nullable: true
                  error:
                    type: object
                    example: {}
                    additionalProperties:
                      type: object
                      required:
                        - status
                      properties:
                        status:
                          type: string
                      additionalProperties: true
                    nullable: true
                  details:
                    type: object
                    example: *ref_3
                    additionalProperties:
                      type: object
                      required:
                        - status
                      properties:
                        status:
                          type: string
                      additionalProperties: true
        '503':
          description: The Health Check is not successful
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    example: error
                  info:
                    type: object
                    example: *ref_3
                    additionalProperties:
                      type: object
                      required:
                        - status
                      properties:
                        status:
                          type: string
                      additionalProperties: true
                    nullable: true
                  error:
                    type: object
                    example:
                      redis: &ref_5
                        status: down
                        message: Could not connect
                    additionalProperties:
                      type: object
                      required:
                        - status
                      properties:
                        status:
                          type: string
                      additionalProperties: true
                    nullable: true
                  details:
                    type: object
                    example:
                      database: *ref_4
                      redis: *ref_5
                    additionalProperties:
                      type: object
                      required:
                        - status
                      properties:
                        status:
                          type: string
                      additionalProperties: true
      tags: *ref_6
  /health/ready:
    get:
      operationId: readiness
      parameters: []
      responses:
        '200':
          description: The Health Check is successful
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    example: ok
                  info:
                    type: object
                    example: &ref_7
                      database: &ref_8
                        status: up
                    additionalProperties:
                      type: object
                      required:
                        - status
                      properties:
                        status:
                          type: string
                      additionalProperties: true
                    nullable: true
                  error:
                    type: object
                    example: {}
                    additionalProperties:
                      type: object
                      required:
                        - status
                      properties:
                        status:
                          type: string
                      additionalProperties: true
                    nullable: true
                  details:
                    type: object
                    example: *ref_7
                    additionalProperties:
                      type: object
                      required:
                        - status
                      properties:
                        status:
                          type: string
                      additionalProperties: true
        '503':
          description: The Health Check is not successful
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    example: error
                  info:
                    type: object
                    example: *ref_7
                    additionalProperties:
                      type: object
                      required:
                        - status
                      properties:
                        status:
                          type: string
                      additionalProperties: true
                    nullable: true
                  error:
                    type: object
                    example:
                      redis: &ref_9
                        status: down
                        message: Could not connect
                    additionalProperties:
                      type: object
                      required:
                        - status
                      properties:
                        status:
                          type: string
                      additionalProperties: true
                    nullable: true
                  details:
                    type: object
                    example:
                      database: *ref_8
                      redis: *ref_9
                    additionalProperties:
                      type: object
                      required:
                        - status
                      properties:
                        status:
                          type: string
                      additionalProperties: true
      tags: *ref_6
  /api/data-product:
    get:
      description: Search data products in the marketplace using the provided filters
      operationId: searchDataProducts
      parameters:
        - name: nextToken
          required: false
          in: query
          description: Pagination token to fetch the next page of results
          schema:
            type: string
        - name: limit
          required: false
          in: query
          description: The number of items to return per page
          schema:
            minimum: 1
            maximum: 100
            default: 10
            type: number
        - name: sortOrder
          required: false
          in: query
          schema:
            default: asc
            type: string
            enum:
              - asc
              - desc
        - name: sortBy
          required: false
          in: query
          schema:
            type: string
            enum:
              - name
        - name: nameFilter
          required: false
          in: query
          schema:
            type: string
        - name: statusFilter
          required: false
          in: query
          schema:
            minItems: 0
            type: array
            items:
              type: string
              enum:
                - APPROVED
                - CANCELED
                - DENIED
                - PENDING
                - NONE
                - PUBLISHER
                - REVOKED
                - EXPIRED
        - name: roleFilter
          required: false
          in: query
          schema:
            minItems: 0
            type: array
            items:
              type: string
              enum:
                - manager
                - member
                - noRole
                - steward
        - name: expiration
          required: false
          in: query
          description: Filter data products by whether data access has an expiration.
          schema:
            type: boolean
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedDataProduct'
      security: &ref_10
        - bearer: []
      summary: Search data products across the marketplace
      tags: &ref_11
        - Data Product
    post:
      description: Add one or more data products to the marketplace
      operationId: createDataProduct
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateDataProduct'
      responses:
        '201':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DataProduct'
        '409':
          description: Data Product name in use.
      security: *ref_10
      summary: Add new data products to the marketplace
      tags: *ref_11
  /api/data-product/{id}:
    get:
      description: Get data product metadata for the specified data product ID
      operationId: getDataProductById
      parameters:
        - name: id
          required: true
          in: path
          schema:
            type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DataProduct'
      security: *ref_10
      summary: Get data product by ID
      tags: *ref_11
    put:
      description: Update an existing data product by ID
      operationId: updateDataProduct
      parameters:
        - name: id
          required: true
          in: path
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateDataProduct'
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DataProduct'
      security: *ref_10
      summary: Update an existing data product
      tags: *ref_11
    delete:
      description: Delete the specified data product from the system
      operationId: deleteDataProduct
      parameters:
        - name: id
          required: true
          in: path
          schema:
            type: string
      responses:
        '200':
          description: ''
      security: *ref_10
      summary: Delete data product by ID
      tags: *ref_11
  /api/data-product/{name}/byName:
    get:
      description: Get data product metadata for the specified data product name
      operationId: getDataProductByName
      parameters:
        - name: name
          required: true
          in: path
          schema:
            type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DataProduct'
      security: *ref_10
      summary: Get data product by name
      tags: *ref_11
  /api/data-product/{id}/datasources:
    put:
      description: >-
        Update the data sources associated with the data product. Any currently
        associated data sources not included in the payload will be removed.
      operationId: updateDataSources
      parameters:
        - name: id
          required: true
          in: path
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateDataSources'
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DataProduct'
      security: *ref_10
      summary: Update the data product's data sources
      tags:
        - Data Product
        - Data Source
    get:
      description: Search all data sources for the data product using the provided filters
      operationId: searchDataSources
      parameters:
        - name: id
          required: true
          in: path
          schema:
            type: string
        - name: nextToken
          required: false
          in: query
          description: Pagination token to fetch the next page of results
          schema:
            type: string
        - name: limit
          required: false
          in: query
          description: The number of items to return per page
          schema:
            minimum: 1
            maximum: 100
            default: 10
            type: number
        - name: user
          required: false
          in: query
          description: The global user ID to search data source access status for
          schema:
            format: uuid
            type: string
        - name: nameFilter
          required: false
          in: query
          description: Data source name to filter by
          schema:
            default: ''
            oneOf:
              - type: string
                description: Data source name to filter by
              - type: string
                minLength: 0
                maxLength: 0
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedDataSourceWithStatus'
      security: *ref_10
      summary: Search all data sources in the data product
      tags:
        - Data Product
        - Data Source
  /api/data-product/{id}/request:
    get:
      description: >-
        Search all access requests for the data product using the provided
        filters
      operationId: searchDataProductAccessRequests
      parameters:
        - name: id
          required: true
          in: path
          schema:
            type: string
        - name: searchText
          required: false
          in: query
          schema:
            type: string
        - name: status
          required: false
          in: query
          schema:
            minItems: 0
            type: array
            items:
              type: string
              enum:
                - APPROVED
                - CANCELED
                - DENIED
                - PENDING
                - NONE
                - PUBLISHER
                - REVOKED
                - EXPIRED
              example: PENDING
        - name: type
          required: false
          in: query
          schema:
            minItems: 0
            type: array
            items:
              type: string
              enum:
                - DATA_ACCESS
                - MASKING_EXCEPTION
              example: DATA_ACCESS
        - name: userIds
          required: false
          in: query
          schema:
            minItems: 0
            type: array
            items:
              type: string
        - name: includeTemporary
          required: false
          in: query
          description: Whether to include temporary access requests
          deprecated: true
          schema:
            default: false
            type: boolean
        - name: expiration
          required: false
          in: query
          description: Filter access requests by whether it has an expiration
          schema:
            type: boolean
        - name: dataProductId
          required: false
          in: query
          description: The ID of the data product to filter requests by
          schema:
            oneOf:
              - type: string
                format: cuid
                description: The ID of the data product to filter requests by
              - type: string
                format: uuid
        - name: assetId
          required: false
          in: query
          description: The ID of the asset to filter requests by
          schema:
            format: uuid
            type: string
        - name: assetType
          required: false
          in: query
          description: Filter access requests by asset type (DATA_OBJECT or DATA_PRODUCT)
          schema:
            minItems: 0
            type: array
            items:
              type: string
              enum:
                - DATA_PRODUCT
                - DATA_OBJECT
        - name: targetType
          required: false
          in: query
          description: >-
            Target type filter selections (DATA_PRODUCT, COLUMNS, or legacy type
            strings like table/view/schema)
          schema:
            minItems: 0
            type: array
            items:
              type: string
        - name: reviewStatus
          required: false
          in: query
          description: Filter access requests by review status
          schema:
            minItems: 0
            type: array
            items:
              type: string
              enum:
                - noReviews
                - reviewedByYou
                - awaitingReviewFromYou
        - name: offset
          required: false
          in: query
          schema:
            minimum: 0
            default: 0
            type: number
        - name: limit
          required: false
          in: query
          schema:
            minimum: 1
            default: 10
            type: number
        - name: sortOrder
          required: false
          in: query
          schema:
            default: desc
            type: string
            enum:
              - asc
              - desc
        - name: sortBy
          required: false
          in: query
          schema:
            default: createdAt
            type: string
            enum:
              - status
              - dataProduct
              - createdAt
              - updatedAt
              - expiration
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedAccessRequest'
      security: *ref_10
      summary: Search all access requests for the data product
      tags:
        - Data Product
        - Access Request
    post:
      description: Create a new data access request for the specified data product
      operationId: requestAccess
      parameters:
        - name: id
          required: true
          in: path
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateAccessRequest'
      responses:
        '201':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HydratedAccessRequest'
      security: *ref_10
      summary: Request access to a data product
      tags:
        - Data Product
        - Access Request
  /api/data-product/{id}/members:
    get:
      description: Search all approved access requests for the data product
      operationId: searchDataProductMembers
      parameters:
        - name: id
          required: true
          in: path
          schema:
            type: string
        - name: searchText
          required: false
          in: query
          schema:
            type: string
        - name: status
          required: false
          in: query
          schema:
            minItems: 0
            type: array
            items:
              type: string
              enum:
                - APPROVED
                - CANCELED
                - DENIED
                - PENDING
                - NONE
                - PUBLISHER
                - REVOKED
                - EXPIRED
              example: PENDING
        - name: type
          required: false
          in: query
          schema:
            minItems: 0
            type: array
            items:
              type: string
              enum:
                - DATA_ACCESS
                - MASKING_EXCEPTION
              example: DATA_ACCESS
        - name: userIds
          required: false
          in: query
          schema:
            minItems: 0
            type: array
            items:
              type: string
        - name: expiration
          required: false
          in: query
          description: Filter access requests by whether it has an expiration
          schema:
            type: boolean
        - name: dataProductId
          required: false
          in: query
          description: The ID of the data product to filter requests by
          schema:
            oneOf:
              - type: string
                format: cuid
                description: The ID of the data product to filter requests by
              - type: string
                format: uuid
        - name: assetId
          required: false
          in: query
          description: The ID of the asset to filter requests by
          schema:
            format: uuid
            type: string
        - name: assetType
          required: false
          in: query
          description: Filter access requests by asset type (DATA_OBJECT or DATA_PRODUCT)
          schema:
            minItems: 0
            type: array
            items:
              type: string
              enum:
                - DATA_PRODUCT
                - DATA_OBJECT
        - name: targetType
          required: false
          in: query
          description: >-
            Target type filter selections (DATA_PRODUCT, COLUMNS, or legacy type
            strings like table/view/schema)
          schema:
            minItems: 0
            type: array
            items:
              type: string
        - name: reviewStatus
          required: false
          in: query
          description: Filter access requests by review status
          schema:
            minItems: 0
            type: array
            items:
              type: string
              enum:
                - noReviews
                - reviewedByYou
                - awaitingReviewFromYou
        - name: offset
          required: false
          in: query
          schema:
            minimum: 0
            default: 0
            type: number
        - name: limit
          required: false
          in: query
          schema:
            minimum: 1
            default: 10
            type: number
        - name: sortOrder
          required: false
          in: query
          schema:
            default: desc
            type: string
            enum:
              - asc
              - desc
        - name: sortBy
          required: false
          in: query
          schema:
            default: createdAt
            type: string
            enum:
              - status
              - dataProduct
              - createdAt
              - updatedAt
              - expiration
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedAccessRequest'
      security: *ref_10
      summary: Search all access requests for the data product
      tags:
        - Data Product
        - Access Request
  /api/data-product/{id}/request/masking-exception:
    post:
      description: >-
        Create a new masking exception request for specific columns in the
        specified data product
      operationId: requestMaskingException
      parameters:
        - name: id
          required: true
          in: path
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateMaskingExceptionRequest'
      responses:
        '201':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HydratedAccessRequest'
      security: *ref_10
      summary: Request masking exception to columns in a data product
      tags:
        - Data Product
        - Access Request
  /api/data-product/{id}/request/{requestId}:
    delete:
      description: >-
        Updates the specified access request to revoked and revokes access to
        data sources associated with the data product
      operationId: revokeAccess
      parameters:
        - name: id
          required: true
          in: path
          schema:
            type: string
        - name: requestId
          required: true
          in: path
          schema:
            type: string
      responses:
        '204':
          description: ''
      security: *ref_10
      summary: Revoke access to a data product
      tags:
        - Data Product
        - Access Request
  /api/data-product/{id}/datasources/all:
    get:
      description: Get all data sources in the data product
      operationId: getAllDataSources
      parameters:
        - name: id
          required: true
          in: path
          schema:
            type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AllDataSources'
      security: *ref_10
      summary: Get all data sources in the data product
      tags:
        - Data Product
        - Data Source
  /api/data-product/{id}/recent-determinations:
    get:
      description: >-
        Returns 5 most recent data access requests with a terminal status as
        well as the approval records which contributed to that status.
      operationId: recentDeterminations
      parameters:
        - name: id
          required: true
          in: path
          schema:
            type: string
        - name: type
          required: false
          in: query
          schema:
            default: DATA_ACCESS
            type: string
            enum:
              - DATA_ACCESS
              - MASKING_EXCEPTION
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RecentDeterminations'
      security: *ref_10
      summary: Returns 5 most recent manual access determinations
      tags:
        - Data Product
        - Access Request
  /api/data-product/{id}/request-forms:
    get:
      description: Get all the request forms for the specified data product
      operationId: getRequestForms
      parameters:
        - name: id
          required: true
          in: path
          schema:
            type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/DataProductRequestForm'
      security: *ref_10
      summary: View all request forms for a data product
      tags:
        - Data Product
        - Request Form
  /api/data-product/{id}/columns:
    get:
      description: Search and filter columns in the data product using the provided filters
      operationId: searchDataProductColumns
      parameters:
        - name: id
          required: true
          in: path
          schema:
            type: string
        - name: offset
          required: false
          in: query
          schema:
            minimum: 0
            default: 0
            type: number
        - name: limit
          required: false
          in: query
          schema:
            minimum: 1
            default: 10
            type: number
        - name: sortOrder
          required: false
          in: query
          schema:
            default: asc
            type: string
            enum:
              - asc
              - desc
        - name: searchText
          required: false
          in: query
          description: Search text to filter data source columns
          schema:
            type: string
        - name: maskedOnly
          required: false
          in: query
          description: Whether to filter columns that have a masking policy applied to them
          schema:
            default: false
            type: boolean
        - name: tagIds
          required: false
          in: query
          schema:
            m

# --- truncated at 32 KB (1541 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/immuta/refs/heads/main/openapi/immuta-marketplace-api-openapi.yml