Skip to navigation

Approve a chain policy

Concludes the pending proposal (chain-policies:approve, not its proposer): an activation, amendment or retirement. Nothing pending refuses 409 NOTHING_PENDING.

Authentication

AuthorizationBearer

Bearer authentication of the form Bearer <token>, where token is your auth token.

Path parameters

idintegerRequired

The record's id — a positive 32-bit integer the platform minted.

Headers

Idempotency-KeystringRequired

Required on every write: a URL-safe string of 1 to 64 characters from [A-Za-z0-9._~-] (a UUID fits), scoped to you. It names one operation on one record, ever: a retry replays the stored outcome (Idempotent-Replay: true) or attaches to the live one, and reuse on another record refuses 409 IDEMPOTENCY_KEY_REUSED. Missing or malformed, 400.

If-MatchstringOptional

The ETag the read minted, quoted or bare; absent or * is unconditional; a weak validator refuses 400 INVALID_IF_MATCH. A stale value answers 412 VERSION_CONFLICT with currentVersion and a fresh ETag: re-read, reapply, retry. Send it — every write restates the whole record, so an unconditional write overwrites every field from your copy, and an amend against a pending proposal replaces that proposal.

Request

This endpoint expects an object.
chainPolicyIdintegerOptional
expectedVersionstring or nullOptionalformat: "^-?[0-9]+$"
int64 as a decimal JSON string

Response

The chain policy as the platform now holds it after the write — the same row the read serves, with the answering change's position, the row's ETag and, on a replayed key, Idempotent-Replay.

assetIdinteger
Refdata reference.
chainenum

≠ UNKNOWN on a policy row. UNKNOWN is the unset sentinel: outputs only — as input, omit the field instead; explicit UNKNOWN refuses 400. The value set is append-only: a consumer READING this field treats an unknown name as UNKNOWN, never as an error; as input an unknown name refuses 400 — the parse is strict

Allowed values:
chainPolicyIdinteger
Sticky entity key.
globalSequencestringformat: "^[0-9]+$"

The position as a decimal string — the last change this member had applied, orders and balance readings included.

orgIdinteger

Owner-stamped.

pendingTransitionenum

NONE is the unset sentinel: outputs only — as input, omit the field instead; explicit NONE refuses 400. The value set is append-only: a consumer READING this field treats an unknown name as NONE, never as an error; as input an unknown name refuses 400 — the parse is strict

statusenum

UNKNOWN is the unset sentinel: outputs only — as input, omit the field instead; explicit UNKNOWN refuses 400. The value set is append-only: a consumer READING this field treats an unknown name as UNKNOWN, never as an error; as input an unknown name refuses 400 — the parse is strict

Allowed values:
versionstringformat: "^-?[0-9]+$"

The row's version — monotonic per record, bumped on every change; served as the ETag and taken by If-Match. int64 as a decimal JSON string

isEnabledbooleanOptional

FALSE = chain disabled for this asset: an unstated chain moves nothing. a boolean; absent reads false

maxTransferAmountstring or nullOptionalformat: "^-?[0-9]+(\.[0-9]+)?$"<=64 characters

0 = no bound. money (a Decimal on the wire: a scaled integer with its own scale), served as an exact decimal string at the value's own scale — every fractional digit that scale states, trailing zeros included; never raw; null when the 0 sentinel means unset

minConfirmationsinteger or nullOptional

The settle gate: the confirmation depth at which an on-chain transfer counts as settled rather than in transit; 0 = not stated, and a transfer never settles (the strict reading).

minTransferAmountstring or nullOptionalformat: "^-?[0-9]+(\.[0-9]+)?$"<=64 characters

0 = no bound. money (a Decimal on the wire: a scaled integer with its own scale), served as an exact decimal string at the value's own scale — every fractional digit that scale states, trailing zeros included; never raw; null when the 0 sentinel means unset

pendingByUserIdinteger or nullOptional

The user whose proposal is pending, so an approver is checked to be someone else; 0 when nothing is pending.

settlementSlaNsstring or nullOptionalformat: "^-?[0-9]+$"

The obligation's value-date offset (value date = the envelope time plus this); 0 = due immediately, so breaches surface at once (the noisy-safe reading). int64 as a decimal JSON string

unscaledbooleanOptionalDeprecated

Never present since 0.3.3: every money value on this API states its own scale on the wire — a policy amount or cap since 0.3.3, an order's and an execution's since 0.3.2, a balance's since 0.3.1 — so a row is never served raw, whether or not this member holds the asset or instrument it references. Kept, deprecated, so a client generated from 0.3.2 still compiles; it goes at the next major.

Errors

400
Approve Chain Policies Request Bad Request Error
401
Approve Chain Policies Request Unauthorized Error
403
Approve Chain Policies Request Forbidden Error
404
Approve Chain Policies Request Not Found Error
409
Approve Chain Policies Request Conflict Error
412
Approve Chain Policies Request Precondition Failed Error
413
Approve Chain Policies Request Content Too Large Error
422
Approve Chain Policies Request Unprocessable Entity Error
429
Approve Chain Policies Request Too Many Requests Error
500
Approve Chain Policies Request Internal Server Error
503
Approve Chain Policies Request Service Unavailable Error