> ## Documentation Index
> Fetch the complete documentation index at: https://docs.tilt.pro/llms.txt
> Use this file to discover all available pages before exploring further.

# Update Client

> View for retrieving and updating organization clients.

Supports:
- GET: Retrieve client details
- PATCH: Update the first account under the client



## OpenAPI

````yaml PATCH /api/v1/custom/org/{organization_uuid}/clients/{uuid}/
openapi: 3.0.3
info:
  title: TILT
  version: 0.0.1
servers: []
security: []
paths:
  /api/v1/custom/org/{organization_uuid}/clients/{uuid}/:
    patch:
      tags:
        - api
      description: |-
        View for retrieving and updating organization clients.

        Supports:
        - GET: Retrieve client details
        - PATCH: Update the first account under the client
      operationId: api_v1_custom_org_clients_partial_update
      parameters:
        - in: path
          name: organization_uuid
          schema:
            type: string
            format: uuid
          required: true
        - in: path
          name: uuid
          schema:
            type: string
            format: uuid
          required: true
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PatchedUpdateClientAccount'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/PatchedUpdateClientAccount'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/PatchedUpdateClientAccount'
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetClient'
          description: ''
      security:
        - ProAPIToken: []
components:
  schemas:
    PatchedUpdateClientAccount:
      type: object
      properties:
        external_id:
          type: string
        holdings:
          allOf:
            - $ref: '#/components/schemas/UpdateHoldings'
          writeOnly: true
        metadata:
          nullable: true
          description: >-
            Store arbitrary metadata about this account in a JSON field, but
            should not include PII information.
        customization_config:
          $ref: '#/components/schemas/CustomizationConfigWrite'
        portfolio_config_uuid:
          type: string
          format: uuid
          writeOnly: true
          nullable: true
        asset_class_settings:
          type: array
          items:
            $ref: '#/components/schemas/ClientAssetSettingWrite'
    GetClient:
      type: object
      properties:
        uuid:
          type: string
          format: uuid
          readOnly: true
        external_id:
          type: string
          description: External identifier for the client
          maxLength: 50
        metadata:
          nullable: true
          description: >-
            Store arbitrary metadata about this client in a JSON field, but
            should not include PII information.
        created:
          type: string
          format: date-time
          readOnly: true
        modified:
          type: string
          format: date-time
          readOnly: true
        accounts:
          type: array
          items:
            $ref: '#/components/schemas/ClientAccount'
          readOnly: true
        household:
          allOf:
            - $ref: '#/components/schemas/HouseholdNested'
          readOnly: true
          nullable: true
        holdings_risk_annualized_percentage:
          type: string
          format: decimal
          pattern: ^-?\d{0,2}(?:\.\d{0,10})?$
          nullable: true
          readOnly: true
      required:
        - accounts
        - created
        - external_id
        - holdings_risk_annualized_percentage
        - household
        - modified
        - uuid
    UpdateHoldings:
      type: object
      description: Serializer for updating holdings data.
      properties:
        tax_lots:
          type: array
          items:
            $ref: '#/components/schemas/ClientHoldingsTaxLots'
        cash_balance:
          type: string
          format: decimal
          pattern: ^-?\d{0,16}(?:\.\d{0,2})?$
        non_tradable_assets_value:
          type: string
          format: decimal
          pattern: ^-?\d{0,16}(?:\.\d{0,2})?$
          nullable: true
          description: The cash value of the non-tradable assets.
    CustomizationConfigWrite:
      type: object
      properties:
        name:
          type: string
          nullable: true
          maxLength: 255
        optimization_mode:
          nullable: true
          description: >-
            Optimization mode to use for portfolio optimization, this can be
            LONG_ONLY, LONG_SHORT, or LONG_BIASED.


            * `LONG_ONLY` - Long Only

            * `LONG_SHORT` - Long Short

            * `LONG_BIASED` - Long Biased
          oneOf:
            - $ref: '#/components/schemas/OptimizationModeEnum'
            - $ref: '#/components/schemas/BlankEnum'
            - $ref: '#/components/schemas/NullEnum'
        long_weight_sum:
          type: string
          format: decimal
          pattern: ^-?\d{0,3}(?:\.\d{0,2})?$
          nullable: true
          description: >-
            Target sum of long weights for LONG_SHORT or LONG_BIASED
            optimization modes (e.g., 2.5 for 250% long).
        short_weight_sum:
          type: string
          format: decimal
          pattern: ^-?\d{0,3}(?:\.\d{0,2})?$
          nullable: true
          description: >-
            Target sum of short weights for LONG_SHORT or LONG_BIASED
            optimization modes (e.g., -2.5 for -250% short).
        risk_model_name:
          nullable: true
          description: |-
            Risk model to use for portfolio optimization

            * `custom` - Custom
            * `pca` - Pca
            * `characteristics` - Characteristics
            * `axioma` - Axioma
          oneOf:
            - $ref: '#/components/schemas/RiskModelNameEnum'
            - $ref: '#/components/schemas/BlankEnum'
            - $ref: '#/components/schemas/NullEnum'
        tilts:
          type: array
          items:
            $ref: '#/components/schemas/CustomizationConfigTiltWrite'
          description: >-
            A list of tilts to apply on top of the benchmark. If provided,
            replaces the existing list of tilts.
        no_hold_tickers:
          type: array
          items:
            $ref: '#/components/schemas/UpdateTickerConstraint'
          description: >-
            A list of tickers that the client should not hold, with optional
            start and end dates. If provided, replaces the existing list of no
            hold tickers.
        no_trade_tickers:
          type: array
          items:
            $ref: '#/components/schemas/UpdateTickerConstraint'
          description: >-
            A list of tickers that the client should not trade, with optional
            start and end dates. If provided, replaces the existing list of no
            trade tickers.
        target_ticker_weights:
          type: array
          items:
            $ref: '#/components/schemas/CustomizationConfigAssetBoundsWrite'
          description: >-
            A list of target weights for specific tickers. If provided, replaces
            the existing list of target ticker weights.
        min_weight:
          type: string
          format: decimal
          pattern: ^-?\d{0,3}(?:\.\d{0,2})?$
          nullable: true
        max_weight:
          type: string
          format: decimal
          pattern: ^-?\d{0,3}(?:\.\d{0,2})?$
          nullable: true
        min_active_weight:
          type: string
          format: decimal
          pattern: ^-?\d{0,3}(?:\.\d{0,2})?$
          nullable: true
        max_active_weight:
          type: string
          format: decimal
          pattern: ^-?\d{0,3}(?:\.\d{0,2})?$
          nullable: true
        use_active_risk_bounds:
          type: boolean
          nullable: true
          description: Whether to enforce the active-risk cap during optimization
        max_active_risk_pct:
          type: string
          format: decimal
          pattern: ^-?\d{0,3}(?:\.\d{0,2})?$
          nullable: true
          description: >-
            Maximum portfolio active risk as a percentage (0–100). Only enforced
            when use_active_risk_bounds is True.
        scaling_factor:
          type: string
          format: decimal
          pattern: ^-?\d{0,3}(?:\.\d{0,2})?$
          nullable: true
        use_mean_variance:
          type: boolean
          nullable: true
        factor_exposure_bounds:
          type: array
          items:
            $ref: '#/components/schemas/CustomizationConfigExposureBound'
        tax_preferences:
          allOf:
            - $ref: '#/components/schemas/CustomizationConfigTaxPreferences'
          nullable: true
        asset_allocations:
          type: array
          items:
            $ref: '#/components/schemas/CustomizationConfigAssetClassAllocationWrite'
          description: >-
            A list of asset class allocations for this customization config. If
            provided, replaces the existing list of asset allocations.
        bid_ask_spread_ref_volume:
          type: string
          format: decimal
          pattern: ^-?\d{0,8}(?:\.\d{0,2})?$
          nullable: true
        market_impact_parameter:
          type: string
          format: decimal
          pattern: ^-?\d{0,8}(?:\.\d{0,2})?$
          nullable: true
        bid_ask_spread_parameter:
          type: string
          format: decimal
          pattern: ^-?\d{0,8}(?:\.\d{0,2})?$
          nullable: true
        tcost_bps:
          type: string
          format: decimal
          pattern: ^-?\d{0,8}(?:\.\d{0,2})?$
          nullable: true
        cash_buffer_usd:
          type: string
          format: decimal
          pattern: ^-?\d{0,1}(?:\.\d{0,4})?$
          nullable: true
          description: >-
            USD cash buffer as a percentage of portfolio value (0.0 to 1.0,
            e.g., 0.05 for 5%)
        cash_buffer_cad:
          type: string
          format: decimal
          pattern: ^-?\d{0,1}(?:\.\d{0,4})?$
          nullable: true
          description: >-
            CAD cash buffer as a percentage of portfolio value (0.0 to 1.0,
            e.g., 0.05 for 5%)
        dynamic_rules:
          type: array
          items:
            $ref: '#/components/schemas/DynamicRuleWrite'
          description: >-
            A list of dynamic rules with cron-based conditions. If provided,
            replaces the existing list of dynamic rules.
        risk_aversion:
          type: string
          format: decimal
          pattern: ^-?\d{0,3}(?:\.\d{0,3})?$
          nullable: true
          description: Risk aversion lambda. App default is 2; library default is 1.0.
        risk_free_rate_pct:
          type: string
          format: decimal
          pattern: ^-?\d{0,3}(?:\.\d{0,4})?$
          nullable: true
          description: >-
            Risk-free rate percentage used in Sharpe calculations. Library
            default 4.0.
        spectral_shift:
          type: string
          format: decimal
          pattern: ^-?\d{0,5}(?:\.\d{0,10})?$
          nullable: true
          description: Risk matrix conditioning parameter. Library default 0.0.
        risk_bound_increase_factor:
          type: string
          format: decimal
          pattern: ^-?\d{0,4}(?:\.\d{0,4})?$
          nullable: true
          description: >-
            Factor to increase risk bounds on infeasibility. Library default
            2.0.
        risk_bound_max_iterations:
          type: integer
          maximum: 2147483647
          minimum: 0
          nullable: true
          description: Max iterations for risk bound adaptation. Library default 10.
        use_regula_falsi:
          type: boolean
          nullable: true
          description: >-
            Enable Regula Falsi method for tax gamma search. Library default
            True.
        use_turnover_constraint:
          type: boolean
          nullable: true
          description: Enable maximum turnover constraint. Library default False.
        max_turnover_pct:
          type: string
          format: decimal
          pattern: ^-?\d{0,4}(?:\.\d{0,4})?$
          nullable: true
          description: Maximum portfolio turnover as a percentage. Library default 100.0.
        require_whole_shares:
          type: boolean
          nullable: true
          description: >-
            Enforce whole share constraints for all assets. Library default
            False.
        whole_share_assets:
          type: array
          items:
            type: string
          nullable: true
          description: List of tilt_asset_ids that must be traded in whole shares.
        substitution_pairs:
          type: array
          items:
            type: array
            items:
              type: string
            minItems: 2
          nullable: true
          description: >-
            List of mutually exclusive tilt_asset_id pairs (each inner list must
            have ≥2 distinct assets).
        capital_gains_reductions:
          type: object
          additionalProperties:
            type: number
            format: double
            minimum: 0
          nullable: true
          description: >-
            Dict mapping tilt_asset_id to per-asset capital gains reduction
            amount.
        capital_gains_reductions_units:
          nullable: true
          description: |-
            Units for capital_gains_reductions. Library default 'DOLLARS'.

            * `DOLLARS` - Dollars
            * `PERCENT` - Percent
          oneOf:
            - $ref: '#/components/schemas/CapitalGainsReductionsUnitsEnum'
            - $ref: '#/components/schemas/BlankEnum'
            - $ref: '#/components/schemas/NullEnum'
        use_cash_benchmark:
          type: boolean
          nullable: true
          description: Include cash as a benchmark component. Library default False.
        linear_tcaf:
          type: string
          format: decimal
          pattern: ^-?\d{0,4}(?:\.\d{0,6})?$
          nullable: true
          description: Linear transaction cost fraction. Library default 0.0.
        commission_rate:
          type: string
          format: decimal
          pattern: ^-?\d{0,4}(?:\.\d{0,4})?$
          nullable: true
          description: Commission rate. Library default 0.75.
        broker_spread_bps:
          type: string
          format: decimal
          pattern: ^-?\d{0,6}(?:\.\d{0,4})?$
          nullable: true
          description: Broker spread in basis points. Library default 30.0.
        min_trading_volume_dollars:
          type: string
          format: decimal
          pattern: ^-?\d{0,14}(?:\.\d{0,2})?$
          nullable: true
          description: >-
            Minimum trading volume in dollars for market impact calculation.
            Library default 1,000,000.
    ClientAssetSettingWrite:
      type: object
      properties:
        asset_class_uuid:
          type: string
          format: uuid
        direct_indexing_enabled:
          type: boolean
          description: >-
            Whether direct indexing is enabled for this asset class for this
            client
      required:
        - asset_class_uuid
        - direct_indexing_enabled
    ClientAccount:
      type: object
      properties:
        uuid:
          type: string
          format: uuid
          readOnly: true
        external_id:
          type: string
          description: External identifier for the account
          maxLength: 50
        holdings:
          allOf:
            - $ref: '#/components/schemas/ClientHoldings'
          readOnly: true
          nullable: true
        metadata:
          nullable: true
          description: >-
            Store arbitrary metadata about this account in a JSON field, but
            should not include PII information.
        created:
          type: string
          format: date-time
          readOnly: true
        modified:
          type: string
          format: date-time
          readOnly: true
        customization_config:
          allOf:
            - $ref: '#/components/schemas/CustomizationConfigRead'
          nullable: true
        portfolio_config:
          allOf:
            - $ref: '#/components/schemas/CustomizationConfigRead'
          nullable: true
        asset_class_settings:
          type: array
          items:
            $ref: '#/components/schemas/ClientAssetSettingRead'
          readOnly: true
        wash_sale_lots:
          type: array
          items:
            $ref: '#/components/schemas/WashSaleLot'
          readOnly: true
        household_wash_sale_lots:
          type: array
          items:
            $ref: '#/components/schemas/WashSaleLot'
          readOnly: true
        aum:
          type: string
          format: decimal
          pattern: ^-?\d{0,18}(?:\.\d{0,2})?$
          nullable: true
          readOnly: true
        net_worth:
          type: string
          format: decimal
          pattern: ^-?\d{0,18}(?:\.\d{0,2})?$
          nullable: true
          readOnly: true
        holdings_risk_annualized_percentage:
          type: string
          format: decimal
          pattern: ^-?\d{0,2}(?:\.\d{0,10})?$
          nullable: true
          readOnly: true
        is_read_only:
          type: boolean
          readOnly: true
        is_brokerage_backed:
          type: boolean
          readOnly: true
        is_externally_owned:
          type: boolean
          readOnly: true
        source_brokerage_connection_account_uuid:
          type: string
          format: uuid
          readOnly: true
          nullable: true
      required:
        - asset_class_settings
        - aum
        - created
        - external_id
        - holdings
        - holdings_risk_annualized_percentage
        - household_wash_sale_lots
        - is_brokerage_backed
        - is_externally_owned
        - is_read_only
        - modified
        - net_worth
        - source_brokerage_connection_account_uuid
        - uuid
        - wash_sale_lots
    HouseholdNested:
      type: object
      description: Read-only nested serializer for household in client responses.
      properties:
        uuid:
          type: string
          format: uuid
          readOnly: true
        name:
          type: string
          readOnly: true
      required:
        - name
        - uuid
    ClientHoldingsTaxLots:
      type: object
      description: Serializer for holdings.tax_lots data.
      properties:
        tilt_asset_id:
          type: string
        ticker_symbol:
          type: string
          readOnly: true
        ticker_name:
          type: string
          readOnly: true
        quantity:
          type: string
          format: decimal
          pattern: ^-?\d{0,10}(?:\.\d{0,10})?$
        cost_basis:
          type: string
          format: decimal
          pattern: ^-?\d{0,10}(?:\.\d{0,10})?$
        cost_basis_currency:
          allOf:
            - $ref: '#/components/schemas/CurrencyEnum'
          default: USD
        fx_rate:
          type: string
          format: decimal
          pattern: ^-?\d{0,20}(?:\.\d{0,10})?$
          default: '1.0000000000'
        cost_basis_usd:
          type: string
          format: decimal
          pattern: ^-?\d{0,10}(?:\.\d{0,10})?$
          readOnly: true
        trade_date:
          type: string
          format: date
        wash_sale_date:
          type: string
          format: date
        last_sold_for_loss_date:
          type: string
          format: date
        current_value:
          type: string
          format: decimal
          pattern: ^-?\d{0,18}(?:\.\d{0,2})?$
          nullable: true
          readOnly: true
      required:
        - cost_basis
        - cost_basis_usd
        - current_value
        - last_sold_for_loss_date
        - quantity
        - ticker_name
        - ticker_symbol
        - tilt_asset_id
        - trade_date
        - wash_sale_date
    OptimizationModeEnum:
      enum:
        - LONG_ONLY
        - LONG_SHORT
        - LONG_BIASED
      type: string
      description: |-
        * `LONG_ONLY` - Long Only
        * `LONG_SHORT` - Long Short
        * `LONG_BIASED` - Long Biased
    BlankEnum:
      enum:
        - ''
    NullEnum:
      enum:
        - null
    RiskModelNameEnum:
      enum:
        - custom
        - pca
        - characteristics
        - axioma
      type: string
      description: |-
        * `custom` - Custom
        * `pca` - Pca
        * `characteristics` - Characteristics
        * `axioma` - Axioma
    CustomizationConfigTiltWrite:
      type: object
      properties:
        tilt_uuid:
          type: string
          format: uuid
          writeOnly: true
          nullable: true
        index_uuid:
          type: string
          format: uuid
          writeOnly: true
          nullable: true
        factor:
          type: string
          format: decimal
          pattern: ^-?\d{0,3}(?:\.\d{0,2})?$
      required:
        - factor
    UpdateTickerConstraint:
      type: object
      properties:
        tilt_asset_id:
          type: string
        starts_from:
          type: string
          format: date-time
        expires_at:
          type: string
          format: date-time
        condition:
          type: string
          nullable: true
          maxLength: 1000
      required:
        - tilt_asset_id
    CustomizationConfigAssetBoundsWrite:
      type: object
      properties:
        tilt_asset_id:
          type: string
          description: Ticker tilt asset id
        target_weight:
          type: string
          format: decimal
          pattern: ^-?\d{0,1}(?:\.\d{0,4})?$
          nullable: true
          description: >-
            Target weight for this asset. If set, takes precedence over
            lower_bound and upper_bound.
        lower_bound:
          type: string
          format: decimal
          pattern: ^-?\d{0,1}(?:\.\d{0,4})?$
          nullable: true
          description: Lower bound for asset weight. Used only if target_weight is not set.
        upper_bound:
          type: string
          format: decimal
          pattern: ^-?\d{0,1}(?:\.\d{0,4})?$
          nullable: true
          description: Upper bound for asset weight. Used only if target_weight is not set.
        min_active:
          type: string
          format: decimal
          pattern: ^-?\d{0,1}(?:\.\d{0,4})?$
          nullable: true
          description: Minimum active weight for this asset.
        max_active:
          type: string
          format: decimal
          pattern: ^-?\d{0,1}(?:\.\d{0,4})?$
          nullable: true
          description: Maximum active weight for this asset.
        condition:
          type: string
          nullable: true
          maxLength: 1000
      required:
        - tilt_asset_id
    CustomizationConfigExposureBound:
      type: object
      properties:
        factor:
          type: string
          maxLength: 128
        min_bound:
          type: string
          format: decimal
          pattern: ^-?\d{0,15}(?:\.\d{0,5})?$
        max_bound:
          type: string
          format: decimal
          pattern: ^-?\d{0,15}(?:\.\d{0,5})?$
        min_active_bound:
          type: string
          format: decimal
          pattern: ^-?\d{0,15}(?:\.\d{0,5})?$
        max_active_bound:
          type: string
          format: decimal
          pattern: ^-?\d{0,15}(?:\.\d{0,5})?$
      required:
        - factor
        - max_active_bound
        - max_bound
        - min_active_bound
        - min_bound
    CustomizationConfigTaxPreferences:
      type: object
      properties:
        tax_region:
          nullable: true
          description: |-
            Tax region for tax calculation

            * `USA` - Usa
            * `CANADA` - Canada
          oneOf:
            - $ref: '#/components/schemas/TaxRegionEnum'
            - $ref: '#/components/schemas/BlankEnum'
            - $ref: '#/components/schemas/NullEnum'
        short_term_rate:
          type: string
          format: decimal
          pattern: ^-?\d{0,1}(?:\.\d{0,4})?$
          nullable: true
          description: Short-term capital gains tax rate
        long_term_rate:
          type: string
          format: decimal
          pattern: ^-?\d{0,1}(?:\.\d{0,4})?$
          nullable: true
          description: Long-term capital gains tax rate
        tax_algorithm:
          nullable: true
          description: |-
            Algorithm used for tax lot selection

            * `AVG_COST` - Avg Cost
            * `FIFO` - Fifo
            * `LIFO` - Lifo
            * `OPTIMAL` - Optimal
            * `TLH` - Tlh
            * `UNAWARE` - Unaware
          oneOf:
            - $ref: '#/components/schemas/TaxAlgorithmEnum'
            - $ref: '#/components/schemas/BlankEnum'
            - $ref: '#/components/schemas/NullEnum'
        tracking_error_threshold:
          type: string
          format: decimal
          pattern: ^-?\d{0,1}(?:\.\d{0,2})?$
          nullable: true
          description: Maximum acceptable tracking error threshold
        wash_sale_threshold:
          type: integer
          maximum: 2147483647
          minimum: 0
          nullable: true
          description: Wash sale threshold in days
        long_term_threshold:
          type: integer
          maximum: 2147483647
          minimum: 0
          nullable: true
          description: Long-term threshold in days
        ordinary_income_tax_rate:
          type: string
          format: decimal
          pattern: ^-?\d{0,1}(?:\.\d{0,4})?$
          nullable: true
          description: Ordinary income tax rate
        n_high_loss_lots:
          type: integer
          maximum: 2147483647
          minimum: 0
          nullable: true
          description: Number of high loss lots to consider
        tax_gamma:
          type: string
          format: decimal
          pattern: ^-?\d{0,4}(?:\.\d{0,6})?$
          nullable: true
          description: Tax gamma parameter for tax optimization
        tax_use_tax_alpha:
          type: boolean
          nullable: true
          description: Whether to use tax alpha in the optimization
        include_positive_tax_alpha_lots:
          type: boolean
          nullable: true
          description: Whether to include positive tax alpha lots in the optimization
        positive_tax_alpha_scaling_factor:
          type: string
          format: decimal
          pattern: ^-?\d{0,1}(?:\.\d{0,2})?$
          nullable: true
          description: Scaling factor for positive tax alpha
        prevent_tlh_invalidating_purchase:
          type: boolean
          nullable: true
          description: >-
            Prevent purchases that would invalidate tax-loss harvesting. Library
            default True.
        prevent_tlh_invalidating_sale:
          type: boolean
          nullable: true
          description: >-
            Prevent sales that would invalidate tax-loss harvesting. Library
            default True.
        tax_gamma_min:
          type: string
          format: decimal
          pattern: ^-?\d{0,6}(?:\.\d{0,6})?$
          nullable: true
          description: >-
            Minimum tax gamma for bisection search. Null means no lower bound is
            applied.
        tax_gamma_max:
          type: string
          format: decimal
          pattern: ^-?\d{0,6}(?:\.\d{0,6})?$
          nullable: true
          description: >-
            Maximum tax gamma for bisection search. Null means no upper bound is
            applied.
        tax_gain_target:
          type: string
          format: decimal
          pattern: ^-?\d{0,10}(?:\.\d{0,4})?$
          nullable: true
          description: >-
            Target tax gain/loss amount in dollars. Negative values target a net
            loss. Library default 0.0.
        tax_gain_target_tolerance:
          type: string
          format: decimal
          pattern: ^-?\d{0,10}(?:\.\d{0,4})?$
          nullable: true
          description: Tolerance for tax gain target. Library default 100.0.
    CustomizationConfigAssetClassAllocationWrite:
      type: object
      description: >-
        Serializer for creating and updating
        CustomizationConfigAssetClassAllocation data.
      properties:
        asset_class_uuid:
          type: string
          format: uuid
          description: UUID of the asset class
        target_allocation:
          type: string
          format: decimal
          pattern: ^-?\d{0,1}(?:\.\d{0,4})?$
          description: Target allocation for this asset class (0.0 to 1.0)
        direct_indexing_enabled:
          type: boolean
          default: false
          description: Whether direct indexing is enabled for this asset class
        tilts:
          type: array
          items:
            $ref: >-
              #/components/schemas/CustomizationConfigAssetClassAllocationTiltWrite
          description: >-
            A list of tilts to apply to this asset class. If provided, replaces
            the existing list of tilts for this asset class.
      required:
        - asset_class_uuid
        - target_allocation
    DynamicRuleWrite:
      type: object
      properties:
        field_name:
          type: string
          maxLength: 128
        rules:
          type: array
          items:
            $ref: '#/components/schemas/DynamicRuleEntry'
      required:
        - field_name
        - rules
    CapitalGainsReductionsUnitsEnum:
      enum:
        - DOLLARS
        - PERCENT
      type: string
      description: |-
        * `DOLLARS` - Dollars
        * `PERCENT` - Percent
    ClientHoldings:
      type: object
      properties:
        tax_lots:
          type: array
          items:
            $ref: '#/components/schemas/ClientHoldingsTaxLots'
          readOnly: true
        cash_balance:
          type: string
          format: decimal
          pattern: ^-?\d{0,16}(?:\.\d{0,2})?$
        non_tradable_assets_value:
          type: string
          format: decimal
          pattern: ^-?\d{0,16}(?:\.\d{0,2})?$
          nullable: true
          description: The cash value of the non-tradable assets.
        liabilities_value:
          type: string
          format: decimal
          pattern: ^-?\d{0,16}(?:\.\d{0,2})?$
          description: >-
            Liabilities (e.g. credit-card balance owed), in USD, that reduce net
            worth but not AUM.
      required:
        - tax_lots
    CustomizationConfigRead:
      type: object
      properties:
        uuid:
          type: string
          format: uuid
          readOnly: true
        name:
          type: string
          nullable: true
          maxLength: 255
        optimization_mode:
          nullable: true
          description: >-
            Optimization mode to use for portfolio optimization, this can be
            LONG_ONLY, LONG_SHORT, or LONG_BIASED.


            * `LONG_ONLY` - Long Only

            * `LONG_SHORT` - Long Short

            * `LONG_BIASED` - Long Biased
          oneOf:
            - $ref: '#/components/schemas/OptimizationModeEnum'
            - $ref: '#/components/schemas/BlankEnum'
            - $ref: '#/components/schemas/NullEnum'
        long_weight_sum:
          type: string
          format: decimal
          pattern: ^-?\d{0,3}(?:\.\d{0,2})?$
          nullable: true
          description: >-
            Target sum of long weights for LONG_SHORT or LONG_BIASED
            optimization modes (e.g., 2.5 for 250% long).
        short_weight_sum:
          type: string
          format: decimal
          pattern: ^-?\d{0,3}(?:\.\d{0,2})?$
          nullable: true
          description: >-
            Target sum of short weights for LONG_SHORT or LONG_BIASED
            optimization modes (e.g., -2.5 for -250% short).
        risk_model_name:
          nullable: true
          description: |-
            Risk model to use for portfolio optimization

            * `custom` - Custom
            * `pca` - Pca
            * `characteristics` - Characteristics
            * `axioma` - Axioma
          oneOf:
            - $ref: '#/components/schemas/RiskModelNameEnum'
            - $ref: '#/components/schemas/BlankEnum'
            - $ref: '#/components/schemas/NullEnum'
        tilts:
          type: array
          items:
            $ref: '#/components/schemas/CustomizationConfigTiltRead'
        no_hold_tickers:
          type: array
          items:
            $ref: '#/components/schemas/CustomizationConfigNoHoldTickerRead'
        no_trade_tickers:
          type: array
          items:
            $ref: '#/components/schemas/CustomizationConfigNoTradeTickerRead'
        target_ticker_weights:
          type: array
          items:
            $ref: '#/components/schemas/CustomizationConfigAssetBoundsRead'
        min_weight:
          type: string
          format: decimal
          pattern: ^-?\d{0,3}(?:\.\d{0,2})?$
          nullable: true
        max_weight:
          type: string
          format: decimal
          pattern: ^-?\d{0,3}(?:\.\d{0,2})?$
          nullable: true
        min_active_weight:
          type: string
          format: decimal
          pattern: ^-?\d{0,3}(?:\.\d{0,2})?$
          nullable: true
        max_active_weight:
          type: string
          format: decimal
          pattern: ^-?\d{0,3}(?:\.\d{0,2})?$
          nullable: true
        use_active_risk_bounds:
          type: boolean
          nullable: true
          description: Whether to enforce the active-risk cap during optimization
        max_active_risk_pct:
          type: string
          format: decimal
          pattern: ^-?\d{0,3}(?:\.\d{0,2})?$
          nullable: true
          description: >-
            Maximum portfolio active risk as a percentage (0–100). Only enforced
            when use_active_risk_bounds is True.
        scaling_factor:
          type: string
          format: decimal
          pattern: ^-?\d{0,3}(?:\.\d{0,2})?$
          nullable: true
        use_mean_variance:
          type: boolean
          nullable: true
        factor_exposure_bounds:
          type: array
          items:
            $ref: '#/components/schemas/CustomizationConfigExposureBound'
        tax_preferences:
          allOf:
            - $ref: '#/components/schemas/CustomizationConfigTaxPreferences'
          nullable: true
        asset_allocations:
          type: array
          items:
            $ref: '#/components/schemas/CustomizationConfigAssetClassAllocationRead'
        bid_ask_spread_ref_volume:
          type: string
          format: decimal
          pattern: ^-?\d{0,8}(?:\.\d{0,2})?$
          nullable: true
        market_impact_parameter:
          type: string
          format: decimal
          pattern: ^-?\d{0,8}(?:\.\d{0,2})?$
          nullable: true
        bid_ask_spread_parameter:
          type: string
          format: decimal
          pattern: ^-?\d{0,8}(?:\.\d{0,2})?$
          nullable: true
        tcost_bps:
          type: string
          format: decimal
          pattern: ^-?\d{0,8}(?:\.\d{0,2})?$
          nullable: true
        cash_buffer_usd:
          type: string
          format: decimal
          pattern: ^-?\d{0,1}(?:\.\d{0,4})?$
          nullable: true
          description: >-
            USD cash buffer as a percentage of portfolio value (0.0 to 1.0,
            e.g., 0.05 for 5%)
        cash_buffer_cad:
          type: string
          format: decimal
          pattern: ^-?\d{0,1}(?:\.\d{0,4})?$
          nullable: true
          description: >-
            CAD cash buffer as a percentage of portfolio value (0.0 to 1.0,
            e.g., 0.05 for 5%)
        dynamic_rules:
          type: array
          items:
            $ref: '#/components/schemas/DynamicRuleRead'
        risk_aversion:
          type: string
          format: decimal
          pattern: ^-?\d{0,3}(?:\.\d{0,3})?$
          nullable: true
          description: Risk aversion lambda. App default is 2; library default is 1.0.
        risk_free_rate_pct:
          type: string
          format: decimal
          pattern: ^-?\d{0,3}(?:\.\d{0,4})?$
          nullable: true
          description: >-
            Risk-free rate percentage used in Sharpe calculations. Library
            default 4.0.
        spectral_shift:
          type: string
          format: decimal
          pattern: ^-?\d{0,5}(?:\.\d{0,10})?$
          nullable: true
          description: Risk matrix conditioning parameter. Library default 0.0.
        risk_bound_increase_factor:
          type: string
          format: decimal
          pattern: ^-?\d{0,4}(?:\.\d{0,4})?$
          nullable: true
          description: >-
            Factor to increase risk bounds on infeasibility. Library default
            2.0.
        risk_bound_max_iterations:
          type: integer
          maximum: 2147483647
          minimum: 0
          nullable: true
          description: Max iterations for risk bound adaptation. Library default 10.
        use_regula_falsi:
          type: boolean
          nullable: true
          description: >-
            Enable Regula Falsi method for tax gamma search. Library default
            True.
        use_turnover_constraint:
          type: boolean
          nullable: true
          description: Enable maximum turnover constraint. Library default False.
        max_turnover_pct:
          type: string
          format: decimal
          pattern: ^-?\d{0,4}(?:\.\d{0,4})?$
          nullable: true
          description: Maximum portfolio turnover as a percentage. Library default 100.0.
        require_whole_shares:
          type: boolean
          nullable: true
          description: >-
            Enforce whole share constraints for all assets. Library default
            False.
        whole_share_assets:
          nullable: true
          description: >-
            List of tilt_asset_ids that must be whole shares. Null = all when
            require_whole_shares is True.
        substitution_pairs:
          nullable: true
          description: >-
            List of lists of tilt_asset_ids that are mutually exclusive
            substitution pairs.
        capital_gains_reductions:
          nullable: true
          description: >-
            Dict mapping tilt_asset_id to per-asset capital gains reduction
            amount.
        capital_gains_reductions_units:
          nullable: true
          description: |-
            Units for capital_gains_reductions. Library default 'DOLLARS'.

            * `DOLLARS` - Dollars
            * `PERCENT` - Percent
          oneOf:
            - $ref: '#/components/schemas/CapitalGainsReductionsUnitsEnum'
            - $ref: '#/components/schemas/BlankEnum'
            - $ref: '#/components/schemas/NullEnum'
        use_cash_benchmark:
          type: boolean
          nullable: true
          description: Include cash as a benchmark component. Library default False.
        linear_tcaf:
          type: string
          format: decimal
          pattern: ^-?\d{0,4}(?:\.\d{0,6})?$
          nullable: true
          description: Linear transaction cost fraction. Library default 0.0.
        commission_rate:
          type: string
          format: decimal
          pattern: ^-?\d{0,4}(?:\.\d{0,4})?$
          nullable: true
          description: Commission rate. Library default 0.75.
        broker_spread_bps:
          type: string
          format: decimal
          pattern: ^-?\d{0,6}(?:\.\d{0,4})?$
          nullable: true
          description: Broker spread in basis points. Library default 30.0.
        min_trading_volume_dollars:
          type: string
          format: decimal
          pattern: ^-?\d{0,14}(?:\.\d{0,2})?$
          nullable: true
          description: >-
            Minimum trading volume in dollars for market impact calculation.
            Library default 1,000,000.
      required:
        - uuid
    ClientAssetSettingRead:
      type: object
      properties:
        asset_class:
          $ref: '#/components/schemas/AssetClassRead'
        direct_indexing_enabled:
          type: boolean
          description: >-
            Whether direct indexing is enabled for this asset class for this
            client
      required:
        - asset_class
        - direct_indexing_enabled
    WashSaleLot:
      type: object
      description: >-
        Serializer for tax lots that may trigger wash sale rules, with account
        info.
      properties:
        tax_lot:
          $ref: '#/components/schemas/ClientHoldingsTaxLots'
        account_uuid:
          type: string
          format: uuid
        account_name:
          type: string
          readOnly: true
      required:
        - account_name
        - account_uuid
        - tax_lot
    CurrencyEnum:
      enum:
        - USD
        - EUR
        - GBP
        - JPY
        - CAD
      type: string
      description: |-
        * `USD` - Usd
        * `EUR` - Eur
        * `GBP` - Gbp
        * `JPY` - Jpy
        * `CAD` - Cad
    TaxRegionEnum:
      enum:
        - USA
        - CANADA
      type: string
      description: |-
        * `USA` - Usa
        * `CANADA` - Canada
    TaxAlgorithmEnum:
      enum:
        - AVG_COST
        - FIFO
        - LIFO
        - OPTIMAL
        - TLH
        - UNAWARE
      type: string
      description: |-
        * `AVG_COST` - Avg Cost
        * `FIFO` - Fifo
        * `LIFO` - Lifo
        * `OPTIMAL` - Optimal
        * `TLH` - Tlh
        * `UNAWARE` - Unaware
    CustomizationConfigAssetClassAllocationTiltWrite:
      type: object
      properties:
        tilt_uuid:
          type: string
          format: uuid
          writeOnly: true
          nullable: true
        index_uuid:
          type: string
          format: uuid
          writeOnly: true
          nullable: true
        factor:
          type: string
          format: decimal
          pattern: ^-?\d{0,3}(?:\.\d{0,2})?$
        impacts_non_benchmark_assets:
          type: boolean
          description: Whether to impact assets that are not part of the benchmark.
        is_part_of_benchmark:
          type: boolean
          description: >-
            Whether the tilted weight should be considered part of the benchmark
            weights.
      required:
        - factor
    DynamicRuleEntry:
      type: object
      properties:
        cron:
          type: string
          default: ''
          description: Cron expression (e.g. '* * * 12 *' for December)
        condition:
          type: string
          default: ''
          description: Boolean expression (e.g. 'aum > 1000000')
          maxLength: 1000
        value:
          description: Value to use when the rule matches
        priority:
          type: integer
          maximum: 9999
          minimum: 0
          default: 0
          description: Priority order (lowest number evaluated first, 0–9999)
      required:
        - value
    CustomizationConfigTiltRead:
      type: object
      properties:
        tilt:
          allOf:
            - $ref: '#/components/schemas/CustomizationConfigTiltInfo'
          nullable: true
        index:
          allOf:
            - $ref: '#/components/schemas/CustomizationConfigIndexInfo'
          nullable: true
        factor:
          type: string
          format: decimal
          pattern: ^-?\d{0,3}(?:\.\d{0,2})?$
      required:
        - factor
    CustomizationConfigNoHoldTickerRead:
      type: object
      properties:
        ticker:
          $ref: '#/components/schemas/Ticker'
        starts_from:
          type: string
          format: date-time
          nullable: true
          description: The date from which the ticker should no longer be held.
        expires_at:
          type: string
          format: date-time
          nullable: true
          description: The date at which the ticker may be held again.
        condition:
          type: string
          nullable: true
          description: Boolean expression evaluated against context variables.
      required:
        - ticker
    CustomizationConfigNoTradeTickerRead:
      type: object
      properties:
        ticker:
          $ref: '#/components/schemas/Ticker'
        starts_from:
          type: string
          format: date-time
          nullable: true
          description: The date from which the ticker should no longer be traded.
        expires_at:
          type: string
          format: date-time
          nullable: true
          description: The date at which the ticker may be traded again.
        condition:
          type: string
          nullable: true
          description: Boolean expression evaluated against context variables.
      required:
        - ticker
    CustomizationConfigAssetBoundsRead:
      type: object
      properties:
        ticker:
          $ref: '#/components/schemas/Ticker'
        target_weight:
          type: string
          format: decimal
          pattern: ^-?\d{0,1}(?:\.\d{0,4})?$
          nullable: true
          description: >-
            Target weight for this asset. If set, takes precedence over
            lower_bound and upper_bound.
        lower_bound:
          type: string
          format: decimal
          pattern: ^-?\d{0,1}(?:\.\d{0,4})?$
          nullable: true
          description: Lower bound for asset weight. Used only if target_weight is not set.
        upper_bound:
          type: string
          format: decimal
          pattern: ^-?\d{0,1}(?:\.\d{0,4})?$
          nullable: true
          description: Upper bound for asset weight. Used only if target_weight is not set.
        min_active:
          type: string
          format: decimal
          pattern: ^-?\d{0,1}(?:\.\d{0,4})?$
          nullable: true
          description: Minimum active weight for this asset.
        max_active:
          type: string
          format: decimal
          pattern: ^-?\d{0,1}(?:\.\d{0,4})?$
          nullable: true
          description: Maximum active weight for this asset.
        condition:
          type: string
          nullable: true
          description: Boolean expression evaluated against context variables.
      required:
        - ticker
    CustomizationConfigAssetClassAllocationRead:
      type: object
      description: Serializer for reading CustomizationConfigAssetClassAllocation data.
      properties:
        asset_class_uuid:
          type: string
          format: uuid
          readOnly: true
        asset_class_name:
          type: string
          readOnly: true
        asset_class_description:
          type: string
          readOnly: true
        benchmark_index_identifier:
          type: string
          nullable: true
          readOnly: true
        benchmark_index_name:
          type: string
          nullable: true
          readOnly: true
        benchmark_symbol:
          type: string
          nullable: true
          readOnly: true
        single_security_tilt_asset_id:
          type: string
          nullable: true
          readOnly: true
        single_security_symbol:
          type: string
          nullable: true
          readOnly: true
        target_allocation:
          type: string
          format: decimal
          pattern: ^-?\d{0,1}(?:\.\d{0,4})?$
        direct_indexing_enabled:
          type: boolean
        tilts:
          type: array
          items:
            $ref: >-
              #/components/schemas/CustomizationConfigAssetClassAllocationTiltRead
      required:
        - asset_class_description
        - asset_class_name
        - asset_class_uuid
        - benchmark_index_identifier
        - benchmark_index_name
        - benchmark_symbol
        - single_security_symbol
        - single_security_tilt_asset_id
        - target_allocation
    DynamicRuleRead:
      type: object
      properties:
        field_name:
          type: string
          description: >-
            Name of the config field to set dynamically (e.g. 'tax_gamma',
            'max_weight'). Use 'tax_preferences.' prefix for tax preference
            fields.
          maxLength: 128
        rules:
          type: array
          items:
            $ref: '#/components/schemas/DynamicRuleEntry'
      required:
        - field_name
        - rules
    AssetClassRead:
      type: object
      description: Serializer for reading AssetClass data.
      properties:
        uuid:
          type: string
          format: uuid
          readOnly: true
        name:
          type: string
          maxLength: 255
        description:
          type: string
        benchmark_index_name:
          type: string
          nullable: true
          readOnly: true
        benchmark_index_identifier:
          type: string
          nullable: true
          readOnly: true
        index_name:
          type: string
          nullable: true
          readOnly: true
        index_uuid:
          type: string
          format: uuid
          readOnly: true
          nullable: true
        tilt_name:
          type: string
          nullable: true
          readOnly: true
        tilt_uuid:
          type: string
          format: uuid
          readOnly: true
          nullable: true
        single_security_tilt_asset_id:
          type: string
          nullable: true
          readOnly: true
        single_security_symbol:
          type: string
          nullable: true
          readOnly: true
        alternative_etf_tilt_asset_ids:
          type: array
          items:
            type: string
          description: Return list of alternative ETF tilt_asset_ids.
          readOnly: true
        created:
          type: string
          format: date-time
          readOnly: true
        modified:
          type: string
          format: date-time
          readOnly: true
      required:
        - alternative_etf_tilt_asset_ids
        - benchmark_index_identifier
        - benchmark_index_name
        - created
        - description
        - index_name
        - index_uuid
        - modified
        - name
        - single_security_symbol
        - single_security_tilt_asset_id
        - tilt_name
        - tilt_uuid
        - uuid
    CustomizationConfigTiltInfo:
      type: object
      properties:
        uuid:
          type: string
          format: uuid
          readOnly: true
        name:
          type: string
          nullable: true
          maxLength: 256
        published_at:
          type: string
          format: date-time
          nullable: true
      required:
        - uuid
    CustomizationConfigIndexInfo:
      type: object
      properties:
        uuid:
          type: string
          format: uuid
          readOnly: true
        name:
          type: string
          maxLength: 255
        status:
          $ref: '#/components/schemas/IndexStatus'
      required:
        - name
        - uuid
    Ticker:
      type: object
      properties:
        tilt_asset_id:
          type: string
          readOnly: true
        symbol:
          type: string
        exchange:
          type: string
          readOnly: true
        name:
          type: string
          readOnly: true
        description:
          type: string
          nullable: true
          readOnly: true
        image_url:
          type: string
          format: uri
          readOnly: true
          nullable: true
        ticker_url:
          type: string
          readOnly: true
        ticker_type:
          type: string
          readOnly: true
        market_cap:
          type: number
          format: double
          readOnly: true
          nullable: true
        sic_description:
          type: string
          nullable: true
          readOnly: true
      required:
        - description
        - exchange
        - image_url
        - market_cap
        - name
        - sic_description
        - symbol
        - ticker_type
        - ticker_url
        - tilt_asset_id
    CustomizationConfigAssetClassAllocationTiltRead:
      type: object
      properties:
        tilt:
          allOf:
            - $ref: '#/components/schemas/CustomizationConfigTiltInfo'
          nullable: true
        index:
          allOf:
            - $ref: '#/components/schemas/CustomizationConfigIndexInfo'
          nullable: true
        factor:
          type: string
          format: decimal
          pattern: ^-?\d{0,3}(?:\.\d{0,2})?$
        impacts_non_benchmark_assets:
          type: boolean
          description: Whether to impact assets that are not part of the benchmark.
        is_part_of_benchmark:
          type: boolean
          description: >-
            Whether the tilted weight should be considered part of the benchmark
            weights.
      required:
        - factor
    IndexStatus:
      enum:
        - IN_PROGRESS
        - SUBMITTED
        - APPROVED
        - REJECTED
      type: string
      description: |-
        * `IN_PROGRESS` - In Progress
        * `SUBMITTED` - Submitted
        * `APPROVED` - Approved
        * `REJECTED` - Rejected
  securitySchemes:
    ProAPIToken:
      type: apiKey
      in: header
      name: X-Api-Key

````