---
title: "Submit draft changes for review"
method: POST
path: "/reference-data/v1/tables/{tableUrn}/draft/request-review"
tags: ["Reference data"]
---

# Submit draft changes for review

`POST /reference-data/v1/tables/{tableUrn}/draft/request-review`

## Request

- Base URL: `https://your-environment.ataccama.one/api`
- URL: `https://your-environment.ataccama.one/api/reference-data/v1/tables/{tableUrn}/draft/request-review`
- Auth: HTTP bearer
- TypeScript: <https://skmtc.dev/ataccama/apis/ataccama-one-agentic-data-trust-platform-public-api/docs/reference-data/v1/tables/:tableUrn/draft/request-review/post.ts> (a function with typed inputs; its response is checked against the schema)

Submit draft changes for review by creating a review task.

Use the review workflow for governed data or changes that require approval, and for sensitive or business-critical reference data.

Optionally accepts a filter to submit only specific records.
If no filter is provided, all eligible draft records are submitted.

Submitting copies the matching draft records into a new review dataset, so a table can have more than one open review.
When a review is published, the remaining draft records are rebased onto the latest published version.

Save the `reviewDatasetUrn` returned in the response, as you need it to list, approve, or reject the records under review.

Returns `409 Conflict` when the submission cannot proceed in the current state of the draft. The problem `type` tells why:
- `NO_ELIGIBLE_RECORDS`: the draft contains no changes to submit, or the filter matches none.
- `DQ_BLOCKING_RULES_VIOLATED`: data quality blocking rules fail, on this table or on a referencing table whose records reference the changed records.
- `EFFECTIVE_DATE_RULES_VIOLATED`: records break the effective date rules of the table.

## Path parameters

- `tableUrn` string, uri, required: A URN identifying a table resource in the Reference Data API. Format: urn:ata:{tenant}:reference-data:table:{uuid} Example: urn:ata:acme-corp:reference-data:table:123e4567-e89b-12d3-a456-426614174000.

## Request body

- SubmitForReviewInput: Input for submitting draft changes for review.
  - `name` string, required: Review task name.
  - `priority` string, required: @ExtensibleEnum Priority level of a review task.
  - `description` string: Detailed description of the changes submitted for review.
  - `filter` RecordFilter: Filter for reference data records, supporting complex queries with logical and comparison operators. Filter by attribute values (string, number, date, Boolean), record URN, record state, or when and by whom the record was last changed, and combine conditions with the logical operators `and` (all conditions must match) and `or` (at least one condition must match). Example — multiple conditions: ```json {"filter": {"and": [ {"attribute": { "attributeName": {"equals": "population"}, "number": {"greaterOrEqual": 1000000}}}, {"attribute": { "attributeName": {"equals": "country_name"}, "string": {"contains": "United"}}} ]}} ``` Example — date range: ```json {"filter": {"attribute": { "attributeName": {"equals": "created_date"}, "date": { "onOrAfter": "2024-01-01T00:00:00Z", "before": "2024-12-31T23:59:59Z"}}}} ``` Example — records changed by one user since a point in time: ```json {"filter": {"and": [ {"lastChangedAt": {"onOrAfter": "2026-09-01T00:00:00Z"}}, {"lastChangedByUrn": {"equals": "urn:ata:acme-corp:iam:user:jane.doe@acme-corp.com"}} ]}} ```
    - `and` RecordFilter[]: All nested conditions must match.
    - `or` RecordFilter[]: At least one nested condition must match.
    - `recordUrn` IdFilter
      - `equals` string, uri: A URN identifying a resource in any realm of the Public API. URNs follow RFC 8141. Format: urn:ata:{tenant}:{realm}:{resource-type}:{uuid} Components: - `urn` — fixed scheme - `ata` — Ataccama namespace - `{tenant}` — tenant identifier from the authentication context - `{realm}` — API realm, for example `catalog` or `reference-data` - `{resource-type}` — resource type within the realm, for example `catalog-item` or `table` - `{uuid}` — UUID (v4 or v7) of the resource Example: urn:ata:acme-corp:reference-data:table:123e4567-e89b-12d3-a456-426614174000.
      - `notEquals` string, uri: A URN identifying a resource in any realm of the Public API. URNs follow RFC 8141. Format: urn:ata:{tenant}:{realm}:{resource-type}:{uuid} Components: - `urn` — fixed scheme - `ata` — Ataccama namespace - `{tenant}` — tenant identifier from the authentication context - `{realm}` — API realm, for example `catalog` or `reference-data` - `{resource-type}` — resource type within the realm, for example `catalog-item` or `table` - `{uuid}` — UUID (v4 or v7) of the resource Example: urn:ata:acme-corp:reference-data:table:123e4567-e89b-12d3-a456-426614174000.
      - `in` Urn[]
      - `notIn` Urn[]
    - `state` StateFilter: Filter records by their state, matching any (`in`) or none (`notIn`) of the listed states.
      - `in` RecordState[]
      - `notIn` RecordState[]
    - `attribute` DataAttributeFilter: Filter records by the value of one attribute. Select the attribute with `attributeName` and apply the operator block matching the attribute's data type (`string`, `number`, `date`, or `boolean`).
      - `attributeName` object, required
        - `equals` string: Attribute name to filter on.
      - `string` StringFilter: Filter for string fields. Supported operators: - `contains` / `notContains`: Substring match. - `equals` / `notEquals`: Exact match. - `in` / `notIn`: Match any value in the array. - `isNull` / `isNotNull`: Check whether the field is null.
        - `contains` string
        - `notContains` string
        - `equals` string
        - `notEquals` string
        - `isNull` boolean
        - `isNotNull` boolean
        - `in` string[]
        - `notIn` string[]
      - `number` NumberFilter
        - `equals` number, float
        - `notEquals` number, float
        - `greater` number, float
        - `greaterOrEqual` number, float
        - `less` number, float
        - `lessOrEqual` number, float
        - `isNull` boolean
        - `isNotNull` boolean
        - `in` number[]
        - `notIn` number[]
      - `date` DateFilter: Range-only date-time filter. Bounds combine into half-open or closed ranges (`{onOrAfter: A, before: B}` = [A, B)). Use this where only range predicates are supported; `DateFilter` extends it with equality, set and null operators.
        - `after` string, date-time
        - `onOrAfter` string, date-time
        - `before` string, date-time
        - `onOrBefore` string, date-time
        - `equals` string, date-time
        - `notEquals` string, date-time
        - `isNull` boolean
        - `isNotNull` boolean
        - `in` string[]
        - `notIn` string[]
      - `boolean` BooleanFilter
        - `equals` boolean
        - `notEquals` boolean
        - `isNull` boolean
        - `isNotNull` boolean
      - `referencing` RecordFilter (recursive)
    - `lastChangedAt` DateFilter: Range-only date-time filter. Bounds combine into half-open or closed ranges (`{onOrAfter: A, before: B}` = [A, B)). Use this where only range predicates are supported; `DateFilter` extends it with equality, set and null operators.
      - `after` string, date-time
      - `onOrAfter` string, date-time
      - `before` string, date-time
      - `onOrBefore` string, date-time
      - `equals` string, date-time
      - `notEquals` string, date-time
      - `isNull` boolean
      - `isNotNull` boolean
      - `in` string[]
      - `notIn` string[]
    - `lastChangedByUrn` UserUrnFilter
      - `equals` string, uri: A URN identifying a user in the IAM API. Unlike most URNs, the last segment is the user ID as IAM knows it rather than a UUID. A user ID can be any string, for example, an email address, a UUID, or `service-account-{client ID}` for an API client. Characters that a URN cannot contain, such as spaces, `%`, or `#`, are percent-encoded as UTF-8 with uppercase hex digits; all other characters are kept as they are. Users cannot be listed or retrieved through the public API. To find a user's ID, open the user in the web application (**Global settings > User management > Users**). Format: urn:ata:{tenant}:iam:user:{user ID} Example: urn:ata:acme-corp:iam:user:jane.doe@acme-corp.com.
      - `notEquals` string, uri: A URN identifying a user in the IAM API. Unlike most URNs, the last segment is the user ID as IAM knows it rather than a UUID. A user ID can be any string, for example, an email address, a UUID, or `service-account-{client ID}` for an API client. Characters that a URN cannot contain, such as spaces, `%`, or `#`, are percent-encoded as UTF-8 with uppercase hex digits; all other characters are kept as they are. Users cannot be listed or retrieved through the public API. To find a user's ID, open the user in the web application (**Global settings > User management > Users**). Format: urn:ata:{tenant}:iam:user:{user ID} Example: urn:ata:acme-corp:iam:user:jane.doe@acme-corp.com.
      - `in` UserUrn[]
      - `notIn` UserUrn[]

