CyberRXN Docs
APIAPI reference

Independently review a contribution for the shared corpus

POST /v1/contributions/{contribution_id}/review

POST /v1/contributions/{contribution_id}/review

API overview · OpenAPI

Designated verified web-session staff only. Acceptance requires fresh valid strict chemistry, unchanged canonical reaction identity and explicit source_verified, license_verified and quality_approved. The domain publishes the accepted observation and grants any eligible validation bonus atomically and idempotently. Ordinary owners/admins, API keys and external MCP clients cannot approve contributions.

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
contribution_id (path)stringyes

Request body

PropertyTypeRequiredDetails
decision"accepted" ∣ "rejected" ∣ "needs_review"yes
rationalestringyes
idempotency_keystringyes
source_verifiedboolean ∣ nullno
license_verifiedboolean ∣ nullno
quality_approvedboolean ∣ nullno
Full schema: ContributionReview
{
  "properties": {
    "decision": {
      "type": "string",
      "enum": [
        "accepted",
        "rejected",
        "needs_review"
      ],
      "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"
    },
    "source_verified": {
      "anyOf": [
        {
          "type": "boolean"
        },
        {
          "type": "null"
        }
      ],
      "title": "Source Verified"
    },
    "license_verified": {
      "anyOf": [
        {
          "type": "boolean"
        },
        {
          "type": "null"
        }
      ],
      "title": "License Verified"
    },
    "quality_approved": {
      "anyOf": [
        {
          "type": "boolean"
        },
        {
          "type": "null"
        }
      ],
      "title": "Quality Approved"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "decision",
    "rationale",
    "idempotency_key"
  ],
  "title": "ContributionReview"
}

Responses

HTTPDetailsType
200Successful Responseapplication/json: ReactionContribution
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: ReactionContribution

PropertyTypeRequiredDetails
idstringyes
observation_idstringyes
reaction_smilesstringyes
canonical_reaction_smilesstring ∣ nullyes
sourceContributionSourceyes
conditionsContributionConditions ∣ nullno
summarystring ∣ nullno
state"pending" ∣ "needs_review" ∣ "accepted" ∣ "rejected" ∣ "duplicate"yes
created_atstringyes
updated_atstringyes
validationContributionValidationyes
rewardsContributionRewardsyes
reviewReviewedDecision ∣ nullno
duplicate_ofstring ∣ nullno
Full schema
{
  "properties": {
    "id": {
      "type": "string",
      "title": "Id"
    },
    "observation_id": {
      "type": "string",
      "title": "Observation Id"
    },
    "reaction_smiles": {
      "type": "string",
      "title": "Reaction Smiles"
    },
    "canonical_reaction_smiles": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Canonical Reaction Smiles"
    },
    "source": {
      "$ref": "#/components/schemas/ContributionSource"
    },
    "conditions": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/ContributionConditions"
        },
        {
          "type": "null"
        }
      ]
    },
    "summary": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Summary"
    },
    "state": {
      "type": "string",
      "enum": [
        "pending",
        "needs_review",
        "accepted",
        "rejected",
        "duplicate"
      ],
      "title": "State"
    },
    "created_at": {
      "type": "string",
      "title": "Created At"
    },
    "updated_at": {
      "type": "string",
      "title": "Updated At"
    },
    "validation": {
      "$ref": "#/components/schemas/ContributionValidation"
    },
    "rewards": {
      "$ref": "#/components/schemas/ContributionRewards"
    },
    "review": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/ReviewedDecision"
        },
        {
          "type": "null"
        }
      ]
    },
    "duplicate_of": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Duplicate Of"
    }
  },
  "additionalProperties": true,
  "type": "object",
  "required": [
    "id",
    "observation_id",
    "reaction_smiles",
    "canonical_reaction_smiles",
    "source",
    "state",
    "created_at",
    "updated_at",
    "validation",
    "rewards"
  ],
  "title": "ReactionContribution"
}

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

Usage and billing · Structured errors

On this page