openapi: 3.2.0 info: title: Models API description: Moment's Models API allows Clients to manage their portfolio models. version: 1.0.0 contact: name: Moment Support email: support@withmoment.com url: https://withmoment.com/support servers: - url: https://live.moment-api.com - url: https://paper.moment-api.com tags: - name: Models paths: /v1/model/: get: tags: - Models summary: List all Models operationId: ListModels parameters: - name: strategy_type in: query description: Filter by strategy type. If not provided, returns all strategy types. required: false schema: type: string enum: - fixed_income - security_list responses: '200': description: Successful response content: application/json: schema: type: array items: $ref: '#/components/schemas/ShortStrategy' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/APIError' post: tags: - Models summary: Create a Model operationId: CreateModel requestBody: content: application/json: schema: allOf: - $ref: '#/components/schemas/CreateStrategyRequest' required: true responses: '200': description: Successful response content: application/json: schema: $ref: '#/components/schemas/CreateStrategyResponse' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/APIError' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/APIError' /v1/model/preview/: post: tags: - Models summary: Preview a Model operationId: PreviewModel requestBody: content: application/json: schema: $ref: '#/components/schemas/PreviewModelRequest' required: true responses: '200': description: Successful response content: application/json: schema: $ref: '#/components/schemas/PreviewModelResponse' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/APIError' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/APIError' /v1/model/{model_id}/: get: tags: - Models summary: Get a Model operationId: GetModel parameters: - $ref: '#/components/parameters/model_id' responses: '200': description: Successful response content: application/json: schema: $ref: '#/components/schemas/GetStrategyResponse' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/APIError' '404': description: Not Found content: application/json: schema: $ref: '#/components/schemas/APIError' patch: tags: - Models summary: Update a Model operationId: UpdateModel parameters: - $ref: '#/components/parameters/model_id' requestBody: content: application/json: schema: $ref: '#/components/schemas/UpdateStrategyRequest' required: true responses: '200': description: Successful response content: application/json: schema: $ref: '#/components/schemas/UpdateStrategyResponse' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/APIError' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/APIError' '404': description: Not Found content: application/json: schema: $ref: '#/components/schemas/APIError' '409': description: Conflict - strategy_type mismatch content: application/json: schema: $ref: '#/components/schemas/APIError' delete: tags: - Models summary: Delete a Model operationId: DeleteModel parameters: - $ref: '#/components/parameters/model_id' responses: '204': description: Model deleted successfully '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/APIError' '404': description: Not Found content: application/json: schema: $ref: '#/components/schemas/APIError' '409': description: Conflict - the strategy is referenced by live asset allocation templates content: application/json: schema: $ref: '#/components/schemas/StrategyReferencedByTemplatesError' '422': description: Unprocessable Entity - strategy is not a model content: application/json: schema: $ref: '#/components/schemas/APIError' '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/APIError' /v1/model/{model_id}/history/: get: tags: - Models summary: Get a Model's version history description: Returns the audit trail of changes for a security_list strategy, most recent first. Not available for fixed_income models. operationId: GetModelHistory parameters: - $ref: '#/components/parameters/model_id' - name: limit in: query description: Max versions to return (most recent first). Defaults to 20, capped at 100. required: false schema: type: integer minimum: 1 maximum: 100 default: 20 - name: cursor in: query description: Opaque pagination cursor from a previous response's next_cursor. Omit for the first (most recent) page. required: false schema: type: string responses: '200': description: Successful response content: application/json: schema: $ref: '#/components/schemas/StrategyVersionPage' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/APIError' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/APIError' '404': description: Not Found content: application/json: schema: $ref: '#/components/schemas/APIError' components: schemas: UpdateSecurityListStrategy: description: Security-list strategy update (all fields optional for PATCH) type: object properties: allocation_type: $ref: '#/components/schemas/AllocationType' notional_basis: description: The notional amount used as basis for weight calculations type: number default: 10000000 title: Notional Basis x-go-type: float64 schema_version: type: integer enum: - 1 title: Schema Version securities: description: The list of securities with their allocations type: array items: $ref: '#/components/schemas/SecurityListItem' title: Securities title: UpdateSecurityListStrategy State: type: string enum: - AL - AK - AS - AZ - AR - CA - CO - CT - DC - DE - FL - GA - GU - HI - ID - IL - IN - IA - KS - KY - LA - ME - MD - MA - MI - MN - MS - MO - MP - MT - NE - NV - NH - NJ - NM - NY - NC - ND - OH - OK - OR - PA - PR - RI - SC - SD - TN - TX - UT - VI - VT - VA - WA - WV - WI - WY - '' title: State UpdateStrategyRequest: description: Request to update a strategy discriminator: propertyName: strategy_type mapping: fixed_income: '#/components/schemas/UpdateFixedIncomeStrategyRequest' security_list: '#/components/schemas/UpdateSecurityListStrategyRequest' oneOf: - $ref: '#/components/schemas/UpdateFixedIncomeStrategyRequest' - $ref: '#/components/schemas/UpdateSecurityListStrategyRequest' NullDecimal: type: - number - 'null' format: double title: NullDecimal x-go-type: decimal.NullDecimal x-go-type-import: path: github.com/shopspring/decimal name: decimal AverageValueConstraint: type: object properties: id: description: Unique identifier for this constraint. Must match the `constraint_id` on the enclosing `ConstraintOperation`. Required. type: string title: ID constraint_priority: $ref: '#/components/schemas/ConstraintPriority' field: description: The field to apply the average value constraint to. type: string title: Field max_average_value: description: The maximum average value for the field. anyOf: - type: number - type: string title: Max Average Value min_average_value: description: The minimum average value for the field. anyOf: - type: number - type: string title: Min Average Value name: description: 'Optional user-supplied display label for the constraint, shown in place of the generated description. Cosmetic only: never read by the solver and never part of the constraint''s identity, so distinct constraints may share a name.' type: string maxLength: 200 title: Name scope: $ref: '#/components/schemas/FilterDictionary' target_average_value: description: The target average value for the field. anyOf: - type: number - type: string title: Target Average Value type: type: string enum: - average_value title: Type required: - type - field title: AverageValueConstraint GetFixedIncomeStrategyResponse: description: Response for getting a fixed_income strategy type: object allOf: - $ref: '#/components/schemas/FixedIncomeModel' - type: object properties: sample_holdings: type: array items: $ref: '#/components/schemas/Holding' readOnly: true sample_statistics: allOf: - $ref: '#/components/schemas/Statistics' readOnly: true strategy: $ref: '#/components/schemas/FixedIncomeStrategy' strategy_type: type: string enum: - fixed_income required: - strategy_type UpdateFixedIncomeStrategyResponse: description: Response for updating a fixed_income strategy allOf: - $ref: '#/components/schemas/GetFixedIncomeStrategyResponse' UpdateSecurityListStrategyRequest: type: object properties: account_minimum: description: Recommended minimum account size for assigning this strategy. type: - number - 'null' x-go-type: float64 description: description: The description of the strategy type: string benchmark: description: Benchmark index the strategy is measured against (e.g., 'S&P 500'). Free-text, user-supplied; null when unset. type: - string - 'null' model_program: description: Program tag used for grouping models in a hierarchy (e.g., 'NEPC Passive Taxable'). Null when unset so downstream renderers can distinguish "no program assigned" from a real value. type: - string - 'null' unresolved_securities: description: CUSIPs from an external model feed that did not resolve to a security and are excluded from the holdings. Omitted or null keeps the current value; send an empty array to clear it. type: - array - 'null' items: type: string risk_class: description: Risk classification for the strategy (e.g., 'Conservative'). Free-text, user-supplied; null when unset. type: - string - 'null' sector: description: Sector classification for the strategy (e.g., 'Technology'). Free-text, user-supplied; null when unset. type: - string - 'null' name: description: The name of the strategy type: string portfolio_manager: description: Name of the portfolio manager. Used for compliance and trade attribution purposes. Null when unset — downstream renderers (e.g. trade memo) must guard on null to avoid emitting attribution lines without a name. type: - string - 'null' sharing_organization_id: description: The organization that owns the strategy type: string strategy: $ref: '#/components/schemas/UpdateSecurityListStrategy' strategy_type: type: string enum: - security_list required: - strategy_type UniverseTracker: type: object properties: compliant: type: boolean title: Compliant instrument_id: type: string title: Instrument ID market_value: type: number title: Market Value x-go-type: decimal.Decimal x-go-type-import: path: github.com/shopspring/decimal name: decimal weight: type: number title: Weight x-go-type: decimal.Decimal x-go-type-import: path: github.com/shopspring/decimal name: decimal DiversificationFieldValidation: type: object properties: compliant: type: boolean equal_weight_deviation: description: 'Set only on a held group an equal-weight rule flags as outside its equal_weight_target; such a group is not compliant.' allOf: - $ref: '#/components/schemas/EqualWeightDeviation' field_value: type: string holdings: type: array items: $ref: '#/components/schemas/InstrumentID' market_value: type: number x-go-type: decimal.Decimal x-go-type-import: path: github.com/shopspring/decimal name: decimal on_track: type: boolean weight: type: number x-go-type: decimal.Decimal x-go-type-import: path: github.com/shopspring/decimal name: decimal required: - field_value - holdings - market_value - weight - compliant - on_track AllocationTemplateRef: type: object properties: id: type: string name: type: string required: - id - name title: AllocationTemplateRef DiversificationConstraintValidation: type: object properties: compliant: type: boolean title: Compliant constraint: $ref: '#/components/schemas/DiversificationConstraint' fields: type: array items: $ref: '#/components/schemas/DiversificationFieldValidation' title: Fields id: description: The ID of the constraint. type: string title: ID invalid_fields: type: array items: $ref: '#/components/schemas/FieldValidation' title: Invalid Fields on_track: type: boolean title: On Track piece_condition: description: 'The matched piece''s condition, emitted only on a child of a `PiecewiseConstraint` whose piece carries one. Absent on every other constraint, and on a child of a conditionless piece.' allOf: - $ref: '#/components/schemas/PiecewiseCondition' title: Piece Condition relaxed: description: Whether this constraint was relaxed by the solver during the most recent solve. type: boolean default: false title: Relaxed relaxed_compliant: description: 'Whether the constraint is compliant against the relaxed bounds the solver actually used. Equals `compliant` when the constraint was not relaxed.' type: - boolean - 'null' title: Relaxed Compliant equal_weight_target: description: 'Present only on a rule with equal_weight_tolerance when at least two groups are held and the weight denominator is positive: the weight range every held group should fall in.' allOf: - $ref: '#/components/schemas/EqualWeightTarget' title: Equal Weight Target total_scoped_market_value: description: 'The denominator of each field group''s `weight`: market value of the holdings in the constraint''s scope, plus cash when the valuation config counts it (`total_mv`). Ignores the account''s target or desired market value. The weight bound is graded only while the scope holds securities. Null unless the constraint has a scope and a min or max weight bound.' allOf: - $ref: '#/components/schemas/NullDecimal' title: Total Scoped Market Value x-go-type-skip-optional-pointer: true required: - compliant - on_track - constraint - invalid_fields EqualWeightDeviation: description: Which side of its equal-weight target a held group falls on. type: string enum: - too_small - too_large x-enum-varnames: - EqualWeightDeviationTooSmall - EqualWeightDeviationTooLarge title: EqualWeightDeviation AllocationConstraint: type: object properties: id: description: Unique identifier for this constraint. Must match the `constraint_id` on the enclosing `ConstraintOperation`. Required. type: string title: ID constraint_priority: $ref: '#/components/schemas/ConstraintPriority' filter: $ref: '#/components/schemas/FilterDictionary' max_market_value: description: The maximum market value for the allocation constraint, which can be specified instead of max_weight. type: number format: double title: Max Market Value max_weight: description: The maximum weight for the allocation constraint. Bounded to [0, 1]. type: number format: double minimum: 0 maximum: 1 title: Max Weight min_market_value: description: The minimum market value for the allocation constraint, which can be specified instead of min_weight. type: number format: double title: Min Market Value min_weight: description: The minimum weight for the allocation constraint. Bounded to [0, 1]. type: number format: double minimum: 0 maximum: 1 title: Min Weight name: description: 'Optional user-supplied display label for the constraint, shown in place of the generated description. Cosmetic only: never read by the solver and never part of the constraint''s identity, so distinct constraints may share a name.' type: string maxLength: 200 title: Name rel_buffer: description: Relative buffer applied around the target. Half-open [0, 1). type: number format: double minimum: 0 default: 0.01 title: Rel Buffer exclusiveMaximum: 1 scope: $ref: '#/components/schemas/FilterDictionary' target_market_value: description: The target market value for the allocation constraint, which can be specified instead of target_weight. type: number format: double title: Target Market Value target_weight: description: The target weight for the allocation constraint. Bounded to [0, 1]. type: number format: double minimum: 0 maximum: 1 title: Target Weight type: type: string enum: - allocation title: Type required: - filter - type title: AllocationConstraint PreviewModelRequest: type: object properties: assignment_date: description: The date to assign the model type: string format: date title: Assignment Date x-go-type: string cash: description: The amount of cash to invest in the model type: number title: Cash x-go-type: float64 customizations: $ref: '#/components/schemas/Customizations' federal_tax_rate: description: The federal tax rate to apply to the model type: number default: 0 title: Federal Tax Rate x-go-type: float64 local_tax_rate: description: The local tax rate to apply to the model type: number default: 0 title: Local Tax Rate x-go-type: float64 risk_group_id: description: The ID of the risk group to apply to the model type: string title: Risk Group ID state: description: The state that the user is in. This will alter the tax treatments of the portfolio. allOf: - $ref: '#/components/schemas/State' state_tax_rate: description: The state tax rate to apply to the model type: number default: 0 title: State Tax Rate x-go-type: float64 strategy: $ref: '#/components/schemas/FixedIncomeStrategy' required: - state - strategy ObjectiveTermOperation: description: The operation to apply between objective terms. type: string enum: - add - subtract - multiply - divide - max - min title: ObjectiveTermOperation ConcreteObjectiveTerm: description: A leaf or operation node in an objective term tree — either a field reference or an operation applied to other nodes. discriminator: propertyName: type mapping: field: '#/components/schemas/FieldTerm' operation: '#/components/schemas/OperationTerm' oneOf: - $ref: '#/components/schemas/FieldTerm' - $ref: '#/components/schemas/OperationTerm' title: ConcreteObjectiveTerm EqualWeightTarget: description: 'The weight range, as fractions of the account''s weight denominator, that every held group of an equal-weight rule should fall in.' type: object properties: min_weight: type: number format: double title: Min Weight max_weight: type: number format: double title: Max Weight required: - min_weight - max_weight title: EqualWeightTarget FixedIncomeShortStatistics: type: object properties: average_coupon: description: The average coupon of the model's sample holdings type: number readOnly: true x-go-type: float64 average_duration: description: The average duration of the model's sample holdings type: number readOnly: true x-go-type: float64 x-oapi-codegen-extra-tags: excludable: 'true' average_maturity: description: The average maturity (in years) of the model's sample holdings type: number readOnly: true x-go-type: float64 average_moodys_rating: description: The average Moody's rating of the model's sample holdings type: string readOnly: true x-oapi-codegen-extra-tags: excludable: 'true' average_sp_rating: description: The average SP rating of the model's sample holdings type: string readOnly: true x-oapi-codegen-extra-tags: excludable: 'true' average_tax_equivalent_ytw: description: The average tax equivalent yield to worst of the model's sample holdings type: number readOnly: true x-go-type: float64 average_ytm: description: The average yield to maturity of the model's sample holdings type: number readOnly: true x-go-type: float64 average_ytw: description: The average yield to worst of the model's sample holdings type: number readOnly: true x-go-type: float64 SecurityListStrategy: description: Security-list strategy with explicit instrument allocations type: object properties: allocation_type: $ref: '#/components/schemas/AllocationType' notional_basis: description: The notional amount used as basis for weight calculations type: number default: 10000000 title: Notional Basis x-go-type: float64 schema_version: type: integer enum: - 1 title: Schema Version securities: description: The list of securities with their allocations type: array items: $ref: '#/components/schemas/SecurityListItem' title: Securities required: - allocation_type - securities - schema_version title: SecurityListStrategy SecurityListShortStrategy: description: Short strategy representation for security list strategies type: object properties: account_minimum: description: Recommended minimum account size for assigning this strategy. type: - number - 'null' x-go-type: float64 allocation_type: $ref: '#/components/schemas/AllocationType' created_by: description: The user who created the strategy allOf: - $ref: '#/components/schemas/User' readOnly: true description: description: The description of the strategy type: string holdings_summary: allOf: - $ref: '#/components/schemas/HoldingsSummary' readOnly: true id: description: The ID of the strategy type: string readOnly: true benchmark: description: Benchmark index the strategy is measured against (e.g., 'S&P 500'). Free-text, user-supplied; null when unset. type: - string - 'null' model_program: description: Program tag used for grouping models in a hierarchy (e.g., 'NEPC Passive Taxable'). Null when unset so downstream renderers can distinguish "no program assigned" from a real value. type: - string - 'null' risk_class: description: Risk classification for the strategy (e.g., 'Conservative'). Free-text, user-supplied; null when unset. type: - string - 'null' sector: description: Sector classification for the strategy (e.g., 'Technology'). Free-text, user-supplied; null when unset. type: - string - 'null' name: description: The name of the strategy type: string portfolio_manager: description: Name of the portfolio manager. Used for compliance and trade attribution purposes. Null when unset — downstream renderers (e.g. trade memo) must guard on null to avoid emitting attribution lines without a name. type: - string - 'null' sharing_organization: allOf: - $ref: '#/components/schemas/Organization' readOnly: true sharing_organization_id: description: The organization that owns the strategy type: string strategy_type: description: The type of strategy type: string enum: - security_list title: Strategy Type updated_at: description: The timestamp when the strategy was last updated type: string format: date-time readOnly: true updated_by: description: The user who last updated the strategy allOf: - $ref: '#/components/schemas/User' readOnly: true required: - strategy_type - id - name - description - allocation_type LadderPolicyConstraint: type: object properties: id: description: Unique identifier for this constraint. Must match the `constraint_id` on the enclosing `ConstraintOperation`. Required. type: string title: ID constraint_priority: $ref: '#/components/schemas/ConstraintPriority' end_period: description: The ending period of the ladder. Required unless `num_periods` is provided. type: integer example: 1 title: End Period grace_period_months: description: The length of the grace period in months. The grace period is the time period after the assignment date where a dynamic ladder policy constraint are not yet being adjusted. type: integer default: 1 title: Grace Period Months market_value_tolerance: description: The maximum market value deviation allowed for each bucket in the ladder, which can be specified instead of weight_tolerance. type: number format: double title: Market Value Tolerance maturity_option: description: Which date a ladder bucket measures against. Nullable because persisted payloads carry an explicit null, which readers already treat as the default. default: maturity_date x-omitempty: true allOf: - $ref: '#/components/schemas/MaturityOption' name: description: 'Optional user-supplied display label for the constraint, shown in place of the generated description. Cosmetic only: never read by the solver and never part of the constraint''s identity, so distinct constraints may share a name.' type: string maxLength: 200 title: Name num_periods: description: Alternative to `end_period`; sets `end_period` to `start_period + num_periods`. May be sent with `end_period` only when they agree (`end_period == start_period + num_periods`); conflicting values are rejected. type: integer example: 6 title: Num Periods period_length: description: The length of one ladder period in months. type: integer example: 12 title: Period Length scope: $ref: '#/components/schemas/FilterDictionary' start_period: description: The starting period of the ladder. type: integer example: 0 default: 0 title: Start Period type: type: string enum: - ladder_policy title: Type use_call_adjusted_maturity: description: The call adjusted maturity date is the terminal date of the bond implied by its yield to worst. If set to true then the ladder policy constraint will use the call adjusted maturity date instead of the maturity date. type: boolean default: false title: Use Call Adjusted Maturity use_assignment_date: description: When true, the assignment date anchors the ladder policy time-line; when false, the time-to-maturity mode is used (rolling buckets relative to today). Defaults to true. type: boolean default: true title: Use Assignment Date weight_tolerance: description: The maximum weight deviation allowed for each bucket in the ladder. type: number format: double example: 0.05 title: Weight Tolerance required: - type - period_length title: LadderPolicyConstraint UniverseConstraintValidation: type: object properties: compliant: type: boolean title: Compliant constraint: anyOf: - $ref: '#/components/schemas/UniverseConstraint' - $ref: '#/components/schemas/BuyUniverseConstraint' holdings: type: array items: $ref: '#/components/schemas/UniverseTracker' title: Holdings id: description: The ID of the constraint. type: string title: ID invalid_holdings: type: array items: $ref: '#/components/schemas/InstrumentID' title: Invalid Holdings invalid_holdings_values: description: 'Per invalid holding (keyed by instrument ID), the holding''s reference-data values for the universe filter''s non-identity fields (isin/cusip are the row''s identity, not values). Emitted only when the filter references value fields.' type: object additionalProperties: type: object additionalProperties: {} title: Invalid Holdings Values on_track: type: boolean title: On Track piece_condition: description: 'The matched piece''s condition, emitted only on a child of a `PiecewiseConstraint` whose piece carries one. Absent on every other constraint, and on a child of a conditionless piece.' allOf: - $ref: '#/components/schemas/PiecewiseCondition' title: Piece Condition relaxed: description: 'Always `false` for Universe/BuyUniverse constraints — they are hard filters and cannot be relaxed by the solver. Emitted for uniformity with relaxable validation types.' type: boolean default: false title: Relaxed relaxed_compliant: description: 'Always `null` for Universe/BuyUniverse constraints — they are hard filters with no relaxed-bounds notion. Emitted for uniformity with relaxable validation types.' type: - boolean - 'null' title: Relaxed Compliant required: - compliant - on_track - constraint - invalid_holdings BuyUniverseConstraint: description: 'The BuyUniverseConstraint is a constraint that specifies the universe of instruments that can be bought in the account. Within the filter field, you can specify filters based on reference data fields and live fields (this includes: `order_price`, `order_ytw`, `tax_effective_limit_ytw`, `post_tax_limit_ytw`, `fixed_transaction_cost_in_yield`, and `fixed_transaction_cost_in_price`).' type: object properties: id: description: Unique identifier for this constraint. Must match the `constraint_id` on the enclosing `ConstraintOperation`. Required. type: string title: ID constraint_priority: $ref: '#/components/schemas/ConstraintPriority' filter: $ref: '#/components/schemas/FilterDictionary' name: description: 'Optional user-supplied display label for the constraint, shown in place of the generated description. Cosmetic only: never read by the solver and never part of the constraint''s identity, so distinct constraints may share a name.' type: string maxLength: 200 title: Name scope: $ref: '#/components/schemas/FilterDictionary' type: type: string enum: - buy_universe title: Type required: - type - filter title: BuyUniverseConstraint PiecewiseCondition: type: object properties: account_market_value: description: the account market value that we will use for the piecewise constraint. allOf: - $ref: '#/components/schemas/Filter' x-go-type-skip-optional-pointer: true CashflowBandConstraint: description: 'Levels the recurring cashflow targets of every account on the strategy: each live bucket of a recurring target is held within ±max_deviation_ratio of that target''s post-trade mean bucket cashflow, in raw dollars, while the objective is still maximized. Buckets with an amount override are left out of the band, as are one_time targets and targets with fewer than two remaining buckets. Assigned accounts inherit it; per-account customizations may override or remove it by id.' type: object properties: id: description: Unique identifier for this constraint. Must match the `constraint_id` on the enclosing `ConstraintOperation`. Required. type: string title: ID constraint_priority: description: Same as ConstraintPriority, but omitted defaults to 1, so the band relaxes before the cashflow floors (tier 2). allOf: - $ref: '#/components/schemas/ConstraintPriority' default: 1 max_deviation_ratio: description: Half-width of the band as a fraction of the target's mean bucket, in (0, 1]. type: number format: double maximum: 1 title: Max Deviation Ratio exclusiveMinimum: 0 name: description: 'Optional user-supplied display label for the constraint, shown in place of the generated description. Cosmetic only: never read by the solver and never part of the constraint''s identity, so distinct constraints may share a name.' type: string maxLength: 200 title: Name type: type: string enum: - cashflow_band title: Type required: - type - max_deviation_ratio title: CashflowBandConstraint ShortStrategy: description: Short strategy representation for list responses discriminator: propertyName: strategy_type mapping: fixed_income: '#/components/schemas/FixedIncomeShortStrategy' security_list: '#/components/schemas/SecurityListShortStrategy' oneOf: - $ref: '#/components/schemas/FixedIncomeShortStrategy' - $ref: '#/components/schemas/SecurityListShortStrategy' SellPrecedenceConstraint: description: Enforces a trading-precedence ordering across an ordered list of security groups. Each entry in `filters` selects a group (the in-scope securities matching it); a group may only be traded once every higher-precedence (earlier) group has been fully consumed. Earlier filters are higher precedence. At least two filters are required — a single-group ordering is a no-op. type: object properties: id: description: Unique identifier for this constraint. Must match the `constraint_id` on the enclosing `ConstraintOperation`. Required. type: string title: ID constraint_priority: $ref: '#/components/schemas/ConstraintPriority' filters: description: Ordered list of group-membership filters. Index 0 is the highest-precedence group. At least two filters are required. type: array items: $ref: '#/components/schemas/FilterDictionary' minItems: 2 title: Filters name: description: 'Optional user-supplied display label for the constraint, shown in place of the generated description. Cosmetic only: never read by the solver and never part of the constraint''s identity, so distinct constraints may share a name.' type: string maxLength: 200 title: Name scope: $ref: '#/components/schemas/FilterDictionary' type: type: string enum: - sell_precedence title: Type required: - type - filters title: SellPrecedenceConstraint GetStrategyResponse: description: Response from getting a strategy discriminator: propertyName: strategy_type mapping: fixed_income: '#/components/schemas/GetFixedIncomeStrategyResponse' security_list: '#/components/schemas/GetSecurityListStrategyResponse' oneOf: - $ref: '#/components/schemas/GetFixedIncomeStrategyResponse' - $ref: '#/components/schemas/GetSecurityListStrategyResponse' FixedIncomeShortStrategy: description: Short strategy representation for fixed income strategies type: object allOf: - $ref: '#/components/schemas/FixedIncomeModel' - $ref: '#/components/schemas/FixedIncomeShortStatistics' - type: object properties: holdings_summary: allOf: - $ref: '#/components/schemas/HoldingsSummary' readOnly: true strategy_type: description: The type of strategy type: string default: fixed_income enum: - fixed_income title: Strategy Type required: - strategy_type PiecewiseConstraintValidation: type: object properties: additional_constraints: type: array items: $ref: '#/components/schemas/ConcreteConstraintValidation' title: Additional Constraints compliant: type: boolean title: Compliant constraint: $ref: '#/components/schemas/PiecewiseConstraint' id: description: The ID of the constraint. type: string title: ID on_track: type: boolean title: On Track relaxed: description: Whether any child constraint was relaxed by the solver during the most recent solve. type: boolean default: false title: Relaxed relaxed_compliant: description: 'Whether all child constraints are compliant against the relaxed bounds the solver actually used. Equals `compliant` when no child was relaxed.' type: - boolean - 'null' title: Relaxed Compliant required: - compliant - on_track - constraint - additional_constraints CreateSecurityListStrategyResponse: description: Response for created security_list strategy type: object properties: account_minimum: description: Recommended minimum account size for assigning this strategy. type: - number - 'null' x-go-type: float64 created_by: description: The user who created the strategy allOf: - $ref: '#/components/schemas/User' readOnly: true description: description: The description of the strategy type: string id: description: The ID of the strategy type: string readOnly: true benchmark: description: Benchmark index the strategy is measured against (e.g., 'S&P 500'). Free-text, user-supplied; null when unset. type: - string - 'null' model_program: description: Program tag used for grouping models in a hierarchy (e.g., 'NEPC Passive Taxable'). Null when unset so downstream renderers can distinguish "no program assigned" from a real value. type: - string - 'null' unresolved_securities: description: CUSIPs from an external model feed that did not resolve to a security and are excluded from the holdings. Null or empty when every security resolved. type: - array - 'null' items: type: string risk_class: description: Risk classification for the strategy (e.g., 'Conservative'). Free-text, user-supplied; null when unset. type: - string - 'null' sector: description: Sector classification for the strategy (e.g., 'Technology'). Free-text, user-supplied; null when unset. type: - string - 'null' name: description: The name of the strategy type: string portfolio_manager: description: Name of the portfolio manager. Used for compliance and trade attribution purposes. Null when unset — downstream renderers (e.g. trade memo) must guard on null to avoid emitting attribution lines without a name. type: - string - 'null' sharing_organization: allOf: - $ref: '#/components/schemas/Organization' readOnly: true sharing_organization_id: description: The organization that owns the strategy type: string strategy: $ref: '#/components/schemas/SecurityListStrategy' strategy_type: type: string enum: - security_list updated_at: description: The timestamp when the strategy was last updated type: string format: date-time readOnly: true updated_by: description: The user who last updated the strategy allOf: - $ref: '#/components/schemas/User' readOnly: true required: - strategy_type - id - name - description - strategy StrategyVersionSnapshot: description: Full state of a security_list strategy captured at the time of a change. type: object properties: name: type: string description: type: string strategy_type: type: string status: type: string portfolio_manager: type: - string - 'null' account_minimum: type: - number - 'null' x-go-type: float64 model_program: type: - string - 'null' unresolved_securities: description: CUSIPs from an external model feed that did not resolve to a security and are excluded from the holdings. Null or empty when every security resolved. type: - array - 'null' items: type: string benchmark: type: - string - 'null' sector: type: - string - 'null' risk_class: type: - string - 'null' allocation_type: $ref: '#/components/schemas/AllocationType' notional_basis: type: number x-go-type: float64 securities: type: array items: $ref: '#/components/schemas/SecurityListItem' required: - name - description - strategy_type - status - allocation_type - notional_basis - securities title: StrategyVersionSnapshot FilterDictionary: type: object properties: and: description: A list of filters to be applied in an AND relationship. type: array items: $ref: '#/components/schemas/FilterDictionary' default: [] title: And and_list: description: Alias for `and`. A list of filters to be applied in an AND relationship. Supplying both `and` and `and_list` is an error. type: array items: $ref: '#/components/schemas/FilterDictionary' title: And List not: description: A filter to be applied in a NOT relationship. $ref: '#/components/schemas/FilterDictionary' title: Not not_filter: description: Alias for `not`. A filter to be applied in a NOT relationship. Supplying both `not` and `not_filter` is an error. $ref: '#/components/schemas/FilterDictionary' title: Not Filter or: description: A list of filters to be applied in an OR relationship. type: array items: $ref: '#/components/schemas/FilterDictionary' default: [] title: Or or_list: description: Alias for `or`. A list of filters to be applied in an OR relationship. Supplying both `or` and `or_list` is an error. type: array items: $ref: '#/components/schemas/FilterDictionary' title: Or List additionalProperties: $ref: '#/components/schemas/Filter' title: FilterDictionary UpdateFixedIncomeStrategyRequest: type: object properties: asset_classes: type: array items: $ref: '#/components/schemas/AssetClass' description: description: The description of the strategy type: string liquidity_estimate: description: The liquidity estimate associated with the strategy type: number x-go-type: float64 model_cash_amount: description: The cash amount associated with the strategy type: number x-go-type: float64 municipal_state: allOf: - $ref: '#/components/schemas/State' municipal_state_preference: allOf: - $ref: '#/components/schemas/State' name: description: The name of the strategy type: string sharing_organization_id: description: The organization that owns the strategy type: string strategy: $ref: '#/components/schemas/FixedIncomeStrategy' strategy_type: type: string enum: - fixed_income required: - strategy_type FieldTerm: description: A term that references a field value from the instrument data. type: object properties: factor: description: The scaling factor applied to the field value. type: number format: double default: 1 field: description: The name of the field to reference. type: string filter: description: Optional filter applied to the field. $ref: '#/components/schemas/FilterDictionary' type: type: string enum: - field default: field required: - type - field title: FieldTerm AllocationConstraintValidation: type: object properties: compliant: type: boolean title: Compliant constraint: $ref: '#/components/schemas/AllocationConstraint' holdings_in_allocation: type: array items: $ref: '#/components/schemas/InstrumentID' title: Holdings in Allocation x-go-type-skip-optional-pointer: true id: description: The ID of the constraint. type: string title: ID market_value: type: number title: Market Value x-go-type: decimal.Decimal x-go-type-import: path: github.com/shopspring/decimal name: decimal on_track: type: boolean title: On Track piece_condition: description: 'The matched piece''s condition, emitted only on a child of a `PiecewiseConstraint` whose piece carries one. Absent on every other constraint, and on a child of a conditionless piece.' allOf: - $ref: '#/components/schemas/PiecewiseCondition' title: Piece Condition weight: type: number title: Weight x-go-type: decimal.Decimal x-go-type-import: path: github.com/shopspring/decimal name: decimal relaxed: description: Whether this constraint was relaxed by the solver during the most recent solve. type: boolean default: false title: Relaxed relaxed_compliant: description: 'Whether the constraint is compliant against the relaxed bounds the solver actually used. Equals `compliant` when the constraint was not relaxed.' type: - boolean - 'null' title: Relaxed Compliant total_scoped_market_value: description: 'The denominator of `weight`: market value of the holdings in the constraint''s scope, plus cash when the valuation config counts it (`total_mv`). Ignores the account''s target or desired market value. The weight bound is graded only while the scope holds securities. Null unless the constraint has a scope and a min or max weight bound.' allOf: - $ref: '#/components/schemas/NullDecimal' title: Total Scoped Market Value x-go-type-skip-optional-pointer: true required: - compliant - on_track - constraint AverageValueConstraintValidation: type: object properties: compliant: type: boolean title: Compliant constraint: $ref: '#/components/schemas/AverageValueConstraint' holdings_average_value: description: 'Weighted mean of the constrained field across in-scope holdings. Returned as a number for quantitative fields, or as the original rating string (e.g. "AA-") for SP/Moody''s-style rating fields where the underlying mean is converted back to the canonical rating label.' oneOf: - type: number format: double - type: string title: Holdings Average Value holdings_average_value_rank: description: 'Exact numeric rank of `holdings_average_value` for rating fields (e.g. 20.833 where the rating label is "A-"). Omitted for quantitative fields, where `holdings_average_value` already carries the exact number.' type: - number - 'null' format: double title: Holdings Average Value Rank holdings_in_bounds: type: array items: $ref: '#/components/schemas/InstrumentID' title: Holdings in Bounds id: description: The ID of the constraint. type: string title: ID on_track: type: boolean title: On Track piece_condition: description: 'The matched piece''s condition, emitted only on a child of a `PiecewiseConstraint` whose piece carries one. Absent on every other constraint, and on a child of a conditionless piece.' allOf: - $ref: '#/components/schemas/PiecewiseCondition' title: Piece Condition relaxed: description: Whether this constraint was relaxed by the solver during the most recent solve. type: boolean default: false title: Relaxed relaxed_compliant: description: 'Whether the constraint is compliant against the relaxed bounds the solver actually used. Equals `compliant` when the constraint was not relaxed.' type: - boolean - 'null' title: Relaxed Compliant scoped_market_value: description: 'Summed market value of the holdings this constraint''s average was measured over — the denominator of the securities-only weighted average, narrowed by the constraint''s scope filter and excluding holdings whose field is null (and, for rating fields, NR/WR). Cash is excluded even under `hardcode_cash_as_fund`, so this is the denominator of `holdings_average_value` only when that flag is false.' type: - number - 'null' format: double title: Scoped Market Value theoretical_maximum: description: 'Upper bound on the post-deployment average value if all unallocated cash is invested at the maximum stat-distribution field value. Returned as number (quant fields) or rating string (rating fields), matching `holdings_average_value`.' oneOf: - type: number format: double - type: string title: Theoretical Maximum theoretical_maximum_rank: description: 'Exact numeric rank of `theoretical_maximum` for rating fields. Omitted for quantitative fields.' type: - number - 'null' format: double title: Theoretical Maximum Rank theoretical_minimum: description: 'Lower bound on the post-deployment average value if all unallocated cash is invested at the minimum stat-distribution field value. Returned as number (quant fields) or rating string (rating fields).' oneOf: - type: number format: double - type: string title: Theoretical Minimum theoretical_minimum_rank: description: 'Exact numeric rank of `theoretical_minimum` for rating fields. Omitted for quantitative fields.' type: - number - 'null' format: double title: Theoretical Minimum Rank weighted_field_value: description: '`Σ(field_value × market_value)` over the same holdings `scoped_market_value` sums — the numerator of the securities-only weighted average, in field-units × dollars. For rating fields it is on the field''s rating-rank scale, so `weighted_field_value / scoped_market_value` is a rank rather than a letter. That quotient equals `holdings_average_value_rank` (or, for quantitative fields, `holdings_average_value`) only when `hardcode_cash_as_fund` is false; under the flag the reported average folds cash into both halves while these two fields do not.' type: - number - 'null' format: double title: Weighted Field Value required: - compliant - on_track - constraint - holdings_in_bounds Organization: type: object properties: id: description: The ID of the organization type: string logo_url: description: The logo URL of the organization type: - string - 'null' name: description: The name of the organization type: string required: - id - name CashflowBandConstraintValidation: description: 'Compliance of one cashflow_band constraint. Buckets are grouped by combination, the exact set of cashflow targets contributing to them; every live, recurring, non-overridden bucket sits within ±max_deviation_ratio of its combination''s mean bucket cashflow, using the post-trade cashflows the Calculator projects. A combination with fewer than two such buckets has no band.' type: object properties: id: description: The constraint's id, when it has one. type: - string - 'null' title: ID compliant: description: Within the original band for every banded bucket of every combination. type: boolean title: Compliant on_track: description: Equals `compliant`; the band has no trajectory distinct from its current state. type: boolean title: On Track constraint: $ref: '#/components/schemas/CashflowBandConstraint' relaxed: description: Whether this constraint was relaxed by the solver during the most recent solve. type: boolean default: false title: Relaxed relaxed_compliant: description: 'Whether every banded bucket sits within the relaxed band the solver actually used. Equals `compliant` when the constraint was not relaxed.' type: - boolean - 'null' title: Relaxed Compliant breakdown: description: The buckets outside their combination's original band, sorted by start date. Empty when compliant. type: array items: $ref: '#/components/schemas/CashflowBucketBreakdown' title: Breakdown required: - compliant - on_track - constraint title: CashflowBandConstraintValidation Holding: type: object properties: accrued_interest: type: number x-go-type: float64 callable: type: boolean close_price: type: number x-go-type: float64 x-oapi-codegen-extra-tags: excludable: 'true' close_yield_to_maturity: type: number x-go-type: float64 x-oapi-codegen-extra-tags: excludable: 'true' close_yield_to_worst: type: number x-go-type: float64 x-oapi-codegen-extra-tags: excludable: 'true' coupon: type: number x-go-type: float64 cusip: description: The CUSIP is a nine-digit numeric or nine-character alphanumeric code that identifies a North American financial security. type: string example: 594918AD6 title: CUSIP x-oapi-codegen-extra-tags: excludable: 'true' description: description: The description of the instrument. type: string title: Description description_short: description: The short description of the instrument. type: string title: Description Short duration: type: number x-go-type: float64 x-oapi-codegen-extra-tags: excludable: 'true' isin: description: The ISIN of the instrument. It's a 12-character code that uniquely identifies a financial instrument. type: string example: US594918AD66 title: ISIN issuer: type: string limit_price: description: The limit price of the order. type: number title: Limit Price x-go-type: float64 limit_ytm: description: The limit yield to maturity of the order. type: number title: Limit Yield to Maturity x-go-type: float64 limit_ytw: description: The limit yield to worst of the order. type: number title: Limit Yield to Worst x-go-type: float64 maturity_date: type: string format: date moodys_rating: description: The Moody's rating of the instrument. type: string title: Moody's Rating x-oapi-codegen-extra-tags: excludable: 'true' municipal_state: $ref: '#/components/schemas/State' municipal_taxable_federal: type: boolean net_money: description: The net money of the order in dollars. This is calculated as quantity * (limit_price / 100) + (quantity / par_value) * accrued_interest. type: number title: Net Money x-go-type: float64 next_call_date: type: string format: date next_call_price: type: number x-go-type: float64 par_value: type: number x-go-type: float64 price: type: number x-go-type: float64 principal_factor: type: number format: double purpose: type: string quantity: description: The quantity of the instrument to be traded, in notional value. type: number title: Quantity x-go-type: float64 sector: description: The sector of the instrument. type: string title: Sector sp_rating: description: The SP rating of the instrument. type: string title: SP Rating x-oapi-codegen-extra-tags: excludable: 'true' status: type: string tax_effective_limit_ytw: description: The tax effective limit yield to worst of the order. Calculated as limit_ytw * (1 - tax_rate) / (1 - federal_tax_rate - state_tax_rate - local_tax_rate) type: number title: Tax Effective Limit Yield to Worst x-go-type: float64 treasury_subtype: type: string type: $ref: '#/components/schemas/AssetClass' use_of_proceeds: type: string weight: description: The weight of the instrument, relative to the other instruments that are being ordered. type: number title: Weight x-go-type: float64 yield_to_maturity: type: number x-go-type: float64 yield_to_worst: type: number x-go-type: float64 required: - isin - quantity - limit_price - limit_ytw - limit_ytm - tax_effective_limit_ytw - net_money - status ConstraintValidation: type: object anyOf: - $ref: '#/components/schemas/UniverseConstraintValidation' - $ref: '#/components/schemas/AllocationConstraintValidation' - $ref: '#/components/schemas/DiversificationConstraintValidation' - $ref: '#/components/schemas/AverageValueConstraintValidation' - $ref: '#/components/schemas/LadderPolicyConstraintValidation' - $ref: '#/components/schemas/PiecewiseConstraintValidation' - $ref: '#/components/schemas/TradeConstraintValidation' - $ref: '#/components/schemas/CashflowBandConstraintValidation' - $ref: '#/components/schemas/AggregateConstraintValidation' title: ConstraintValidation Customizations: type: object additionalProperties: $ref: '#/components/schemas/Constraint' title: Customizations UpdateStrategyResponse: description: Response from updating a strategy discriminator: propertyName: strategy_type mapping: fixed_income: '#/components/schemas/UpdateFixedIncomeStrategyResponse' security_list: '#/components/schemas/UpdateSecurityListStrategyResponse' oneOf: - $ref: '#/components/schemas/UpdateFixedIncomeStrategyResponse' - $ref: '#/components/schemas/UpdateSecurityListStrategyResponse' CreateFixedIncomeStrategyResponse: description: Response for created fixed_income strategy type: object properties: asset_classes: type: array items: $ref: '#/components/schemas/AssetClass' created_by: description: The user who created the strategy allOf: - $ref: '#/components/schemas/User' readOnly: true description: description: The description of the strategy type: string id: description: The ID of the strategy type: string readOnly: true liquidity_estimate: description: The liquidity estimate associated with the strategy type: number x-go-type: float64 model_cash_amount: description: The cash amount associated with the strategy type: number x-go-type: float64 municipal_state: allOf: - $ref: '#/components/schemas/State' municipal_state_preference: allOf: - $ref: '#/components/schemas/State' name: description: The name of the strategy type: string sample_holdings: type: array items: $ref: '#/components/schemas/Holding' readOnly: true sample_statistics: allOf: - $ref: '#/components/schemas/Statistics' readOnly: true sharing_organization: allOf: - $ref: '#/components/schemas/Organization' readOnly: true sharing_organization_id: description: The organization that owns the strategy type: string strategy: $ref: '#/components/schemas/FixedIncomeStrategy' strategy_type: type: string enum: - fixed_income updated_at: description: The timestamp when the strategy was last updated type: string format: date-time readOnly: true updated_by: description: The user who last updated the strategy allOf: - $ref: '#/components/schemas/User' readOnly: true required: - strategy_type - id - name - description - strategy - asset_classes GetSecurityListStrategyResponse: description: Response for getting a security_list strategy type: object properties: account_minimum: description: Recommended minimum account size for assigning this strategy. type: - number - 'null' x-go-type: float64 created_at: description: The timestamp when the strategy was created type: string format: date-time readOnly: true created_by: description: The user who created the strategy allOf: - $ref: '#/components/schemas/User' readOnly: true description: description: The description of the strategy type: string id: description: The ID of the strategy type: string readOnly: true benchmark: description: Benchmark index the strategy is measured against (e.g., 'S&P 500'). Free-text, user-supplied; null when unset. type: - string - 'null' model_program: description: Program tag used for grouping models in a hierarchy (e.g., 'NEPC Passive Taxable'). Null when unset so downstream renderers can distinguish "no program assigned" from a real value. type: - string - 'null' unresolved_securities: description: CUSIPs from an external model feed that did not resolve to a security and are excluded from the holdings. Null or empty when every security resolved. type: - array - 'null' items: type: string risk_class: description: Risk classification for the strategy (e.g., 'Conservative'). Free-text, user-supplied; null when unset. type: - string - 'null' sector: description: Sector classification for the strategy (e.g., 'Technology'). Free-text, user-supplied; null when unset. type: - string - 'null' name: description: The name of the strategy type: string portfolio_manager: description: Name of the portfolio manager. Used for compliance and trade attribution purposes. Null when unset — downstream renderers (e.g. trade memo) must guard on null to avoid emitting attribution lines without a name. type: - string - 'null' sharing_organization: allOf: - $ref: '#/components/schemas/Organization' readOnly: true sharing_organization_id: description: The organization that owns the strategy type: string strategy: $ref: '#/components/schemas/SecurityListStrategy' strategy_type: type: string enum: - security_list updated_at: description: The timestamp when the strategy was last updated type: string format: date-time readOnly: true updated_by: description: The user who last updated the strategy allOf: - $ref: '#/components/schemas/User' readOnly: true required: - strategy_type - id - name - description - strategy InstrumentID: description: Instrument ISIN type: string example: US594918AD66 title: Instrument ID MaturityOption: description: The maturity option for the ladder policy constraint. type: string default: maturity_date enum: - maturity_date - workout_date - next_call_date title: Maturity Option TradeSizeBasis: description: The field a trade constraint's `min_size`/`max_size` bounds are evaluated on. type: string default: market_value enum: - market_value - par x-enum-varnames: - TradeSizeBasisMarketValue - TradeSizeBasisPar title: Trade Size Basis AssetClass: type: string enum: - treasury - municipal - corporate - agency - government - cd - money_market ObjectiveTerm: description: Top-level wrapper for an objective function term with scaling factor. type: object properties: factor: description: The scaling factor applied to the term value. type: number format: double default: 1 term: $ref: '#/components/schemas/ConcreteObjectiveTerm' required: - term title: ObjectiveTerm AllocationType: description: Determines which column is used for rebalancing. Static uses weights directly; Dynamic converts weights to shares at creation time and uses shares for rebalancing. type: string enum: - static - dynamic title: AllocationType Compliance: type: object properties: compliant: description: Whether the strategy is compliant type: boolean title: Compliant constraints: type: array items: $ref: '#/components/schemas/ConstraintValidation' required: - constraints - compliant TradeConstraintValidation: type: object properties: compliant: type: boolean title: Compliant constraint: $ref: '#/components/schemas/TradeConstraint' id: description: The ID of the constraint. type: string title: ID on_track: type: boolean title: On Track required: - compliant - constraint - on_track Statistics: allOf: - $ref: '#/components/schemas/Snapshot' - $ref: '#/components/schemas/Distribution' ApplicableSide: description: Which side(s) of a trade a constraint or filter applies to. Distinct from `Side`, which labels real executable order direction (`buy` or `sell` only); `ApplicableSide` adds `both` for cases like a universe filter that restricts buys, sells, or both. type: string enum: - buy - sell - both x-enum-varnames: - ApplicableSideBuy - ApplicableSideSell - ApplicableSideBoth title: ApplicableSide FixedIncomeStrategy: description: Fixed income optimization strategy with constraints type: object properties: buy_objective_terms: description: The default objective terms for the model, scoring every trade leg, buy and sell. type: array items: $ref: '#/components/schemas/ObjectiveTerm' x-go-type-skip-optional-pointer: true cash_buffer: description: The cash buffer to maintain in the account. type: number title: Cash Buffer constraints: description: The constraints to apply to the strategy. type: array items: $ref: '#/components/schemas/Constraint' title: Constraints minimum_order_increment: description: The minimum order-size increment for trades in this strategy (face value). Sleeves and accounts can override. type: - integer - 'null' minimum: 1 title: Minimum Order Increment scope_relative_weights: description: If true, a min or max weight bound on a scoped allocation or diversification constraint is a share of the scope's post-trade market value instead of the account's. Defaults to false. type: boolean default: false title: Scope Relative Weights x-go-type-skip-optional-pointer: true objective_strategy: description: The default objective strategy for the model. allOf: - $ref: '#/components/schemas/ObjectiveStrategy' x-go-type-skip-optional-pointer: true schema_version: type: integer enum: - 1 title: Schema Version required: - schema_version - constraints - cash_buffer title: FixedIncomeStrategy OrderLimitConstraint: description: 'Limits the number of unique securities traded in the account: the max_* fields cap, and the min_* fields floor, the count of distinct securities bought, sold, or traded in total. Helps control turnover and transaction costs.' type: object properties: id: description: Unique identifier for this constraint. Must match the `constraint_id` on the enclosing `ConstraintOperation`. Required. type: string title: ID constraint_priority: $ref: '#/components/schemas/ConstraintPriority' max_buy_orders: description: Maximum number of unique securities that may be bought. type: integer title: Max Buy Orders max_sell_orders: description: Maximum number of unique securities that may be sold. type: integer title: Max Sell Orders max_total_orders: description: Maximum number of unique securities that may be traded (bought or sold). type: integer title: Max Total Orders min_buy_orders: description: Minimum number of unique securities that must be bought. type: integer title: Min Buy Orders min_sell_orders: description: Minimum number of unique securities that must be sold. type: integer title: Min Sell Orders min_total_orders: description: Minimum number of unique securities that must be traded (bought or sold). type: integer title: Min Total Orders name: description: 'Optional user-supplied display label for the constraint, shown in place of the generated description. Cosmetic only: never read by the solver and never part of the constraint''s identity, so distinct constraints may share a name.' type: string maxLength: 200 title: Name scope: $ref: '#/components/schemas/FilterDictionary' type: type: string enum: - order_limit title: Type required: - type title: OrderLimitConstraint OperationTerm: description: A term that applies an operation to other terms. type: object properties: left: description: The left operand. $ref: '#/components/schemas/ConcreteObjectiveTerm' operation: description: The operation to apply. $ref: '#/components/schemas/ObjectiveTermOperation' right: description: The right operand. $ref: '#/components/schemas/ConcreteObjectiveTerm' type: type: string enum: - operation default: operation required: - type - operation - left - right title: OperationTerm FixedIncomeModel: type: object properties: asset_classes: type: array items: $ref: '#/components/schemas/AssetClass' created_at: description: The timestamp when the model was created type: string format: date-time readOnly: true created_by: description: The user who created the model allOf: - $ref: '#/components/schemas/User' readOnly: true description: description: The description of the model type: string id: description: The ID of the model type: string readOnly: true liquidity_estimate: description: The liquidity estimate associated with the model type: number default: 1 x-go-type: float64 model_cash_amount: description: The cash amount associated with the model type: number default: 1000000 x-go-type: float64 municipal_state: allOf: - $ref: '#/components/schemas/State' municipal_state_preference: allOf: - $ref: '#/components/schemas/State' name: description: The name of the model type: string sharing_organization: allOf: - $ref: '#/components/schemas/Organization' readOnly: true sharing_organization_id: description: The organization that owns the model. This organization and its parent organizations will be able to access the model. type: string updated_at: description: The timestamp when the model was last updated type: string format: date-time readOnly: true updated_by: description: The user who last updated the model allOf: - $ref: '#/components/schemas/User' readOnly: true UniverseConstraint: type: object properties: id: description: Unique identifier for this constraint. Must match the `constraint_id` on the enclosing `ConstraintOperation`. Required. type: string title: ID constraint_priority: $ref: '#/components/schemas/ConstraintPriority' filter: $ref: '#/components/schemas/FilterDictionary' force_close_violations: type: boolean default: false title: Force Close Violations name: description: 'Optional user-supplied display label for the constraint, shown in place of the generated description. Cosmetic only: never read by the solver and never part of the constraint''s identity, so distinct constraints may share a name.' type: string maxLength: 200 title: Name penalty: description: Soft-constraint penalty weight applied per unit of violation. Bounded to [0, 100]. type: number format: double minimum: 0 maximum: 100 default: 10 title: Penalty scope: $ref: '#/components/schemas/FilterDictionary' side: default: buy allOf: - $ref: '#/components/schemas/ApplicableSide' type: type: string enum: - universe title: Type required: - type - filter title: UniverseConstraint CreateStrategyResponse: description: Response from creating a strategy discriminator: propertyName: strategy_type mapping: fixed_income: '#/components/schemas/CreateFixedIncomeStrategyResponse' security_list: '#/components/schemas/CreateSecurityListStrategyResponse' oneOf: - $ref: '#/components/schemas/CreateFixedIncomeStrategyResponse' - $ref: '#/components/schemas/CreateSecurityListStrategyResponse' TradeConstraint: description: 'A trade constraint that limits trade sizes by notional value, par value, or portfolio weight. Exactly one minimum must be specified: either min_size or min_weight (not both). Max fields are optional, but max_size and max_weight cannot both be specified. Mutual exclusivity is per bound — you can mix across bounds (e.g., min_size with max_weight is valid). Weight fields must be in the range 0-1 (representing 0-100% of portfolio value).' type: object properties: id: description: Unique identifier for this constraint. Must match the `constraint_id` on the enclosing `ConstraintOperation`. Required. type: string title: ID constraint_priority: $ref: '#/components/schemas/ConstraintPriority' max_size: description: The maximum size of the trade, measured in the unit given by `size_basis` (market value or par). Cannot be specified together with max_weight. type: number format: double title: Max Size max_weight: description: The maximum size of the trade as a percentage of the portfolio value (0-1). Cannot be specified together with max_size. type: number format: double maximum: 1 minimum: 0 title: Max Weight min_size: description: The minimum size of the trade, measured in the unit given by `size_basis` (market value or par). Either min_size or min_weight must be specified. Cannot be specified together with min_weight. type: number format: double title: Min Size min_weight: description: The minimum size of the trade as a percentage of the portfolio value (0-1). Either min_size or min_weight must be specified. Cannot be specified together with min_size. type: number format: double maximum: 1 minimum: 0 title: Min Weight name: description: 'Optional user-supplied display label for the constraint, shown in place of the generated description. Cosmetic only: never read by the solver and never part of the constraint''s identity, so distinct constraints may share a name.' type: string maxLength: 200 title: Name scope: $ref: '#/components/schemas/FilterDictionary' size_basis: $ref: '#/components/schemas/TradeSizeBasis' type: type: string enum: - trade title: Type required: - type title: TradeConstraint Constraint: description: 'Discriminator union of all constraint variants. The `id` field on each variant is the shared identifier; consumers extract it from the resolved variant. (Removing the redundant parent-level `id` property lets the OpenAPI codegens emit a clean discriminator union instead of intersection wrappers.)' discriminator: propertyName: type mapping: universe: '#/components/schemas/UniverseConstraint' allocation: '#/components/schemas/AllocationConstraint' diversification: '#/components/schemas/DiversificationConstraint' average_value: '#/components/schemas/AverageValueConstraint' ladder_policy: '#/components/schemas/LadderPolicyConstraint' trade: '#/components/schemas/TradeConstraint' buy_universe: '#/components/schemas/BuyUniverseConstraint' piecewise: '#/components/schemas/PiecewiseConstraint' sell_precedence: '#/components/schemas/SellPrecedenceConstraint' order_limit: '#/components/schemas/OrderLimitConstraint' cashflow_band: '#/components/schemas/CashflowBandConstraint' oneOf: - $ref: '#/components/schemas/UniverseConstraint' - $ref: '#/components/schemas/AllocationConstraint' - $ref: '#/components/schemas/DiversificationConstraint' - $ref: '#/components/schemas/AverageValueConstraint' - $ref: '#/components/schemas/LadderPolicyConstraint' - $ref: '#/components/schemas/TradeConstraint' - $ref: '#/components/schemas/BuyUniverseConstraint' - $ref: '#/components/schemas/PiecewiseConstraint' - $ref: '#/components/schemas/SellPrecedenceConstraint' - $ref: '#/components/schemas/OrderLimitConstraint' - $ref: '#/components/schemas/CashflowBandConstraint' HoldingsSummary: description: Summary of holdings in a strategy for list display type: object properties: count: description: Total number of holdings in the strategy type: integer instrument_ids: description: Top holdings by weight for preview display type: array items: type: string required: - count - instrument_ids title: HoldingsSummary LadderPolicyConstraintValidation: type: object properties: additional_constraints: type: array items: anyOf: - $ref: '#/components/schemas/AllocationConstraintValidation' - $ref: '#/components/schemas/UniverseConstraintValidation' title: Additional Constraints compliant: type: boolean title: Compliant constraint: $ref: '#/components/schemas/LadderPolicyConstraint' id: description: The ID of the constraint. type: string title: ID on_track: type: boolean title: On Track relaxed: description: Whether any child constraint was relaxed by the solver during the most recent solve. type: boolean default: false title: Relaxed relaxed_compliant: description: 'Whether all child constraints are compliant against the relaxed bounds the solver actually used. Equals `compliant` when no child was relaxed.' type: - boolean - 'null' title: Relaxed Compliant required: - compliant - on_track - constraint - additional_constraints FieldValidation: type: object properties: equal_weight_deviation: description: 'Set only on a held group an equal-weight rule flags as outside its equal_weight_target.' allOf: - $ref: '#/components/schemas/EqualWeightDeviation' field_value: type: string invalid_holdings: items: $ref: '#/components/schemas/InstrumentID' market_value: type: number x-go-type: decimal.Decimal x-go-type-import: path: github.com/shopspring/decimal name: decimal weight: type: number x-go-type: decimal.Decimal x-go-type-import: path: github.com/shopspring/decimal name: decimal User: type: object properties: display_name: description: The display name of the user type: string id: description: The ID of the user type: string required: - id - display_name Filter: type: object properties: equal_to: description: The value to be equal to. anyOf: - type: string - type: number - type: boolean title: Equal To greater_than: description: The value to be greater than. anyOf: - type: string - type: number - type: boolean title: Greater Than greater_than_or_equal_to: description: The value to be greater than or equal to. anyOf: - type: string - type: number - type: boolean title: Greater Than Or Equal To in: description: The value to be in the list. anyOf: - items: anyOf: - type: string - type: number - type: boolean type: array title: In List in_filter_list: description: The value to be in the filter list. type: string title: In Filter List in_list: description: Alias for `in`. The value to be in the list. Supplying both `in` and `in_list` is an error. anyOf: - items: anyOf: - type: string - type: number - type: boolean type: array title: In List includes: description: The value to include. type: string title: Includes superset: description: Match a string-list column containing every element of this list. Elements match exactly and case-sensitively; leading and trailing whitespace is ignored. Null lists do not match. type: array items: type: string minItems: 1 example: - NY - NJ title: Superset subset: description: Match a string-list column whose every element is in this list. Elements match exactly and case-sensitively; leading and trailing whitespace is ignored. Empty lists match; null lists do not. type: array items: type: string minItems: 1 example: - NY - NJ title: Subset not_superset: description: 'Match a string-list column missing at least one element of this list. The negation of `superset`: null lists match.' type: array items: type: string minItems: 1 example: - NY - NJ title: Not Superset not_subset: description: 'Match a string-list column with at least one element outside this list. The negation of `subset`: null lists match; empty lists do not.' type: array items: type: string minItems: 1 example: - NY - NJ title: Not Subset is_null: description: Match values that are null. type: boolean title: Is Null less_than: description: The value to be less than. anyOf: - type: string - type: number - type: boolean title: Less Than less_than_or_equal_to: description: The value to be less than or equal to. anyOf: - type: string - type: number - type: boolean title: Less Than Or Equal To not_equal_to: description: The value to not be equal to. anyOf: - type: string - type: number - type: boolean title: Not Equal To not_in: description: The value to not be in the list. anyOf: - items: anyOf: - type: string - type: number - type: boolean type: array title: Not In List not_in_filter_list: description: The value to be not in the filter list. type: string title: Not In Filter List not_in_list: description: Alias for `not_in`. The value to not be in the list. Supplying both `not_in` and `not_in_list` is an error. anyOf: - items: anyOf: - type: string - type: number - type: boolean type: array title: Not In List not_includes: description: The value to not include. type: string title: Not Includes not_starts_with: description: The value to not start with. type: string title: Not Starts With starts_with: description: The value to start with. type: string title: Starts With ends_with: description: The value to end with. type: string title: Ends With title: Filter ErrorType: type: string description: High-level error category for programmatic error handling. enum: - invalid_request - not_found - server_error - unauthorized - rate_limited - forbidden - closed - not_implemented - resource_conflict x-enum-varnames: - ErrorTypeInvalidRequest - ErrorTypeNotFound - ErrorTypeServerError - ErrorTypeUnauthorized - ErrorTypeRateLimited - ErrorTypeForbidden - ErrorTypeNeedsMarketState - ErrorTypeNotImplemented - ErrorTypeResourceConflict SecurityListItem: description: A security in a security list strategy with its allocation type: object properties: instrument_id: description: The instrument identifier (ISIN or CASH_USD) type: string title: Instrument ID reference_price: description: Reference price used for share calculation (defaults to previous close) type: - number - 'null' title: Reference Price x-go-type: float64 shares: description: Derived number of shares (only populated for dynamic allocation_type, calculated as weight * notional_basis / reference_price) type: - number - 'null' title: Shares x-go-type: float64 ticker: description: Ticker symbol for display (not set for CASH_USD) type: - string - 'null' title: Ticker weight: description: The target weight of the instrument type: number title: Weight x-go-type: float64 required: - instrument_id - weight title: SecurityListItem ObjectiveStrategy: description: The objective strategy for the optimization. type: string enum: - revenue - minimize_deployed_cash - maximize_cashflows title: ObjectiveStrategy x-go-type-skip-optional-pointer: true AggregateConstraintValidation: description: 'Compliance result for a portfolio-level aggregate goal (currently only cashflow targets). Unlike the other ConstraintValidation variants, this one is synthesized from non-constraint inputs (a list of `cashflow_targets`) rather than mirroring an optimizer-internal Constraint, so it carries a top-level `type` field to discriminate the union instead of relying on `constraint.type`.' type: object properties: id: description: Stable identifier for the aggregate tracker. With two or more live recurring targets that plan without stacking issues, one aggregate cashflow_target_0 covers every bucket; otherwise there is one aggregate per live target, indexed by its position after normalization. type: string title: ID type: type: string enum: - aggregate title: Type compliant: description: Whether every bucket meets its floor; false iff any bucket fails. The band is graded separately by the cashflow_band constraint's own validation and never fails the target. type: boolean title: Compliant on_track: type: boolean title: On Track relaxed: description: Whether the solver relaxed the floor of any bucket of this aggregate during the most recent solve. type: boolean default: false title: Relaxed relaxed_compliant: description: 'Whether every bucket meets the relaxed floor the solver actually used. Equals `compliant` when no bucket''s floor was relaxed.' type: - boolean - 'null' title: Relaxed Compliant breakdown: type: array items: $ref: '#/components/schemas/CashflowBucketBreakdown' title: Breakdown required: - id - type - compliant - on_track - breakdown StrategyReferencedByTemplatesError: description: The strategy cannot be deleted or archived while live asset allocation templates reference it type: object properties: error: type: string error_type: type: string referencing_templates: description: The live templates whose published configuration references the strategy type: array items: $ref: '#/components/schemas/AllocationTemplateRef' required: - error - error_type - referencing_templates title: StrategyReferencedByTemplatesError ConstraintPriority: description: The priority of the constraint. Constraints with lower priority values will be relaxed first. Omitted defaults to 1 (lowest priority, relaxed first); -1 marks the constraint unrelaxable (never relaxed). type: number format: double default: 1 title: ConstraintPriority StrategyVersionPage: description: A page of a strategy's version history, most recent first. type: object properties: versions: type: array items: $ref: '#/components/schemas/StrategyVersion' next_cursor: description: Opaque cursor for the next (older) page. Absent when there are no more versions. type: - string - 'null' readOnly: true required: - versions title: StrategyVersionPage Piece: type: object properties: condition: description: the filter that we will use for the piecewise constraint. allOf: - $ref: '#/components/schemas/PiecewiseCondition' x-go-type-skip-optional-pointer: true constraints: description: the constraints that we will use for the piecewise constraint. type: array items: $ref: '#/components/schemas/ConcreteConstraint' default: [] x-go-type-skip-optional-pointer: true CreateSecurityListStrategyRequest: type: object properties: account_minimum: description: Recommended minimum account size for assigning this strategy. type: - number - 'null' title: Account Minimum x-go-type: float64 description: description: The description of the strategy type: string title: Description benchmark: description: Benchmark index the strategy is measured against (e.g., 'S&P 500'). Free-text, user-supplied; null when unset. type: - string - 'null' model_program: description: Program tag used for grouping models in a hierarchy (e.g., 'NEPC Passive Taxable'). Null when unset so downstream renderers can distinguish "no program assigned" from a real value. type: - string - 'null' unresolved_securities: description: CUSIPs from an external model feed that did not resolve to a security and are excluded from the holdings. Null or empty when every security resolved. type: - array - 'null' items: type: string risk_class: description: Risk classification for the strategy (e.g., 'Conservative'). Free-text, user-supplied; null when unset. type: - string - 'null' sector: description: Sector classification for the strategy (e.g., 'Technology'). Free-text, user-supplied; null when unset. type: - string - 'null' name: description: The name of the strategy type: string title: Name portfolio_manager: description: Name of the portfolio manager. Used for compliance and trade attribution purposes. Null when unset — downstream renderers (e.g. trade memo) must guard on null to avoid emitting attribution lines without a name. type: - string - 'null' title: Portfolio Manager sharing_organization_id: description: The organization that owns the strategy. This organization and its parent organizations will be able to access the strategy. Defaults to the authenticated user's organization if not provided. type: - string - 'null' title: Sharing Organization ID strategy: $ref: '#/components/schemas/SecurityListStrategy' strategy_type: type: string enum: - security_list required: - strategy_type - name - description - strategy CreateFixedIncomeStrategyRequest: type: object properties: asset_classes: description: The asset classes to include in the strategy type: array items: $ref: '#/components/schemas/AssetClass' title: Asset Classes description: description: The description of the strategy type: string title: Description liquidity_estimate: description: The liquidity estimate associated with the strategy type: number default: 1 title: Strategy Liquidity Estimate x-go-type: float64 model_cash_amount: description: The cash amount associated with the strategy type: number default: 1000000 title: Strategy Cash Amount x-go-type: float64 municipal_state: description: The municipal state *focus* of the strategy. This is used purely for filtering; the strategy itself will not be restricted to holdings in this state, unless the strategy explicitly includes a universe constraint for that state. allOf: - $ref: '#/components/schemas/State' municipal_state_preference: description: The municipal state *preference* of the strategy. This is used purely for filtering; the strategy itself will not be restricted to holdings in this state, unless the strategy explicitly includes a universe constraint for that state. allOf: - $ref: '#/components/schemas/State' name: description: The name of the strategy type: string title: Name sharing_organization_id: description: The organization that owns the strategy. This organization and its parent organizations will be able to access the strategy. Defaults to the authenticated user's organization if not provided. type: - string - 'null' title: Sharing Organization ID strategy: $ref: '#/components/schemas/FixedIncomeStrategy' strategy_type: type: string enum: - fixed_income required: - strategy_type - name - description - asset_classes - strategy ConcreteConstraint: description: 'Leaf-only discriminator union. Each variant carries its own `id` field; no parent-level shared properties (so codegens emit a clean discriminator union, not intersection wrappers).' discriminator: propertyName: type mapping: allocation: '#/components/schemas/AllocationConstraint' universe: '#/components/schemas/UniverseConstraint' diversification: '#/components/schemas/DiversificationConstraint' average_value: '#/components/schemas/AverageValueConstraint' trade: '#/components/schemas/TradeConstraint' buy_universe: '#/components/schemas/BuyUniverseConstraint' oneOf: - $ref: '#/components/schemas/AllocationConstraint' - $ref: '#/components/schemas/UniverseConstraint' - $ref: '#/components/schemas/DiversificationConstraint' - $ref: '#/components/schemas/AverageValueConstraint' - $ref: '#/components/schemas/TradeConstraint' - $ref: '#/components/schemas/BuyUniverseConstraint' x-go-type-skip-optional-pointer: true Snapshot: type: object properties: agency_market_value: description: The agency market value of the holdings type: number format: double average_coupon: description: The average coupon of the holdings type: number format: double average_duration: description: The average duration of the holdings type: number format: double average_maturity: description: The average maturity of the holdings type: number format: double average_moodys_rating: description: The average Moody's rating of the holdings type: string average_sp_rating: description: The average SP rating of the holdings type: string average_tax_equivalent_ytw: description: The average tax equivalent yield to worst of the holdings type: number format: double average_ytm: description: The average yield to maturity of the holdings type: number format: double average_ytw: description: The average yield to worst of the holdings type: number format: double cash_market_value: description: The cash market value of the holdings type: number format: double cd_market_value: description: The CD market value of the holdings type: number format: double corporate_market_value: description: The corporate market value of the holdings type: number format: double government_market_value: description: The total market value of all sample foreign government bond holdings type: number format: double money_market_market_value: description: The money market market value of the holdings type: number format: double municipal_market_value: description: The municipal market value of the holdings type: number format: double total_accrued_interest: description: The total accrued interest of the holdings type: number format: double total_market_value: description: The total market value of the holdings type: number format: double treasury_market_value: description: The treasury market value of the holdings type: number format: double required: - cash_market_value - total_market_value - treasury_market_value - corporate_market_value - agency_market_value - government_market_value - municipal_market_value - money_market_market_value - cd_market_value - average_ytw - average_ytm - average_tax_equivalent_ytw - average_maturity - average_duration - average_coupon - total_accrued_interest CashflowBucketBreakdown: description: 'One bucket of an AggregateConstraintValidation''s breakdown. For cashflow targets, a bucket is the [start_date, end_date) window the target''s frequency carves the period into; `raised` is the sum of post-trade instrument cashflows whose type matches the target `source` and whose date falls in the bucket. Each row grades the bucket against its floor and its band separately, and against the solver''s relaxed band.' type: object properties: start_date: type: string format: date title: Start Date end_date: type: string format: date title: End Date source: type: string enum: - coupon - principal - coupon_and_principal title: Source target: type: - number - 'null' format: double title: Target raised: type: number format: double title: Raised band_low: description: Lower edge of this bucket's combination band in dollars, when the strategy carries a cashflow_band constraint and the combination had two or more live banded buckets. type: - number - 'null' format: double title: Band Low band_high: description: Upper edge of the band in dollars, paired with band_low. type: - number - 'null' format: double title: Band High floor_compliant: description: '`raised` meets this bucket''s `target`. Null when the bucket has no target.' type: - boolean - 'null' title: Floor Compliant band_compliant: description: '`raised` sits inside [band_low, band_high], the band the user wrote. Null when no band applies to this bucket.' type: - boolean - 'null' title: Band Compliant compliant: description: '`floor_compliant` and `band_compliant`, a null counting as a pass.' type: boolean title: Compliant relaxed: description: Whether the solver relaxed the cashflow_band constraint that bounds this bucket during the most recent solve. False when no band applies. type: boolean default: false title: Relaxed relaxed_compliant: description: '`floor_compliant` and inside the relaxed band the solver actually used. Equals `compliant` when the bucket was not relaxed.' type: - boolean - 'null' title: Relaxed Compliant required: - start_date - end_date - source - raised - compliant ConcreteConstraintValidation: anyOf: - $ref: '#/components/schemas/UniverseConstraintValidation' - $ref: '#/components/schemas/AllocationConstraintValidation' - $ref: '#/components/schemas/DiversificationConstraintValidation' - $ref: '#/components/schemas/AverageValueConstraintValidation' x-go-type-skip-optional-pointer: true StrategyVersion: description: A single entry in a strategy's version history (audit trail). type: object properties: id: description: The ID of this version record type: string readOnly: true change_type: description: The kind of change this version records type: string enum: - created - updated - reverted changed_by: description: The user who made the change. Null for legacy records written before the actor was recorded. allOf: - $ref: '#/components/schemas/User' readOnly: true changed_at: description: When the change was made type: string format: date-time readOnly: true snapshot: $ref: '#/components/schemas/StrategyVersionSnapshot' required: - id - change_type - changed_at - snapshot title: StrategyVersion APIError: type: object description: Standard error response format returned by all API endpoints. properties: error: type: string description: Human-readable error message describing what went wrong. error_details: description: Additional structured information about the error. x-go-type: any x-go-type-skip-optional-pointer: true x-oapi-codegen-extra-tags: exhaustruct: optional error_type: $ref: '#/components/schemas/ErrorType' required: - error - error_type CreateStrategyRequest: description: Request to create a strategy discriminator: propertyName: strategy_type mapping: fixed_income: '#/components/schemas/CreateFixedIncomeStrategyRequest' security_list: '#/components/schemas/CreateSecurityListStrategyRequest' oneOf: - $ref: '#/components/schemas/CreateFixedIncomeStrategyRequest' - $ref: '#/components/schemas/CreateSecurityListStrategyRequest' DiversificationConstraint: type: object properties: id: description: Unique identifier for this constraint. Must match the `constraint_id` on the enclosing `ConstraintOperation`. Required. type: string title: ID constraint_priority: $ref: '#/components/schemas/ConstraintPriority' equal_weight_tolerance: description: Keeps every held group within ±tolerance of a common size the optimizer picks, relative to the other held groups rather than a fixed bound (0.1 = each within 10%). In [0, 1). Must be the only limit on its rule; pair it with other limits through separate rules on the same field. type: number format: double minimum: 0 title: Equal Weight Tolerance exclusiveMaximum: 1 field: description: The field to apply the diversification constraint to. type: string title: field max_instruments_per_unique_value: description: The maximum number of instruments per unique value for the diversification constraint, which is optional to specify. type: integer title: Max Instruments Per Unique Value max_market_value_per_unique_value: description: The maximum market value per unique value for the diversification constraint. type: number format: double title: Max Market Value Per Unique Value max_unique_fields: description: The maximum number of unique values of this field that are allowed to exist. type: integer title: Max Unique Fields max_weight_per_unique_value: description: The maximum weight per unique value for the diversification constraint. type: number format: double title: Max Weight Per Unique Value min_instruments_per_unique_value: description: The minimum number of instruments per unique value for the diversification constraint, which is optional to specify. type: integer title: Min Instruments Per Unique Value min_market_value_per_unique_value: description: The minimum market value per unique value for the diversification constraint, which is optional to specify. type: number format: double title: Min Market Value Per Unique Value min_unique_fields: description: The minimum number of unique values of this field that are allowed to exist, which is optional to specify. type: integer title: Min Unique Fields min_weight_per_unique_value: description: The minimum weight per unique value for the diversification constraint, which is optional to specify. type: number format: double title: Min Weight Per Unique Value name: description: 'Optional user-supplied display label for the constraint, shown in place of the generated description. Cosmetic only: never read by the solver and never part of the constraint''s identity, so distinct constraints may share a name.' type: string maxLength: 200 title: Name scope: $ref: '#/components/schemas/FilterDictionary' type: type: string enum: - diversification title: Type x-moment-required-any-of: - min_market_value_per_unique_value - max_market_value_per_unique_value - min_weight_per_unique_value - max_weight_per_unique_value - min_unique_fields - max_unique_fields - min_instruments_per_unique_value - max_instruments_per_unique_value - equal_weight_tolerance required: - type - field title: DiversificationConstraint PiecewiseConstraint: type: object properties: id: description: Unique identifier for this constraint. Must match the `constraint_id` on the enclosing `ConstraintOperation`. Required. type: string title: ID constraint_priority: $ref: '#/components/schemas/ConstraintPriority' name: description: 'Optional user-supplied display label for the constraint, shown in place of the generated description. Cosmetic only: never read by the solver and never part of the constraint''s identity, so distinct constraints may share a name.' type: string maxLength: 200 title: Name pieces: description: the pieces that we will use for the piecewise constraint. type: array items: $ref: '#/components/schemas/Piece' default: [] x-go-type-skip-optional-pointer: true scope: $ref: '#/components/schemas/FilterDictionary' type: type: string enum: - piecewise title: Type required: - type title: PiecewiseConstraint CashFlowEvent: type: object properties: amount: type: number x-go-type: float64 date: type: string type: type: string enum: - coupon - principal - dividend required: - date - amount - type Distribution: type: object properties: coupon_distribution: type: object additionalProperties: type: number x-go-type: float64 issuer_distribution: type: object additionalProperties: type: number x-go-type: float64 maturity_distribution: type: object additionalProperties: type: number x-go-type: float64 monthly_cashflows: type: array items: $ref: '#/components/schemas/CashFlowEvent' moodys_rating_distribution: type: object additionalProperties: type: number x-go-type: float64 municipal_state_distribution: type: object additionalProperties: type: number x-go-type: float64 municipal_type_distribution: type: object additionalProperties: type: number x-go-type: float64 sector_distribution: type: object additionalProperties: type: number x-go-type: float64 sp_rating_distribution: type: object additionalProperties: type: number x-go-type: float64 yearly_cashflows: type: array items: $ref: '#/components/schemas/CashFlowEvent' required: - monthly_cashflows - yearly_cashflows - municipal_state_distribution - sp_rating_distribution - maturity_distribution - sector_distribution - issuer_distribution - coupon_distribution - municipal_type_distribution - moodys_rating_distribution PreviewModelResponse: type: object properties: compliance: $ref: '#/components/schemas/Compliance' sample_holdings: type: array items: $ref: '#/components/schemas/Holding' sample_statistics: $ref: '#/components/schemas/Statistics' required: - sample_holdings - sample_statistics - compliance UpdateSecurityListStrategyResponse: description: Response for updating a security_list strategy allOf: - $ref: '#/components/schemas/GetSecurityListStrategyResponse' parameters: model_id: name: model_id in: path required: true schema: type: string description: The ID of the model x-provenance: method: searched source: https://docs.moment.com/reference harvested: '2026-10-14' tool: harvest-readme-openapi.py note: Assembled verbatim from the OpenAPI definition ReadMe embeds in each operation page of the provider's developer portal; paths and components merged by API title, nothing authored. assembled_from: - https://docs.moment.com/reference/archiveallocationtemplate.md - https://docs.moment.com/reference/createallocationtemplate.md - https://docs.moment.com/reference/createallocationtemplateassignment.md - https://docs.moment.com/reference/createmodel.md - https://docs.moment.com/reference/deletemodel.md - https://docs.moment.com/reference/getallocationtemplate.md - https://docs.moment.com/reference/getallocationtemplateassignment.md - https://docs.moment.com/reference/getallocationtemplateversion.md - https://docs.moment.com/reference/getmodel.md - https://docs.moment.com/reference/getmodelhistory.md - https://docs.moment.com/reference/listallocationtemplateassignments.md - https://docs.moment.com/reference/listallocationtemplates.md - https://docs.moment.com/reference/listallocationtemplateversions.md - https://docs.moment.com/reference/listmodels.md - https://docs.moment.com/reference/previewallocationtemplateassignment.md - https://docs.moment.com/reference/previewallocationtemplatepublish.md - https://docs.moment.com/reference/previewmodel.md - https://docs.moment.com/reference/publishallocationtemplate.md - https://docs.moment.com/reference/restoreallocationtemplate.md - https://docs.moment.com/reference/unarchiveallocationtemplate.md - https://docs.moment.com/reference/unassignallocationtemplateassignment.md - https://docs.moment.com/reference/updateallocationtemplateassignment.md - https://docs.moment.com/reference/updateallocationtemplatemetadata.md - https://docs.moment.com/reference/updatemodel.md merge: pages: 24 deduped: 319 conflicts_kept_first: 0