Klineo/Docs
Open app ↗

API schemas

ResearchPlanningState

All API schemas

object — Additional properties rejected

Field Required at this level Type Description and constraints
schemaVersion Yes Constant research-planning-state-v1 —
organizationId Yes string Pattern: ^[a-zA-Z0-9][a-zA-Z0-9:_-]{2,159}$
runId Yes string Pattern: ^[a-zA-Z0-9][a-zA-Z0-9:_-]{2,159}$
runResourceVersion Yes string Pattern: ^0x[0-9a-f]{64}$
runState Yes string Allowed: QUEUED, RUNNING, WAITING_FOR_INPUT, WAITING_FOR_CHILDREN, COMPLETED, PARTIAL, ABSTAINED, FAILED, CANCELLED
checkedAt Yes string Format: date-time; Pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
subject Yes object Additional properties rejected
subject.issuerIntentId Yes string Pattern: ^[a-zA-Z0-9][a-zA-Z0-9:_-]{2,159}$
subject.expectedResourceVersion Yes string Pattern: ^0x[0-9a-f]{64}$
currentSourceResourceVersion Yes At least one of: string; null —
proposal Yes At least one of: object; null —
proposal.anyOf[1].schemaVersion Yes Constant research-planning-proposal-v1 —
proposal.anyOf[1].organizationId Yes string Pattern: ^[a-zA-Z0-9][a-zA-Z0-9:_-]{2,159}$
proposal.anyOf[1].runId Yes string Pattern: ^[a-zA-Z0-9][a-zA-Z0-9:_-]{2,159}$
proposal.anyOf[1].contextHash Yes string Pattern: ^0x[0-9a-f]{64}$
proposal.anyOf[1].sourceHash Yes string Pattern: ^0x[0-9a-f]{64}$
proposal.anyOf[1].sourceCutoff Yes string Format: date-time; Pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
proposal.anyOf[1].subject Yes object Additional properties rejected
proposal.anyOf[1].subject.issuerIntentId Yes string Pattern: ^[a-zA-Z0-9][a-zA-Z0-9:_-]{2,159}$
proposal.anyOf[1].subject.expectedResourceVersion Yes string Pattern: ^0x[0-9a-f]{64}$
proposal.anyOf[1].question Yes string Min length: 3; Max length: 2000
proposal.anyOf[1].status Yes string Allowed: NEEDS_INPUT, NEEDS_REVIEW
proposal.anyOf[1].candidate Yes object Additional properties rejected
proposal.anyOf[1].candidate.seed No string Min length: 8; Max length: 200
proposal.anyOf[1].candidate.stepCount No integer Minimum: 1; Maximum: 365
proposal.anyOf[1].candidate.startingPortfolioQuote No string Pattern: ^[1-9][0-9]{0,77}$
proposal.anyOf[1].candidate.startingDepthQuote No string Pattern: ^[1-9][0-9]{0,77}$
proposal.anyOf[1].candidate.startingInventoryPips No integer Minimum: 0; Maximum: 1000000
proposal.anyOf[1].candidate.objective No object Additional properties rejected
proposal.anyOf[1].candidate.objective.metric Yes string Allowed: ENDING_VALUE_P50, MINIMUM_DEPTH_P5, GAS_COST_P50, DRAWDOWN_P95, RESERVE_BREACH_PROBABILITY
proposal.anyOf[1].candidate.objective.direction Yes string Allowed: MAXIMIZE, MINIMIZE
proposal.anyOf[1].candidate.baselineScenario No object Additional properties rejected
proposal.anyOf[1].candidate.baselineScenario.id Yes string Pattern: ^[a-zA-Z0-9][a-zA-Z0-9:_-]{2,159}$
proposal.anyOf[1].candidate.baselineScenario.name Yes string Min length: 3; Max length: 160
proposal.anyOf[1].candidate.baselineScenario.kind Yes string Allowed: HISTORICAL_REPLAY, BULL, BEAR, SIDEWAYS, LIQUIDITY_CRISIS, TOKEN_UNLOCK, LARGE_BUYER, LARGE_SELLER, LIQUIDITY_WITHDRAWAL, GAS_SPIKE, ORACLE_OUTAGE, COMBINED
proposal.anyOf[1].candidate.baselineScenario.driftPipsPerStep Yes integer Minimum: -1000000; Maximum: 1000000
proposal.anyOf[1].candidate.baselineScenario.volatilityPipsPerStep Yes integer Minimum: 0; Maximum: 1000000
proposal.anyOf[1].candidate.baselineScenario.liquidityWithdrawalPips Yes integer Minimum: 0; Maximum: 1000000
proposal.anyOf[1].candidate.baselineScenario.oneSidedFlowPips Yes integer Minimum: 0; Maximum: 1000000
proposal.anyOf[1].candidate.baselineScenario.gasIncreasePips Yes integer Minimum: 0; Maximum: 1000000
proposal.anyOf[1].candidate.baselineScenario.oracleOutageStep No integer Minimum: 0; Maximum: 364
proposal.anyOf[1].candidate.baselineScenario.historicalReturnPips No Array of integer Min items: 1; Max items: 365
proposal.anyOf[1].candidate.baselineScenario.protocolFeePips No integer Minimum: 0; Maximum: 1000000
proposal.anyOf[1].candidate.baselineScenario.platformFeePips No integer Minimum: 0; Maximum: 1000000
proposal.anyOf[1].candidate.baselineScenario.unlocks Yes Array of object Max items: 256
proposal.anyOf[1].candidate.baselineScenario.unlocks[].id Yes string Pattern: ^[a-zA-Z0-9][a-zA-Z0-9:_-]{2,152}$
proposal.anyOf[1].candidate.baselineScenario.unlocks[].unlocksAt Yes string Format: date-time; Pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
proposal.anyOf[1].candidate.baselineScenario.unlocks[].tokenAmount Yes string Pattern: ^[1-9][0-9]{0,77}$
proposal.anyOf[1].candidate.baselineScenario.unlocks[].recipientCategory Yes string Allowed: TEAM, INVESTOR, COMMUNITY, TREASURY, ECOSYSTEM, OTHER
proposal.anyOf[1].candidate.baselineScenario.unlocks[].expectedSaleParticipationPips Yes integer Minimum: 0; Maximum: 1000000
proposal.anyOf[1].candidate.baselineScenario.unlocks[].confidencePips Yes integer Minimum: 0; Maximum: 1000000
proposal.anyOf[1].candidate.baselineScenario.unlocks[].correlationGroup No string Min length: 1; Max length: 120
proposal.anyOf[1].candidate.baselineScenario.unlocks[].evidenceHash No string Pattern: ^0x[0-9a-fA-F]{64}$
proposal.anyOf[1].candidate.alternatives Yes Array of object Max items: 3
proposal.anyOf[1].candidate.alternatives[].label Yes string Min length: 1; Max length: 120
proposal.anyOf[1].candidate.alternatives[].scenario Yes object Additional properties rejected
proposal.anyOf[1].candidate.alternatives[].scenario.id Yes string Pattern: ^[a-zA-Z0-9][a-zA-Z0-9:_-]{2,159}$
proposal.anyOf[1].candidate.alternatives[].scenario.name Yes string Min length: 3; Max length: 160
proposal.anyOf[1].candidate.alternatives[].scenario.kind Yes string Allowed: HISTORICAL_REPLAY, BULL, BEAR, SIDEWAYS, LIQUIDITY_CRISIS, TOKEN_UNLOCK, LARGE_BUYER, LARGE_SELLER, LIQUIDITY_WITHDRAWAL, GAS_SPIKE, ORACLE_OUTAGE, COMBINED
proposal.anyOf[1].candidate.alternatives[].scenario.driftPipsPerStep Yes integer Minimum: -1000000; Maximum: 1000000
proposal.anyOf[1].candidate.alternatives[].scenario.volatilityPipsPerStep Yes integer Minimum: 0; Maximum: 1000000
proposal.anyOf[1].candidate.alternatives[].scenario.liquidityWithdrawalPips Yes integer Minimum: 0; Maximum: 1000000
proposal.anyOf[1].candidate.alternatives[].scenario.oneSidedFlowPips Yes integer Minimum: 0; Maximum: 1000000
proposal.anyOf[1].candidate.alternatives[].scenario.gasIncreasePips Yes integer Minimum: 0; Maximum: 1000000
proposal.anyOf[1].candidate.alternatives[].scenario.oracleOutageStep No integer Minimum: 0; Maximum: 364
proposal.anyOf[1].candidate.alternatives[].scenario.historicalReturnPips No Array of integer Min items: 1; Max items: 365
proposal.anyOf[1].candidate.alternatives[].scenario.protocolFeePips No integer Minimum: 0; Maximum: 1000000
proposal.anyOf[1].candidate.alternatives[].scenario.platformFeePips No integer Minimum: 0; Maximum: 1000000
proposal.anyOf[1].candidate.alternatives[].scenario.unlocks Yes Array of object Max items: 256
proposal.anyOf[1].candidate.alternatives[].scenario.unlocks[].id Yes string Pattern: ^[a-zA-Z0-9][a-zA-Z0-9:_-]{2,152}$
proposal.anyOf[1].candidate.alternatives[].scenario.unlocks[].unlocksAt Yes string Format: date-time; Pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
proposal.anyOf[1].candidate.alternatives[].scenario.unlocks[].tokenAmount Yes string Pattern: ^[1-9][0-9]{0,77}$
proposal.anyOf[1].candidate.alternatives[].scenario.unlocks[].recipientCategory Yes string Allowed: TEAM, INVESTOR, COMMUNITY, TREASURY, ECOSYSTEM, OTHER
proposal.anyOf[1].candidate.alternatives[].scenario.unlocks[].expectedSaleParticipationPips Yes integer Minimum: 0; Maximum: 1000000
proposal.anyOf[1].candidate.alternatives[].scenario.unlocks[].confidencePips Yes integer Minimum: 0; Maximum: 1000000
proposal.anyOf[1].candidate.alternatives[].scenario.unlocks[].correlationGroup No string Min length: 1; Max length: 120
proposal.anyOf[1].candidate.alternatives[].scenario.unlocks[].evidenceHash No string Pattern: ^0x[0-9a-fA-F]{64}$
proposal.anyOf[1].candidate.schemaVersion Yes Constant research-experiment-v1 —
proposal.anyOf[1].candidate.pathCount Yes Constant 2000 —
proposal.anyOf[1].candidate.interpretation Yes Constant CURRENT_DATA_HYPOTHETICAL_MODELED_STEPS —
proposal.anyOf[1].missingInputs Yes Array of string Max items: 7
proposal.anyOf[1].validationIssues Yes Array of object Max items: 100
proposal.anyOf[1].validationIssues[].path Yes string Max length: 300
proposal.anyOf[1].validationIssues[].message Yes string Max length: 1000
proposal.anyOf[1].unsupportedRequests Yes Array of string Max items: 9
proposal.anyOf[1].provenance Yes Array of object Min items: 8; Max items: 8
proposal.anyOf[1].provenance[].field Yes string Allowed: objective, baselineScenario, seed, stepCount, startingPortfolioQuote, startingDepthQuote, startingInventoryPips, alternatives
proposal.anyOf[1].provenance[].basis Yes string Allowed: USER_SUPPLIED_ASSUMPTION, MODEL_PROPOSED_HYPOTHESIS, MISSING
proposal.anyOf[1].requiredAcknowledgements Yes Array of string Min items: 12; Max items: 12
proposal.anyOf[1].financialAuthority Yes Constant false —
proposal.anyOf[1].publicationAuthority Yes Constant false —
proposal.anyOf[1].executionAuthorized Yes Constant false —
proposal.anyOf[1].proposalHash Yes string Pattern: ^0x[0-9a-f]{64}$
questionId Yes At least one of: string; null —
successorRunId Yes At least one of: string; null —

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/ResearchPlanningState in the OpenAPI contract.