Evaluate controls
Evaluates organization controls for JSON null, or effective order controls for an order context with a resolved instrument. Non-equity instruments are blocked. Supply side when position or daily-loss controls apply; those controls block orders without it. Both allowed and blocked results return 200. Users and API keys require Controls Basic or Premium. Users need an organization role; API keys need control read permission for the account environment, or both environments for null. Services need control:evaluate and x-organization-id.
Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Headers
Organization ID required for service-account credentials
Body
JSON null for organization-only evaluation, or a complete order context including its required instrument
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.
- Option 1
- Option 2
- Option 3
- Option 4
- Option 5
- Option 6
- Option 7
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.
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.
UNSPECIFIED, BUY, SELL, SELL_SHORT