Improved

Named schemas and type discriminators for ACATS and portfolio weights

Broker API

The ACATS transfer-details and portfolio-weight request schemas now reference named component schemas selected by a type discriminator instead of inline branches. Accepted JSON is unchanged, apart from one validation relaxation on full ACATS transfers.

  • AcatsInitiateTransferDetails now selects FullTransfer or PartialTransfer on type. PartialTransfer is a plain object with type, cash, and securities, and still requires a non-empty cash array, a non-empty securities.equities array, or both.
  • FullTransfer now rejects only a non-empty cash or securities.equities array; omitted or empty values are accepted, matching ACATS behavior.
  • PortfolioWeightRequest now selects PortfolioWeightCashEntry or PortfolioWeightAssetEntry on type, with shared fields on PortfolioWeightRequestBase. percent remains a decimal string. Portfolio-weight validation is unchanged.

Clients generated from the Broker API description will see renamed models for these branches and should follow a breaking-change adoption path rather than a routine regeneration.

Affected Endpoints

  • POST /v1beta1/acats/{account_id}
  • POST /v1/rebalancing/portfolios
  • PATCH /v1/rebalancing/portfolios/{portfolio_id}
  • POST /v1/rebalancing/runs