> ## 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 a proposed correction

> Writes the correction a substitute rule proposed, exactly as proposed: the recorded value, method and derivation are applied as they stand, and the data point's value changes. Only a result whose `approval_state` is `pending` can be approved, and a decision is final. Requires corrections to be enabled on the account and a token with Data Rules write permission.



## OpenAPI

````yaml POST /projects/{project_id}/rule_results/{id}/approve
openapi: 3.1.0
info:
  title: Mangrove - API
  version: 1.1.0
servers:
  - url: https://app.gomangrove.com/api/v1
security:
  - sec0: []
paths:
  /projects/{project_id}/rule_results/{id}/approve:
    post:
      summary: Approve a proposed correction
      description: >-
        Writes the correction a substitute rule proposed, exactly as proposed:
        the recorded value, method and derivation are applied as they stand, and
        the data point's value changes. Only a result whose `approval_state` is
        `pending` can be approved, and a decision is final. Requires corrections
        to be enabled on the account and a token with Data Rules write
        permission.
      operationId: approve-rule-result
      parameters:
        - name: project_id
          in: path
          schema:
            type: string
          required: true
        - name: id
          in: path
          description: >-
            Rule-result friendly ID in the `dpres_XXXX` syntax, from the rule's
            results list.
          schema:
            type: string
          required: true
      responses:
        '200':
          description: The approved result.
          content:
            application/json:
              examples:
                Result:
                  value:
                    data:
                      id: dpres_AbCd1234567890Ef
                      status: pass
                      entered_value: '0.0'
                      corrected: null
                      rule_id: rule_Qb3k9TzdL0pWnXyz
                      rule_version: 1
                      rule_name: Fill ambient temperature dropouts
                      data_point_id: in_AbCd1234567890Ef
                      data_point_slug: ambient-temperature-c
                      dismissed_at: null
                      dismissed_by: null
                      dismissal_reason: null
                      rejected_at: null
                      rejected_by: null
                      rejection_reason: null
                      approval_state: approved
                      proposed_correction: null
                      evaluated_at: '2026-09-03T08:15:00.000Z'
        '403':
          description: >-
            Corrections are not enabled on the account, the token lacks Data
            Rules write permission, or the token's user does not have write
            access on the account.
          content:
            application/json:
              examples:
                Corrections not enabled:
                  value:
                    errors:
                      - message: Corrections are not enabled
                Not an approver:
                  value:
                    errors:
                      - code: not_approver
                        message: You are not permitted to approve this correction.
        '404':
          description: '404'
          content:
            application/json:
              examples:
                Result:
                  value:
                    errors:
                      - message: Record not found
        '422':
          description: >-
            The proposal cannot be approved. `code` is one of `not_pending`,
            `stale_value`, `stale_rule_version`, `reported_value`,
            `unreachable_proposal`, `invalid_proposal`, `unsupported_proposal`
            or `already_applied`.
          content:
            application/json:
              examples:
                Already decided:
                  value:
                    errors:
                      - code: not_pending
                        message: This correction is no longer waiting on approval.
                Value changed since:
                  value:
                    errors:
                      - code: stale_value
                        message: The value changed since this correction was proposed.
      deprecated: false
components:
  securitySchemes:
    sec0:
      type: apiKey
      in: header
      name: Authorization
      x-bearer-format: ''

````