Create a Draft Model Order

Creates the parent model order in Draft status. Add investor orders with the investor-orders endpoint, then
submit the model order with the complete endpoint. Drafts that are not completed are cancelled overnight.

Recent Requests
Log in to see full request history
TimeStatusUser Agent
Retrieving recent requests…
LoadingLoading…

Create an aggregate Model Order as a draft. The Individual Orders, representing the underlying Child Orders, are added to the draft afterwards. Monark handles pro-rated settlement, ensuring that all investors within the Model Order are treated fairly during downstream processing at the Transfer Agent or Matching Queue. As such, we require the Child Order breakdown to be submitted for every Model Order.

A Model Order is submitted in three steps:

  1. POST /primary/v1/omnibus/model-order (this endpoint) creates the Model Order with a status of Draft and returns 201 with its id. The request carries the Model Order's fund, share class, side, Financial Institution and elections, but no Child Orders.
  2. POST /primary/v1/omnibus/model-order/investor-orders, with modelOrderId and an orders list, adds a batch of Child Orders and returns 200 with the receivedOrderCount so far. Call it once per batch. Each batch is validated as it arrives, and a batch with an invalid Child Order is refused as a whole, with nothing added and the Model Order still in Draft.
  3. POST /primary/v1/omnibus/model-order/complete, with modelOrderId and totalOrderCount, submits the Model Order and returns 202 with a status of Processing. totalOrderCount must equal the number of Child Orders received, or the request is refused with 409 (OrderCountMismatch). Monark validates every Child Order again, then moves the Model Order to Received and sends OmnibusModelOrderCreated, or to Rejected or Failed with OmnibusModelOrderRejected or OmnibusModelOrderFailed.

Drafts that are not completed by 1:00 AM Eastern are cancelled with a statusReasonCode of DraftExpired. See Model Orders for the full flow, with examples.

Order Structure Example:

  • Model Order: BUY, $100 (calculated by Monark)
    • Child Order: BUY, $10
    • Child Order: BUY, $50
    • Child Order: BUY, $40

Use this endpoint when a model rebalancer submits a single aggregate block for a particular fund/share class. Add the underlying Orders with the investor-orders endpoint.

Notes:

  • The Model Order referenceId must be unique per API client.
  • A Model Order must contain at least 1 and no more than 10,000 Child Orders, across all batches.
  • referenceId values for Child Orders must be unique per API client, and can't be reused on another open Model Order.
  • For SELL Model Orders: a batch is refused, or the Model Order is rejected in its entirety when it is completed, if any Child Order, once fully filled and settled, would result in a negative share balance for the associated Investor.
  • For BUY Orders: custodians are responsible for checking to ensure that Investors associated with Child Orders have sufficient cash to fund their BUY Order.
  • Child Orders will inherit the taxLotElection and distributionElection method set at the Model Order level.
  • Each account can appear only once in the Model Order, across all batches.
  • The Model Order's Financial Institution must have access to the Registered Fund in order to process Model Orders into the Fund.
  • An Omnibus Account must already exist at the Transfer Agent for the fund, share class, and distribution election, held by the financial institution or, in the MMM Securities master omnibus, by MMM Securities.
  • Model Order individual orders are created as linked child orders and cannot be amended or cancelled through the Individual Order endpoints.

Body Params

Model order details. Investor orders are added separately.

Request model for creating a draft Omnibus model order. Investor orders are added separately.

string
required
length between 1 and 100

Partner-submitted aggregate order reference. Must be unique per partner.

string | null

Optional client model or rebalance identifier.

uuid
required
length ≥ 1

Registered fund being traded.

uuid
required
length ≥ 1

Share class being traded. Must belong to the omnibus fund.

uuid
required
length ≥ 1

Financial institution whose investor accounts are included in this aggregate order.

string
enum
required

Aggregate order side: buy or sell.

Allowed:
string
required
length ≥ 1

Order currency. Only USD is supported for the first version.

string
enum
required

Distribution election used as part of the position identity.

Allowed:
string
enum
required

Tax lot election for sell order handling.

Allowed:
string | null
enum

Requested downstream route for the model-order parent. All child orders
inherit the parent route. When omitted for backward compatibility, OMS
resolves the parent and all children to primary_offering_api_models.Omnibus.Enums.OmnibusRouteInstruction.TransferAgent.

Allowed:
string | null
enum

Instructions for the unmatched balance after netting TIF expires. Used only for netting routes. Defaults to TransferAgent, which requires Cutoff NettingTif.

Allowed:
string | null
enum

Netting time in force. Used only for netting routes. Defaults to Cutoff. Other values require UnnettedOrderRoute = Cancel.
EOD: the next netting session only. Cutoff: every session up to the next TA cutoff. EOM/EOQ: every session up to
the last one in the month/quarter of the order's first session. Custom: every session on or before nettingTifDate.
A session that doesn't run (for example its NAV is missing) doesn't extend the order: at its deadline the order goes
to the TA cutoff or is cancelled, as the order asked.

Allowed:
date | null

Custom netting date, used only for Custom TIF: every session on or before this date. When omitted, Custom behaves as Cutoff.

Responses

Language
Credentials
Header
LoadingLoading…
Response
Click Try It! to start a request and see the response here! Or choose an example:
application/json