---
title: "Resolve several validation issues at once"
method: PATCH
path: "/raw_data/{raw_data_id}/issues"
tags: ["Raw Data"]
---

# Resolve several validation issues at once

`PATCH /raw_data/{raw_data_id}/issues`

Apply a reviewer's answers to several findings in one request.

Every choice is validated before any is written, so an invalid option in
the batch rejects the whole request rather than half-applying it. The
response reports whether the file is now ready to retry.

## Path parameters

- `raw_data_id` string, required

## Request body

- ResolveIssuesRequest — Body for resolving several findings on one file in a single call. A reviewer usually faces several findings at once, and resolving them one request at a time makes the UI's "save my answers" button non-atomic.
  - `resolutions` object, required — Chosen option id, keyed by issue id.

## Response `200`

Successful Response

- ResolveIssuesResponse — Result of a bulk resolve.
  - `resolved` integer, required — Findings updated.
  - `issues` RawDataIssue[] — Every finding on the file, post-update.
    - `id` string, nullable — Row id once persisted; None for freshly parsed issues.
    - `code` string, required — Stable machine-readable code — an ionworks IssueCode value or an engine-specific code. Branch on this, never on title/detail.
    - `severity` 'auto_fixed' | 'warning' | 'needs_input' | 'blocking', required — Whether this blocks ingestion and how it is displayed.
    - `title` string, required — Plain-English title, no error codes.
    - `detail` string — One-paragraph explanation.
    - `payload` object — Structured details: columns, observed values, row ranges.
    - `fix_summary` string, nullable — For auto_fixed issues: short description of what changed.
    - `resolution` 'accept' | 'reject' | 'change_cell', nullable — Reviewer decision; None while unresolved.
    - `resolved_by` string, nullable — User who resolved it.
    - `resolved_at` string, date-time, nullable — Resolution timestamp.
    - `options` FixOption[], required — Choices available for this finding. Derived from ``code`` and ``severity`` rather than stored, so the catalogue can grow without a migration and can never drift from what :meth:`resolve` actually accepts.
      - `id` 'accept' | 'reject' | 'change_cell', required — Value to send back as the resolution.
      - `label` string, required — Plain-English button label.
      - `detail` string — What choosing this will do.
      - `recommended` boolean — Whether this is the engine's suggested choice.
  - `ready_to_retry` boolean, required — True when no finding still blocks ingestion, so the file can be retried immediately.

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.dev/ionworks/apis/fastapi.md) · [All operations](https://skmtc.dev/ionworks/apis/fastapi/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/ionworks/fastapi/revisions/7337a3cbdaf2/schema)
