Skip to main content
POST
Evaluate controls

Authorizations

Authorization
string
header
required

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

Headers

x-organization-id
string<uuid> | null

Organization ID required for service-account credentials

Body

application/json

JSON null for organization-only evaluation, or a complete order context including its required instrument

account_id
string<uuid>
required
instrument
object
required

What is being traded.

Mandatory, and that is the safety property. A control has to be evaluated against the same instrument the order is placed in, so the caller resolves once and carries it: this service resolving independently would leave a window where it judged one instrument and the order was placed in another, which a catalogue sync between the two is enough to open.

There is deliberately no "unknown" case. An order in something the catalogue cannot identify is not an order this platform can price, and the caller refuses it before reaching here rather than sending an absence for the evaluator to interpret.

quantity
string
required
symbol
string
required

The venue's spelling, which is what symbol-scoped controls are keyed on. Kept beside instrument rather than read out of it: a control the tenant wrote against ESZ25 has to match whether or not the catalogue resolved that order, and the key must not change depending on whether the resolution succeeded.

side
null | enum<string>

Which way the order moves the position.

Position size and daily loss limits need it: whether an order opens or closes a position is the whole question they ask. Optional on the wire so a caller built before it existed still parses, but a request without it is refused by any control that needs it rather than guessed at.

Available options:
UNSPECIFIED,
BUY,
SELL,
SELL_SHORT

Response

Control evaluation result

allowed
boolean
required
triggered
object[]
required