> ## Documentation Index
> Fetch the complete documentation index at: https://docs.mangrovesystems.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Approve Corrections

> Hold a substitute rule's data corrections for approval, review each proposed correction, approve or reject it, and see what a waiting proposal blocks.

A proposed correction is a data correction a substitute rule has worked out but not written: the data point keeps its measured value until a person approves it. A substitute rule normally writes its corrections as soon as a method produces a value. Turn on [**Hold for approval**](/data-rules/create-a-rule#holding-corrections-for-approval) on the rule's Then step and it proposes them instead, and someone on your team approves or rejects each proposal. A rule that corrects many data points raises as many proposals. This page covers finding the proposals, deciding them, and what a waiting proposal blocks in the meantime. Substitutions, and approval with them, are enabled per account.

## Where proposed corrections appear

The same proposals show in five places:

| Location                  | What you see                                                                                                                                                                                                                          |
| ------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Events table**          | **Needs attention** on the toolbar carries a **Data points to review** queue with a count. Pick it and the table narrows to the values with a proposal waiting, each marked **Correction pending approval** in the **Status** column. |
| **Rules list**            | A rule with proposals waiting carries a **waiting** count.                                                                                                                                                                            |
| **Rule detail page**      | A **Waiting on approval** card shows how many proposals are waiting, how old the oldest is, and a **Review** button that opens them.                                                                                                  |
| **Event Detail drawer**   | The data point shows **Correction proposed**, the value the rule would write, and the method that produced it.                                                                                                                        |
| **Batch generation form** | Inputs with a proposal waiting are listed on a **Needs approval** tab.                                                                                                                                                                |

## Approve or reject a proposed correction

<Steps>
  <Step title="Open the data point">
    From the Events table or the rule's **Review** button, click the row to open the **Event Detail** drawer. The proposal card shows the measured value, the value the rule proposes, the method that produced it, and how it arrived at the number.
  </Step>

  <Step title="Approve or reject">
    Two choices:

    * **Use** the proposed value, which approves it. The correction is written exactly as proposed, and the value a batch calculation reads changes. The data point shows an **Approved** badge, with who approved it and when behind **Approval details**.
    * **Keep** the measured value, which rejects it. Give a reason. The proposal is closed and recorded with your reason, and the value stays as measured.

    Either decision is final for that proposal.
  </Step>
</Steps>

Deciding a proposal needs write access on the account, in the app and over the API.

## What a waiting proposal blocks

A data point with an undecided proposal cannot go into a new batch. The batch generation form flags those inputs before you press anything, and **Generate** stops with a message naming how many inputs are waiting until each is approved or rejected. Batches already generated are not affected. See [Generate batches](/production-accounting/generate-batches). If you need to generate before deciding them, switch **Hold for approval** off on the rule, which withdraws them (below).

## Switching approval off

Turning **Hold for approval** off on a rule withdraws every proposal still waiting on it. Nobody approved them, so those data points keep their measured values and are not corrected unless you evaluate the period again from the rule's **Runs** tab. Data points the rule matches from then on are corrected automatically. The confirmation counts the proposals it will withdraw before you save.

## Approving corrections over the API

Proposals appear in the rule's [results](/api-reference/data-rules/results) with `approval_state` set to `pending` and a `proposed_correction` object carrying the value, the method, and its derivation. Decide them with [approve](/api-reference/data-rules/approve) and [reject](/api-reference/data-rules/reject), which take the result's ID. Both need a token with **Data Rules** write permission. See [deciding proposals over the API](/api-reference/cookbooks/substitute-values#deciding-proposals-over-the-api) for the flow end to end.
