Create a chain policy
Creates a chain policy as a proposal a second user approves (chain-policies:propose); its amounts are decimal strings, each encoded at its own scale — the gateway consults no reference data, so an asset this member does not hold refuses nothing here (an amount with no assetId, 400). A second live policy for the asset and chain refuses 409 DUPLICATE_POLICY.
Authentication
Bearer authentication of the form Bearer <token>, where token is your auth token.
Headers
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.
Request
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
0 = create.
a boolean; absent reads false
money (a Decimal on the wire): a decimal string on input, encoded at its own scale — the fractional digits sent, trailing zeros dropped, at most 18. The edge consults no reference data: a value finer than its record is the platform's to judge, not the edge's to refuse; absent, null or "0" = unset (the 0 sentinel)
money (a Decimal on the wire): a decimal string on input, encoded at its own scale — the fractional digits sent, trailing zeros dropped, at most 18. The edge consults no reference data: a value finer than its record is the platform's to judge, not the edge's to refuse; absent, null or "0" = unset (the 0 sentinel)
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.
≠ 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
The position as a decimal string — the last change this member had applied, orders and balance readings included.
Owner-stamped.
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
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
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
FALSE = chain disabled for this asset: an unstated chain moves nothing. a boolean; absent reads false
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
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).
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
The user whose proposal is pending, so an approver is checked to be someone else; 0 when nothing is pending.
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
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.