# ResearchCandidateDecisionPack

[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>decision-pack-v2</code> | — |
| <code>organizationId</code> | Yes | <code>string</code> | Pattern: <code>^&#91;a-zA-Z0-9&#93;&#91;a-zA-Z0-9:&#95;-&#93;{2,159}$</code> |
| <code>packId</code> | Yes | <code>string</code> | Pattern: <code>^decisionpack&#95;&#91;a-f0-9&#93;{32}$</code> |
| <code>sequence</code> | Yes | <code>string</code> | Pattern: <code>^&#91;1-9&#93;&#91;0-9&#93;{0,17}$</code> |
| <code>resourceVersion</code> | Yes | <code>string</code> | Pattern: <code>^0x&#91;0-9a-f&#93;{64}$</code> |
| <code>createdAt</code> | Yes | <code>string</code> | Format: <code>date-time</code>; Pattern: <code>^&#40;?:&#40;?:&#92;d&#92;d&#91;2468&#93;&#91;048&#93;&#124;&#92;d&#92;d&#91;13579&#93;&#91;26&#93;&#124;&#92;d&#92;d0&#91;48&#93;&#124;&#91;02468&#93;&#91;048&#93;00&#124;&#91;13579&#93;&#91;26&#93;00&#41;-02-29&#124;&#92;d{4}-&#40;?:&#40;?:0&#91;13578&#93;&#124;1&#91;02&#93;&#41;-&#40;?:0&#91;1-9&#93;&#124;&#91;12&#93;&#92;d&#124;3&#91;01&#93;&#41;&#124;&#40;?:0&#91;469&#93;&#124;11&#41;-&#40;?:0&#91;1-9&#93;&#124;&#91;12&#93;&#92;d&#124;30&#41;&#124;&#40;?:02&#41;-&#40;?:0&#91;1-9&#93;&#124;1&#92;d&#124;2&#91;0-8&#93;&#41;&#41;&#41;T&#40;?:&#40;?:&#91;01&#93;&#92;d&#124;2&#91;0-3&#93;&#41;:&#91;0-5&#93;&#92;d&#40;?::&#91;0-5&#93;&#92;d&#40;?:&#92;.&#92;d+&#41;?&#41;?&#40;?:Z&#124;&#40;&#91;+-&#93;&#40;?:&#91;01&#93;&#92;d&#124;2&#91;0-3&#93;&#41;:&#91;0-5&#93;&#92;d&#41;&#41;&#41;$</code> |
| <code>recordedAt</code> | Yes | <code>string</code> | Format: <code>date-time</code>; Pattern: <code>^&#40;?:&#40;?:&#92;d&#92;d&#91;2468&#93;&#91;048&#93;&#124;&#92;d&#92;d&#91;13579&#93;&#91;26&#93;&#124;&#92;d&#92;d0&#91;48&#93;&#124;&#91;02468&#93;&#91;048&#93;00&#124;&#91;13579&#93;&#91;26&#93;00&#41;-02-29&#124;&#92;d{4}-&#40;?:&#40;?:0&#91;13578&#93;&#124;1&#91;02&#93;&#41;-&#40;?:0&#91;1-9&#93;&#124;&#91;12&#93;&#92;d&#124;3&#91;01&#93;&#41;&#124;&#40;?:0&#91;469&#93;&#124;11&#41;-&#40;?:0&#91;1-9&#93;&#124;&#91;12&#93;&#92;d&#124;30&#41;&#124;&#40;?:02&#41;-&#40;?:0&#91;1-9&#93;&#124;1&#92;d&#124;2&#91;0-8&#93;&#41;&#41;&#41;T&#40;?:&#40;?:&#91;01&#93;&#92;d&#124;2&#91;0-3&#93;&#41;:&#91;0-5&#93;&#92;d&#40;?::&#91;0-5&#93;&#92;d&#40;?:&#92;.&#92;d+&#41;?&#41;?&#40;?:Z&#124;&#40;&#91;+-&#93;&#40;?:&#91;01&#93;&#92;d&#124;2&#91;0-3&#93;&#41;:&#91;0-5&#93;&#92;d&#41;&#41;&#41;$</code> |
| <code>state</code> | Yes | <code>string</code> | Allowed: <code>DRAFT</code>, <code>READY&#95;FOR&#95;REVIEW</code>, <code>DECISION&#95;RECORDED</code>, <code>FOLLOW&#95;UP&#95;DUE</code>, <code>CLOSED</code>, <code>SUPERSEDED</code> |
| <code>scope</code> | Yes | Constant <code>RESEARCH&#95;CANDIDATE&#95;REVIEW</code> | — |
| <code>coverage</code> | Yes | Constant <code>PARTIAL</code> | — |
| <code>question</code> | Yes | <code>string</code> | Min length: <code>3</code>; Max length: <code>2000</code> |
| <code>project</code> | Yes | <code>object</code> | Additional properties rejected |
| <code>project.projectId</code> | Yes | <code>string</code> | Pattern: <code>^project&#95;&#91;0-9a-f&#93;{32}$</code> |
| <code>project.observationSequence</code> | Yes | <code>string</code> | Pattern: <code>^&#91;1-9&#93;&#91;0-9&#93;{0,17}$</code> |
| <code>project.resourceVersion</code> | Yes | <code>string</code> | Pattern: <code>^0x&#91;0-9a-f&#93;{64}$</code> |
| <code>healthReport</code> | Yes | At least one of: <code>object</code>; <code>null</code> | — |
| <code>healthReport.anyOf&#91;1&#93;.question</code> | Yes | <code>string</code> | Min length: <code>3</code>; Max length: <code>2000</code> |
| <code>healthReport.anyOf&#91;1&#93;.relation</code> | Yes | Constant <code>SUPPORTING&#95;EVIDENCE&#95;ONLY</code> | — |
| <code>healthReport.anyOf&#91;1&#93;.runId</code> | Yes | <code>string</code> | Pattern: <code>^&#91;a-zA-Z0-9&#93;&#91;a-zA-Z0-9:&#95;-&#93;{2,159}$</code> |
| <code>healthReport.anyOf&#91;1&#93;.resultVersion</code> | Yes | <code>string</code> | Pattern: <code>^0x&#91;0-9a-f&#93;{64}$</code> |
| <code>healthReport.anyOf&#91;1&#93;.captureHash</code> | Yes | <code>string</code> | Pattern: <code>^0x&#91;0-9a-f&#93;{64}$</code> |
| <code>healthReport.anyOf&#91;1&#93;.sourceCutoff</code> | Yes | <code>string</code> | Format: <code>date-time</code>; Pattern: <code>^&#40;?:&#40;?:&#92;d&#92;d&#91;2468&#93;&#91;048&#93;&#124;&#92;d&#92;d&#91;13579&#93;&#91;26&#93;&#124;&#92;d&#92;d0&#91;48&#93;&#124;&#91;02468&#93;&#91;048&#93;00&#124;&#91;13579&#93;&#91;26&#93;00&#41;-02-29&#124;&#92;d{4}-&#40;?:&#40;?:0&#91;13578&#93;&#124;1&#91;02&#93;&#41;-&#40;?:0&#91;1-9&#93;&#124;&#91;12&#93;&#92;d&#124;3&#91;01&#93;&#41;&#124;&#40;?:0&#91;469&#93;&#124;11&#41;-&#40;?:0&#91;1-9&#93;&#124;&#91;12&#93;&#92;d&#124;30&#41;&#124;&#40;?:02&#41;-&#40;?:0&#91;1-9&#93;&#124;1&#92;d&#124;2&#91;0-8&#93;&#41;&#41;&#41;T&#40;?:&#40;?:&#91;01&#93;&#92;d&#124;2&#91;0-3&#93;&#41;:&#91;0-5&#93;&#92;d&#40;?::&#91;0-5&#93;&#92;d&#40;?:&#92;.&#92;d+&#41;?&#41;?&#40;?:Z&#124;&#40;&#91;+-&#93;&#40;?:&#91;01&#93;&#92;d&#124;2&#91;0-3&#93;&#41;:&#91;0-5&#93;&#92;d&#41;&#41;&#41;$</code> |
| <code>healthReport.anyOf&#91;1&#93;.status</code> | Yes | <code>string</code> | Allowed: <code>PARTIAL</code>, <code>ABSTAINED</code> |
| <code>assumptions</code> | Yes | <code>object</code> | Additional properties rejected |
| <code>assumptions.version</code> | Yes | <code>string</code> | Pattern: <code>^0x&#91;0-9a-f&#93;{64}$</code> |
| <code>assumptions.items</code> | Yes | Array of <code>string</code> | Max items: <code>10</code> |
| <code>references</code> | Yes | <code>object</code> | Additional properties rejected |
| <code>references.baselineStudy</code> | Yes | <code>object</code> | Additional properties rejected |
| <code>references.baselineStudy.kind</code> | Yes | Constant <code>RESEARCH&#95;TRIAL</code> | — |
| <code>references.baselineStudy.runId</code> | Yes | <code>string</code> | Pattern: <code>^&#91;a-zA-Z0-9&#93;&#91;a-zA-Z0-9:&#95;-&#93;{2,159}$</code> |
| <code>references.baselineStudy.protocolHash</code> | Yes | <code>string</code> | Pattern: <code>^0x&#91;0-9a-f&#93;{64}$</code> |
| <code>references.baselineStudy.trialKey</code> | Yes | <code>string</code> | Allowed: <code>baseline</code>, <code>alternative-1</code>, <code>alternative-2</code>, <code>alternative-3</code> |
| <code>references.baselineStudy.inputHash</code> | Yes | <code>string</code> | Pattern: <code>^0x&#91;0-9a-f&#93;{64}$</code> |
| <code>references.baselineStudy.artifactHash</code> | Yes | At least one of: <code>string</code>; <code>null</code> | — |
| <code>references.baselineStudy.state</code> | Yes | <code>string</code> | Allowed: <code>QUEUED</code>, <code>RUNNING</code>, <code>COMPLETED</code>, <code>FAILED</code>, <code>CANCELLED</code> |
| <code>references.baselineStudy.recordedAt</code> | Yes | At least one of: <code>string</code>; <code>null</code> | — |
| <code>references.baselineStudy.failureCode</code> | Yes | At least one of: <code>string</code>; <code>null</code> | — |
| <code>references.alternativeStudies</code> | Yes | Array of <code>object</code> | Max items: <code>3</code> |
| <code>references.alternativeStudies&#91;&#93;.kind</code> | Yes | Constant <code>RESEARCH&#95;TRIAL</code> | — |
| <code>references.alternativeStudies&#91;&#93;.runId</code> | Yes | <code>string</code> | Pattern: <code>^&#91;a-zA-Z0-9&#93;&#91;a-zA-Z0-9:&#95;-&#93;{2,159}$</code> |
| <code>references.alternativeStudies&#91;&#93;.protocolHash</code> | Yes | <code>string</code> | Pattern: <code>^0x&#91;0-9a-f&#93;{64}$</code> |
| <code>references.alternativeStudies&#91;&#93;.trialKey</code> | Yes | <code>string</code> | Allowed: <code>baseline</code>, <code>alternative-1</code>, <code>alternative-2</code>, <code>alternative-3</code> |
| <code>references.alternativeStudies&#91;&#93;.inputHash</code> | Yes | <code>string</code> | Pattern: <code>^0x&#91;0-9a-f&#93;{64}$</code> |
| <code>references.alternativeStudies&#91;&#93;.artifactHash</code> | Yes | At least one of: <code>string</code>; <code>null</code> | — |
| <code>references.alternativeStudies&#91;&#93;.state</code> | Yes | <code>string</code> | Allowed: <code>QUEUED</code>, <code>RUNNING</code>, <code>COMPLETED</code>, <code>FAILED</code>, <code>CANCELLED</code> |
| <code>references.alternativeStudies&#91;&#93;.recordedAt</code> | Yes | At least one of: <code>string</code>; <code>null</code> | — |
| <code>references.alternativeStudies&#91;&#93;.failureCode</code> | Yes | At least one of: <code>string</code>; <code>null</code> | — |
| <code>references.proposalReview</code> | Yes | At least one of: <code>object</code>; <code>null</code> | — |
| <code>references.proposalReview.anyOf&#91;1&#93;.kind</code> | Yes | Constant <code>CANDIDATE&#95;REVIEW</code> | — |
| <code>references.proposalReview.anyOf&#91;1&#93;.runId</code> | Yes | <code>string</code> | Pattern: <code>^&#91;a-zA-Z0-9&#93;&#91;a-zA-Z0-9:&#95;-&#93;{2,159}$</code> |
| <code>references.proposalReview.anyOf&#91;1&#93;.resultVersion</code> | Yes | <code>string</code> | Pattern: <code>^0x&#91;0-9a-f&#93;{64}$</code> |
| <code>references.proposalReview.anyOf&#91;1&#93;.captureHash</code> | Yes | <code>string</code> | Pattern: <code>^0x&#91;0-9a-f&#93;{64}$</code> |
| <code>references.proposalReview.anyOf&#91;1&#93;.contentHash</code> | Yes | <code>string</code> | Pattern: <code>^0x&#91;0-9a-f&#93;{64}$</code> |
| <code>references.proposalReview.anyOf&#91;1&#93;.reviewedPackResourceVersion</code> | Yes | <code>string</code> | Pattern: <code>^0x&#91;0-9a-f&#93;{64}$</code> |
| <code>references.proposalReview.anyOf&#91;1&#93;.sourceCutoff</code> | Yes | <code>string</code> | Format: <code>date-time</code>; Pattern: <code>^&#40;?:&#40;?:&#92;d&#92;d&#91;2468&#93;&#91;048&#93;&#124;&#92;d&#92;d&#91;13579&#93;&#91;26&#93;&#124;&#92;d&#92;d0&#91;48&#93;&#124;&#91;02468&#93;&#91;048&#93;00&#124;&#91;13579&#93;&#91;26&#93;00&#41;-02-29&#124;&#92;d{4}-&#40;?:&#40;?:0&#91;13578&#93;&#124;1&#91;02&#93;&#41;-&#40;?:0&#91;1-9&#93;&#124;&#91;12&#93;&#92;d&#124;3&#91;01&#93;&#41;&#124;&#40;?:0&#91;469&#93;&#124;11&#41;-&#40;?:0&#91;1-9&#93;&#124;&#91;12&#93;&#92;d&#124;30&#41;&#124;&#40;?:02&#41;-&#40;?:0&#91;1-9&#93;&#124;1&#92;d&#124;2&#91;0-8&#93;&#41;&#41;&#41;T&#40;?:&#40;?:&#91;01&#93;&#92;d&#124;2&#91;0-3&#93;&#41;:&#91;0-5&#93;&#92;d&#40;?::&#91;0-5&#93;&#92;d&#40;?:&#92;.&#92;d+&#41;?&#41;?&#40;?:Z&#124;&#40;&#91;+-&#93;&#40;?:&#91;01&#93;&#92;d&#124;2&#91;0-3&#93;&#41;:&#91;0-5&#93;&#92;d&#41;&#41;&#41;$</code> |
| <code>references.proposalReview.anyOf&#91;1&#93;.status</code> | Yes | Constant <code>PARTIAL</code> | — |
| <code>references.proposalReview.anyOf&#91;1&#93;.relation</code> | Yes | Constant <code>ANALYSIS&#95;REVIEW&#95;ONLY</code> | — |
| <code>references.treasuryProjection</code> | Yes | <code>null</code> | — |
| <code>references.commercialOrder</code> | Yes | <code>null</code> | — |
| <code>unsupportedReferences</code> | Yes | At least one of: Array of No value allowed; Array of No value allowed | — |
| <code>decision</code> | Yes | At least one of: <code>object</code>; <code>null</code> | — |
| <code>decision.anyOf&#91;1&#93;.choice</code> | Yes | <code>string</code> | Allowed: <code>DO&#95;NOTHING</code>, <code>REQUEST&#95;MORE&#95;EVIDENCE</code>, <code>TAKE&#95;TO&#95;SEPARATE&#95;APPROVAL</code> |
| <code>decision.anyOf&#91;1&#93;.rationale</code> | Yes | <code>string</code> | Min length: <code>1</code>; Max length: <code>4000</code> |
| <code>decision.anyOf&#91;1&#93;.recordedBy</code> | Yes | <code>string</code> | Format: <code>uuid</code>; Pattern: <code>^&#40;&#91;0-9a-fA-F&#93;{8}-&#91;0-9a-fA-F&#93;{4}-&#91;1-8&#93;&#91;0-9a-fA-F&#93;{3}-&#91;89abAB&#93;&#91;0-9a-fA-F&#93;{3}-&#91;0-9a-fA-F&#93;{12}&#124;00000000-0000-0000-0000-000000000000&#124;ffffffff-ffff-ffff-ffff-ffffffffffff&#41;$</code> |
| <code>decision.anyOf&#91;1&#93;.recordedAt</code> | Yes | <code>string</code> | Format: <code>date-time</code>; Pattern: <code>^&#40;?:&#40;?:&#92;d&#92;d&#91;2468&#93;&#91;048&#93;&#124;&#92;d&#92;d&#91;13579&#93;&#91;26&#93;&#124;&#92;d&#92;d0&#91;48&#93;&#124;&#91;02468&#93;&#91;048&#93;00&#124;&#91;13579&#93;&#91;26&#93;00&#41;-02-29&#124;&#92;d{4}-&#40;?:&#40;?:0&#91;13578&#93;&#124;1&#91;02&#93;&#41;-&#40;?:0&#91;1-9&#93;&#124;&#91;12&#93;&#92;d&#124;3&#91;01&#93;&#41;&#124;&#40;?:0&#91;469&#93;&#124;11&#41;-&#40;?:0&#91;1-9&#93;&#124;&#91;12&#93;&#92;d&#124;30&#41;&#124;&#40;?:02&#41;-&#40;?:0&#91;1-9&#93;&#124;1&#92;d&#124;2&#91;0-8&#93;&#41;&#41;&#41;T&#40;?:&#40;?:&#91;01&#93;&#92;d&#124;2&#91;0-3&#93;&#41;:&#91;0-5&#93;&#92;d&#40;?::&#91;0-5&#93;&#92;d&#40;?:&#92;.&#92;d+&#41;?&#41;?&#40;?:Z&#124;&#40;&#91;+-&#93;&#40;?:&#91;01&#93;&#92;d&#124;2&#91;0-3&#93;&#41;:&#91;0-5&#93;&#92;d&#41;&#41;&#41;$</code> |
| <code>decision.anyOf&#91;1&#93;.followUpAt</code> | Yes | At least one of: <code>string</code>; <code>null</code> | — |
| <code>closure</code> | Yes | At least one of: <code>object</code>; <code>null</code> | — |
| <code>closure.anyOf&#91;1&#93;.note</code> | Yes | <code>string</code> | Min length: <code>1</code>; Max length: <code>4000</code> |
| <code>closure.anyOf&#91;1&#93;.recordedBy</code> | Yes | <code>string</code> | Format: <code>uuid</code>; Pattern: <code>^&#40;&#91;0-9a-fA-F&#93;{8}-&#91;0-9a-fA-F&#93;{4}-&#91;1-8&#93;&#91;0-9a-fA-F&#93;{3}-&#91;89abAB&#93;&#91;0-9a-fA-F&#93;{3}-&#91;0-9a-fA-F&#93;{12}&#124;00000000-0000-0000-0000-000000000000&#124;ffffffff-ffff-ffff-ffff-ffffffffffff&#41;$</code> |
| <code>closure.anyOf&#91;1&#93;.recordedAt</code> | Yes | <code>string</code> | Format: <code>date-time</code>; Pattern: <code>^&#40;?:&#40;?:&#92;d&#92;d&#91;2468&#93;&#91;048&#93;&#124;&#92;d&#92;d&#91;13579&#93;&#91;26&#93;&#124;&#92;d&#92;d0&#91;48&#93;&#124;&#91;02468&#93;&#91;048&#93;00&#124;&#91;13579&#93;&#91;26&#93;00&#41;-02-29&#124;&#92;d{4}-&#40;?:&#40;?:0&#91;13578&#93;&#124;1&#91;02&#93;&#41;-&#40;?:0&#91;1-9&#93;&#124;&#91;12&#93;&#92;d&#124;3&#91;01&#93;&#41;&#124;&#40;?:0&#91;469&#93;&#124;11&#41;-&#40;?:0&#91;1-9&#93;&#124;&#91;12&#93;&#92;d&#124;30&#41;&#124;&#40;?:02&#41;-&#40;?:0&#91;1-9&#93;&#124;1&#92;d&#124;2&#91;0-8&#93;&#41;&#41;&#41;T&#40;?:&#40;?:&#91;01&#93;&#92;d&#124;2&#91;0-3&#93;&#41;:&#91;0-5&#93;&#92;d&#40;?::&#91;0-5&#93;&#92;d&#40;?:&#92;.&#92;d+&#41;?&#41;?&#40;?:Z&#124;&#40;&#91;+-&#93;&#40;?:&#91;01&#93;&#92;d&#124;2&#91;0-3&#93;&#41;:&#91;0-5&#93;&#92;d&#41;&#41;&#41;$</code> |
| <code>supersededBy</code> | Yes | At least one of: <code>string</code>; <code>null</code> | — |
| <code>financialAuthority</code> | Yes | Constant <code>false</code> | — |
| <code>publicationAuthority</code> | Yes | Constant <code>false</code> | — |
| <code>contentHash</code> | Yes | <code>string</code> | Pattern: <code>^0x&#91;0-9a-f&#93;{64}$</code> |
| <code>sourceAssociation</code> | Yes | <code>object</code> | Additional properties rejected |
| <code>sourceAssociation.relation</code> | Yes | Constant <code>USER&#95;SELECTED&#95;RESEARCH&#95;CONTEXT</code> | — |
| <code>sourceAssociation.assertedBy</code> | Yes | <code>string</code> | Format: <code>uuid</code>; Pattern: <code>^&#40;&#91;0-9a-fA-F&#93;{8}-&#91;0-9a-fA-F&#93;{4}-&#91;1-8&#93;&#91;0-9a-fA-F&#93;{3}-&#91;89abAB&#93;&#91;0-9a-fA-F&#93;{3}-&#91;0-9a-fA-F&#93;{12}&#124;00000000-0000-0000-0000-000000000000&#124;ffffffff-ffff-ffff-ffff-ffffffffffff&#41;$</code> |
| <code>sourceAssociation.assertedAt</code> | Yes | <code>string</code> | Format: <code>date-time</code>; Pattern: <code>^&#40;?:&#40;?:&#92;d&#92;d&#91;2468&#93;&#91;048&#93;&#124;&#92;d&#92;d&#91;13579&#93;&#91;26&#93;&#124;&#92;d&#92;d0&#91;48&#93;&#124;&#91;02468&#93;&#91;048&#93;00&#124;&#91;13579&#93;&#91;26&#93;00&#41;-02-29&#124;&#92;d{4}-&#40;?:&#40;?:0&#91;13578&#93;&#124;1&#91;02&#93;&#41;-&#40;?:0&#91;1-9&#93;&#124;&#91;12&#93;&#92;d&#124;3&#91;01&#93;&#41;&#124;&#40;?:0&#91;469&#93;&#124;11&#41;-&#40;?:0&#91;1-9&#93;&#124;&#91;12&#93;&#92;d&#124;30&#41;&#124;&#40;?:02&#41;-&#40;?:0&#91;1-9&#93;&#124;1&#92;d&#124;2&#91;0-8&#93;&#41;&#41;&#41;T&#40;?:&#40;?:&#91;01&#93;&#92;d&#124;2&#91;0-3&#93;&#41;:&#91;0-5&#93;&#92;d&#40;?::&#91;0-5&#93;&#92;d&#40;?:&#92;.&#92;d+&#41;?&#41;?&#40;?:Z&#124;&#40;&#91;+-&#93;&#40;?:&#91;01&#93;&#92;d&#124;2&#91;0-3&#93;&#41;:&#91;0-5&#93;&#92;d&#41;&#41;&#41;$</code> |
| <code>sourceAssociation.ownershipVerified</code> | Yes | Constant <code>false</code> | — |
| <code>sourceAssociation.quoteUnitsVerified</code> | Yes | Constant <code>false</code> | — |
| <code>research</code> | Yes | <code>object</code> | Additional properties rejected |
| <code>research.runId</code> | Yes | <code>string</code> | Pattern: <code>^&#91;a-zA-Z0-9&#93;&#91;a-zA-Z0-9:&#95;-&#93;{2,159}$</code> |
| <code>research.resultVersion</code> | Yes | <code>string</code> | Pattern: <code>^0x&#91;0-9a-f&#93;{64}$</code> |
| <code>research.protocolHash</code> | Yes | <code>string</code> | Pattern: <code>^0x&#91;0-9a-f&#93;{64}$</code> |
| <code>research.sourceCutoff</code> | Yes | <code>string</code> | Format: <code>date-time</code>; Pattern: <code>^&#40;?:&#40;?:&#92;d&#92;d&#91;2468&#93;&#91;048&#93;&#124;&#92;d&#92;d&#91;13579&#93;&#91;26&#93;&#124;&#92;d&#92;d0&#91;48&#93;&#124;&#91;02468&#93;&#91;048&#93;00&#124;&#91;13579&#93;&#91;26&#93;00&#41;-02-29&#124;&#92;d{4}-&#40;?:&#40;?:0&#91;13578&#93;&#124;1&#91;02&#93;&#41;-&#40;?:0&#91;1-9&#93;&#124;&#91;12&#93;&#92;d&#124;3&#91;01&#93;&#41;&#124;&#40;?:0&#91;469&#93;&#124;11&#41;-&#40;?:0&#91;1-9&#93;&#124;&#91;12&#93;&#92;d&#124;30&#41;&#124;&#40;?:02&#41;-&#40;?:0&#91;1-9&#93;&#124;1&#92;d&#124;2&#91;0-8&#93;&#41;&#41;&#41;T&#40;?:&#40;?:&#91;01&#93;&#92;d&#124;2&#91;0-3&#93;&#41;:&#91;0-5&#93;&#92;d&#40;?::&#91;0-5&#93;&#92;d&#40;?:&#92;.&#92;d+&#41;?&#41;?&#40;?:Z&#124;&#40;&#91;+-&#93;&#40;?:&#91;01&#93;&#92;d&#124;2&#91;0-3&#93;&#41;:&#91;0-5&#93;&#92;d&#41;&#41;&#41;$</code> |
| <code>research.issuerIntent</code> | Yes | <code>object</code> | Additional properties rejected |
| <code>research.issuerIntent.id</code> | Yes | <code>string</code> | Pattern: <code>^&#91;a-zA-Z0-9&#93;&#91;a-zA-Z0-9:&#95;-&#93;{2,159}$</code> |
| <code>research.issuerIntent.resourceVersion</code> | Yes | <code>string</code> | Pattern: <code>^0x&#91;0-9a-f&#93;{64}$</code> |
| <code>research.issuerIntent.artifactHash</code> | Yes | <code>string</code> | Pattern: <code>^0x&#91;0-9a-f&#93;{64}$</code> |
| <code>research.question</code> | Yes | <code>string</code> | Min length: <code>3</code>; Max length: <code>2000</code> |
| <code>research.relation</code> | Yes | Constant <code>SUPPORTING&#95;EVIDENCE&#95;ONLY</code> | — |
| <code>research.objective</code> | Yes | <code>object</code> | Additional properties rejected |
| <code>research.objective.metric</code> | Yes | <code>string</code> | Allowed: <code>ENDING&#95;VALUE&#95;P50</code>, <code>MINIMUM&#95;DEPTH&#95;P5</code>, <code>GAS&#95;COST&#95;P50</code>, <code>DRAWDOWN&#95;P95</code>, <code>RESERVE&#95;BREACH&#95;PROBABILITY</code> |
| <code>research.objective.direction</code> | Yes | <code>string</code> | Allowed: <code>MAXIMIZE</code>, <code>MINIMIZE</code> |
| <code>research.comparisonStatus</code> | Yes | <code>string</code> | Allowed: <code>BASELINE&#95;UNAVAILABLE</code>, <code>COMPLETE</code>, <code>PARTIAL</code> |
| <code>research.quote</code> | Yes | <code>object</code> | Additional properties rejected |
| <code>research.quote.symbol</code> | Yes | <code>string</code> | Max length: <code>256</code> |
| <code>research.quote.assetId</code> | Yes | <code>null</code> | — |
| <code>research.quote.decimals</code> | Yes | <code>null</code> | — |
| <code>research.quote.unit</code> | Yes | Constant <code>ISSUER&#95;INTENT&#95;QUOTE&#95;ATOMIC</code> | — |
| <code>research.limitations</code> | Yes | Array of <code>string</code> | Min items: <code>6</code>; Max items: <code>6</code> |
| <code>research.trials</code> | Yes | Array of <code>object</code> | Min items: <code>1</code>; Max items: <code>4</code> |
| <code>research.trials&#91;&#93;.reference</code> | Yes | <code>object</code> | Additional properties rejected |
| <code>research.trials&#91;&#93;.reference.kind</code> | Yes | Constant <code>RESEARCH&#95;TRIAL</code> | — |
| <code>research.trials&#91;&#93;.reference.runId</code> | Yes | <code>string</code> | Pattern: <code>^&#91;a-zA-Z0-9&#93;&#91;a-zA-Z0-9:&#95;-&#93;{2,159}$</code> |
| <code>research.trials&#91;&#93;.reference.protocolHash</code> | Yes | <code>string</code> | Pattern: <code>^0x&#91;0-9a-f&#93;{64}$</code> |
| <code>research.trials&#91;&#93;.reference.trialKey</code> | Yes | <code>string</code> | Allowed: <code>baseline</code>, <code>alternative-1</code>, <code>alternative-2</code>, <code>alternative-3</code> |
| <code>research.trials&#91;&#93;.reference.inputHash</code> | Yes | <code>string</code> | Pattern: <code>^0x&#91;0-9a-f&#93;{64}$</code> |
| <code>research.trials&#91;&#93;.reference.artifactHash</code> | Yes | At least one of: <code>string</code>; <code>null</code> | — |
| <code>research.trials&#91;&#93;.reference.state</code> | Yes | <code>string</code> | Allowed: <code>QUEUED</code>, <code>RUNNING</code>, <code>COMPLETED</code>, <code>FAILED</code>, <code>CANCELLED</code> |
| <code>research.trials&#91;&#93;.reference.recordedAt</code> | Yes | At least one of: <code>string</code>; <code>null</code> | — |
| <code>research.trials&#91;&#93;.reference.failureCode</code> | Yes | At least one of: <code>string</code>; <code>null</code> | — |
| <code>research.trials&#91;&#93;.label</code> | Yes | <code>string</code> | Min length: <code>1</code>; Max length: <code>160</code> |
| <code>research.trials&#91;&#93;.comparisonStatus</code> | Yes | <code>string</code> | Allowed: <code>PENDING</code>, <code>FAILED</code>, <code>CANCELLED</code>, <code>INVALID</code>, <code>INCOMPATIBLE</code>, <code>BASELINE&#95;UNAVAILABLE</code>, <code>COMPARABLE</code> |
| <code>research.trials&#91;&#93;.reasons</code> | Yes | Array of <code>string</code> | Max items: <code>16</code> |
| <code>research.trials&#91;&#93;.warningCount</code> | Yes | <code>integer</code> | Minimum: <code>0</code>; Maximum: <code>64</code> |
| <code>research.trials&#91;&#93;.selected</code> | Yes | At least one of: <code>object</code>; <code>null</code> | — |
| <code>research.trials&#91;&#93;.selected.anyOf&#91;1&#93;.variant</code> | Yes | <code>string</code> | Allowed: <code>CURRENT</code>, <code>RECOMMENDED</code>, <code>CONSERVATIVE</code>, <code>CAPITAL&#95;EFFICIENT</code>, <code>EMERGENCY</code> |
| <code>research.trials&#91;&#93;.selected.anyOf&#91;1&#93;.eligible</code> | Yes | <code>boolean</code> | — |
| <code>research.trials&#91;&#93;.selected.anyOf&#91;1&#93;.ineligibilityReasons</code> | Yes | Array of <code>string</code> | Max items: <code>4</code> |
| <code>candidate</code> | Yes | <code>object</code> | Additional properties rejected |
| <code>candidate.selectedVariant</code> | Yes | <code>string</code> | Allowed: <code>CURRENT</code>, <code>RECOMMENDED</code>, <code>CONSERVATIVE</code>, <code>CAPITAL&#95;EFFICIENT</code>, <code>EMERGENCY</code> |
| <code>candidate.capitalPlan</code> | Yes | <code>object</code> | Additional properties rejected |
| <code>candidate.capitalPlan.kind</code> | Yes | <code>string</code> | Allowed: <code>CURRENT</code>, <code>RECOMMENDED</code>, <code>CONSERVATIVE</code>, <code>CAPITAL&#95;EFFICIENT</code>, <code>EMERGENCY</code> |
| <code>candidate.capitalPlan.requiredCapitalQuote</code> | Yes | <code>string</code> | Pattern: <code>^-?&#40;0&#124;&#91;1-9&#93;&#91;0-9&#93;{0,77}&#41;$</code> |
| <code>candidate.capitalPlan.deployableCapitalQuote</code> | Yes | <code>string</code> | Pattern: <code>^-?&#40;0&#124;&#91;1-9&#93;&#91;0-9&#93;{0,77}&#41;$</code> |
| <code>candidate.capitalPlan.stableReserveQuote</code> | Yes | <code>string</code> | Pattern: <code>^-?&#40;0&#124;&#91;1-9&#93;&#91;0-9&#93;{0,77}&#41;$</code> |
| <code>candidate.capitalPlan.emergencyReserveQuote</code> | Yes | <code>string</code> | Pattern: <code>^-?&#40;0&#124;&#91;1-9&#93;&#91;0-9&#93;{0,77}&#41;$</code> |
| <code>candidate.capitalPlan.rangeWidthPips</code> | Yes | <code>integer</code> | Minimum: <code>0</code>; Maximum: <code>1000000</code> |
| <code>candidate.capitalPlan.expectedSlippagePips</code> | Yes | <code>integer</code> | Minimum: <code>0</code>; Maximum: <code>1000000</code> |
| <code>candidate.capitalPlan.expectedFeeIncomeLowQuote</code> | Yes | <code>string</code> | Pattern: <code>^-?&#40;0&#124;&#91;1-9&#93;&#91;0-9&#93;{0,77}&#41;$</code> |
| <code>candidate.capitalPlan.expectedFeeIncomeHighQuote</code> | Yes | <code>string</code> | Pattern: <code>^-?&#40;0&#124;&#91;1-9&#93;&#91;0-9&#93;{0,77}&#41;$</code> |
| <code>candidate.capitalPlan.inventoryExposurePips</code> | Yes | <code>integer</code> | Minimum: <code>0</code>; Maximum: <code>1000000</code> |
| <code>candidate.capitalPlan.maximumDailyTurnoverPips</code> | Yes | <code>integer</code> | Minimum: <code>0</code>; Maximum: <code>1000000</code> |
| <code>candidate.capitalPlan.satisfiesIntent</code> | Yes | <code>boolean</code> | — |
| <code>candidate.capitalPlan.reasons</code> | Yes | Array of <code>string</code> | Max items: <code>64</code> |
| <code>candidate.baselineEligible</code> | Yes | <code>boolean</code> | — |
| <code>candidate.status</code> | Yes | <code>string</code> | Allowed: <code>BLOCKED&#95;BASELINE&#95;UNAVAILABLE</code>, <code>BLOCKED&#95;BASELINE&#95;INELIGIBLE</code>, <code>INCOMPLETE&#95;ALTERNATIVES</code>, <code>INELIGIBLE&#95;IN&#95;ALTERNATIVES</code>, <code>ELIGIBLE&#95;IN&#95;CAPTURED&#95;SCENARIOS</code> |
| <code>candidate.rankingScope</code> | Yes | Constant <code>WITHIN&#95;SCENARIO&#95;VARIANTS</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/ResearchCandidateDecisionPack</code> in the [OpenAPI contract](/openapi/liquidity-operating-system-v2.openapi.json).