---
title: "Approve review records"
method: POST
path: "/reference-data/v1/reviews/{reviewDatasetUrn}/approve"
tags: ["Reference data"]
---

# Approve review records

`POST /reference-data/v1/reviews/{reviewDatasetUrn}/approve`

## Request

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

After review, approve the changes to move them back to draft for publishing.

Optionally accepts a filter to approve only specific records.
If no filter is provided, all records in the review are approved.

Approval does not publish the records.
Publishing is a separate, still-required step. Use the [Publish draft changes](#tag/reference-data/POST/reference-data/v1/tables/{tableUrn}/draft/publish) operation to make approved changes visible in the published dataset.

Returns `409 Conflict` when the approval cannot proceed in the current state of the review. The problem `type` tells why:
- `NO_ELIGIBLE_RECORDS`: no records of the review match the request.
- `EFFECTIVE_DATE_RULES_VIOLATED`: records break the effective date rules of the table.

## Path parameters

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

## Request body

- ReviewRecordsResolutionInput: Input for approving or rejecting review records.
  - `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 `200`

Records approved successfully.

- ReviewRecordsResolutionResult
  - `affectedRecordCount` integer, required: Number of records that were approved or rejected.

## 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 approval cannot proceed in the current state of the review.

---

[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)
