---
search:
  tags:
    - proposals
    - PATCH
seo:
  description: >-
    Revise an open proposal and increment its version (scope proposals:write).
    Reference for the PATCH /api/v1/proposals/{id} endpoint in the Basenet
    Public API.
sidebar:
  label: Revise an open proposal and increment its version (scope proposals:write)
  badge: PATCH
title: Revise an open proposal and increment its version (scope proposals:write)
type: openapi-operation
---
Endpoint: `PATCH /api/v1/proposals/{id}`

Authentication: `bearerAuth` (Scoped API token (bnx\_…). Required scopes are noted per operation.)

Parameters:
- `id` (in path, string, required)

Request body (`application/json`):
- `input` (object, optional)
- `rationale` (string, optional)
- `evidence` (array of string, optional)
- `riskFlags` (array of string, optional)

Responses:
- `200`: Revised proposal
- `400`: Invalid request
- `401`: Unauthenticated
- `403`: Forbidden (missing scope or permission)
- `404`: Not found
- `409`: Proposal cannot be revised
- `429`: Rate limited

Response 200 body (`application/json`):
- `proposal` (object, required)
- `proposal.id` (string, required)
- `proposal.capabilityId` (string, required)
- `proposal.status` (one of `"open"`, `"accepted"`, `"committed"`, `"cancelled"`, `"expired"`, required)
- `proposal.version` (integer, required)
- `proposal.input` (object, required)
- `proposal.rationale` (string or null, required)
- `proposal.evidence` (any, optional)
- `proposal.metadata` (object, required)
- `proposal.metadata.duplicateMatches` (array of object, optional)
- `proposal.metadata.confirmDuplicates` (one of `true`, optional)
- `proposal.riskFlags` (array of string or null, required)
- `proposal.expiresAt` (string or null, required)
- `proposal.createdAt` (string, required)
- `proposal.updatedAt` (string, required)
