# ProposalWorkspaceReview

[All API schemas](/api-reference/schemas/)

<code>object</code> — Additional properties rejected

| Field | Required at this level | Type | Description and constraints |
| --- | --- | --- | --- |
| <code>schemaVersion</code> | Yes | Constant <code>proposal-review-view-v1</code> | — |
| <code>proposal</code> | Yes | <code>object</code> | Additional properties rejected |
| <code>proposal.id</code> | Yes | <code>string</code> | — |
| <code>proposal.organizationId</code> | Yes | <code>string</code> | — |
| <code>proposal.recordType</code> | Yes | [OperatingSystemRecordType](/api-reference/schemas/operating-system-record-type/) | — |
| <code>proposal.version</code> | Yes | <code>integer</code> | Minimum: <code>1</code> |
| <code>proposal.status</code> | Yes | [OperatingSystemRecordStatus](/api-reference/schemas/operating-system-record-status/) | — |
| <code>proposal.payload</code> | Yes | [ProposalWorkspace](/api-reference/schemas/proposal-workspace/) | — |
| <code>proposal.artifactHash</code> | Yes | [Hash](/api-reference/schemas/hash/) | — |
| <code>proposal.evidenceHashes</code> | Yes | Array of [Hash](/api-reference/schemas/hash/) | — |
| <code>proposal.createdBy</code> | Yes | <code>string</code> | — |
| <code>proposal.reason</code> | Yes | <code>string</code> | — |
| <code>proposal.requestId</code> | Yes | <code>string</code> | — |
| <code>proposal.createdAt</code> | Yes | <code>string</code> | Format: <code>date-time</code> |
| <code>proposal.updatedAt</code> | Yes | <code>string</code> | Format: <code>date-time</code> |
| <code>proposal.supersedesVersion</code> | No | <code>integer</code> | Minimum: <code>1</code> |
| <code>proposal.resourceVersion</code> | Yes | [Hash](/api-reference/schemas/hash/) | — |
| <code>proposalPacketHash</code> | Yes | [Hash](/api-reference/schemas/hash/) | — |
| <code>reviewEvidenceHash</code> | Yes | [Hash](/api-reference/schemas/hash/) | — |
| <code>observedAt</code> | Yes | <code>string</code> | Format: <code>date-time</code> |
| <code>approvals</code> | Yes | Array of <code>object</code> | — |
| <code>approvals&#91;&#93;.actorId</code> | Yes | <code>string</code> | — |
| <code>approvals&#91;&#93;.decidedAt</code> | Yes | <code>string</code> | Format: <code>date-time</code> |
| <code>approvals&#91;&#93;.evidenceHash</code> | Yes | <code>string</code> | Pattern: <code>^0x&#91;0-9a-fA-F&#93;{64}$</code> |
| <code>approvalProgress</code> | Yes | <code>object</code> | Additional properties rejected |
| <code>approvalProgress.approved</code> | Yes | <code>integer</code> | Minimum: <code>0</code> |
| <code>approvalProgress.required</code> | Yes | <code>integer</code> | Minimum: <code>0</code> |
| <code>decisions</code> | Yes | Array of [ProposalReviewDecisionEvent](/api-reference/schemas/proposal-review-decision-event/) | — |
| <code>comments</code> | Yes | Array of [ProposalReviewCommentEvent](/api-reference/schemas/proposal-review-comment-event/) | — |
| <code>safeSubmissions</code> | Yes | Array of [ProposalReviewSafeSubmissionEvent](/api-reference/schemas/proposal-review-safe-submission-event/) | — |
| <code>viewer</code> | Yes | <code>object</code> | Additional properties rejected |
| <code>viewer.actorId</code> | Yes | <code>string</code> | — |
| <code>viewer.role</code> | Yes | <code>string</code> | — |
| <code>viewer.hasApproved</code> | Yes | <code>boolean</code> | — |
| <code>viewer.mayComment</code> | Yes | <code>boolean</code> | — |
| <code>viewer.mayApprove</code> | Yes | <code>boolean</code> | — |
| <code>viewer.mayReject</code> | Yes | <code>boolean</code> | — |
| <code>executionAuthorityGranted</code> | Yes | Constant <code>false</code> | — |

Nested required fields apply when their parent object or matching union branch is present. Named types link to their complete schema.

Exact definition: <code>#/components/schemas/ProposalWorkspaceReview</code> in the [OpenAPI contract](/openapi/liquidity-operating-system-v2.openapi.json).