Klineo/Docs
Open app ↗

API reference

Proposal review and Safe evidence

Paths on this page are relative to /api/liquidity-studio/v2. Authentication and required headers vary by operation.

API reference overview · OpenAPI download

Operations on this page#

Method Path Operation
GET /proposals/{id}/review getProposalWorkspaceReview
GET /proposals listProposals
POST /proposals createProposals
GET /proposals/{id} getProposals
GET /proposals/{id}/comments listProposalComments
POST /proposals/{id}/comments appendProposalComment
POST /proposals/{id}/decisions decideProposal
POST /proposals/{id}/safe-submissions registerProposalSafeSubmission
POST /proposal-comparisons compareProposals

Read a resource-version-bound proposal review snapshot#

GET /proposals/{id}/review

Operation ID: getProposalWorkspaceReview

Authentication: __Host-klineo_session cookie (sessionCookie) OR OAuth bearer token with proposals:read (serviceCredential)

Requires current workspace membership and either an interactive session or proposals:read service scope. The required resourceVersion query binds the current proposal generation; stale versions fail with 412. Comments do not advance the proposal version, so reviewEvidenceHash separately binds the review snapshot. Internal approvals and verified historical Safe submissions grant no new execution authority.

Service scope: proposals:read. Session access and workspace roles are evaluated separately.

Parameters#

Name Location Required Type Description and constraints
x-klineo-organization-id header Yes string Min length: 1; Max length: 160
id path Yes string —
resourceVersion query Yes Hash —

Responses#

Status Description Content type and schema
200 Read a resource-version-bound proposal review snapshot application/json: object
default Invalid input, access denied, source/storage failure or deadline exceeded. Workspace authentication errors may use the shared API envelope; bounded route failures expose a message. Rate-limit responses may be plain text. application/json: object

200 response headers

Header Required Type Description and constraints
Cache-Control Yes Constant no-store —

200 application/json body

object — Additional properties rejected

Field Required at this level Type Description and constraints
data Yes ProposalWorkspaceReview —

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

default application/json body

object — Additional properties rejected

Field Required at this level Type Description and constraints
error Yes ApiError —

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

List decision workspaces#

GET /proposals

Operation ID: listProposals

Authentication: __Host-klineo_session cookie (sessionCookie) OR OAuth bearer token with proposals:read (serviceCredential)

Service scope: proposals:read. Session access and workspace roles are evaluated separately.

Parameters#

Name Location Required Type Description and constraints
x-klineo-organization-id header Yes string —
cursor query No string Opaque cursor returned in the previous response metadata.
limit query No integer Default: 50; Minimum: 1; Maximum: 100

Responses#

Status Description Content type and schema
200 Latest tenant-isolated aggregate versions application/json: object

200 application/json body

object — Additional properties rejected

Field Required at this level Type Description and constraints
data Yes Array of All of: RecordEnvelope; object —
data[].allOf[2].payload Yes ProposalWorkspace —
meta Yes object Additional properties rejected
meta.count Yes integer Minimum: 0
meta.hasMore Yes boolean —
meta.nextCursor No string —

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

Create a decision packet with zero server-recorded approvals#

POST /proposals

Operation ID: createProposals

Authentication: __Host-klineo_session cookie (sessionCookie) OR OAuth bearer token with proposals:prepare (serviceCredential)

Service scope: proposals:prepare. Session access and workspace roles are evaluated separately.

Parameters#

Name Location Required Type Description and constraints
Idempotency-Key header Yes string Min length: 8; Max length: 160
x-klineo-organization-id header Yes string —

Request body#

Required: yes.

application/json

object — Additional properties rejected

Field Required at this level Type Description and constraints
payload Yes ProposalWorkspaceInput —
status No OperatingSystemRecordStatus —
evidenceHashes No Array of Hash Max items: 256
reason Yes string Min length: 3; Max length: 500

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

Responses#

Status Description Content type and schema
201 Append-only proposal created; approvals are admitted only through typed decision events application/json: object
400 Request attempted derived approval or Safe fields, or failed validation No response body declared
409 Immutable strategy-admission evidence is unavailable or superseded No response body declared

201 application/json body

object — Additional properties rejected

Field Required at this level Type Description and constraints
data Yes All of: RecordEnvelope; object —
data.allOf[2].payload Yes ProposalWorkspace —

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

Get one decision workspaces aggregate#

GET /proposals/{id}

Operation ID: getProposals

Authentication: __Host-klineo_session cookie (sessionCookie) OR OAuth bearer token with proposals:read (serviceCredential)

