object — Additional properties rejected
| Field | Required at this level | Type | Description and constraints |
|---|---|---|---|
kind |
Yes | Constant PROPOSAL_REVIEW |
— |
question |
Yes | string |
Min length: 3; Max length: 2000 |
subject |
Yes | Exactly one of: object; object; object |
— |
subject.oneOf[1].generation |
Yes | Constant V1 |
— |
subject.oneOf[1].proposalId |
Yes | string |
Pattern: ^[a-zA-Z0-9][a-zA-Z0-9:_-]{2,159}$ |
subject.oneOf[1].expectedUpdatedAt |
Yes | string |
Format: date-time |
subject.oneOf[2].generation |
Yes | Constant V2 |
— |
subject.oneOf[2].proposalId |
Yes | string |
Pattern: ^[a-zA-Z0-9][a-zA-Z0-9:_-]{2,159}$ |
subject.oneOf[2].expectedResourceVersion |
Yes | string |
Pattern: ^0x[0-9a-f]{64}$ |
subject.oneOf[3].generation |
Yes | Constant DECISION_PACK |
— |
subject.oneOf[3].packId |
Yes | string |
Pattern: ^decisionpack_[a-f0-9]{32}$ |
subject.oneOf[3].expectedResourceVersion |
Yes | string |
Pattern: ^0x[0-9a-f]{64}$ |
subject.oneOf[3].expectedContentHash |
Yes | string |
Pattern: ^0x[0-9a-f]{64}$ |
Nested required fields apply when their parent object or matching union branch is present. Named types link to their complete schema.
Exact definition: #/components/schemas/ProposalReviewAdmissionRequest in the OpenAPI contract.