Accounts
Route group for account identity, detail summaries, holdings snapshots, and account target-position assignment. Target-allocation candidate searches resolve valid asset and portfolio targets, and holdings read endpoints support both direct account snapshots and virtual-fund-grouped views.
GET /api/v1/account/- supports
search,limit, andoffset - returns
{ count, results } resultscontains the librarymsm.api.accounts.Accountcontract:uid,unique_identifier,account_name,is_paper,account_is_active,holdings_data_node_uid, andmetadata_jsonGET /api/v1/account/{uid}/summary/- returns the reusable
FrontEndDetailSummaryresponse for account detail pages - resolves the account by
uid GET /api/v1/account/target-allocation/targets/- supports
search,target_type=all|asset|portfolio,limit, andoffset - returns one paginated candidate list for target-position assignment
- searches valid
TargetPositionsStoragetargets acrossAssetTableandPortfolioTable - backed by one compiled MetaTable
selectoperation usingUNION ALLrather than separate asset and portfolio searches - asset candidates include latest
AssetSnapshotsStoragename/ticker labels when present - each result contains
target_type,target_uid,asset_uid, andportfolio_uid, so the selected row can be written directly into a target position payload GET /api/v1/account/{account_uid}/holdings/- supports
order,limit=1,include_asset_detail, and exactholdings_date - returns one holdings snapshot backed by
AccountHoldingsStorage - each holding exposes the storage
asset_identifier, positivequantity,direction(1long,-1short), and computedsigned_quantity - returns 200 with an empty
holdingslist when the account exists but no holdings snapshot matches - snapshot-level fields are
holdings_set_uid,holdings_date, andholdings GET /api/v1/account/{account_uid}/holdings/by-fund/- supports
order,limit=1,include_asset_detail, and exactholdings_date - selects one
AccountHoldingsSetTablesource snapshot for the account - groups persisted
VirtualFundHoldingsStorageallocation rows byVirtualFundTable.uidwhere eachVirtualFundHoldingsSetTablereferences the selected source account holdings set - returns
account_uid,source_account_holdings_set_uid,holdings_date,funds,residuals, andallocation_warnings - each fund contains
virtual_fund_uid,virtual_fund_unique_identifier,target_portfolio_uid,holdings_set_uid, and grouped holdings rows - grouped holding rows expose the storage
asset_identifier, positive allocatedquantity, first-classallocation_strategy,direction, computedsigned_quantity, andallocationmetadata parsed fromextra_details allocationcontainstarget_gap_signed_quantity,scale,target_row_key, andposition_set_uidwhen those fields were persisted by the virtual-fund allocation apply stepresidualsare derived as source account signed quantity minus total virtual-fund allocated signed quantity per asset- asset labels use latest
AssetSnapshotsStoragerows; OpenFIGI and numeric asset IDs are not used - this read endpoint does not rerun or apply the allocation planner
POST /api/v1/account/{account_uid}/add-holdings/- writes one account holdings snapshot and returns the same
AccountHoldingsSnapshotResponsecontract as the holdings read endpoint - request body contains
holdings_date,overwrite, andpositions - each position uses the storage field name
asset_identifier asset_uid, when provided, is validation only and must match the asset row for the suppliedasset_identifierquantityis stored as a positive magnitude anddirectionstores sidetarget_trade_time, when provided, must matchholdings_dateoverwrite=falserejects an existing snapshot;overwrite=truereplaces rows for the holdings set through one scoped MetaTable operation so the delete and replacement insert share the same backend transaction boundaryPOST /api/v1/account/{account_uid}/add-target-positions/- writes one account target-position snapshot and returns the same
AccountTargetPositionsSnapshotResponsecontract as the target-positions read endpoint - request body contains only
target_positions_date,overwrite, andpositions; account and target-allocation parent identity are derived from the account uid in the path - backend derives a deterministic account allocation model and
account-target-allocation row from the account uid; the frontend does not
send
account_allocation_model_uid, target-allocation uid, display name, or parent metadata - each position uses
target_type,target_uid, and exactly one concrete target reference:asset_uidfor asset rows orportfolio_uidfor portfolio rows - each position must provide exactly one of
weight_notional_exposure,constant_notional_exposure, orsingle_asset_quantity single_asset_quantityis valid only for direct asset target rows; portfolio target rows must useweight_notional_exposureorconstant_notional_exposureoverwrite=falserejects an existing position set at the same timestamp;overwrite=truereplaces rows through one scoped MetaTable operation so the parent upserts, delete, and replacement insert share the same backend transaction boundaryGET /api/v1/account/{account_uid}/target-positions/- supports
order,limit=1,include_asset_detail, and exacttarget_positions_date - resolves active account target allocations, selects one
PositionSetTablesnapshot, and returns itsTargetPositionsStorageexposure rows - each position carries
target_type,target_uid, and exactly one concrete target reference:asset_uidorportfolio_uid - returns 200 with an empty
positionslist when the account exists but no target-position snapshot matches - asset details include
uid,unique_identifier, and latestAssetSnapshotsStoragename/ticker; no OpenFIGI or numeric asset id fields are returned - portfolio details include
uid,unique_identifier, and optionalpublished_index_uid; portfolio targets are mandate exposure, not custody holdings