Service scope: proposals:read. Session access and workspace roles are evaluated separately.

Parameters#

Name Location Required Type Description and constraints
x-klineo-organization-id header Yes string —
id path Yes string —

Responses#

Status Description Content type and schema
200 Current immutable aggregate version application/json: object
404 Not found No response body declared

200 response headers

Header Required Type Description and constraints
ETag Yes string —

200 application/json body

object — Additional properties rejected

Field Required at this level Type Description and constraints
data Yes All of: RecordEnvelope; object —
data.allOf[2].payload Yes ProposalWorkspace —

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

listProposalComments#

GET /proposals/{id}/comments

Operation ID: listProposalComments

Authentication: __Host-klineo_session cookie (sessionCookie) OR OAuth bearer token with proposals:read (serviceCredential)

Service scope: proposals:read. Session access and workspace roles are evaluated separately.

Parameters#

Name Location Required Type Description and constraints
x-klineo-organization-id header Yes string —
id path Yes string —

Responses#

Status Description Content type and schema
200 Append-only comments application/json: object

200 application/json body

object — Additional properties rejected

Field Required at this level Type Description and constraints
data Yes Array of OperatingSystemEvent —

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

appendProposalComment#

POST /proposals/{id}/comments

Operation ID: appendProposalComment

Authentication: __Host-klineo_session cookie (sessionCookie)

Parameters#

Name Location Required Type Description and constraints
Idempotency-Key header Yes string Min length: 8; Max length: 160
x-klineo-organization-id header Yes string —
id path Yes string —
If-Match header Yes string Pattern: ^"[^"\\ ]+"$

Request body#

Required: yes.

application/json

ProposalCommentRequest

Responses#

Status Description Content type and schema
201 Comment appended; supersession binds the exact prior comment artifact on this proposal application/json: object

201 application/json body

object — Additional properties rejected

Field Required at this level Type Description and constraints
data Yes OperatingSystemEvent —

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

Append an internal approval or rejection to a current DRAFT/VALIDATED packet#

POST /proposals/{id}/decisions

Operation ID: decideProposal

Authentication: __Host-klineo_session cookie (sessionCookie)

Parameters#

Name Location Required Type Description and constraints
Idempotency-Key header Yes string Min length: 8; Max length: 160
x-klineo-organization-id header Yes string —
id path Yes string —
If-Match header Yes string Pattern: ^"[^"\\ ]+"$

Request body#

Required: yes.

application/json

ProposalDecisionRequest

Responses#

Status Description Content type and schema
200 Superseding proposal and immutable packet-bound decision event application/json: object
409 Packet is terminal, expired, or the actor already approved this packet No response body declared

200 application/json body

object — Additional properties rejected

Field Required at this level Type Description and constraints
data Yes ProposalDecisionResult —

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

Resolve finalized/reconciled issuer-Safe evidence server-side for an exact typed controller action#

POST /proposals/{id}/safe-submissions

Operation ID: registerProposalSafeSubmission

Authentication: __Host-klineo_session cookie (sessionCookie)

Parameters#

Name Location Required Type Description and constraints
Idempotency-Key header Yes string Min length: 8; Max length: 160
x-klineo-organization-id header Yes string —
id path Yes string —
If-Match header Yes string Pattern: ^"[^"\\ ]+"$

Request body#

Required: yes.

application/json

ProposalSafeSubmissionRequest

Responses#

Status Description Content type and schema
200 Server-verified Safe transaction evidence registered; no execution performed by this route application/json: object
409 Typed intent, signed release, current Safe, gateway evidence, finality, or reconciliation is unavailable/mismatched No response body declared

200 application/json body

object — Additional properties rejected

Field Required at this level Type Description and constraints
data Yes ProposalSafeSubmissionResult —

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

Build an immutable comparison hash for two to eight decision packets#

POST /proposal-comparisons

Operation ID: compareProposals

Authentication: __Host-klineo_session cookie (sessionCookie) OR OAuth bearer token with proposals:prepare (serviceCredential)

Service scope: proposals:prepare. Session access and workspace roles are evaluated separately.

Parameters#

Name Location Required Type Description and constraints
Idempotency-Key header Yes string Min length: 8; Max length: 160
x-klineo-organization-id header Yes string —

Request body#

Required: yes.

application/json

ProposalComparisonRequest

Responses#

Status Description Content type and schema
200 Deterministic proposal comparison application/json: object

200 application/json body

object — Additional properties rejected

Field Required at this level Type Description and constraints
data Yes ProposalComparison —

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