CyberRXN Docs
APIAPI reference

Review a report and optionally approve a typed overlay

POST /v1/reports/{report_id}/review

POST /v1/reports/{report_id}/review

API overview · OpenAPI

Verified web sessions whose user ID is explicitly configured in FEEDBACK_REVIEWERS only; workspace owner/admin roles, API keys and external OAuth clients cannot approve corrections. Acceptance rechecks the current trusted record digest and identity, requires a typed condition patch, and appends immutable history. A changed record returns 409 and needs_revalidation. Rejection and requests for more information do not alter the source record. Review requests are idempotent.

Authorization

This operation requires a bearer credential. The description defines additional role, scope or first-party-session restrictions; an API key does not grant those permissions by itself.

Parameters

PropertyTypeRequiredDetails
report_id (path)stringyes

Request body

PropertyTypeRequiredDetails
decision"accepted" ∣ "rejected" ∣ "needs_information"yes
rationalestringyes
idempotency_keystringyes
patchCorrectionPatch ∣ nullno
Full schema: ReportReview
{
  "properties": {
    "decision": {
      "type": "string",
      "enum": [
        "accepted",
        "rejected",
        "needs_information"
      ],
      "title": "Decision"
    },
    "rationale": {
      "type": "string",
      "maxLength": 2000,
      "minLength": 10,
      "title": "Rationale"
    },
    "idempotency_key": {
      "type": "string",
      "maxLength": 128,
      "minLength": 8,
      "pattern": "^[A-Za-z0-9_.:-]+$",
      "title": "Idempotency Key"
    },
    "patch": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/CorrectionPatch"
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "decision",
    "rationale",
    "idempotency_key"
  ],
  "title": "ReportReview"
}

Responses

HTTPDetailsType
200Successful Responseapplication/json: ObservationReport
401Unauthorizedapplication/problem+json: ProblemDetails
403Forbiddenapplication/problem+json: ProblemDetails
404Not Foundapplication/problem+json: ProblemDetails
409Conflictapplication/problem+json: ProblemDetails
413Request Entity Too Largeapplication/problem+json: ProblemDetails
422Unprocessable Entityapplication/problem+json: ProblemDetails
429Too Many Requestsapplication/problem+json: ProblemDetails
502Bad Gatewayapplication/problem+json: ProblemDetails
503Service Unavailableapplication/problem+json: ProblemDetails

Response: ObservationReport

PropertyTypeRequiredDetails
idstringyes
observation_idstringyes
category"field_conflict" ∣ "stage_misattribution" ∣ "missing_source" ∣ "structure_mismatch" ∣ "other"yes
summarystringyes
evidence_quotestring ∣ nullno
proposed_patchCorrectionPatch ∣ nullno
state"pending" ∣ "accepted" ∣ "rejected" ∣ "needs_information" ∣ "needs_revalidation"yes
created_atstringyes
updated_atstringyes
referenceReportReferenceyes
reviewReviewedDecision ∣ nullno
correctionCorrectionVersion ∣ nullno
Full schema
{
  "properties": {
    "id": {
      "type": "string",
      "title": "Id"
    },
    "observation_id": {
      "type": "string",
      "title": "Observation Id"
    },
    "category": {
      "type": "string",
      "enum": [
        "field_conflict",
        "stage_misattribution",
        "missing_source",
        "structure_mismatch",
        "other"
      ],
      "title": "Category"
    },
    "summary": {
      "type": "string",
      "title": "Summary"
    },
    "evidence_quote": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Evidence Quote"
    },
    "proposed_patch": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/CorrectionPatch"
        },
        {
          "type": "null"
        }
      ]
    },
    "state": {
      "type": "string",
      "enum": [
        "pending",
        "accepted",
        "rejected",
        "needs_information",
        "needs_revalidation"
      ],
      "title": "State"
    },
    "created_at": {
      "type": "string",
      "title": "Created At"
    },
    "updated_at": {
      "type": "string",
      "title": "Updated At"
    },
    "reference": {
      "$ref": "#/components/schemas/ReportReference"
    },
    "review": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/ReviewedDecision"
        },
        {
          "type": "null"
        }
      ]
    },
    "correction": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/CorrectionVersion"
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "additionalProperties": true,
  "type": "object",
  "required": [
    "id",
    "observation_id",
    "category",
    "summary",
    "state",
    "created_at",
    "updated_at",
    "reference"
  ],
  "title": "ObservationReport"
}

This page is generated from OpenAPI; examples are schemas, not a fabricated successful response.

Usage and billing · Structured errors

On this page