## Response `201`

Review created successfully.

- ReviewCreatedResponse: Response when a review is created, includes task metadata for the review task.
  - `reviewDatasetUrn` string, uri, required: A URN identifying a review dataset resource in the Reference Data API. Format: urn:ata:{tenant}:reference-data:review:{uuid} Example: urn:ata:acme-corp:reference-data:review:423e4567-e89b-12d3-a456-426614174003.
  - `taskMetadata` object, required: Metadata for the review task.
    - `name` string, required: Review task name.
    - `priority` string, required: @ExtensibleEnum Priority level of a review task.
    - `description` string: Description of the changes under review.
  - `createdAt` string, date-time, required: When the review was created.
  - `createdByUrn` string, uri: A URN identifying a user in the IAM API. Unlike most URNs, the last segment is the user ID as IAM knows it rather than a UUID. A user ID can be any string, for example, an email address, a UUID, or `service-account-{client ID}` for an API client. Characters that a URN cannot contain, such as spaces, `%`, or `#`, are percent-encoded as UTF-8 with uppercase hex digits; all other characters are kept as they are. Users cannot be listed or retrieved through the public API. To find a user's ID, open the user in the web application (**Global settings > User management > Users**). Format: urn:ata:{tenant}:iam:user:{user ID} Example: urn:ata:acme-corp:iam:user:jane.doe@acme-corp.com.

## Other responses

- `400`: Bad request. The request parameters or body are invalid.
- `403`: Forbidden. You do not have permission to access the requested resource.
- `404`: Not found. The requested resource does not exist.
- `409`: The submission cannot proceed in the current state of the draft.

---

[API](https://skmtc.dev/ataccama/apis/ataccama-one-agentic-data-trust-platform-public-api.md) - [All operations](https://skmtc.dev/ataccama/apis/ataccama-one-agentic-data-trust-platform-public-api/llms.txt) - [OpenAPI document](https://skmtc.dev/ataccama/apis/ataccama-one-agentic-data-trust-platform-public-api/revisions/46f16e0487f8?raw)
