lusid-sdk 2.0.50b0__py3-none-any.whl → 2.0.470__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of lusid-sdk might be problematic. Click here for more details.

Files changed (332) hide show
  1. lusid/__init__.py +1117 -14
  2. lusid/api/__init__.py +69 -0
  3. lusid/api/abor_api.py +513 -179
  4. lusid/api/abor_configuration_api.py +25 -24
  5. lusid/api/allocations_api.py +12 -20
  6. lusid/api/blocks_api.py +6 -6
  7. lusid/api/calendars_api.py +16 -24
  8. lusid/api/chart_of_accounts_api.py +1745 -441
  9. lusid/api/compliance_api.py +71 -62
  10. lusid/api/configuration_recipe_api.py +1198 -56
  11. lusid/api/corporate_action_sources_api.py +8 -8
  12. lusid/api/custom_entities_api.py +6 -6
  13. lusid/api/cut_label_definitions_api.py +9 -17
  14. lusid/api/data_types_api.py +16 -32
  15. lusid/api/executions_api.py +6 -6
  16. lusid/api/funds_api.py +1119 -0
  17. lusid/api/instrument_event_types_api.py +1287 -0
  18. lusid/api/instruments_api.py +12 -20
  19. lusid/api/legacy_compliance_api.py +12 -12
  20. lusid/api/legal_entities_api.py +12 -12
  21. lusid/api/order_graph_api.py +12 -12
  22. lusid/api/order_instructions_api.py +6 -6
  23. lusid/api/order_management_api.py +495 -14
  24. lusid/api/orders_api.py +16 -24
  25. lusid/api/packages_api.py +6 -6
  26. lusid/api/persons_api.py +16 -24
  27. lusid/api/placements_api.py +12 -12
  28. lusid/api/portfolio_groups_api.py +6 -6
  29. lusid/api/portfolios_api.py +23 -39
  30. lusid/api/property_definitions_api.py +205 -0
  31. lusid/api/queryable_keys_api.py +211 -0
  32. lusid/api/quotes_api.py +20 -36
  33. lusid/api/reconciliations_api.py +410 -1978
  34. lusid/api/schemas_api.py +7 -15
  35. lusid/api/scopes_api.py +151 -0
  36. lusid/api/scripted_translation_api.py +30 -28
  37. lusid/api/staging_rule_set_api.py +885 -0
  38. lusid/api/transaction_configuration_api.py +22 -22
  39. lusid/api/transaction_portfolios_api.py +282 -577
  40. lusid/api_client.py +5 -3
  41. lusid/configuration.py +1 -1
  42. lusid/extensions/__init__.py +10 -7
  43. lusid/extensions/api_client.py +3 -1
  44. lusid/extensions/api_client_factory.py +156 -45
  45. lusid/extensions/api_configuration.py +124 -15
  46. lusid/extensions/configuration_loaders.py +2 -4
  47. lusid/extensions/proxy_config.py +8 -5
  48. lusid/extensions/socket_keep_alive.py +14 -15
  49. lusid/extensions/tcp_keep_alive_connector.py +93 -46
  50. lusid/models/__init__.py +1028 -13
  51. lusid/models/abor.py +9 -2
  52. lusid/models/abor_configuration.py +8 -8
  53. lusid/models/abor_configuration_request.py +9 -9
  54. lusid/models/abor_request.py +1 -1
  55. lusid/models/account.py +6 -1
  56. lusid/models/accumulation_event.py +104 -0
  57. lusid/models/address_key_compliance_parameter.py +5 -12
  58. lusid/models/address_key_list_compliance_parameter.py +3 -3
  59. lusid/models/address_key_option_definition.py +3 -1
  60. lusid/models/amortisation_event.py +4 -6
  61. lusid/models/{underlying_leg.py → asset_leg.py} +15 -15
  62. lusid/models/basket.py +3 -3
  63. lusid/models/block_and_order_id_request.py +78 -0
  64. lusid/models/block_and_orders.py +83 -0
  65. lusid/models/block_and_orders_create_request.py +77 -0
  66. lusid/models/block_and_orders_request.py +134 -0
  67. lusid/models/blocked_order_request.py +130 -0
  68. lusid/models/bond.py +13 -6
  69. lusid/models/bond_coupon_event.py +97 -0
  70. lusid/models/bond_default_event.py +8 -18
  71. lusid/models/bond_principal_event.py +97 -0
  72. lusid/models/book_transactions_request.py +97 -0
  73. lusid/models/bool_compliance_parameter.py +3 -3
  74. lusid/models/bool_list_compliance_parameter.py +3 -3
  75. lusid/models/branch_step.py +101 -0
  76. lusid/models/cap_floor.py +3 -3
  77. lusid/models/cash_dividend_event.py +32 -10
  78. lusid/models/cash_election.py +91 -0
  79. lusid/models/cash_flow_event.py +5 -7
  80. lusid/models/cash_perpetual.py +3 -3
  81. lusid/models/cds_flow_conventions.py +1 -1
  82. lusid/models/cds_index.py +4 -4
  83. lusid/models/check_step.py +110 -0
  84. lusid/models/cleardown_module_details.py +95 -0
  85. lusid/models/cleardown_module_request.py +117 -0
  86. lusid/models/cleardown_module_response.py +139 -0
  87. lusid/models/cleardown_module_rule.py +94 -0
  88. lusid/models/{reconciliation_run_break.py → cleardown_module_rules_updated_response.py} +30 -36
  89. lusid/models/close_event.py +3 -3
  90. lusid/models/close_period_diary_entry_request.py +149 -0
  91. lusid/models/complete_portfolio.py +8 -1
  92. lusid/models/complex_bond.py +4 -4
  93. lusid/models/complex_market_data.py +6 -5
  94. lusid/models/compliance_parameter.py +8 -5
  95. lusid/models/compliance_parameter_type.py +3 -0
  96. lusid/models/compliance_rule_breakdown.py +16 -8
  97. lusid/models/compliance_rule_breakdown_request.py +12 -4
  98. lusid/models/compliance_rule_result_v2.py +85 -0
  99. lusid/models/compliance_step.py +99 -0
  100. lusid/models/compliance_step_type.py +42 -0
  101. lusid/models/compliance_summary_rule_result.py +12 -15
  102. lusid/models/compliance_summary_rule_result_request.py +12 -15
  103. lusid/models/compliance_template_variation.py +12 -2
  104. lusid/models/component_transaction.py +92 -0
  105. lusid/models/composite_dispersion.py +30 -5
  106. lusid/models/compounding.py +4 -4
  107. lusid/models/configuration_recipe.py +10 -19
  108. lusid/models/constant_volatility_surface.py +102 -0
  109. lusid/models/contract_for_difference.py +3 -3
  110. lusid/models/create_derived_property_definition_request.py +3 -3
  111. lusid/models/create_derived_transaction_portfolio_request.py +10 -3
  112. lusid/models/create_property_definition_request.py +12 -5
  113. lusid/models/create_staging_rule_set_request.py +91 -0
  114. lusid/models/create_trade_tickets_response.py +87 -0
  115. lusid/models/create_transaction_portfolio_request.py +16 -3
  116. lusid/models/credit_default_swap.py +4 -4
  117. lusid/models/credit_spread_curve_data.py +4 -4
  118. lusid/models/custom_entity_definition.py +8 -2
  119. lusid/models/custom_entity_type.py +8 -2
  120. lusid/models/cut_label_definition.py +7 -1
  121. lusid/models/data_type.py +7 -1
  122. lusid/models/data_type_summary.py +8 -2
  123. lusid/models/date_time_compliance_parameter.py +3 -3
  124. lusid/models/date_time_list_compliance_parameter.py +3 -3
  125. lusid/models/{upsert_reconciliation_run_request.py → day_month.py} +15 -15
  126. lusid/models/decimal_compliance_parameter.py +3 -3
  127. lusid/models/decimal_list_compliance_parameter.py +3 -3
  128. lusid/models/dialect.py +9 -3
  129. lusid/models/diary_entry.py +1 -1
  130. lusid/models/diary_entry_request.py +1 -1
  131. lusid/models/discount_factor_curve_data.py +3 -3
  132. lusid/models/dividend_option_event.py +129 -0
  133. lusid/models/dividend_reinvestment_event.py +124 -0
  134. lusid/models/election_specification.py +73 -0
  135. lusid/models/eligibility_calculation.py +71 -0
  136. lusid/models/empty_model_options.py +3 -3
  137. lusid/models/equity.py +8 -6
  138. lusid/models/equity_curve_by_prices_data.py +3 -3
  139. lusid/models/equity_model_options.py +3 -3
  140. lusid/models/equity_option.py +3 -3
  141. lusid/models/equity_swap.py +4 -4
  142. lusid/models/equity_vol_surface_data.py +3 -3
  143. lusid/models/exchange_traded_option.py +3 -3
  144. lusid/models/exercise_event.py +5 -7
  145. lusid/models/exotic_instrument.py +3 -3
  146. lusid/models/expiry_event.py +91 -0
  147. lusid/models/filter_predicate_compliance_parameter.py +91 -0
  148. lusid/models/filter_step.py +101 -0
  149. lusid/models/fixed_leg.py +3 -3
  150. lusid/models/fixed_schedule.py +4 -9
  151. lusid/models/flexible_loan.py +105 -0
  152. lusid/models/float_schedule.py +20 -12
  153. lusid/models/floating_leg.py +3 -3
  154. lusid/models/flow_convention_name.py +1 -1
  155. lusid/models/flow_conventions.py +1 -1
  156. lusid/models/forward_rate_agreement.py +3 -3
  157. lusid/models/from_recipe.py +81 -0
  158. lusid/models/fund.py +182 -0
  159. lusid/models/fund_properties.py +115 -0
  160. lusid/models/fund_request.py +165 -0
  161. lusid/models/fund_share_class.py +99 -0
  162. lusid/models/funding_leg.py +3 -3
  163. lusid/models/funding_leg_options.py +3 -3
  164. lusid/models/future.py +3 -3
  165. lusid/models/fx_conventions.py +73 -0
  166. lusid/models/fx_forward.py +8 -6
  167. lusid/models/fx_forward_curve_by_quote_reference.py +4 -4
  168. lusid/models/fx_forward_curve_data.py +3 -3
  169. lusid/models/fx_forward_model_options.py +3 -3
  170. lusid/models/fx_forward_pips_curve_data.py +3 -3
  171. lusid/models/fx_forward_settlement_event.py +136 -0
  172. lusid/models/fx_forward_tenor_curve_data.py +4 -4
  173. lusid/models/fx_forward_tenor_pips_curve_data.py +4 -4
  174. lusid/models/fx_linked_notional_schedule.py +108 -0
  175. lusid/models/fx_option.py +3 -3
  176. lusid/models/fx_rate_schedule.py +3 -3
  177. lusid/models/fx_swap.py +4 -4
  178. lusid/models/fx_vol_surface_data.py +3 -3
  179. lusid/models/{reconciliation_run.py → get_recipe_composer_response.py} +15 -15
  180. lusid/models/group_by_selector_compliance_parameter.py +91 -0
  181. lusid/models/group_by_step.py +101 -0
  182. lusid/models/group_filter_predicate_compliance_parameter.py +91 -0
  183. lusid/models/group_filter_step.py +110 -0
  184. lusid/models/group_of_market_data_key_rules.py +79 -0
  185. lusid/models/index_convention.py +1 -1
  186. lusid/models/index_model_options.py +3 -3
  187. lusid/models/inflation_index_conventions.py +2 -2
  188. lusid/models/inflation_leg.py +3 -3
  189. lusid/models/inflation_linked_bond.py +3 -3
  190. lusid/models/inflation_swap.py +4 -4
  191. lusid/models/informational_error_event.py +3 -3
  192. lusid/models/informational_event.py +4 -6
  193. lusid/models/instrument_event.py +13 -5
  194. lusid/models/instrument_event_configuration.py +74 -0
  195. lusid/models/instrument_event_holder.py +12 -3
  196. lusid/models/instrument_event_type.py +8 -0
  197. lusid/models/instrument_leg.py +3 -3
  198. lusid/models/instrument_list_compliance_parameter.py +3 -3
  199. lusid/models/instrument_payment_diary_leg.py +5 -3
  200. lusid/models/instrument_resolution_detail.py +105 -0
  201. lusid/models/instrument_type.py +2 -0
  202. lusid/models/interest_rate_swap.py +4 -4
  203. lusid/models/interest_rate_swaption.py +3 -3
  204. lusid/models/intermediate_compliance_step.py +110 -0
  205. lusid/models/ir_vol_cube_data.py +3 -3
  206. lusid/models/journal_entry_line.py +34 -3
  207. lusid/models/journal_entry_lines_query_parameters.py +1 -1
  208. lusid/models/label_value_set.py +1 -1
  209. lusid/models/leg_definition.py +16 -3
  210. lusid/models/lineage_member.py +87 -0
  211. lusid/models/lock_period_diary_entry_request.py +91 -0
  212. lusid/models/lusid_instrument.py +7 -5
  213. lusid/models/lusid_trade_ticket.py +8 -1
  214. lusid/models/market_context.py +17 -2
  215. lusid/models/market_data_type.py +1 -0
  216. lusid/models/maturity_event.py +91 -0
  217. lusid/models/model_options.py +5 -6
  218. lusid/models/model_options_type.py +0 -1
  219. lusid/models/model_selection.py +3 -3
  220. lusid/models/move_orders_to_different_blocks_request.py +77 -0
  221. lusid/models/moved_order_to_different_block_response.py +85 -0
  222. lusid/models/movement_type.py +2 -0
  223. lusid/models/multi_currency_amounts.py +71 -0
  224. lusid/models/opaque_market_data.py +3 -3
  225. lusid/models/opaque_model_options.py +3 -3
  226. lusid/models/open_event.py +3 -3
  227. lusid/models/optionality_schedule.py +3 -3
  228. lusid/models/order_graph_block.py +4 -2
  229. lusid/models/order_graph_block_order_detail.py +16 -2
  230. lusid/models/output_transaction.py +9 -2
  231. lusid/models/paged_resource_list_of_cleardown_module_response.py +113 -0
  232. lusid/models/{paged_resource_list_of_reconciliation_run_break.py → paged_resource_list_of_cleardown_module_rule.py} +11 -11
  233. lusid/models/{paged_resource_list_of_reconciliation_run.py → paged_resource_list_of_fund.py} +11 -11
  234. lusid/models/paged_resource_list_of_property_definition.py +113 -0
  235. lusid/models/paged_resource_list_of_staging_rule_set.py +113 -0
  236. lusid/models/paged_resource_list_of_transaction_template.py +113 -0
  237. lusid/models/paged_resource_list_of_transaction_template_specification.py +113 -0
  238. lusid/models/participation_request.py +3 -9
  239. lusid/models/performance_returns_metric.py +1 -1
  240. lusid/models/period_diary_entries_reopened_response.py +104 -0
  241. lusid/models/place_blocks_request.py +77 -0
  242. lusid/models/portfolio.py +15 -2
  243. lusid/models/portfolio_details.py +15 -2
  244. lusid/models/portfolio_group_id_compliance_parameter.py +3 -3
  245. lusid/models/portfolio_group_id_list_compliance_parameter.py +3 -3
  246. lusid/models/portfolio_holding.py +27 -2
  247. lusid/models/portfolio_id_compliance_parameter.py +3 -3
  248. lusid/models/portfolio_id_list_compliance_parameter.py +3 -3
  249. lusid/models/posting_module_rule.py +29 -4
  250. lusid/models/pricing_model.py +2 -1
  251. lusid/models/property_definition.py +17 -4
  252. lusid/models/property_definition_search_result.py +3 -3
  253. lusid/models/property_domain.py +3 -0
  254. lusid/models/property_key_compliance_parameter.py +3 -3
  255. lusid/models/property_key_list_compliance_parameter.py +3 -3
  256. lusid/models/queryable_key.py +124 -0
  257. lusid/models/raw_vendor_event.py +5 -7
  258. lusid/models/re_open_period_diary_entry_request.py +84 -0
  259. lusid/models/recipe_block.py +87 -0
  260. lusid/models/recipe_composer.py +100 -0
  261. lusid/models/{reconciliation_break_id.py → recipe_value.py} +22 -23
  262. lusid/models/recombine_step.py +101 -0
  263. lusid/models/reference_instrument.py +3 -3
  264. lusid/models/relative_date_offset.py +71 -0
  265. lusid/models/repo.py +3 -3
  266. lusid/models/reset_event.py +4 -6
  267. lusid/models/resource_list_of_block_and_orders.py +113 -0
  268. lusid/models/resource_list_of_get_recipe_composer_response.py +113 -0
  269. lusid/models/resource_list_of_moved_order_to_different_block_response.py +113 -0
  270. lusid/models/resource_list_of_queryable_key.py +113 -0
  271. lusid/models/schedule.py +6 -5
  272. lusid/models/schedule_type.py +1 -0
  273. lusid/models/script_map_reference.py +94 -0
  274. lusid/models/security_election.py +86 -0
  275. lusid/models/set_share_class_instruments_request.py +79 -0
  276. lusid/models/side_definition.py +1 -8
  277. lusid/models/sides_definition_request.py +1 -8
  278. lusid/models/simple_cash_flow_loan.py +3 -3
  279. lusid/models/simple_instrument.py +3 -3
  280. lusid/models/staging_rule.py +90 -0
  281. lusid/models/staging_rule_approval_criteria.py +81 -0
  282. lusid/models/staging_rule_match_criteria.py +95 -0
  283. lusid/models/staging_rule_set.py +103 -0
  284. lusid/models/step_schedule.py +3 -3
  285. lusid/models/stock_split_event.py +3 -3
  286. lusid/models/string_compliance_parameter.py +3 -3
  287. lusid/models/string_list_compliance_parameter.py +3 -3
  288. lusid/models/template_field.py +77 -0
  289. lusid/models/term_deposit.py +3 -3
  290. lusid/models/total_return_swap.py +16 -16
  291. lusid/models/transaction_configuration_movement_data.py +3 -3
  292. lusid/models/transaction_configuration_movement_data_request.py +3 -3
  293. lusid/models/transaction_currency_and_amount.py +81 -0
  294. lusid/models/transaction_field_map.py +97 -0
  295. lusid/models/transaction_price.py +3 -3
  296. lusid/models/transaction_price_and_type.py +81 -0
  297. lusid/models/transaction_price_type.py +1 -0
  298. lusid/models/transaction_property_map.py +80 -0
  299. lusid/models/transaction_template.py +100 -0
  300. lusid/models/transaction_template_request.py +79 -0
  301. lusid/models/transaction_template_specification.py +99 -0
  302. lusid/models/transaction_type_alias.py +0 -7
  303. lusid/models/transaction_type_calculation.py +1 -1
  304. lusid/models/transition_event.py +3 -3
  305. lusid/models/translation_context.py +75 -0
  306. lusid/models/translation_script.py +9 -3
  307. lusid/models/trial_balance.py +46 -11
  308. lusid/models/trial_balance_query_parameters.py +15 -6
  309. lusid/models/trigger_event.py +3 -3
  310. lusid/models/units_ratio.py +71 -0
  311. lusid/models/update_staging_rule_set_request.py +91 -0
  312. lusid/models/{compliance_run_summary.py → upsert_compliance_run_summary_result.py} +8 -8
  313. lusid/models/upsert_dialect_request.py +79 -0
  314. lusid/models/upsert_instrument_event_request.py +12 -3
  315. lusid/models/upsert_quote_request.py +1 -1
  316. lusid/models/upsert_recipe_composer_request.py +73 -0
  317. lusid/models/upsert_recipe_request.py +3 -9
  318. lusid/models/upsert_translation_script_request.py +75 -0
  319. lusid/models/valuation_schedule.py +10 -3
  320. lusid/models/weighted_instrument.py +13 -2
  321. lusid/models/weighted_instrument_in_line_lookup_identifiers.py +89 -0
  322. lusid/models/yield_curve_data.py +3 -3
  323. lusid/rest.py +1 -1
  324. {lusid_sdk-2.0.50b0.dist-info → lusid_sdk-2.0.470.dist-info}/METADATA +245 -48
  325. {lusid_sdk-2.0.50b0.dist-info → lusid_sdk-2.0.470.dist-info}/RECORD +326 -235
  326. {lusid_sdk-2.0.50b0.dist-info → lusid_sdk-2.0.470.dist-info}/WHEEL +1 -1
  327. lusid/extensions/api_client_builder.py +0 -138
  328. lusid/models/configuration_recipe_snippet.py +0 -139
  329. lusid/models/je_lines_query_parameters.py +0 -105
  330. lusid/models/look_up_pricing_model_options.py +0 -93
  331. lusid/models/reconciliation_run_id.py +0 -85
  332. lusid/models/upsert_reconciliation_break_request.py +0 -98
@@ -34,6 +34,7 @@ from lusid.models.batch_upsert_portfolio_transactions_response import BatchUpser
34
34
  from lusid.models.bucketed_cash_flow_request import BucketedCashFlowRequest
35
35
  from lusid.models.bucketed_cash_flow_response import BucketedCashFlowResponse
36
36
  from lusid.models.create_portfolio_details import CreatePortfolioDetails
37
+ from lusid.models.create_trade_tickets_response import CreateTradeTicketsResponse
37
38
  from lusid.models.create_transaction_portfolio_request import CreateTransactionPortfolioRequest
38
39
  from lusid.models.custodian_account import CustodianAccount
39
40
  from lusid.models.custodian_account_properties import CustodianAccountProperties
@@ -471,22 +472,196 @@ class TransactionPortfoliosApi:
471
472
  _request_auth=_params.get('_request_auth'))
472
473
 
473
474
  @overload
474
- async def batch_upsert_transactions(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the transaction portfolio.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the transaction portfolio. Together with the scope this uniquely identifies the transaction portfolio.")], success_mode : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="Whether the batch request should fail Atomically or in a Partial fashion - Allowed Values: Atomic, Partial.")], request_body : Annotated[Dict[str, TransactionRequest], Field(..., description="The payload describing the transactions to be created or updated.")], **kwargs) -> BatchUpsertPortfolioTransactionsResponse: # noqa: E501
475
+ async def batch_create_trade_tickets(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the transaction portfolio.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the transaction portfolio. Together with the scope this uniquely identifies the transaction portfolio.")], lusid_trade_ticket : Annotated[conlist(LusidTradeTicket), Field(..., description="the trade tickets to create")], **kwargs) -> CreateTradeTicketsResponse: # noqa: E501
475
476
  ...
476
477
 
477
478
  @overload
478
- def batch_upsert_transactions(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the transaction portfolio.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the transaction portfolio. Together with the scope this uniquely identifies the transaction portfolio.")], success_mode : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="Whether the batch request should fail Atomically or in a Partial fashion - Allowed Values: Atomic, Partial.")], request_body : Annotated[Dict[str, TransactionRequest], Field(..., description="The payload describing the transactions to be created or updated.")], async_req: Optional[bool]=True, **kwargs) -> BatchUpsertPortfolioTransactionsResponse: # noqa: E501
479
+ def batch_create_trade_tickets(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the transaction portfolio.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the transaction portfolio. Together with the scope this uniquely identifies the transaction portfolio.")], lusid_trade_ticket : Annotated[conlist(LusidTradeTicket), Field(..., description="the trade tickets to create")], async_req: Optional[bool]=True, **kwargs) -> CreateTradeTicketsResponse: # noqa: E501
479
480
  ...
480
481
 
481
482
  @validate_arguments
482
- def batch_upsert_transactions(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the transaction portfolio.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the transaction portfolio. Together with the scope this uniquely identifies the transaction portfolio.")], success_mode : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="Whether the batch request should fail Atomically or in a Partial fashion - Allowed Values: Atomic, Partial.")], request_body : Annotated[Dict[str, TransactionRequest], Field(..., description="The payload describing the transactions to be created or updated.")], async_req: Optional[bool]=None, **kwargs) -> Union[BatchUpsertPortfolioTransactionsResponse, Awaitable[BatchUpsertPortfolioTransactionsResponse]]: # noqa: E501
483
+ def batch_create_trade_tickets(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the transaction portfolio.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the transaction portfolio. Together with the scope this uniquely identifies the transaction portfolio.")], lusid_trade_ticket : Annotated[conlist(LusidTradeTicket), Field(..., description="the trade tickets to create")], async_req: Optional[bool]=None, **kwargs) -> Union[CreateTradeTicketsResponse, Awaitable[CreateTradeTicketsResponse]]: # noqa: E501
484
+ """[EARLY ACCESS] BatchCreateTradeTickets: Batch Create Trade Tickets # noqa: E501
485
+
486
+ Batch create trade tickets. Each ticket is broadly equivalent to a singular call to upsert an instrument, then a counterparty and finally a transaction that makes use of the two. # noqa: E501
487
+ This method makes a synchronous HTTP request by default. To make an
488
+ asynchronous HTTP request, please pass async_req=True
489
+
490
+ >>> thread = api.batch_create_trade_tickets(scope, code, lusid_trade_ticket, async_req=True)
491
+ >>> result = thread.get()
492
+
493
+ :param scope: The scope of the transaction portfolio. (required)
494
+ :type scope: str
495
+ :param code: The code of the transaction portfolio. Together with the scope this uniquely identifies the transaction portfolio. (required)
496
+ :type code: str
497
+ :param lusid_trade_ticket: the trade tickets to create (required)
498
+ :type lusid_trade_ticket: List[LusidTradeTicket]
499
+ :param async_req: Whether to execute the request asynchronously.
500
+ :type async_req: bool, optional
501
+ :param _request_timeout: timeout setting for this request.
502
+ If one number provided, it will be total request
503
+ timeout. It can also be a pair (tuple) of
504
+ (connection, read) timeouts.
505
+ :return: Returns the result object.
506
+ If the method is called asynchronously,
507
+ returns the request thread.
508
+ :rtype: CreateTradeTicketsResponse
509
+ """
510
+ kwargs['_return_http_data_only'] = True
511
+ if '_preload_content' in kwargs:
512
+ message = "Error! Please call the batch_create_trade_tickets_with_http_info method with `_preload_content` instead and obtain raw data from ApiResponse.raw_data" # noqa: E501
513
+ raise ValueError(message)
514
+ if async_req is not None:
515
+ kwargs['async_req'] = async_req
516
+ return self.batch_create_trade_tickets_with_http_info(scope, code, lusid_trade_ticket, **kwargs) # noqa: E501
517
+
518
+ @validate_arguments
519
+ def batch_create_trade_tickets_with_http_info(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the transaction portfolio.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the transaction portfolio. Together with the scope this uniquely identifies the transaction portfolio.")], lusid_trade_ticket : Annotated[conlist(LusidTradeTicket), Field(..., description="the trade tickets to create")], **kwargs) -> ApiResponse: # noqa: E501
520
+ """[EARLY ACCESS] BatchCreateTradeTickets: Batch Create Trade Tickets # noqa: E501
521
+
522
+ Batch create trade tickets. Each ticket is broadly equivalent to a singular call to upsert an instrument, then a counterparty and finally a transaction that makes use of the two. # noqa: E501
523
+ This method makes a synchronous HTTP request by default. To make an
524
+ asynchronous HTTP request, please pass async_req=True
525
+
526
+ >>> thread = api.batch_create_trade_tickets_with_http_info(scope, code, lusid_trade_ticket, async_req=True)
527
+ >>> result = thread.get()
528
+
529
+ :param scope: The scope of the transaction portfolio. (required)
530
+ :type scope: str
531
+ :param code: The code of the transaction portfolio. Together with the scope this uniquely identifies the transaction portfolio. (required)
532
+ :type code: str
533
+ :param lusid_trade_ticket: the trade tickets to create (required)
534
+ :type lusid_trade_ticket: List[LusidTradeTicket]
535
+ :param async_req: Whether to execute the request asynchronously.
536
+ :type async_req: bool, optional
537
+ :param _preload_content: if False, the ApiResponse.data will
538
+ be set to none and raw_data will store the
539
+ HTTP response body without reading/decoding.
540
+ Default is True.
541
+ :type _preload_content: bool, optional
542
+ :param _return_http_data_only: response data instead of ApiResponse
543
+ object with status code, headers, etc
544
+ :type _return_http_data_only: bool, optional
545
+ :param _request_timeout: timeout setting for this request. If one
546
+ number provided, it will be total request
547
+ timeout. It can also be a pair (tuple) of
548
+ (connection, read) timeouts.
549
+ :param _request_auth: set to override the auth_settings for an a single
550
+ request; this effectively ignores the authentication
551
+ in the spec for a single request.
552
+ :type _request_auth: dict, optional
553
+ :type _content_type: string, optional: force content-type for the request
554
+ :return: Returns the result object.
555
+ If the method is called asynchronously,
556
+ returns the request thread.
557
+ :rtype: tuple(CreateTradeTicketsResponse, status_code(int), headers(HTTPHeaderDict))
558
+ """
559
+
560
+ _params = locals()
561
+
562
+ _all_params = [
563
+ 'scope',
564
+ 'code',
565
+ 'lusid_trade_ticket'
566
+ ]
567
+ _all_params.extend(
568
+ [
569
+ 'async_req',
570
+ '_return_http_data_only',
571
+ '_preload_content',
572
+ '_request_timeout',
573
+ '_request_auth',
574
+ '_content_type',
575
+ '_headers'
576
+ ]
577
+ )
578
+
579
+ # validate the arguments
580
+ for _key, _val in _params['kwargs'].items():
581
+ if _key not in _all_params:
582
+ raise ApiTypeError(
583
+ "Got an unexpected keyword argument '%s'"
584
+ " to method batch_create_trade_tickets" % _key
585
+ )
586
+ _params[_key] = _val
587
+ del _params['kwargs']
588
+
589
+ _collection_formats = {}
590
+
591
+ # process the path parameters
592
+ _path_params = {}
593
+ if _params['scope']:
594
+ _path_params['scope'] = _params['scope']
595
+
596
+ if _params['code']:
597
+ _path_params['code'] = _params['code']
598
+
599
+
600
+ # process the query parameters
601
+ _query_params = []
602
+ # process the header parameters
603
+ _header_params = dict(_params.get('_headers', {}))
604
+ # process the form parameters
605
+ _form_params = []
606
+ _files = {}
607
+ # process the body parameter
608
+ _body_params = None
609
+ if _params['lusid_trade_ticket'] is not None:
610
+ _body_params = _params['lusid_trade_ticket']
611
+
612
+ # set the HTTP header `Accept`
613
+ _header_params['Accept'] = self.api_client.select_header_accept(
614
+ ['text/plain', 'application/json', 'text/json']) # noqa: E501
615
+
616
+ # set the HTTP header `Content-Type`
617
+ _content_types_list = _params.get('_content_type',
618
+ self.api_client.select_header_content_type(
619
+ ['application/json-patch+json', 'application/json', 'text/json', 'application/*+json']))
620
+ if _content_types_list:
621
+ _header_params['Content-Type'] = _content_types_list
622
+
623
+ # authentication setting
624
+ _auth_settings = ['oauth2'] # noqa: E501
625
+
626
+ _response_types_map = {
627
+ '200': "CreateTradeTicketsResponse",
628
+ '400': "LusidValidationProblemDetails",
629
+ }
630
+
631
+ return self.api_client.call_api(
632
+ '/api/transactionportfolios/{scope}/{code}/$batchtradetickets', 'POST',
633
+ _path_params,
634
+ _query_params,
635
+ _header_params,
636
+ body=_body_params,
637
+ post_params=_form_params,
638
+ files=_files,
639
+ response_types_map=_response_types_map,
640
+ auth_settings=_auth_settings,
641
+ async_req=_params.get('async_req'),
642
+ _return_http_data_only=_params.get('_return_http_data_only'), # noqa: E501
643
+ _preload_content=_params.get('_preload_content', True),
644
+ _request_timeout=_params.get('_request_timeout'),
645
+ collection_formats=_collection_formats,
646
+ _request_auth=_params.get('_request_auth'))
647
+
648
+ @overload
649
+ async def batch_upsert_transactions(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the transaction portfolio.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the transaction portfolio. Together with the scope this uniquely identifies the transaction portfolio.")], success_mode : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="Whether the batch request should fail Atomically or in a Partial fashion - Allowed Values: Atomic, Partial.")], request_body : Annotated[Dict[str, TransactionRequest], Field(..., description="The payload describing the transactions to be created or updated.")], preserve_properties : Annotated[Optional[StrictBool], Field(description="If set to false, the entire property set will be overwritten by the provided properties. If not specified or set to true, only the properties provided will be updated.")] = None, **kwargs) -> BatchUpsertPortfolioTransactionsResponse: # noqa: E501
650
+ ...
651
+
652
+ @overload
653
+ def batch_upsert_transactions(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the transaction portfolio.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the transaction portfolio. Together with the scope this uniquely identifies the transaction portfolio.")], success_mode : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="Whether the batch request should fail Atomically or in a Partial fashion - Allowed Values: Atomic, Partial.")], request_body : Annotated[Dict[str, TransactionRequest], Field(..., description="The payload describing the transactions to be created or updated.")], preserve_properties : Annotated[Optional[StrictBool], Field(description="If set to false, the entire property set will be overwritten by the provided properties. If not specified or set to true, only the properties provided will be updated.")] = None, async_req: Optional[bool]=True, **kwargs) -> BatchUpsertPortfolioTransactionsResponse: # noqa: E501
654
+ ...
655
+
656
+ @validate_arguments
657
+ def batch_upsert_transactions(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the transaction portfolio.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the transaction portfolio. Together with the scope this uniquely identifies the transaction portfolio.")], success_mode : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="Whether the batch request should fail Atomically or in a Partial fashion - Allowed Values: Atomic, Partial.")], request_body : Annotated[Dict[str, TransactionRequest], Field(..., description="The payload describing the transactions to be created or updated.")], preserve_properties : Annotated[Optional[StrictBool], Field(description="If set to false, the entire property set will be overwritten by the provided properties. If not specified or set to true, only the properties provided will be updated.")] = None, async_req: Optional[bool]=None, **kwargs) -> Union[BatchUpsertPortfolioTransactionsResponse, Awaitable[BatchUpsertPortfolioTransactionsResponse]]: # noqa: E501
483
658
  """[EARLY ACCESS] BatchUpsertTransactions: Batch upsert transactions # noqa: E501
484
659
 
485
660
  Create or update transactions in the transaction portfolio. A transaction will be updated if it already exists and created if it does not. Each request must be keyed by a unique correlation id. This id is ephemeral and is not stored by LUSID. It serves only as a way to easily identify each transaction in the response. Note: If using partial failure modes, then it is important to check the response body for failures as any failures will still return a 200 status code # noqa: E501
486
661
  This method makes a synchronous HTTP request by default. To make an
487
662
  asynchronous HTTP request, please pass async_req=True
488
663
 
489
- >>> thread = api.batch_upsert_transactions(scope, code, success_mode, request_body, async_req=True)
664
+ >>> thread = api.batch_upsert_transactions(scope, code, success_mode, request_body, preserve_properties, async_req=True)
490
665
  >>> result = thread.get()
491
666
 
492
667
  :param scope: The scope of the transaction portfolio. (required)
@@ -497,6 +672,8 @@ class TransactionPortfoliosApi:
497
672
  :type success_mode: str
498
673
  :param request_body: The payload describing the transactions to be created or updated. (required)
499
674
  :type request_body: Dict[str, TransactionRequest]
675
+ :param preserve_properties: If set to false, the entire property set will be overwritten by the provided properties. If not specified or set to true, only the properties provided will be updated.
676
+ :type preserve_properties: bool
500
677
  :param async_req: Whether to execute the request asynchronously.
501
678
  :type async_req: bool, optional
502
679
  :param _request_timeout: timeout setting for this request.
@@ -514,17 +691,17 @@ class TransactionPortfoliosApi:
514
691
  raise ValueError(message)
515
692
  if async_req is not None:
516
693
  kwargs['async_req'] = async_req
517
- return self.batch_upsert_transactions_with_http_info(scope, code, success_mode, request_body, **kwargs) # noqa: E501
694
+ return self.batch_upsert_transactions_with_http_info(scope, code, success_mode, request_body, preserve_properties, **kwargs) # noqa: E501
518
695
 
519
696
  @validate_arguments
520
- def batch_upsert_transactions_with_http_info(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the transaction portfolio.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the transaction portfolio. Together with the scope this uniquely identifies the transaction portfolio.")], success_mode : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="Whether the batch request should fail Atomically or in a Partial fashion - Allowed Values: Atomic, Partial.")], request_body : Annotated[Dict[str, TransactionRequest], Field(..., description="The payload describing the transactions to be created or updated.")], **kwargs) -> ApiResponse: # noqa: E501
697
+ def batch_upsert_transactions_with_http_info(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the transaction portfolio.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the transaction portfolio. Together with the scope this uniquely identifies the transaction portfolio.")], success_mode : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="Whether the batch request should fail Atomically or in a Partial fashion - Allowed Values: Atomic, Partial.")], request_body : Annotated[Dict[str, TransactionRequest], Field(..., description="The payload describing the transactions to be created or updated.")], preserve_properties : Annotated[Optional[StrictBool], Field(description="If set to false, the entire property set will be overwritten by the provided properties. If not specified or set to true, only the properties provided will be updated.")] = None, **kwargs) -> ApiResponse: # noqa: E501
521
698
  """[EARLY ACCESS] BatchUpsertTransactions: Batch upsert transactions # noqa: E501
522
699
 
523
700
  Create or update transactions in the transaction portfolio. A transaction will be updated if it already exists and created if it does not. Each request must be keyed by a unique correlation id. This id is ephemeral and is not stored by LUSID. It serves only as a way to easily identify each transaction in the response. Note: If using partial failure modes, then it is important to check the response body for failures as any failures will still return a 200 status code # noqa: E501
524
701
  This method makes a synchronous HTTP request by default. To make an
525
702
  asynchronous HTTP request, please pass async_req=True
526
703
 
527
- >>> thread = api.batch_upsert_transactions_with_http_info(scope, code, success_mode, request_body, async_req=True)
704
+ >>> thread = api.batch_upsert_transactions_with_http_info(scope, code, success_mode, request_body, preserve_properties, async_req=True)
528
705
  >>> result = thread.get()
529
706
 
530
707
  :param scope: The scope of the transaction portfolio. (required)
@@ -535,6 +712,8 @@ class TransactionPortfoliosApi:
535
712
  :type success_mode: str
536
713
  :param request_body: The payload describing the transactions to be created or updated. (required)
537
714
  :type request_body: Dict[str, TransactionRequest]
715
+ :param preserve_properties: If set to false, the entire property set will be overwritten by the provided properties. If not specified or set to true, only the properties provided will be updated.
716
+ :type preserve_properties: bool
538
717
  :param async_req: Whether to execute the request asynchronously.
539
718
  :type async_req: bool, optional
540
719
  :param _preload_content: if False, the ApiResponse.data will
@@ -566,7 +745,8 @@ class TransactionPortfoliosApi:
566
745
  'scope',
567
746
  'code',
568
747
  'success_mode',
569
- 'request_body'
748
+ 'request_body',
749
+ 'preserve_properties'
570
750
  ]
571
751
  _all_params.extend(
572
752
  [
@@ -606,6 +786,9 @@ class TransactionPortfoliosApi:
606
786
  if _params.get('success_mode') is not None: # noqa: E501
607
787
  _query_params.append(('successMode', _params['success_mode']))
608
788
 
789
+ if _params.get('preserve_properties') is not None: # noqa: E501
790
+ _query_params.append(('preserveProperties', _params['preserve_properties']))
791
+
609
792
  # process the header parameters
610
793
  _header_params = dict(_params.get('_headers', {}))
611
794
  # process the form parameters
@@ -1381,9 +1564,9 @@ class TransactionPortfoliosApi:
1381
1564
 
1382
1565
  @validate_arguments
1383
1566
  def create_trade_ticket(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the transaction portfolio.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the transaction portfolio. Together with the scope this uniquely identifies the transaction portfolio.")], lusid_trade_ticket : Annotated[Optional[LusidTradeTicket], Field(description="the trade ticket to upsert")] = None, async_req: Optional[bool]=None, **kwargs) -> Union[LusidTradeTicket, Awaitable[LusidTradeTicket]]: # noqa: E501
1384
- """[EXPERIMENTAL] CreateTradeTicket: Create Trade Ticket # noqa: E501
1567
+ """[EARLY ACCESS] CreateTradeTicket: Create Trade Ticket # noqa: E501
1385
1568
 
1386
- Upsert a trade ticket. This is broadly equivalent to a singular call to upsert an instrument, then a counterparty and finally a transaction that makes use of the two. It can be viewed as a utility function or part of a workflow more familiar to users with OTC systems than flow and equity trading ones. # noqa: E501
1569
+ Upsert a trade ticket. Broadly equivalent to a singular call to upsert an instrument, then a counterparty and finally a transaction that makes use of the two. It can be viewed as a utility function or part of a workflow more familiar to users with OTC systems than flow and equity trading ones. # noqa: E501
1387
1570
  This method makes a synchronous HTTP request by default. To make an
1388
1571
  asynchronous HTTP request, please pass async_req=True
1389
1572
 
@@ -1417,9 +1600,9 @@ class TransactionPortfoliosApi:
1417
1600
 
1418
1601
  @validate_arguments
1419
1602
  def create_trade_ticket_with_http_info(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the transaction portfolio.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the transaction portfolio. Together with the scope this uniquely identifies the transaction portfolio.")], lusid_trade_ticket : Annotated[Optional[LusidTradeTicket], Field(description="the trade ticket to upsert")] = None, **kwargs) -> ApiResponse: # noqa: E501
1420
- """[EXPERIMENTAL] CreateTradeTicket: Create Trade Ticket # noqa: E501
1603
+ """[EARLY ACCESS] CreateTradeTicket: Create Trade Ticket # noqa: E501
1421
1604
 
1422
- Upsert a trade ticket. This is broadly equivalent to a singular call to upsert an instrument, then a counterparty and finally a transaction that makes use of the two. It can be viewed as a utility function or part of a workflow more familiar to users with OTC systems than flow and equity trading ones. # noqa: E501
1605
+ Upsert a trade ticket. Broadly equivalent to a singular call to upsert an instrument, then a counterparty and finally a transaction that makes use of the two. It can be viewed as a utility function or part of a workflow more familiar to users with OTC systems than flow and equity trading ones. # noqa: E501
1423
1606
  This method makes a synchronous HTTP request by default. To make an
1424
1607
  asynchronous HTTP request, please pass async_req=True
1425
1608
 
@@ -2906,7 +3089,7 @@ class TransactionPortfoliosApi:
2906
3089
 
2907
3090
  @validate_arguments
2908
3091
  def get_holding_contributors(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the transaction portfolio.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the transaction portfolio. Together with the scope this uniquely identifies the transaction portfolio.")], holding_id : Annotated[conint(strict=True, ge=0), Field(..., description="The unique holding identifier")], effective_date : Annotated[Optional[datetime], Field(description="Effective date")] = None, from_trade_date : Annotated[Optional[datetime], Field(description="The from trade date, defaults to first time this holding is opened, lower bound for transactions")] = None, to_trade_date : Annotated[Optional[datetime], Field(description="The to trade date upper bound date, defaults to effectiveDate. upper bound for transactions")] = None, include_historic : Annotated[Optional[StrictBool], Field(description="If true, transactions from previously closed holdings are returned. If false, only transactions from last time position is opened.")] = None, tax_lot_id : Annotated[Optional[constr(strict=True, max_length=6000, min_length=0)], Field(description="Constrains the Holding Contributors to those which contributed to the specified tax lot.")] = None, limit : Annotated[Optional[StrictInt], Field(description="When paginating, limit the number of returned results to this many. Defaults to 100 if not specified.")] = None, as_at : Annotated[Optional[datetime], Field(description="The asAt datetime at which to build the transactions. Defaults to return the latest version of each transaction if not specified.")] = None, page : Annotated[Optional[constr(strict=True, max_length=500, min_length=1)], Field(description="The pagination token to use to continue listing transactions from a previous call to GetHoldingContributors.")] = None, async_req: Optional[bool]=None, **kwargs) -> Union[VersionedResourceListOfHoldingContributor, Awaitable[VersionedResourceListOfHoldingContributor]]: # noqa: E501
2909
- """[EXPERIMENTAL] GetHoldingContributors: Get Holdings Contributors # noqa: E501
3092
+ """[EARLY ACCESS] GetHoldingContributors: Get Holdings Contributors # noqa: E501
2910
3093
 
2911
3094
  Lists all transactions that affect the holdings of a portfolio over a given effective interval. This includes transactions automatically generated by LUSID such as holding adjustments. # noqa: E501
2912
3095
  This method makes a synchronous HTTP request by default. To make an
@@ -2958,7 +3141,7 @@ class TransactionPortfoliosApi:
2958
3141
 
2959
3142
  @validate_arguments
2960
3143
  def get_holding_contributors_with_http_info(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the transaction portfolio.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the transaction portfolio. Together with the scope this uniquely identifies the transaction portfolio.")], holding_id : Annotated[conint(strict=True, ge=0), Field(..., description="The unique holding identifier")], effective_date : Annotated[Optional[datetime], Field(description="Effective date")] = None, from_trade_date : Annotated[Optional[datetime], Field(description="The from trade date, defaults to first time this holding is opened, lower bound for transactions")] = None, to_trade_date : Annotated[Optional[datetime], Field(description="The to trade date upper bound date, defaults to effectiveDate. upper bound for transactions")] = None, include_historic : Annotated[Optional[StrictBool], Field(description="If true, transactions from previously closed holdings are returned. If false, only transactions from last time position is opened.")] = None, tax_lot_id : Annotated[Optional[constr(strict=True, max_length=6000, min_length=0)], Field(description="Constrains the Holding Contributors to those which contributed to the specified tax lot.")] = None, limit : Annotated[Optional[StrictInt], Field(description="When paginating, limit the number of returned results to this many. Defaults to 100 if not specified.")] = None, as_at : Annotated[Optional[datetime], Field(description="The asAt datetime at which to build the transactions. Defaults to return the latest version of each transaction if not specified.")] = None, page : Annotated[Optional[constr(strict=True, max_length=500, min_length=1)], Field(description="The pagination token to use to continue listing transactions from a previous call to GetHoldingContributors.")] = None, **kwargs) -> ApiResponse: # noqa: E501
2961
- """[EXPERIMENTAL] GetHoldingContributors: Get Holdings Contributors # noqa: E501
3144
+ """[EARLY ACCESS] GetHoldingContributors: Get Holdings Contributors # noqa: E501
2962
3145
 
2963
3146
  Lists all transactions that affect the holdings of a portfolio over a given effective interval. This includes transactions automatically generated by LUSID such as holding adjustments. # noqa: E501
2964
3147
  This method makes a synchronous HTTP request by default. To make an
@@ -4589,15 +4772,15 @@ class TransactionPortfoliosApi:
4589
4772
  _request_auth=_params.get('_request_auth'))
4590
4773
 
4591
4774
  @overload
4592
- async def get_transactions(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the transaction portfolio.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the transaction portfolio. Together with the scope this uniquely identifies the transaction portfolio.")], from_transaction_date : Annotated[Optional[StrictStr], Field(description="The lower bound effective datetime or cut label (inclusive) from which to retrieve transactions. There is no lower bound if this is not specified.")] = None, to_transaction_date : Annotated[Optional[StrictStr], Field(description="The upper bound effective datetime or cut label (inclusive) from which to retrieve transactions. There is no upper bound if this is not specified.")] = None, as_at : Annotated[Optional[datetime], Field(description="The asAt datetime at which to retrieve transactions. Defaults to returning the latest version of each transaction if not specified.")] = None, filter : Annotated[Optional[constr(strict=True, max_length=16384, min_length=0)], Field(description="Expression with which to filter the result set. For example, to return only transactions with a transaction type of 'Buy', specify \"type eq 'Buy'\" For more information about filtering LUSID results, see https://support.lusid.com/knowledgebase/article/KA-01914.")] = None, property_keys : Annotated[Optional[conlist(StrictStr)], Field(description="A list of property keys from the 'Instrument', 'Transaction', \"LegalEntity\" or \"CustodianAccount\" domain to decorate onto transactions. These must have the format {domain}/{scope}/{code}, for example 'Instrument/system/Name' or 'Transaction/strategy/quantsignal'.")] = None, page : Annotated[Optional[constr(strict=True, max_length=500, min_length=1)], Field(description="The pagination token to use to continue listing transactions from a previous call to GetTransactions.")] = None, limit : Annotated[Optional[StrictInt], Field(description="When paginating, limit the number of returned results to this many. The current behaviour is to return all transactions if possible, but this will change to defaulting to 1000 if not specified in the future. It is recommended to populate this field to enable pagination.")] = None, show_cancelled_transactions : Annotated[Optional[StrictBool], Field(description="Option to specify whether or not to include cancelled transactions, including previous versions of transactions which have since been amended. Defaults to False if not specified.")] = None, sort_by : Annotated[Optional[conlist(StrictStr)], Field(description="A list of field names or properties to sort by, each suffixed by \" ASC\" or \" DESC\"")] = None, **kwargs) -> VersionedResourceListOfTransaction: # noqa: E501
4775
+ async def get_transactions(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the transaction portfolio.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the transaction portfolio. Together with the scope this uniquely identifies the transaction portfolio.")], from_transaction_date : Annotated[Optional[StrictStr], Field(description="The lower bound effective datetime or cut label (inclusive) from which to retrieve transactions. There is no lower bound if this is not specified.")] = None, to_transaction_date : Annotated[Optional[StrictStr], Field(description="The upper bound effective datetime or cut label (inclusive) from which to retrieve transactions. There is no upper bound if this is not specified.")] = None, as_at : Annotated[Optional[datetime], Field(description="The asAt datetime at which to retrieve transactions. Defaults to returning the latest version of each transaction if not specified.")] = None, filter : Annotated[Optional[constr(strict=True, max_length=16384, min_length=0)], Field(description="Expression with which to filter the result set. For example, to return only transactions with a transaction type of 'Buy', specify \"type eq 'Buy'\" For more information about filtering LUSID results, see https://support.lusid.com/knowledgebase/article/KA-01914.")] = None, property_keys : Annotated[Optional[conlist(StrictStr)], Field(description="A list of property keys from the 'Instrument', 'Transaction', \"LegalEntity\" or \"CustodianAccount\" domain to decorate onto transactions. These must have the format {domain}/{scope}/{code}, for example 'Instrument/system/Name' or 'Transaction/strategy/quantsignal'.")] = None, page : Annotated[Optional[constr(strict=True, max_length=500, min_length=1)], Field(description="The pagination token to use to continue listing transactions from a previous call to GetTransactions.")] = None, limit : Annotated[Optional[StrictInt], Field(description="When paginating, limit the number of returned results to this many. The current behaviour is to return all transactions if possible, but this will change to defaulting to 1000 if not specified in the future. It is recommended to populate this field to enable pagination.")] = None, show_cancelled_transactions : Annotated[Optional[StrictBool], Field(description="Option to specify whether or not to include cancelled transactions, including previous versions of transactions which have since been amended. Defaults to False if not specified.")] = None, sort_by : Annotated[Optional[conlist(StrictStr)], Field(description="A list of field names or properties to sort by, each suffixed by \" ASC\" or \" DESC\".")] = None, **kwargs) -> VersionedResourceListOfTransaction: # noqa: E501
4593
4776
  ...
4594
4777
 
4595
4778
  @overload
4596
- def get_transactions(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the transaction portfolio.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the transaction portfolio. Together with the scope this uniquely identifies the transaction portfolio.")], from_transaction_date : Annotated[Optional[StrictStr], Field(description="The lower bound effective datetime or cut label (inclusive) from which to retrieve transactions. There is no lower bound if this is not specified.")] = None, to_transaction_date : Annotated[Optional[StrictStr], Field(description="The upper bound effective datetime or cut label (inclusive) from which to retrieve transactions. There is no upper bound if this is not specified.")] = None, as_at : Annotated[Optional[datetime], Field(description="The asAt datetime at which to retrieve transactions. Defaults to returning the latest version of each transaction if not specified.")] = None, filter : Annotated[Optional[constr(strict=True, max_length=16384, min_length=0)], Field(description="Expression with which to filter the result set. For example, to return only transactions with a transaction type of 'Buy', specify \"type eq 'Buy'\" For more information about filtering LUSID results, see https://support.lusid.com/knowledgebase/article/KA-01914.")] = None, property_keys : Annotated[Optional[conlist(StrictStr)], Field(description="A list of property keys from the 'Instrument', 'Transaction', \"LegalEntity\" or \"CustodianAccount\" domain to decorate onto transactions. These must have the format {domain}/{scope}/{code}, for example 'Instrument/system/Name' or 'Transaction/strategy/quantsignal'.")] = None, page : Annotated[Optional[constr(strict=True, max_length=500, min_length=1)], Field(description="The pagination token to use to continue listing transactions from a previous call to GetTransactions.")] = None, limit : Annotated[Optional[StrictInt], Field(description="When paginating, limit the number of returned results to this many. The current behaviour is to return all transactions if possible, but this will change to defaulting to 1000 if not specified in the future. It is recommended to populate this field to enable pagination.")] = None, show_cancelled_transactions : Annotated[Optional[StrictBool], Field(description="Option to specify whether or not to include cancelled transactions, including previous versions of transactions which have since been amended. Defaults to False if not specified.")] = None, sort_by : Annotated[Optional[conlist(StrictStr)], Field(description="A list of field names or properties to sort by, each suffixed by \" ASC\" or \" DESC\"")] = None, async_req: Optional[bool]=True, **kwargs) -> VersionedResourceListOfTransaction: # noqa: E501
4779
+ def get_transactions(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the transaction portfolio.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the transaction portfolio. Together with the scope this uniquely identifies the transaction portfolio.")], from_transaction_date : Annotated[Optional[StrictStr], Field(description="The lower bound effective datetime or cut label (inclusive) from which to retrieve transactions. There is no lower bound if this is not specified.")] = None, to_transaction_date : Annotated[Optional[StrictStr], Field(description="The upper bound effective datetime or cut label (inclusive) from which to retrieve transactions. There is no upper bound if this is not specified.")] = None, as_at : Annotated[Optional[datetime], Field(description="The asAt datetime at which to retrieve transactions. Defaults to returning the latest version of each transaction if not specified.")] = None, filter : Annotated[Optional[constr(strict=True, max_length=16384, min_length=0)], Field(description="Expression with which to filter the result set. For example, to return only transactions with a transaction type of 'Buy', specify \"type eq 'Buy'\" For more information about filtering LUSID results, see https://support.lusid.com/knowledgebase/article/KA-01914.")] = None, property_keys : Annotated[Optional[conlist(StrictStr)], Field(description="A list of property keys from the 'Instrument', 'Transaction', \"LegalEntity\" or \"CustodianAccount\" domain to decorate onto transactions. These must have the format {domain}/{scope}/{code}, for example 'Instrument/system/Name' or 'Transaction/strategy/quantsignal'.")] = None, page : Annotated[Optional[constr(strict=True, max_length=500, min_length=1)], Field(description="The pagination token to use to continue listing transactions from a previous call to GetTransactions.")] = None, limit : Annotated[Optional[StrictInt], Field(description="When paginating, limit the number of returned results to this many. The current behaviour is to return all transactions if possible, but this will change to defaulting to 1000 if not specified in the future. It is recommended to populate this field to enable pagination.")] = None, show_cancelled_transactions : Annotated[Optional[StrictBool], Field(description="Option to specify whether or not to include cancelled transactions, including previous versions of transactions which have since been amended. Defaults to False if not specified.")] = None, sort_by : Annotated[Optional[conlist(StrictStr)], Field(description="A list of field names or properties to sort by, each suffixed by \" ASC\" or \" DESC\".")] = None, async_req: Optional[bool]=True, **kwargs) -> VersionedResourceListOfTransaction: # noqa: E501
4597
4780
  ...
4598
4781
 
4599
4782
  @validate_arguments
4600
- def get_transactions(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the transaction portfolio.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the transaction portfolio. Together with the scope this uniquely identifies the transaction portfolio.")], from_transaction_date : Annotated[Optional[StrictStr], Field(description="The lower bound effective datetime or cut label (inclusive) from which to retrieve transactions. There is no lower bound if this is not specified.")] = None, to_transaction_date : Annotated[Optional[StrictStr], Field(description="The upper bound effective datetime or cut label (inclusive) from which to retrieve transactions. There is no upper bound if this is not specified.")] = None, as_at : Annotated[Optional[datetime], Field(description="The asAt datetime at which to retrieve transactions. Defaults to returning the latest version of each transaction if not specified.")] = None, filter : Annotated[Optional[constr(strict=True, max_length=16384, min_length=0)], Field(description="Expression with which to filter the result set. For example, to return only transactions with a transaction type of 'Buy', specify \"type eq 'Buy'\" For more information about filtering LUSID results, see https://support.lusid.com/knowledgebase/article/KA-01914.")] = None, property_keys : Annotated[Optional[conlist(StrictStr)], Field(description="A list of property keys from the 'Instrument', 'Transaction', \"LegalEntity\" or \"CustodianAccount\" domain to decorate onto transactions. These must have the format {domain}/{scope}/{code}, for example 'Instrument/system/Name' or 'Transaction/strategy/quantsignal'.")] = None, page : Annotated[Optional[constr(strict=True, max_length=500, min_length=1)], Field(description="The pagination token to use to continue listing transactions from a previous call to GetTransactions.")] = None, limit : Annotated[Optional[StrictInt], Field(description="When paginating, limit the number of returned results to this many. The current behaviour is to return all transactions if possible, but this will change to defaulting to 1000 if not specified in the future. It is recommended to populate this field to enable pagination.")] = None, show_cancelled_transactions : Annotated[Optional[StrictBool], Field(description="Option to specify whether or not to include cancelled transactions, including previous versions of transactions which have since been amended. Defaults to False if not specified.")] = None, sort_by : Annotated[Optional[conlist(StrictStr)], Field(description="A list of field names or properties to sort by, each suffixed by \" ASC\" or \" DESC\"")] = None, async_req: Optional[bool]=None, **kwargs) -> Union[VersionedResourceListOfTransaction, Awaitable[VersionedResourceListOfTransaction]]: # noqa: E501
4783
+ def get_transactions(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the transaction portfolio.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the transaction portfolio. Together with the scope this uniquely identifies the transaction portfolio.")], from_transaction_date : Annotated[Optional[StrictStr], Field(description="The lower bound effective datetime or cut label (inclusive) from which to retrieve transactions. There is no lower bound if this is not specified.")] = None, to_transaction_date : Annotated[Optional[StrictStr], Field(description="The upper bound effective datetime or cut label (inclusive) from which to retrieve transactions. There is no upper bound if this is not specified.")] = None, as_at : Annotated[Optional[datetime], Field(description="The asAt datetime at which to retrieve transactions. Defaults to returning the latest version of each transaction if not specified.")] = None, filter : Annotated[Optional[constr(strict=True, max_length=16384, min_length=0)], Field(description="Expression with which to filter the result set. For example, to return only transactions with a transaction type of 'Buy', specify \"type eq 'Buy'\" For more information about filtering LUSID results, see https://support.lusid.com/knowledgebase/article/KA-01914.")] = None, property_keys : Annotated[Optional[conlist(StrictStr)], Field(description="A list of property keys from the 'Instrument', 'Transaction', \"LegalEntity\" or \"CustodianAccount\" domain to decorate onto transactions. These must have the format {domain}/{scope}/{code}, for example 'Instrument/system/Name' or 'Transaction/strategy/quantsignal'.")] = None, page : Annotated[Optional[constr(strict=True, max_length=500, min_length=1)], Field(description="The pagination token to use to continue listing transactions from a previous call to GetTransactions.")] = None, limit : Annotated[Optional[StrictInt], Field(description="When paginating, limit the number of returned results to this many. The current behaviour is to return all transactions if possible, but this will change to defaulting to 1000 if not specified in the future. It is recommended to populate this field to enable pagination.")] = None, show_cancelled_transactions : Annotated[Optional[StrictBool], Field(description="Option to specify whether or not to include cancelled transactions, including previous versions of transactions which have since been amended. Defaults to False if not specified.")] = None, sort_by : Annotated[Optional[conlist(StrictStr)], Field(description="A list of field names or properties to sort by, each suffixed by \" ASC\" or \" DESC\".")] = None, async_req: Optional[bool]=None, **kwargs) -> Union[VersionedResourceListOfTransaction, Awaitable[VersionedResourceListOfTransaction]]: # noqa: E501
4601
4784
  """GetTransactions: Get transactions # noqa: E501
4602
4785
 
4603
4786
  Retrieve all the transactions that occurred during a particular time interval. If the portfolio is a derived transaction portfolio, the transactions returned are the union set of all transactions of the parent (and any grandparents, etc.) as well as those of the derived transaction portfolio itself. # noqa: E501
@@ -4627,7 +4810,7 @@ class TransactionPortfoliosApi:
4627
4810
  :type limit: int
4628
4811
  :param show_cancelled_transactions: Option to specify whether or not to include cancelled transactions, including previous versions of transactions which have since been amended. Defaults to False if not specified.
4629
4812
  :type show_cancelled_transactions: bool
4630
- :param sort_by: A list of field names or properties to sort by, each suffixed by \" ASC\" or \" DESC\"
4813
+ :param sort_by: A list of field names or properties to sort by, each suffixed by \" ASC\" or \" DESC\".
4631
4814
  :type sort_by: List[str]
4632
4815
  :param async_req: Whether to execute the request asynchronously.
4633
4816
  :type async_req: bool, optional
@@ -4649,7 +4832,7 @@ class TransactionPortfoliosApi:
4649
4832
  return self.get_transactions_with_http_info(scope, code, from_transaction_date, to_transaction_date, as_at, filter, property_keys, page, limit, show_cancelled_transactions, sort_by, **kwargs) # noqa: E501
4650
4833
 
4651
4834
  @validate_arguments
4652
- def get_transactions_with_http_info(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the transaction portfolio.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the transaction portfolio. Together with the scope this uniquely identifies the transaction portfolio.")], from_transaction_date : Annotated[Optional[StrictStr], Field(description="The lower bound effective datetime or cut label (inclusive) from which to retrieve transactions. There is no lower bound if this is not specified.")] = None, to_transaction_date : Annotated[Optional[StrictStr], Field(description="The upper bound effective datetime or cut label (inclusive) from which to retrieve transactions. There is no upper bound if this is not specified.")] = None, as_at : Annotated[Optional[datetime], Field(description="The asAt datetime at which to retrieve transactions. Defaults to returning the latest version of each transaction if not specified.")] = None, filter : Annotated[Optional[constr(strict=True, max_length=16384, min_length=0)], Field(description="Expression with which to filter the result set. For example, to return only transactions with a transaction type of 'Buy', specify \"type eq 'Buy'\" For more information about filtering LUSID results, see https://support.lusid.com/knowledgebase/article/KA-01914.")] = None, property_keys : Annotated[Optional[conlist(StrictStr)], Field(description="A list of property keys from the 'Instrument', 'Transaction', \"LegalEntity\" or \"CustodianAccount\" domain to decorate onto transactions. These must have the format {domain}/{scope}/{code}, for example 'Instrument/system/Name' or 'Transaction/strategy/quantsignal'.")] = None, page : Annotated[Optional[constr(strict=True, max_length=500, min_length=1)], Field(description="The pagination token to use to continue listing transactions from a previous call to GetTransactions.")] = None, limit : Annotated[Optional[StrictInt], Field(description="When paginating, limit the number of returned results to this many. The current behaviour is to return all transactions if possible, but this will change to defaulting to 1000 if not specified in the future. It is recommended to populate this field to enable pagination.")] = None, show_cancelled_transactions : Annotated[Optional[StrictBool], Field(description="Option to specify whether or not to include cancelled transactions, including previous versions of transactions which have since been amended. Defaults to False if not specified.")] = None, sort_by : Annotated[Optional[conlist(StrictStr)], Field(description="A list of field names or properties to sort by, each suffixed by \" ASC\" or \" DESC\"")] = None, **kwargs) -> ApiResponse: # noqa: E501
4835
+ def get_transactions_with_http_info(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the transaction portfolio.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the transaction portfolio. Together with the scope this uniquely identifies the transaction portfolio.")], from_transaction_date : Annotated[Optional[StrictStr], Field(description="The lower bound effective datetime or cut label (inclusive) from which to retrieve transactions. There is no lower bound if this is not specified.")] = None, to_transaction_date : Annotated[Optional[StrictStr], Field(description="The upper bound effective datetime or cut label (inclusive) from which to retrieve transactions. There is no upper bound if this is not specified.")] = None, as_at : Annotated[Optional[datetime], Field(description="The asAt datetime at which to retrieve transactions. Defaults to returning the latest version of each transaction if not specified.")] = None, filter : Annotated[Optional[constr(strict=True, max_length=16384, min_length=0)], Field(description="Expression with which to filter the result set. For example, to return only transactions with a transaction type of 'Buy', specify \"type eq 'Buy'\" For more information about filtering LUSID results, see https://support.lusid.com/knowledgebase/article/KA-01914.")] = None, property_keys : Annotated[Optional[conlist(StrictStr)], Field(description="A list of property keys from the 'Instrument', 'Transaction', \"LegalEntity\" or \"CustodianAccount\" domain to decorate onto transactions. These must have the format {domain}/{scope}/{code}, for example 'Instrument/system/Name' or 'Transaction/strategy/quantsignal'.")] = None, page : Annotated[Optional[constr(strict=True, max_length=500, min_length=1)], Field(description="The pagination token to use to continue listing transactions from a previous call to GetTransactions.")] = None, limit : Annotated[Optional[StrictInt], Field(description="When paginating, limit the number of returned results to this many. The current behaviour is to return all transactions if possible, but this will change to defaulting to 1000 if not specified in the future. It is recommended to populate this field to enable pagination.")] = None, show_cancelled_transactions : Annotated[Optional[StrictBool], Field(description="Option to specify whether or not to include cancelled transactions, including previous versions of transactions which have since been amended. Defaults to False if not specified.")] = None, sort_by : Annotated[Optional[conlist(StrictStr)], Field(description="A list of field names or properties to sort by, each suffixed by \" ASC\" or \" DESC\".")] = None, **kwargs) -> ApiResponse: # noqa: E501
4653
4836
  """GetTransactions: Get transactions # noqa: E501
4654
4837
 
4655
4838
  Retrieve all the transactions that occurred during a particular time interval. If the portfolio is a derived transaction portfolio, the transactions returned are the union set of all transactions of the parent (and any grandparents, etc.) as well as those of the derived transaction portfolio itself. # noqa: E501
@@ -4679,7 +4862,7 @@ class TransactionPortfoliosApi:
4679
4862
  :type limit: int
4680
4863
  :param show_cancelled_transactions: Option to specify whether or not to include cancelled transactions, including previous versions of transactions which have since been amended. Defaults to False if not specified.
4681
4864
  :type show_cancelled_transactions: bool
4682
- :param sort_by: A list of field names or properties to sort by, each suffixed by \" ASC\" or \" DESC\"
4865
+ :param sort_by: A list of field names or properties to sort by, each suffixed by \" ASC\" or \" DESC\".
4683
4866
  :type sort_by: List[str]
4684
4867
  :param async_req: Whether to execute the request asynchronously.
4685
4868
  :type async_req: bool, optional
@@ -5051,22 +5234,22 @@ class TransactionPortfoliosApi:
5051
5234
  _request_auth=_params.get('_request_auth'))
5052
5235
 
5053
5236
  @overload
5054
- async def list_custodian_accounts(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the Transaction Portfolio.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the Transaction Portfolio. Together with the scope this uniquely identifies the Transaction Portfolios.")], effective_at : Annotated[Optional[StrictStr], Field(description="The effective datetime or cut label at which to list the TimeVariant properties decorated on Custodian Accounts. Defaults to the current LUSID system datetime if not specified.")] = None, as_at : Annotated[Optional[datetime], Field(description="The asAt datetime at which to retrieve the instrument. Defaults to returning the latest version if not specified.")] = None, page : Annotated[Optional[constr(strict=True, max_length=500, min_length=1)], Field(description="The pagination token to use to continue listing custodian accounts; this value is returned from the previous call. If a pagination token is provided, the filter, effectiveAt and asAt fields must not have changed since the original request. Also, if set, a start value cannot be provided.")] = None, start : Annotated[Optional[StrictInt], Field(description="When paginating, skip this number of results.")] = None, limit : Annotated[Optional[conint(strict=True, le=5000, ge=1)], Field(description="When paginating, limit the results to this number. Defaults to 100 if not specified.")] = None, filter : Annotated[Optional[constr(strict=True, max_length=16384, min_length=0)], Field(description="Expression to filter the results. For example, to filter on the Custodian Account type, specify \"code eq '001'\". For more information about filtering results, see https://support.lusid.com/knowledgebase/article/KA-01914.")] = None, property_keys : Annotated[Optional[conlist(StrictStr)], Field(description="A list of property keys from the 'CustodianAccount' domain to decorate onto the Custodian Account. These must have the format {domain}/{scope}/{code}, for example 'CustodianAccount/system/Name'.")] = None, **kwargs) -> PagedResourceListOfCustodianAccount: # noqa: E501
5237
+ async def list_custodian_accounts(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the Transaction Portfolio.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the Transaction Portfolio. Together with the scope this uniquely identifies the Transaction Portfolios.")], effective_at : Annotated[Optional[StrictStr], Field(description="The effective datetime or cut label at which to list the TimeVariant properties decorated on Custodian Accounts. Defaults to the current LUSID system datetime if not specified.")] = None, as_at : Annotated[Optional[datetime], Field(description="The asAt datetime at which to retrieve the instrument. Defaults to returning the latest version if not specified.")] = None, page : Annotated[Optional[constr(strict=True, max_length=500, min_length=1)], Field(description="The pagination token to use to continue listing custodian accounts; this value is returned from the previous call. If a pagination token is provided, the filter, effectiveAt and asAt fields must not have changed since the original request.")] = None, limit : Annotated[Optional[conint(strict=True, le=5000, ge=1)], Field(description="When paginating, limit the results to this number. Defaults to 100 if not specified.")] = None, filter : Annotated[Optional[constr(strict=True, max_length=16384, min_length=0)], Field(description="Expression to filter the results. For example, to filter on the Custodian Account type, specify \"code eq '001'\". For more information about filtering results, see https://support.lusid.com/knowledgebase/article/KA-01914.")] = None, property_keys : Annotated[Optional[conlist(StrictStr)], Field(description="A list of property keys from the 'CustodianAccount' domain to decorate onto the Custodian Account. These must have the format {domain}/{scope}/{code}, for example 'CustodianAccount/system/Name'.")] = None, **kwargs) -> PagedResourceListOfCustodianAccount: # noqa: E501
5055
5238
  ...
5056
5239
 
5057
5240
  @overload
5058
- def list_custodian_accounts(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the Transaction Portfolio.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the Transaction Portfolio. Together with the scope this uniquely identifies the Transaction Portfolios.")], effective_at : Annotated[Optional[StrictStr], Field(description="The effective datetime or cut label at which to list the TimeVariant properties decorated on Custodian Accounts. Defaults to the current LUSID system datetime if not specified.")] = None, as_at : Annotated[Optional[datetime], Field(description="The asAt datetime at which to retrieve the instrument. Defaults to returning the latest version if not specified.")] = None, page : Annotated[Optional[constr(strict=True, max_length=500, min_length=1)], Field(description="The pagination token to use to continue listing custodian accounts; this value is returned from the previous call. If a pagination token is provided, the filter, effectiveAt and asAt fields must not have changed since the original request. Also, if set, a start value cannot be provided.")] = None, start : Annotated[Optional[StrictInt], Field(description="When paginating, skip this number of results.")] = None, limit : Annotated[Optional[conint(strict=True, le=5000, ge=1)], Field(description="When paginating, limit the results to this number. Defaults to 100 if not specified.")] = None, filter : Annotated[Optional[constr(strict=True, max_length=16384, min_length=0)], Field(description="Expression to filter the results. For example, to filter on the Custodian Account type, specify \"code eq '001'\". For more information about filtering results, see https://support.lusid.com/knowledgebase/article/KA-01914.")] = None, property_keys : Annotated[Optional[conlist(StrictStr)], Field(description="A list of property keys from the 'CustodianAccount' domain to decorate onto the Custodian Account. These must have the format {domain}/{scope}/{code}, for example 'CustodianAccount/system/Name'.")] = None, async_req: Optional[bool]=True, **kwargs) -> PagedResourceListOfCustodianAccount: # noqa: E501
5241
+ def list_custodian_accounts(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the Transaction Portfolio.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the Transaction Portfolio. Together with the scope this uniquely identifies the Transaction Portfolios.")], effective_at : Annotated[Optional[StrictStr], Field(description="The effective datetime or cut label at which to list the TimeVariant properties decorated on Custodian Accounts. Defaults to the current LUSID system datetime if not specified.")] = None, as_at : Annotated[Optional[datetime], Field(description="The asAt datetime at which to retrieve the instrument. Defaults to returning the latest version if not specified.")] = None, page : Annotated[Optional[constr(strict=True, max_length=500, min_length=1)], Field(description="The pagination token to use to continue listing custodian accounts; this value is returned from the previous call. If a pagination token is provided, the filter, effectiveAt and asAt fields must not have changed since the original request.")] = None, limit : Annotated[Optional[conint(strict=True, le=5000, ge=1)], Field(description="When paginating, limit the results to this number. Defaults to 100 if not specified.")] = None, filter : Annotated[Optional[constr(strict=True, max_length=16384, min_length=0)], Field(description="Expression to filter the results. For example, to filter on the Custodian Account type, specify \"code eq '001'\". For more information about filtering results, see https://support.lusid.com/knowledgebase/article/KA-01914.")] = None, property_keys : Annotated[Optional[conlist(StrictStr)], Field(description="A list of property keys from the 'CustodianAccount' domain to decorate onto the Custodian Account. These must have the format {domain}/{scope}/{code}, for example 'CustodianAccount/system/Name'.")] = None, async_req: Optional[bool]=True, **kwargs) -> PagedResourceListOfCustodianAccount: # noqa: E501
5059
5242
  ...
5060
5243
 
5061
5244
  @validate_arguments
5062
- def list_custodian_accounts(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the Transaction Portfolio.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the Transaction Portfolio. Together with the scope this uniquely identifies the Transaction Portfolios.")], effective_at : Annotated[Optional[StrictStr], Field(description="The effective datetime or cut label at which to list the TimeVariant properties decorated on Custodian Accounts. Defaults to the current LUSID system datetime if not specified.")] = None, as_at : Annotated[Optional[datetime], Field(description="The asAt datetime at which to retrieve the instrument. Defaults to returning the latest version if not specified.")] = None, page : Annotated[Optional[constr(strict=True, max_length=500, min_length=1)], Field(description="The pagination token to use to continue listing custodian accounts; this value is returned from the previous call. If a pagination token is provided, the filter, effectiveAt and asAt fields must not have changed since the original request. Also, if set, a start value cannot be provided.")] = None, start : Annotated[Optional[StrictInt], Field(description="When paginating, skip this number of results.")] = None, limit : Annotated[Optional[conint(strict=True, le=5000, ge=1)], Field(description="When paginating, limit the results to this number. Defaults to 100 if not specified.")] = None, filter : Annotated[Optional[constr(strict=True, max_length=16384, min_length=0)], Field(description="Expression to filter the results. For example, to filter on the Custodian Account type, specify \"code eq '001'\". For more information about filtering results, see https://support.lusid.com/knowledgebase/article/KA-01914.")] = None, property_keys : Annotated[Optional[conlist(StrictStr)], Field(description="A list of property keys from the 'CustodianAccount' domain to decorate onto the Custodian Account. These must have the format {domain}/{scope}/{code}, for example 'CustodianAccount/system/Name'.")] = None, async_req: Optional[bool]=None, **kwargs) -> Union[PagedResourceListOfCustodianAccount, Awaitable[PagedResourceListOfCustodianAccount]]: # noqa: E501
5245
+ def list_custodian_accounts(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the Transaction Portfolio.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the Transaction Portfolio. Together with the scope this uniquely identifies the Transaction Portfolios.")], effective_at : Annotated[Optional[StrictStr], Field(description="The effective datetime or cut label at which to list the TimeVariant properties decorated on Custodian Accounts. Defaults to the current LUSID system datetime if not specified.")] = None, as_at : Annotated[Optional[datetime], Field(description="The asAt datetime at which to retrieve the instrument. Defaults to returning the latest version if not specified.")] = None, page : Annotated[Optional[constr(strict=True, max_length=500, min_length=1)], Field(description="The pagination token to use to continue listing custodian accounts; this value is returned from the previous call. If a pagination token is provided, the filter, effectiveAt and asAt fields must not have changed since the original request.")] = None, limit : Annotated[Optional[conint(strict=True, le=5000, ge=1)], Field(description="When paginating, limit the results to this number. Defaults to 100 if not specified.")] = None, filter : Annotated[Optional[constr(strict=True, max_length=16384, min_length=0)], Field(description="Expression to filter the results. For example, to filter on the Custodian Account type, specify \"code eq '001'\". For more information about filtering results, see https://support.lusid.com/knowledgebase/article/KA-01914.")] = None, property_keys : Annotated[Optional[conlist(StrictStr)], Field(description="A list of property keys from the 'CustodianAccount' domain to decorate onto the Custodian Account. These must have the format {domain}/{scope}/{code}, for example 'CustodianAccount/system/Name'.")] = None, async_req: Optional[bool]=None, **kwargs) -> Union[PagedResourceListOfCustodianAccount, Awaitable[PagedResourceListOfCustodianAccount]]: # noqa: E501
5063
5246
  """[EXPERIMENTAL] ListCustodianAccounts: List Custodian Accounts # noqa: E501
5064
5247
 
5065
5248
  List the custodian accounts in a Transaction Portfolios # noqa: E501
5066
5249
  This method makes a synchronous HTTP request by default. To make an
5067
5250
  asynchronous HTTP request, please pass async_req=True
5068
5251
 
5069
- >>> thread = api.list_custodian_accounts(scope, code, effective_at, as_at, page, start, limit, filter, property_keys, async_req=True)
5252
+ >>> thread = api.list_custodian_accounts(scope, code, effective_at, as_at, page, limit, filter, property_keys, async_req=True)
5070
5253
  >>> result = thread.get()
5071
5254
 
5072
5255
  :param scope: The scope of the Transaction Portfolio. (required)
@@ -5077,10 +5260,8 @@ class TransactionPortfoliosApi:
5077
5260
  :type effective_at: str
5078
5261
  :param as_at: The asAt datetime at which to retrieve the instrument. Defaults to returning the latest version if not specified.
5079
5262
  :type as_at: datetime
5080
- :param page: The pagination token to use to continue listing custodian accounts; this value is returned from the previous call. If a pagination token is provided, the filter, effectiveAt and asAt fields must not have changed since the original request. Also, if set, a start value cannot be provided.
5263
+ :param page: The pagination token to use to continue listing custodian accounts; this value is returned from the previous call. If a pagination token is provided, the filter, effectiveAt and asAt fields must not have changed since the original request.
5081
5264
  :type page: str
5082
- :param start: When paginating, skip this number of results.
5083
- :type start: int
5084
5265
  :param limit: When paginating, limit the results to this number. Defaults to 100 if not specified.
5085
5266
  :type limit: int
5086
5267
  :param filter: Expression to filter the results. For example, to filter on the Custodian Account type, specify \"code eq '001'\". For more information about filtering results, see https://support.lusid.com/knowledgebase/article/KA-01914.
@@ -5104,17 +5285,17 @@ class TransactionPortfoliosApi:
5104
5285
  raise ValueError(message)
5105
5286
  if async_req is not None:
5106
5287
  kwargs['async_req'] = async_req
5107
- return self.list_custodian_accounts_with_http_info(scope, code, effective_at, as_at, page, start, limit, filter, property_keys, **kwargs) # noqa: E501
5288
+ return self.list_custodian_accounts_with_http_info(scope, code, effective_at, as_at, page, limit, filter, property_keys, **kwargs) # noqa: E501
5108
5289
 
5109
5290
  @validate_arguments
5110
- def list_custodian_accounts_with_http_info(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the Transaction Portfolio.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the Transaction Portfolio. Together with the scope this uniquely identifies the Transaction Portfolios.")], effective_at : Annotated[Optional[StrictStr], Field(description="The effective datetime or cut label at which to list the TimeVariant properties decorated on Custodian Accounts. Defaults to the current LUSID system datetime if not specified.")] = None, as_at : Annotated[Optional[datetime], Field(description="The asAt datetime at which to retrieve the instrument. Defaults to returning the latest version if not specified.")] = None, page : Annotated[Optional[constr(strict=True, max_length=500, min_length=1)], Field(description="The pagination token to use to continue listing custodian accounts; this value is returned from the previous call. If a pagination token is provided, the filter, effectiveAt and asAt fields must not have changed since the original request. Also, if set, a start value cannot be provided.")] = None, start : Annotated[Optional[StrictInt], Field(description="When paginating, skip this number of results.")] = None, limit : Annotated[Optional[conint(strict=True, le=5000, ge=1)], Field(description="When paginating, limit the results to this number. Defaults to 100 if not specified.")] = None, filter : Annotated[Optional[constr(strict=True, max_length=16384, min_length=0)], Field(description="Expression to filter the results. For example, to filter on the Custodian Account type, specify \"code eq '001'\". For more information about filtering results, see https://support.lusid.com/knowledgebase/article/KA-01914.")] = None, property_keys : Annotated[Optional[conlist(StrictStr)], Field(description="A list of property keys from the 'CustodianAccount' domain to decorate onto the Custodian Account. These must have the format {domain}/{scope}/{code}, for example 'CustodianAccount/system/Name'.")] = None, **kwargs) -> ApiResponse: # noqa: E501
5291
+ def list_custodian_accounts_with_http_info(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the Transaction Portfolio.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the Transaction Portfolio. Together with the scope this uniquely identifies the Transaction Portfolios.")], effective_at : Annotated[Optional[StrictStr], Field(description="The effective datetime or cut label at which to list the TimeVariant properties decorated on Custodian Accounts. Defaults to the current LUSID system datetime if not specified.")] = None, as_at : Annotated[Optional[datetime], Field(description="The asAt datetime at which to retrieve the instrument. Defaults to returning the latest version if not specified.")] = None, page : Annotated[Optional[constr(strict=True, max_length=500, min_length=1)], Field(description="The pagination token to use to continue listing custodian accounts; this value is returned from the previous call. If a pagination token is provided, the filter, effectiveAt and asAt fields must not have changed since the original request.")] = None, limit : Annotated[Optional[conint(strict=True, le=5000, ge=1)], Field(description="When paginating, limit the results to this number. Defaults to 100 if not specified.")] = None, filter : Annotated[Optional[constr(strict=True, max_length=16384, min_length=0)], Field(description="Expression to filter the results. For example, to filter on the Custodian Account type, specify \"code eq '001'\". For more information about filtering results, see https://support.lusid.com/knowledgebase/article/KA-01914.")] = None, property_keys : Annotated[Optional[conlist(StrictStr)], Field(description="A list of property keys from the 'CustodianAccount' domain to decorate onto the Custodian Account. These must have the format {domain}/{scope}/{code}, for example 'CustodianAccount/system/Name'.")] = None, **kwargs) -> ApiResponse: # noqa: E501
5111
5292
  """[EXPERIMENTAL] ListCustodianAccounts: List Custodian Accounts # noqa: E501
5112
5293
 
5113
5294
  List the custodian accounts in a Transaction Portfolios # noqa: E501
5114
5295
  This method makes a synchronous HTTP request by default. To make an
5115
5296
  asynchronous HTTP request, please pass async_req=True
5116
5297
 
5117
- >>> thread = api.list_custodian_accounts_with_http_info(scope, code, effective_at, as_at, page, start, limit, filter, property_keys, async_req=True)
5298
+ >>> thread = api.list_custodian_accounts_with_http_info(scope, code, effective_at, as_at, page, limit, filter, property_keys, async_req=True)
5118
5299
  >>> result = thread.get()
5119
5300
 
5120
5301
  :param scope: The scope of the Transaction Portfolio. (required)
@@ -5125,10 +5306,8 @@ class TransactionPortfoliosApi:
5125
5306
  :type effective_at: str
5126
5307
  :param as_at: The asAt datetime at which to retrieve the instrument. Defaults to returning the latest version if not specified.
5127
5308
  :type as_at: datetime
5128
- :param page: The pagination token to use to continue listing custodian accounts; this value is returned from the previous call. If a pagination token is provided, the filter, effectiveAt and asAt fields must not have changed since the original request. Also, if set, a start value cannot be provided.
5309
+ :param page: The pagination token to use to continue listing custodian accounts; this value is returned from the previous call. If a pagination token is provided, the filter, effectiveAt and asAt fields must not have changed since the original request.
5129
5310
  :type page: str
5130
- :param start: When paginating, skip this number of results.
5131
- :type start: int
5132
5311
  :param limit: When paginating, limit the results to this number. Defaults to 100 if not specified.
5133
5312
  :type limit: int
5134
5313
  :param filter: Expression to filter the results. For example, to filter on the Custodian Account type, specify \"code eq '001'\". For more information about filtering results, see https://support.lusid.com/knowledgebase/article/KA-01914.
@@ -5168,7 +5347,6 @@ class TransactionPortfoliosApi:
5168
5347
  'effective_at',
5169
5348
  'as_at',
5170
5349
  'page',
5171
- 'start',
5172
5350
  'limit',
5173
5351
  'filter',
5174
5352
  'property_keys'
@@ -5220,9 +5398,6 @@ class TransactionPortfoliosApi:
5220
5398
  if _params.get('page') is not None: # noqa: E501
5221
5399
  _query_params.append(('page', _params['page']))
5222
5400
 
5223
- if _params.get('start') is not None: # noqa: E501
5224
- _query_params.append(('start', _params['start']))
5225
-
5226
5401
  if _params.get('limit') is not None: # noqa: E501
5227
5402
  _query_params.append(('limit', _params['limit']))
5228
5403
 
@@ -5456,42 +5631,32 @@ class TransactionPortfoliosApi:
5456
5631
  _request_auth=_params.get('_request_auth'))
5457
5632
 
5458
5633
  @overload
5459
- async def look_through_holdings(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the transaction portfolio.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the transaction portfolio. Together with the scope this uniquely identifies the transaction portfolio.")], effective_at : Annotated[Optional[StrictStr], Field(description="The effective datetime or cut label at which to retrieve the holdings of the transaction portfolio. Defaults to the current LUSID system datetime if not specified.")] = None, as_at : Annotated[Optional[datetime], Field(description="The asAt datetime at which to retrieve the holdings of the transaction portfolio. Defaults to return the latest version if not specified.")] = None, filter : Annotated[Optional[constr(strict=True, max_length=16384, min_length=0)], Field(description="Expression to filter the result set. For example, to filter on the Holding Type, use \"holdingType eq 'p'\". For more information about filtering LUSID results, see https://support.lusid.com/knowledgebase/article/KA-01914.")] = None, property_keys : Annotated[Optional[conlist(StrictStr)], Field(description="A list of property keys from the \"Instrument\", \"Holding\" or \"Portfolio\" domain to decorate onto holdings. These must have the format {domain}/{scope}/{code}, for example \"Instrument/system/Name\" or \"Holding/system/Cost\".")] = None, quotes_scope : Annotated[Optional[constr(strict=True, max_length=64, min_length=1)], Field(description="The scope containing the quotes with the FX rates used for currency conversion.")] = None, slice : Annotated[Optional[constr(strict=True, max_length=64, min_length=1)], Field(description="When running LookThrough, define this slice as the root slice in the portfolio to look through from.")] = None, share_class : Annotated[Optional[constr(strict=True, max_length=64, min_length=1)], Field(description="When running LookThrough, use this along with the slice parameter to specify the root share class in the slice in the portfolio to look through from. The slice parameter is a prerequisite for this parameter to be valid.")] = None, **kwargs) -> VersionedResourceListOfPortfolioHolding: # noqa: E501
5634
+ async def patch_portfolio_details(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the transaction portfolio.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the transaction portfolio. Together with the scope this uniquely identifies the transaction portfolio.")], operation : Annotated[conlist(Operation), Field(..., description="The patch document.")], effective_at : Annotated[Optional[StrictStr], Field(description="The effective datetime or cut label at which the updated or inserted details should become valid. Defaults to the current LUSID system datetime if not specified. Note that this will affect all bitemporal entities in the request, but will not be used for any perpetual entities.")] = None, **kwargs) -> PortfolioDetails: # noqa: E501
5460
5635
  ...
5461
5636
 
5462
5637
  @overload
5463
- def look_through_holdings(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the transaction portfolio.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the transaction portfolio. Together with the scope this uniquely identifies the transaction portfolio.")], effective_at : Annotated[Optional[StrictStr], Field(description="The effective datetime or cut label at which to retrieve the holdings of the transaction portfolio. Defaults to the current LUSID system datetime if not specified.")] = None, as_at : Annotated[Optional[datetime], Field(description="The asAt datetime at which to retrieve the holdings of the transaction portfolio. Defaults to return the latest version if not specified.")] = None, filter : Annotated[Optional[constr(strict=True, max_length=16384, min_length=0)], Field(description="Expression to filter the result set. For example, to filter on the Holding Type, use \"holdingType eq 'p'\". For more information about filtering LUSID results, see https://support.lusid.com/knowledgebase/article/KA-01914.")] = None, property_keys : Annotated[Optional[conlist(StrictStr)], Field(description="A list of property keys from the \"Instrument\", \"Holding\" or \"Portfolio\" domain to decorate onto holdings. These must have the format {domain}/{scope}/{code}, for example \"Instrument/system/Name\" or \"Holding/system/Cost\".")] = None, quotes_scope : Annotated[Optional[constr(strict=True, max_length=64, min_length=1)], Field(description="The scope containing the quotes with the FX rates used for currency conversion.")] = None, slice : Annotated[Optional[constr(strict=True, max_length=64, min_length=1)], Field(description="When running LookThrough, define this slice as the root slice in the portfolio to look through from.")] = None, share_class : Annotated[Optional[constr(strict=True, max_length=64, min_length=1)], Field(description="When running LookThrough, use this along with the slice parameter to specify the root share class in the slice in the portfolio to look through from. The slice parameter is a prerequisite for this parameter to be valid.")] = None, async_req: Optional[bool]=True, **kwargs) -> VersionedResourceListOfPortfolioHolding: # noqa: E501
5638
+ def patch_portfolio_details(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the transaction portfolio.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the transaction portfolio. Together with the scope this uniquely identifies the transaction portfolio.")], operation : Annotated[conlist(Operation), Field(..., description="The patch document.")], effective_at : Annotated[Optional[StrictStr], Field(description="The effective datetime or cut label at which the updated or inserted details should become valid. Defaults to the current LUSID system datetime if not specified. Note that this will affect all bitemporal entities in the request, but will not be used for any perpetual entities.")] = None, async_req: Optional[bool]=True, **kwargs) -> PortfolioDetails: # noqa: E501
5464
5639
  ...
5465
5640
 
5466
5641
  @validate_arguments
5467
- def look_through_holdings(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the transaction portfolio.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the transaction portfolio. Together with the scope this uniquely identifies the transaction portfolio.")], effective_at : Annotated[Optional[StrictStr], Field(description="The effective datetime or cut label at which to retrieve the holdings of the transaction portfolio. Defaults to the current LUSID system datetime if not specified.")] = None, as_at : Annotated[Optional[datetime], Field(description="The asAt datetime at which to retrieve the holdings of the transaction portfolio. Defaults to return the latest version if not specified.")] = None, filter : Annotated[Optional[constr(strict=True, max_length=16384, min_length=0)], Field(description="Expression to filter the result set. For example, to filter on the Holding Type, use \"holdingType eq 'p'\". For more information about filtering LUSID results, see https://support.lusid.com/knowledgebase/article/KA-01914.")] = None, property_keys : Annotated[Optional[conlist(StrictStr)], Field(description="A list of property keys from the \"Instrument\", \"Holding\" or \"Portfolio\" domain to decorate onto holdings. These must have the format {domain}/{scope}/{code}, for example \"Instrument/system/Name\" or \"Holding/system/Cost\".")] = None, quotes_scope : Annotated[Optional[constr(strict=True, max_length=64, min_length=1)], Field(description="The scope containing the quotes with the FX rates used for currency conversion.")] = None, slice : Annotated[Optional[constr(strict=True, max_length=64, min_length=1)], Field(description="When running LookThrough, define this slice as the root slice in the portfolio to look through from.")] = None, share_class : Annotated[Optional[constr(strict=True, max_length=64, min_length=1)], Field(description="When running LookThrough, use this along with the slice parameter to specify the root share class in the slice in the portfolio to look through from. The slice parameter is a prerequisite for this parameter to be valid.")] = None, async_req: Optional[bool]=None, **kwargs) -> Union[VersionedResourceListOfPortfolioHolding, Awaitable[VersionedResourceListOfPortfolioHolding]]: # noqa: E501
5468
- """[EXPERIMENTAL] LookThroughHoldings: Get LookThrough Holdings # noqa: E501
5642
+ def patch_portfolio_details(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the transaction portfolio.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the transaction portfolio. Together with the scope this uniquely identifies the transaction portfolio.")], operation : Annotated[conlist(Operation), Field(..., description="The patch document.")], effective_at : Annotated[Optional[StrictStr], Field(description="The effective datetime or cut label at which the updated or inserted details should become valid. Defaults to the current LUSID system datetime if not specified. Note that this will affect all bitemporal entities in the request, but will not be used for any perpetual entities.")] = None, async_req: Optional[bool]=None, **kwargs) -> Union[PortfolioDetails, Awaitable[PortfolioDetails]]: # noqa: E501
5643
+ """[EARLY ACCESS] PatchPortfolioDetails: Patch portfolio details # noqa: E501
5469
5644
 
5470
- Calculate holdings for a transaction portfolio with lookthrough # noqa: E501
5645
+ Create or update certain details for a particular transaction portfolio. The behaviour is defined by the JSON Patch specification. Note that not all elements of a transaction portfolio definition are modifiable once it has been created due to the potential implications for data already stored. Currently supported properties are: SubHoldingKeys, BaseCurrency, AmortisationMethod # noqa: E501
5471
5646
  This method makes a synchronous HTTP request by default. To make an
5472
5647
  asynchronous HTTP request, please pass async_req=True
5473
5648
 
5474
- >>> thread = api.look_through_holdings(scope, code, effective_at, as_at, filter, property_keys, quotes_scope, slice, share_class, async_req=True)
5649
+ >>> thread = api.patch_portfolio_details(scope, code, operation, effective_at, async_req=True)
5475
5650
  >>> result = thread.get()
5476
5651
 
5477
5652
  :param scope: The scope of the transaction portfolio. (required)
5478
5653
  :type scope: str
5479
- :param code: The code of the transaction portfolio. Together with the scope this uniquely identifies the transaction portfolio. (required)
5654
+ :param code: The code of the transaction portfolio. Together with the scope this uniquely identifies the transaction portfolio. (required)
5480
5655
  :type code: str
5481
- :param effective_at: The effective datetime or cut label at which to retrieve the holdings of the transaction portfolio. Defaults to the current LUSID system datetime if not specified.
5656
+ :param operation: The patch document. (required)
5657
+ :type operation: List[Operation]
5658
+ :param effective_at: The effective datetime or cut label at which the updated or inserted details should become valid. Defaults to the current LUSID system datetime if not specified. Note that this will affect all bitemporal entities in the request, but will not be used for any perpetual entities.
5482
5659
  :type effective_at: str
5483
- :param as_at: The asAt datetime at which to retrieve the holdings of the transaction portfolio. Defaults to return the latest version if not specified.
5484
- :type as_at: datetime
5485
- :param filter: Expression to filter the result set. For example, to filter on the Holding Type, use \"holdingType eq 'p'\". For more information about filtering LUSID results, see https://support.lusid.com/knowledgebase/article/KA-01914.
5486
- :type filter: str
5487
- :param property_keys: A list of property keys from the \"Instrument\", \"Holding\" or \"Portfolio\" domain to decorate onto holdings. These must have the format {domain}/{scope}/{code}, for example \"Instrument/system/Name\" or \"Holding/system/Cost\".
5488
- :type property_keys: List[str]
5489
- :param quotes_scope: The scope containing the quotes with the FX rates used for currency conversion.
5490
- :type quotes_scope: str
5491
- :param slice: When running LookThrough, define this slice as the root slice in the portfolio to look through from.
5492
- :type slice: str
5493
- :param share_class: When running LookThrough, use this along with the slice parameter to specify the root share class in the slice in the portfolio to look through from. The slice parameter is a prerequisite for this parameter to be valid.
5494
- :type share_class: str
5495
5660
  :param async_req: Whether to execute the request asynchronously.
5496
5661
  :type async_req: bool, optional
5497
5662
  :param _request_timeout: timeout setting for this request.
@@ -5501,45 +5666,35 @@ class TransactionPortfoliosApi:
5501
5666
  :return: Returns the result object.
5502
5667
  If the method is called asynchronously,
5503
5668
  returns the request thread.
5504
- :rtype: VersionedResourceListOfPortfolioHolding
5669
+ :rtype: PortfolioDetails
5505
5670
  """
5506
5671
  kwargs['_return_http_data_only'] = True
5507
5672
  if '_preload_content' in kwargs:
5508
- message = "Error! Please call the look_through_holdings_with_http_info method with `_preload_content` instead and obtain raw data from ApiResponse.raw_data" # noqa: E501
5673
+ message = "Error! Please call the patch_portfolio_details_with_http_info method with `_preload_content` instead and obtain raw data from ApiResponse.raw_data" # noqa: E501
5509
5674
  raise ValueError(message)
5510
5675
  if async_req is not None:
5511
5676
  kwargs['async_req'] = async_req
5512
- return self.look_through_holdings_with_http_info(scope, code, effective_at, as_at, filter, property_keys, quotes_scope, slice, share_class, **kwargs) # noqa: E501
5677
+ return self.patch_portfolio_details_with_http_info(scope, code, operation, effective_at, **kwargs) # noqa: E501
5513
5678
 
5514
5679
  @validate_arguments
5515
- def look_through_holdings_with_http_info(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the transaction portfolio.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the transaction portfolio. Together with the scope this uniquely identifies the transaction portfolio.")], effective_at : Annotated[Optional[StrictStr], Field(description="The effective datetime or cut label at which to retrieve the holdings of the transaction portfolio. Defaults to the current LUSID system datetime if not specified.")] = None, as_at : Annotated[Optional[datetime], Field(description="The asAt datetime at which to retrieve the holdings of the transaction portfolio. Defaults to return the latest version if not specified.")] = None, filter : Annotated[Optional[constr(strict=True, max_length=16384, min_length=0)], Field(description="Expression to filter the result set. For example, to filter on the Holding Type, use \"holdingType eq 'p'\". For more information about filtering LUSID results, see https://support.lusid.com/knowledgebase/article/KA-01914.")] = None, property_keys : Annotated[Optional[conlist(StrictStr)], Field(description="A list of property keys from the \"Instrument\", \"Holding\" or \"Portfolio\" domain to decorate onto holdings. These must have the format {domain}/{scope}/{code}, for example \"Instrument/system/Name\" or \"Holding/system/Cost\".")] = None, quotes_scope : Annotated[Optional[constr(strict=True, max_length=64, min_length=1)], Field(description="The scope containing the quotes with the FX rates used for currency conversion.")] = None, slice : Annotated[Optional[constr(strict=True, max_length=64, min_length=1)], Field(description="When running LookThrough, define this slice as the root slice in the portfolio to look through from.")] = None, share_class : Annotated[Optional[constr(strict=True, max_length=64, min_length=1)], Field(description="When running LookThrough, use this along with the slice parameter to specify the root share class in the slice in the portfolio to look through from. The slice parameter is a prerequisite for this parameter to be valid.")] = None, **kwargs) -> ApiResponse: # noqa: E501
5516
- """[EXPERIMENTAL] LookThroughHoldings: Get LookThrough Holdings # noqa: E501
5680
+ def patch_portfolio_details_with_http_info(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the transaction portfolio.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the transaction portfolio. Together with the scope this uniquely identifies the transaction portfolio.")], operation : Annotated[conlist(Operation), Field(..., description="The patch document.")], effective_at : Annotated[Optional[StrictStr], Field(description="The effective datetime or cut label at which the updated or inserted details should become valid. Defaults to the current LUSID system datetime if not specified. Note that this will affect all bitemporal entities in the request, but will not be used for any perpetual entities.")] = None, **kwargs) -> ApiResponse: # noqa: E501
5681
+ """[EARLY ACCESS] PatchPortfolioDetails: Patch portfolio details # noqa: E501
5517
5682
 
5518
- Calculate holdings for a transaction portfolio with lookthrough # noqa: E501
5683
+ Create or update certain details for a particular transaction portfolio. The behaviour is defined by the JSON Patch specification. Note that not all elements of a transaction portfolio definition are modifiable once it has been created due to the potential implications for data already stored. Currently supported properties are: SubHoldingKeys, BaseCurrency, AmortisationMethod # noqa: E501
5519
5684
  This method makes a synchronous HTTP request by default. To make an
5520
5685
  asynchronous HTTP request, please pass async_req=True
5521
5686
 
5522
- >>> thread = api.look_through_holdings_with_http_info(scope, code, effective_at, as_at, filter, property_keys, quotes_scope, slice, share_class, async_req=True)
5687
+ >>> thread = api.patch_portfolio_details_with_http_info(scope, code, operation, effective_at, async_req=True)
5523
5688
  >>> result = thread.get()
5524
5689
 
5525
5690
  :param scope: The scope of the transaction portfolio. (required)
5526
5691
  :type scope: str
5527
- :param code: The code of the transaction portfolio. Together with the scope this uniquely identifies the transaction portfolio. (required)
5692
+ :param code: The code of the transaction portfolio. Together with the scope this uniquely identifies the transaction portfolio. (required)
5528
5693
  :type code: str
5529
- :param effective_at: The effective datetime or cut label at which to retrieve the holdings of the transaction portfolio. Defaults to the current LUSID system datetime if not specified.
5694
+ :param operation: The patch document. (required)
5695
+ :type operation: List[Operation]
5696
+ :param effective_at: The effective datetime or cut label at which the updated or inserted details should become valid. Defaults to the current LUSID system datetime if not specified. Note that this will affect all bitemporal entities in the request, but will not be used for any perpetual entities.
5530
5697
  :type effective_at: str
5531
- :param as_at: The asAt datetime at which to retrieve the holdings of the transaction portfolio. Defaults to return the latest version if not specified.
5532
- :type as_at: datetime
5533
- :param filter: Expression to filter the result set. For example, to filter on the Holding Type, use \"holdingType eq 'p'\". For more information about filtering LUSID results, see https://support.lusid.com/knowledgebase/article/KA-01914.
5534
- :type filter: str
5535
- :param property_keys: A list of property keys from the \"Instrument\", \"Holding\" or \"Portfolio\" domain to decorate onto holdings. These must have the format {domain}/{scope}/{code}, for example \"Instrument/system/Name\" or \"Holding/system/Cost\".
5536
- :type property_keys: List[str]
5537
- :param quotes_scope: The scope containing the quotes with the FX rates used for currency conversion.
5538
- :type quotes_scope: str
5539
- :param slice: When running LookThrough, define this slice as the root slice in the portfolio to look through from.
5540
- :type slice: str
5541
- :param share_class: When running LookThrough, use this along with the slice parameter to specify the root share class in the slice in the portfolio to look through from. The slice parameter is a prerequisite for this parameter to be valid.
5542
- :type share_class: str
5543
5698
  :param async_req: Whether to execute the request asynchronously.
5544
5699
  :type async_req: bool, optional
5545
5700
  :param _preload_content: if False, the ApiResponse.data will
@@ -5562,7 +5717,7 @@ class TransactionPortfoliosApi:
5562
5717
  :return: Returns the result object.
5563
5718
  If the method is called asynchronously,
5564
5719
  returns the request thread.
5565
- :rtype: tuple(VersionedResourceListOfPortfolioHolding, status_code(int), headers(HTTPHeaderDict))
5720
+ :rtype: tuple(PortfolioDetails, status_code(int), headers(HTTPHeaderDict))
5566
5721
  """
5567
5722
 
5568
5723
  _params = locals()
@@ -5570,13 +5725,8 @@ class TransactionPortfoliosApi:
5570
5725
  _all_params = [
5571
5726
  'scope',
5572
5727
  'code',
5573
- 'effective_at',
5574
- 'as_at',
5575
- 'filter',
5576
- 'property_keys',
5577
- 'quotes_scope',
5578
- 'slice',
5579
- 'share_class'
5728
+ 'operation',
5729
+ 'effective_at'
5580
5730
  ]
5581
5731
  _all_params.extend(
5582
5732
  [
@@ -5595,7 +5745,7 @@ class TransactionPortfoliosApi:
5595
5745
  if _key not in _all_params:
5596
5746
  raise ApiTypeError(
5597
5747
  "Got an unexpected keyword argument '%s'"
5598
- " to method look_through_holdings" % _key
5748
+ " to method patch_portfolio_details" % _key
5599
5749
  )
5600
5750
  _params[_key] = _val
5601
5751
  del _params['kwargs']
@@ -5616,28 +5766,6 @@ class TransactionPortfoliosApi:
5616
5766
  if _params.get('effective_at') is not None: # noqa: E501
5617
5767
  _query_params.append(('effectiveAt', _params['effective_at']))
5618
5768
 
5619
- if _params.get('as_at') is not None: # noqa: E501
5620
- if isinstance(_params['as_at'], datetime):
5621
- _query_params.append(('asAt', _params['as_at'].strftime(self.api_client.configuration.datetime_format)))
5622
- else:
5623
- _query_params.append(('asAt', _params['as_at']))
5624
-
5625
- if _params.get('filter') is not None: # noqa: E501
5626
- _query_params.append(('filter', _params['filter']))
5627
-
5628
- if _params.get('property_keys') is not None: # noqa: E501
5629
- _query_params.append(('propertyKeys', _params['property_keys']))
5630
- _collection_formats['propertyKeys'] = 'multi'
5631
-
5632
- if _params.get('quotes_scope') is not None: # noqa: E501
5633
- _query_params.append(('quotesScope', _params['quotes_scope']))
5634
-
5635
- if _params.get('slice') is not None: # noqa: E501
5636
- _query_params.append(('slice', _params['slice']))
5637
-
5638
- if _params.get('share_class') is not None: # noqa: E501
5639
- _query_params.append(('shareClass', _params['share_class']))
5640
-
5641
5769
  # process the header parameters
5642
5770
  _header_params = dict(_params.get('_headers', {}))
5643
5771
  # process the form parameters
@@ -5645,20 +5773,30 @@ class TransactionPortfoliosApi:
5645
5773
  _files = {}
5646
5774
  # process the body parameter
5647
5775
  _body_params = None
5776
+ if _params['operation'] is not None:
5777
+ _body_params = _params['operation']
5778
+
5648
5779
  # set the HTTP header `Accept`
5649
5780
  _header_params['Accept'] = self.api_client.select_header_accept(
5650
5781
  ['text/plain', 'application/json', 'text/json']) # noqa: E501
5651
5782
 
5783
+ # set the HTTP header `Content-Type`
5784
+ _content_types_list = _params.get('_content_type',
5785
+ self.api_client.select_header_content_type(
5786
+ ['application/json-patch+json', 'application/json', 'text/json', 'application/*+json']))
5787
+ if _content_types_list:
5788
+ _header_params['Content-Type'] = _content_types_list
5789
+
5652
5790
  # authentication setting
5653
5791
  _auth_settings = ['oauth2'] # noqa: E501
5654
5792
 
5655
5793
  _response_types_map = {
5656
- '200': "VersionedResourceListOfPortfolioHolding",
5794
+ '200': "PortfolioDetails",
5657
5795
  '400': "LusidValidationProblemDetails",
5658
5796
  }
5659
5797
 
5660
5798
  return self.api_client.call_api(
5661
- '/api/transactionportfolios/{scope}/{code}/holdings/$lookthrough', 'GET',
5799
+ '/api/transactionportfolios/{scope}/{code}/details', 'PATCH',
5662
5800
  _path_params,
5663
5801
  _query_params,
5664
5802
  _header_params,
@@ -5675,52 +5813,38 @@ class TransactionPortfoliosApi:
5675
5813
  _request_auth=_params.get('_request_auth'))
5676
5814
 
5677
5815
  @overload
5678
- async def look_through_transactions(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the transaction portfolio.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the transaction portfolio. Together with the scope this uniquely identifies the transaction portfolio.")], from_transaction_date : Annotated[Optional[StrictStr], Field(description="The lower bound effective datetime or cut label (inclusive) from which to retrieve transactions. There is no lower bound if this is not specified.")] = None, to_transaction_date : Annotated[Optional[StrictStr], Field(description="The upper bound effective datetime or cut label (inclusive) from which to retrieve transactions. There is no upper bound if this is not specified.")] = None, as_at : Annotated[Optional[datetime], Field(description="The asAt datetime at which to retrieve transactions. Defaults to returning the latest version of each transaction if not specified.")] = None, filter : Annotated[Optional[constr(strict=True, max_length=16384, min_length=0)], Field(description="Expression with which to filter the result set. For example, to return only transactions with a transaction type of 'Buy', specify \"type eq 'Buy'\" For more information about filtering LUSID results, see https://support.lusid.com/knowledgebase/article/KA-01914.")] = None, property_keys : Annotated[Optional[conlist(StrictStr)], Field(description="A list of property keys from the 'Instrument', 'Transaction', \"LegalEntity\" or \"CustodianAccount\" domain to decorate onto transactions. These must have the format {domain}/{scope}/{code}, for example 'Instrument/system/Name' or 'Transaction/strategy/quantsignal'.")] = None, page : Annotated[Optional[constr(strict=True, max_length=500, min_length=1)], Field(description="The pagination token to use to continue listing transactions from a previous call to LookThroughTransactions.")] = None, limit : Annotated[Optional[StrictInt], Field(description="When paginating, limit the number of returned results to this many. This will default to 1000 if not specified.")] = None, quotes_scope : Annotated[Optional[constr(strict=True, max_length=64, min_length=1)], Field(description="The scope containing the quotes with the FX rates used for currency conversion.")] = None, slice : Annotated[Optional[constr(strict=True, max_length=64, min_length=1)], Field(description="When running LookThrough, define this slice as the root slice in the portfolio to look through from.")] = None, share_class : Annotated[Optional[constr(strict=True, max_length=64, min_length=1)], Field(description="When running LookThrough, use this along with the slice parameter to specify the root share class in the slice in the portfolio to look through from. The slice parameter is a prerequisite for this parameter to be valid.")] = None, use_alternate_scaling_logic : Annotated[Optional[StrictBool], Field(description="When running LookThrough, set this flag to use the same scaling logic as for LT Holdings")] = None, alternate_effective_at : Annotated[Optional[StrictStr], Field(description="This effectiveAt field is required when using alternate scaling logic to determine which fund and currency data is used for scaling")] = None, **kwargs) -> VersionedResourceListOfTransaction: # noqa: E501
5816
+ async def resolve_instrument(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the transaction portfolio.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the transaction portfolio. Together with the scope this uniquely identifies the transaction portfolio.")], instrument_identifier_type : Annotated[StrictStr, Field(..., description="The instrument identifier type.")], instrument_identifier_value : Annotated[StrictStr, Field(..., description="The value for the given instrument identifier.")], from_effective_at : Annotated[Optional[StrictStr], Field(description="The lower bound effective datetime or cut label (inclusive) from which to retrieve the data. There is no lower bound if this is not specified.")] = None, re_resolve : Annotated[Optional[StrictBool], Field(description="When set to true, instrument resolution will be attempted for all transactions and holdings for the given identifier and date range. When set to false (default behaviour), instrument resolution will only be attempted for those transactions and holdings that were previously unresolved.")] = None, request_body : Annotated[Optional[Dict[str, StrictStr]], Field(description="The dictionary with the instrument identifiers to be updated on the transaction and holdings.")] = None, **kwargs) -> UpsertPortfolioTransactionsResponse: # noqa: E501
5679
5817
  ...
5680
5818
 
5681
5819
  @overload
5682
- def look_through_transactions(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the transaction portfolio.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the transaction portfolio. Together with the scope this uniquely identifies the transaction portfolio.")], from_transaction_date : Annotated[Optional[StrictStr], Field(description="The lower bound effective datetime or cut label (inclusive) from which to retrieve transactions. There is no lower bound if this is not specified.")] = None, to_transaction_date : Annotated[Optional[StrictStr], Field(description="The upper bound effective datetime or cut label (inclusive) from which to retrieve transactions. There is no upper bound if this is not specified.")] = None, as_at : Annotated[Optional[datetime], Field(description="The asAt datetime at which to retrieve transactions. Defaults to returning the latest version of each transaction if not specified.")] = None, filter : Annotated[Optional[constr(strict=True, max_length=16384, min_length=0)], Field(description="Expression with which to filter the result set. For example, to return only transactions with a transaction type of 'Buy', specify \"type eq 'Buy'\" For more information about filtering LUSID results, see https://support.lusid.com/knowledgebase/article/KA-01914.")] = None, property_keys : Annotated[Optional[conlist(StrictStr)], Field(description="A list of property keys from the 'Instrument', 'Transaction', \"LegalEntity\" or \"CustodianAccount\" domain to decorate onto transactions. These must have the format {domain}/{scope}/{code}, for example 'Instrument/system/Name' or 'Transaction/strategy/quantsignal'.")] = None, page : Annotated[Optional[constr(strict=True, max_length=500, min_length=1)], Field(description="The pagination token to use to continue listing transactions from a previous call to LookThroughTransactions.")] = None, limit : Annotated[Optional[StrictInt], Field(description="When paginating, limit the number of returned results to this many. This will default to 1000 if not specified.")] = None, quotes_scope : Annotated[Optional[constr(strict=True, max_length=64, min_length=1)], Field(description="The scope containing the quotes with the FX rates used for currency conversion.")] = None, slice : Annotated[Optional[constr(strict=True, max_length=64, min_length=1)], Field(description="When running LookThrough, define this slice as the root slice in the portfolio to look through from.")] = None, share_class : Annotated[Optional[constr(strict=True, max_length=64, min_length=1)], Field(description="When running LookThrough, use this along with the slice parameter to specify the root share class in the slice in the portfolio to look through from. The slice parameter is a prerequisite for this parameter to be valid.")] = None, use_alternate_scaling_logic : Annotated[Optional[StrictBool], Field(description="When running LookThrough, set this flag to use the same scaling logic as for LT Holdings")] = None, alternate_effective_at : Annotated[Optional[StrictStr], Field(description="This effectiveAt field is required when using alternate scaling logic to determine which fund and currency data is used for scaling")] = None, async_req: Optional[bool]=True, **kwargs) -> VersionedResourceListOfTransaction: # noqa: E501
5820
+ def resolve_instrument(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the transaction portfolio.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the transaction portfolio. Together with the scope this uniquely identifies the transaction portfolio.")], instrument_identifier_type : Annotated[StrictStr, Field(..., description="The instrument identifier type.")], instrument_identifier_value : Annotated[StrictStr, Field(..., description="The value for the given instrument identifier.")], from_effective_at : Annotated[Optional[StrictStr], Field(description="The lower bound effective datetime or cut label (inclusive) from which to retrieve the data. There is no lower bound if this is not specified.")] = None, re_resolve : Annotated[Optional[StrictBool], Field(description="When set to true, instrument resolution will be attempted for all transactions and holdings for the given identifier and date range. When set to false (default behaviour), instrument resolution will only be attempted for those transactions and holdings that were previously unresolved.")] = None, request_body : Annotated[Optional[Dict[str, StrictStr]], Field(description="The dictionary with the instrument identifiers to be updated on the transaction and holdings.")] = None, async_req: Optional[bool]=True, **kwargs) -> UpsertPortfolioTransactionsResponse: # noqa: E501
5683
5821
  ...
5684
5822
 
5685
5823
  @validate_arguments
5686
- def look_through_transactions(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the transaction portfolio.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the transaction portfolio. Together with the scope this uniquely identifies the transaction portfolio.")], from_transaction_date : Annotated[Optional[StrictStr], Field(description="The lower bound effective datetime or cut label (inclusive) from which to retrieve transactions. There is no lower bound if this is not specified.")] = None, to_transaction_date : Annotated[Optional[StrictStr], Field(description="The upper bound effective datetime or cut label (inclusive) from which to retrieve transactions. There is no upper bound if this is not specified.")] = None, as_at : Annotated[Optional[datetime], Field(description="The asAt datetime at which to retrieve transactions. Defaults to returning the latest version of each transaction if not specified.")] = None, filter : Annotated[Optional[constr(strict=True, max_length=16384, min_length=0)], Field(description="Expression with which to filter the result set. For example, to return only transactions with a transaction type of 'Buy', specify \"type eq 'Buy'\" For more information about filtering LUSID results, see https://support.lusid.com/knowledgebase/article/KA-01914.")] = None, property_keys : Annotated[Optional[conlist(StrictStr)], Field(description="A list of property keys from the 'Instrument', 'Transaction', \"LegalEntity\" or \"CustodianAccount\" domain to decorate onto transactions. These must have the format {domain}/{scope}/{code}, for example 'Instrument/system/Name' or 'Transaction/strategy/quantsignal'.")] = None, page : Annotated[Optional[constr(strict=True, max_length=500, min_length=1)], Field(description="The pagination token to use to continue listing transactions from a previous call to LookThroughTransactions.")] = None, limit : Annotated[Optional[StrictInt], Field(description="When paginating, limit the number of returned results to this many. This will default to 1000 if not specified.")] = None, quotes_scope : Annotated[Optional[constr(strict=True, max_length=64, min_length=1)], Field(description="The scope containing the quotes with the FX rates used for currency conversion.")] = None, slice : Annotated[Optional[constr(strict=True, max_length=64, min_length=1)], Field(description="When running LookThrough, define this slice as the root slice in the portfolio to look through from.")] = None, share_class : Annotated[Optional[constr(strict=True, max_length=64, min_length=1)], Field(description="When running LookThrough, use this along with the slice parameter to specify the root share class in the slice in the portfolio to look through from. The slice parameter is a prerequisite for this parameter to be valid.")] = None, use_alternate_scaling_logic : Annotated[Optional[StrictBool], Field(description="When running LookThrough, set this flag to use the same scaling logic as for LT Holdings")] = None, alternate_effective_at : Annotated[Optional[StrictStr], Field(description="This effectiveAt field is required when using alternate scaling logic to determine which fund and currency data is used for scaling")] = None, async_req: Optional[bool]=None, **kwargs) -> Union[VersionedResourceListOfTransaction, Awaitable[VersionedResourceListOfTransaction]]: # noqa: E501
5687
- """[EXPERIMENTAL] LookThroughTransactions: Look through transactions # noqa: E501
5824
+ def resolve_instrument(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the transaction portfolio.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the transaction portfolio. Together with the scope this uniquely identifies the transaction portfolio.")], instrument_identifier_type : Annotated[StrictStr, Field(..., description="The instrument identifier type.")], instrument_identifier_value : Annotated[StrictStr, Field(..., description="The value for the given instrument identifier.")], from_effective_at : Annotated[Optional[StrictStr], Field(description="The lower bound effective datetime or cut label (inclusive) from which to retrieve the data. There is no lower bound if this is not specified.")] = None, re_resolve : Annotated[Optional[StrictBool], Field(description="When set to true, instrument resolution will be attempted for all transactions and holdings for the given identifier and date range. When set to false (default behaviour), instrument resolution will only be attempted for those transactions and holdings that were previously unresolved.")] = None, request_body : Annotated[Optional[Dict[str, StrictStr]], Field(description="The dictionary with the instrument identifiers to be updated on the transaction and holdings.")] = None, async_req: Optional[bool]=None, **kwargs) -> Union[UpsertPortfolioTransactionsResponse, Awaitable[UpsertPortfolioTransactionsResponse]]: # noqa: E501
5825
+ """[EARLY ACCESS] ResolveInstrument: Resolve instrument # noqa: E501
5688
5826
 
5689
- Retrieve all the transactions that occurred during a particular time interval. If the portfolio is part of a fund as defined in Fund Accounting documents, the transactions returned are the union set of all transactions in portfolios of the same type, in any funds invested in by the portfolio's fund (and any funds invested in from that fund, etc.). The transactions will be scaled according to the ratio of the value of the investment in the fund to the NAV of the fund itself. # noqa: E501
5827
+ Try to resolve the instrument for transaction and holdings for a given instrument identifier and a specified period of time. Also update the instrument identifiers with the given instrument identifiers collection. # noqa: E501
5690
5828
  This method makes a synchronous HTTP request by default. To make an
5691
5829
  asynchronous HTTP request, please pass async_req=True
5692
5830
 
5693
- >>> thread = api.look_through_transactions(scope, code, from_transaction_date, to_transaction_date, as_at, filter, property_keys, page, limit, quotes_scope, slice, share_class, use_alternate_scaling_logic, alternate_effective_at, async_req=True)
5831
+ >>> thread = api.resolve_instrument(scope, code, instrument_identifier_type, instrument_identifier_value, from_effective_at, re_resolve, request_body, async_req=True)
5694
5832
  >>> result = thread.get()
5695
5833
 
5696
5834
  :param scope: The scope of the transaction portfolio. (required)
5697
5835
  :type scope: str
5698
5836
  :param code: The code of the transaction portfolio. Together with the scope this uniquely identifies the transaction portfolio. (required)
5699
5837
  :type code: str
5700
- :param from_transaction_date: The lower bound effective datetime or cut label (inclusive) from which to retrieve transactions. There is no lower bound if this is not specified.
5701
- :type from_transaction_date: str
5702
- :param to_transaction_date: The upper bound effective datetime or cut label (inclusive) from which to retrieve transactions. There is no upper bound if this is not specified.
5703
- :type to_transaction_date: str
5704
- :param as_at: The asAt datetime at which to retrieve transactions. Defaults to returning the latest version of each transaction if not specified.
5705
- :type as_at: datetime
5706
- :param filter: Expression with which to filter the result set. For example, to return only transactions with a transaction type of 'Buy', specify \"type eq 'Buy'\" For more information about filtering LUSID results, see https://support.lusid.com/knowledgebase/article/KA-01914.
5707
- :type filter: str
5708
- :param property_keys: A list of property keys from the 'Instrument', 'Transaction', \"LegalEntity\" or \"CustodianAccount\" domain to decorate onto transactions. These must have the format {domain}/{scope}/{code}, for example 'Instrument/system/Name' or 'Transaction/strategy/quantsignal'.
5709
- :type property_keys: List[str]
5710
- :param page: The pagination token to use to continue listing transactions from a previous call to LookThroughTransactions.
5711
- :type page: str
5712
- :param limit: When paginating, limit the number of returned results to this many. This will default to 1000 if not specified.
5713
- :type limit: int
5714
- :param quotes_scope: The scope containing the quotes with the FX rates used for currency conversion.
5715
- :type quotes_scope: str
5716
- :param slice: When running LookThrough, define this slice as the root slice in the portfolio to look through from.
5717
- :type slice: str
5718
- :param share_class: When running LookThrough, use this along with the slice parameter to specify the root share class in the slice in the portfolio to look through from. The slice parameter is a prerequisite for this parameter to be valid.
5719
- :type share_class: str
5720
- :param use_alternate_scaling_logic: When running LookThrough, set this flag to use the same scaling logic as for LT Holdings
5721
- :type use_alternate_scaling_logic: bool
5722
- :param alternate_effective_at: This effectiveAt field is required when using alternate scaling logic to determine which fund and currency data is used for scaling
5723
- :type alternate_effective_at: str
5838
+ :param instrument_identifier_type: The instrument identifier type. (required)
5839
+ :type instrument_identifier_type: str
5840
+ :param instrument_identifier_value: The value for the given instrument identifier. (required)
5841
+ :type instrument_identifier_value: str
5842
+ :param from_effective_at: The lower bound effective datetime or cut label (inclusive) from which to retrieve the data. There is no lower bound if this is not specified.
5843
+ :type from_effective_at: str
5844
+ :param re_resolve: When set to true, instrument resolution will be attempted for all transactions and holdings for the given identifier and date range. When set to false (default behaviour), instrument resolution will only be attempted for those transactions and holdings that were previously unresolved.
5845
+ :type re_resolve: bool
5846
+ :param request_body: The dictionary with the instrument identifiers to be updated on the transaction and holdings.
5847
+ :type request_body: Dict[str, str]
5724
5848
  :param async_req: Whether to execute the request asynchronously.
5725
5849
  :type async_req: bool, optional
5726
5850
  :param _request_timeout: timeout setting for this request.
@@ -5730,434 +5854,7 @@ class TransactionPortfoliosApi:
5730
5854
  :return: Returns the result object.
5731
5855
  If the method is called asynchronously,
5732
5856
  returns the request thread.
5733
- :rtype: VersionedResourceListOfTransaction
5734
- """
5735
- kwargs['_return_http_data_only'] = True
5736
- if '_preload_content' in kwargs:
5737
- message = "Error! Please call the look_through_transactions_with_http_info method with `_preload_content` instead and obtain raw data from ApiResponse.raw_data" # noqa: E501
5738
- raise ValueError(message)
5739
- if async_req is not None:
5740
- kwargs['async_req'] = async_req
5741
- return self.look_through_transactions_with_http_info(scope, code, from_transaction_date, to_transaction_date, as_at, filter, property_keys, page, limit, quotes_scope, slice, share_class, use_alternate_scaling_logic, alternate_effective_at, **kwargs) # noqa: E501
5742
-
5743
- @validate_arguments
5744
- def look_through_transactions_with_http_info(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the transaction portfolio.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the transaction portfolio. Together with the scope this uniquely identifies the transaction portfolio.")], from_transaction_date : Annotated[Optional[StrictStr], Field(description="The lower bound effective datetime or cut label (inclusive) from which to retrieve transactions. There is no lower bound if this is not specified.")] = None, to_transaction_date : Annotated[Optional[StrictStr], Field(description="The upper bound effective datetime or cut label (inclusive) from which to retrieve transactions. There is no upper bound if this is not specified.")] = None, as_at : Annotated[Optional[datetime], Field(description="The asAt datetime at which to retrieve transactions. Defaults to returning the latest version of each transaction if not specified.")] = None, filter : Annotated[Optional[constr(strict=True, max_length=16384, min_length=0)], Field(description="Expression with which to filter the result set. For example, to return only transactions with a transaction type of 'Buy', specify \"type eq 'Buy'\" For more information about filtering LUSID results, see https://support.lusid.com/knowledgebase/article/KA-01914.")] = None, property_keys : Annotated[Optional[conlist(StrictStr)], Field(description="A list of property keys from the 'Instrument', 'Transaction', \"LegalEntity\" or \"CustodianAccount\" domain to decorate onto transactions. These must have the format {domain}/{scope}/{code}, for example 'Instrument/system/Name' or 'Transaction/strategy/quantsignal'.")] = None, page : Annotated[Optional[constr(strict=True, max_length=500, min_length=1)], Field(description="The pagination token to use to continue listing transactions from a previous call to LookThroughTransactions.")] = None, limit : Annotated[Optional[StrictInt], Field(description="When paginating, limit the number of returned results to this many. This will default to 1000 if not specified.")] = None, quotes_scope : Annotated[Optional[constr(strict=True, max_length=64, min_length=1)], Field(description="The scope containing the quotes with the FX rates used for currency conversion.")] = None, slice : Annotated[Optional[constr(strict=True, max_length=64, min_length=1)], Field(description="When running LookThrough, define this slice as the root slice in the portfolio to look through from.")] = None, share_class : Annotated[Optional[constr(strict=True, max_length=64, min_length=1)], Field(description="When running LookThrough, use this along with the slice parameter to specify the root share class in the slice in the portfolio to look through from. The slice parameter is a prerequisite for this parameter to be valid.")] = None, use_alternate_scaling_logic : Annotated[Optional[StrictBool], Field(description="When running LookThrough, set this flag to use the same scaling logic as for LT Holdings")] = None, alternate_effective_at : Annotated[Optional[StrictStr], Field(description="This effectiveAt field is required when using alternate scaling logic to determine which fund and currency data is used for scaling")] = None, **kwargs) -> ApiResponse: # noqa: E501
5745
- """[EXPERIMENTAL] LookThroughTransactions: Look through transactions # noqa: E501
5746
-
5747
- Retrieve all the transactions that occurred during a particular time interval. If the portfolio is part of a fund as defined in Fund Accounting documents, the transactions returned are the union set of all transactions in portfolios of the same type, in any funds invested in by the portfolio's fund (and any funds invested in from that fund, etc.). The transactions will be scaled according to the ratio of the value of the investment in the fund to the NAV of the fund itself. # noqa: E501
5748
- This method makes a synchronous HTTP request by default. To make an
5749
- asynchronous HTTP request, please pass async_req=True
5750
-
5751
- >>> thread = api.look_through_transactions_with_http_info(scope, code, from_transaction_date, to_transaction_date, as_at, filter, property_keys, page, limit, quotes_scope, slice, share_class, use_alternate_scaling_logic, alternate_effective_at, async_req=True)
5752
- >>> result = thread.get()
5753
-
5754
- :param scope: The scope of the transaction portfolio. (required)
5755
- :type scope: str
5756
- :param code: The code of the transaction portfolio. Together with the scope this uniquely identifies the transaction portfolio. (required)
5757
- :type code: str
5758
- :param from_transaction_date: The lower bound effective datetime or cut label (inclusive) from which to retrieve transactions. There is no lower bound if this is not specified.
5759
- :type from_transaction_date: str
5760
- :param to_transaction_date: The upper bound effective datetime or cut label (inclusive) from which to retrieve transactions. There is no upper bound if this is not specified.
5761
- :type to_transaction_date: str
5762
- :param as_at: The asAt datetime at which to retrieve transactions. Defaults to returning the latest version of each transaction if not specified.
5763
- :type as_at: datetime
5764
- :param filter: Expression with which to filter the result set. For example, to return only transactions with a transaction type of 'Buy', specify \"type eq 'Buy'\" For more information about filtering LUSID results, see https://support.lusid.com/knowledgebase/article/KA-01914.
5765
- :type filter: str
5766
- :param property_keys: A list of property keys from the 'Instrument', 'Transaction', \"LegalEntity\" or \"CustodianAccount\" domain to decorate onto transactions. These must have the format {domain}/{scope}/{code}, for example 'Instrument/system/Name' or 'Transaction/strategy/quantsignal'.
5767
- :type property_keys: List[str]
5768
- :param page: The pagination token to use to continue listing transactions from a previous call to LookThroughTransactions.
5769
- :type page: str
5770
- :param limit: When paginating, limit the number of returned results to this many. This will default to 1000 if not specified.
5771
- :type limit: int
5772
- :param quotes_scope: The scope containing the quotes with the FX rates used for currency conversion.
5773
- :type quotes_scope: str
5774
- :param slice: When running LookThrough, define this slice as the root slice in the portfolio to look through from.
5775
- :type slice: str
5776
- :param share_class: When running LookThrough, use this along with the slice parameter to specify the root share class in the slice in the portfolio to look through from. The slice parameter is a prerequisite for this parameter to be valid.
5777
- :type share_class: str
5778
- :param use_alternate_scaling_logic: When running LookThrough, set this flag to use the same scaling logic as for LT Holdings
5779
- :type use_alternate_scaling_logic: bool
5780
- :param alternate_effective_at: This effectiveAt field is required when using alternate scaling logic to determine which fund and currency data is used for scaling
5781
- :type alternate_effective_at: str
5782
- :param async_req: Whether to execute the request asynchronously.
5783
- :type async_req: bool, optional
5784
- :param _preload_content: if False, the ApiResponse.data will
5785
- be set to none and raw_data will store the
5786
- HTTP response body without reading/decoding.
5787
- Default is True.
5788
- :type _preload_content: bool, optional
5789
- :param _return_http_data_only: response data instead of ApiResponse
5790
- object with status code, headers, etc
5791
- :type _return_http_data_only: bool, optional
5792
- :param _request_timeout: timeout setting for this request. If one
5793
- number provided, it will be total request
5794
- timeout. It can also be a pair (tuple) of
5795
- (connection, read) timeouts.
5796
- :param _request_auth: set to override the auth_settings for an a single
5797
- request; this effectively ignores the authentication
5798
- in the spec for a single request.
5799
- :type _request_auth: dict, optional
5800
- :type _content_type: string, optional: force content-type for the request
5801
- :return: Returns the result object.
5802
- If the method is called asynchronously,
5803
- returns the request thread.
5804
- :rtype: tuple(VersionedResourceListOfTransaction, status_code(int), headers(HTTPHeaderDict))
5805
- """
5806
-
5807
- _params = locals()
5808
-
5809
- _all_params = [
5810
- 'scope',
5811
- 'code',
5812
- 'from_transaction_date',
5813
- 'to_transaction_date',
5814
- 'as_at',
5815
- 'filter',
5816
- 'property_keys',
5817
- 'page',
5818
- 'limit',
5819
- 'quotes_scope',
5820
- 'slice',
5821
- 'share_class',
5822
- 'use_alternate_scaling_logic',
5823
- 'alternate_effective_at'
5824
- ]
5825
- _all_params.extend(
5826
- [
5827
- 'async_req',
5828
- '_return_http_data_only',
5829
- '_preload_content',
5830
- '_request_timeout',
5831
- '_request_auth',
5832
- '_content_type',
5833
- '_headers'
5834
- ]
5835
- )
5836
-
5837
- # validate the arguments
5838
- for _key, _val in _params['kwargs'].items():
5839
- if _key not in _all_params:
5840
- raise ApiTypeError(
5841
- "Got an unexpected keyword argument '%s'"
5842
- " to method look_through_transactions" % _key
5843
- )
5844
- _params[_key] = _val
5845
- del _params['kwargs']
5846
-
5847
- _collection_formats = {}
5848
-
5849
- # process the path parameters
5850
- _path_params = {}
5851
- if _params['scope']:
5852
- _path_params['scope'] = _params['scope']
5853
-
5854
- if _params['code']:
5855
- _path_params['code'] = _params['code']
5856
-
5857
-
5858
- # process the query parameters
5859
- _query_params = []
5860
- if _params.get('from_transaction_date') is not None: # noqa: E501
5861
- _query_params.append(('fromTransactionDate', _params['from_transaction_date']))
5862
-
5863
- if _params.get('to_transaction_date') is not None: # noqa: E501
5864
- _query_params.append(('toTransactionDate', _params['to_transaction_date']))
5865
-
5866
- if _params.get('as_at') is not None: # noqa: E501
5867
- if isinstance(_params['as_at'], datetime):
5868
- _query_params.append(('asAt', _params['as_at'].strftime(self.api_client.configuration.datetime_format)))
5869
- else:
5870
- _query_params.append(('asAt', _params['as_at']))
5871
-
5872
- if _params.get('filter') is not None: # noqa: E501
5873
- _query_params.append(('filter', _params['filter']))
5874
-
5875
- if _params.get('property_keys') is not None: # noqa: E501
5876
- _query_params.append(('propertyKeys', _params['property_keys']))
5877
- _collection_formats['propertyKeys'] = 'multi'
5878
-
5879
- if _params.get('page') is not None: # noqa: E501
5880
- _query_params.append(('page', _params['page']))
5881
-
5882
- if _params.get('limit') is not None: # noqa: E501
5883
- _query_params.append(('limit', _params['limit']))
5884
-
5885
- if _params.get('quotes_scope') is not None: # noqa: E501
5886
- _query_params.append(('quotesScope', _params['quotes_scope']))
5887
-
5888
- if _params.get('slice') is not None: # noqa: E501
5889
- _query_params.append(('slice', _params['slice']))
5890
-
5891
- if _params.get('share_class') is not None: # noqa: E501
5892
- _query_params.append(('shareClass', _params['share_class']))
5893
-
5894
- if _params.get('use_alternate_scaling_logic') is not None: # noqa: E501
5895
- _query_params.append(('useAlternateScalingLogic', _params['use_alternate_scaling_logic']))
5896
-
5897
- if _params.get('alternate_effective_at') is not None: # noqa: E501
5898
- _query_params.append(('alternateEffectiveAt', _params['alternate_effective_at']))
5899
-
5900
- # process the header parameters
5901
- _header_params = dict(_params.get('_headers', {}))
5902
- # process the form parameters
5903
- _form_params = []
5904
- _files = {}
5905
- # process the body parameter
5906
- _body_params = None
5907
- # set the HTTP header `Accept`
5908
- _header_params['Accept'] = self.api_client.select_header_accept(
5909
- ['text/plain', 'application/json', 'text/json']) # noqa: E501
5910
-
5911
- # authentication setting
5912
- _auth_settings = ['oauth2'] # noqa: E501
5913
-
5914
- _response_types_map = {
5915
- '200': "VersionedResourceListOfTransaction",
5916
- '400': "LusidValidationProblemDetails",
5917
- }
5918
-
5919
- return self.api_client.call_api(
5920
- '/api/transactionportfolios/{scope}/{code}/transactions/$lookthrough', 'GET',
5921
- _path_params,
5922
- _query_params,
5923
- _header_params,
5924
- body=_body_params,
5925
- post_params=_form_params,
5926
- files=_files,
5927
- response_types_map=_response_types_map,
5928
- auth_settings=_auth_settings,
5929
- async_req=_params.get('async_req'),
5930
- _return_http_data_only=_params.get('_return_http_data_only'), # noqa: E501
5931
- _preload_content=_params.get('_preload_content', True),
5932
- _request_timeout=_params.get('_request_timeout'),
5933
- collection_formats=_collection_formats,
5934
- _request_auth=_params.get('_request_auth'))
5935
-
5936
- @overload
5937
- async def patch_portfolio_details(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the transaction portfolio.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the transaction portfolio. Together with the scope this uniquely identifies the transaction portfolio.")], operation : Annotated[conlist(Operation), Field(..., description="The patch document.")], effective_at : Annotated[Optional[StrictStr], Field(description="The effective datetime or cut label at which the updated or inserted details should become valid. Defaults to the current LUSID system datetime if not specified. Note that this will affect all bitemporal entities in the request, but will not be used for any perpetual entities.")] = None, **kwargs) -> PortfolioDetails: # noqa: E501
5938
- ...
5939
-
5940
- @overload
5941
- def patch_portfolio_details(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the transaction portfolio.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the transaction portfolio. Together with the scope this uniquely identifies the transaction portfolio.")], operation : Annotated[conlist(Operation), Field(..., description="The patch document.")], effective_at : Annotated[Optional[StrictStr], Field(description="The effective datetime or cut label at which the updated or inserted details should become valid. Defaults to the current LUSID system datetime if not specified. Note that this will affect all bitemporal entities in the request, but will not be used for any perpetual entities.")] = None, async_req: Optional[bool]=True, **kwargs) -> PortfolioDetails: # noqa: E501
5942
- ...
5943
-
5944
- @validate_arguments
5945
- def patch_portfolio_details(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the transaction portfolio.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the transaction portfolio. Together with the scope this uniquely identifies the transaction portfolio.")], operation : Annotated[conlist(Operation), Field(..., description="The patch document.")], effective_at : Annotated[Optional[StrictStr], Field(description="The effective datetime or cut label at which the updated or inserted details should become valid. Defaults to the current LUSID system datetime if not specified. Note that this will affect all bitemporal entities in the request, but will not be used for any perpetual entities.")] = None, async_req: Optional[bool]=None, **kwargs) -> Union[PortfolioDetails, Awaitable[PortfolioDetails]]: # noqa: E501
5946
- """[EARLY ACCESS] PatchPortfolioDetails: Patch portfolio details # noqa: E501
5947
-
5948
- Create or update certain details for a particular transaction portfolio. The behaviour is defined by the JSON Patch specification. Note that not all elements of a transaction portfolio definition are modifiable once it has been created due to the potential implications for data already stored. Currently supported properties are: SubHoldingKeys, BaseCurrency, AmortisationMethod # noqa: E501
5949
- This method makes a synchronous HTTP request by default. To make an
5950
- asynchronous HTTP request, please pass async_req=True
5951
-
5952
- >>> thread = api.patch_portfolio_details(scope, code, operation, effective_at, async_req=True)
5953
- >>> result = thread.get()
5954
-
5955
- :param scope: The scope of the transaction portfolio. (required)
5956
- :type scope: str
5957
- :param code: The code of the transaction portfolio. Together with the scope this uniquely identifies the transaction portfolio. (required)
5958
- :type code: str
5959
- :param operation: The patch document. (required)
5960
- :type operation: List[Operation]
5961
- :param effective_at: The effective datetime or cut label at which the updated or inserted details should become valid. Defaults to the current LUSID system datetime if not specified. Note that this will affect all bitemporal entities in the request, but will not be used for any perpetual entities.
5962
- :type effective_at: str
5963
- :param async_req: Whether to execute the request asynchronously.
5964
- :type async_req: bool, optional
5965
- :param _request_timeout: timeout setting for this request.
5966
- If one number provided, it will be total request
5967
- timeout. It can also be a pair (tuple) of
5968
- (connection, read) timeouts.
5969
- :return: Returns the result object.
5970
- If the method is called asynchronously,
5971
- returns the request thread.
5972
- :rtype: PortfolioDetails
5973
- """
5974
- kwargs['_return_http_data_only'] = True
5975
- if '_preload_content' in kwargs:
5976
- message = "Error! Please call the patch_portfolio_details_with_http_info method with `_preload_content` instead and obtain raw data from ApiResponse.raw_data" # noqa: E501
5977
- raise ValueError(message)
5978
- if async_req is not None:
5979
- kwargs['async_req'] = async_req
5980
- return self.patch_portfolio_details_with_http_info(scope, code, operation, effective_at, **kwargs) # noqa: E501
5981
-
5982
- @validate_arguments
5983
- def patch_portfolio_details_with_http_info(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the transaction portfolio.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the transaction portfolio. Together with the scope this uniquely identifies the transaction portfolio.")], operation : Annotated[conlist(Operation), Field(..., description="The patch document.")], effective_at : Annotated[Optional[StrictStr], Field(description="The effective datetime or cut label at which the updated or inserted details should become valid. Defaults to the current LUSID system datetime if not specified. Note that this will affect all bitemporal entities in the request, but will not be used for any perpetual entities.")] = None, **kwargs) -> ApiResponse: # noqa: E501
5984
- """[EARLY ACCESS] PatchPortfolioDetails: Patch portfolio details # noqa: E501
5985
-
5986
- Create or update certain details for a particular transaction portfolio. The behaviour is defined by the JSON Patch specification. Note that not all elements of a transaction portfolio definition are modifiable once it has been created due to the potential implications for data already stored. Currently supported properties are: SubHoldingKeys, BaseCurrency, AmortisationMethod # noqa: E501
5987
- This method makes a synchronous HTTP request by default. To make an
5988
- asynchronous HTTP request, please pass async_req=True
5989
-
5990
- >>> thread = api.patch_portfolio_details_with_http_info(scope, code, operation, effective_at, async_req=True)
5991
- >>> result = thread.get()
5992
-
5993
- :param scope: The scope of the transaction portfolio. (required)
5994
- :type scope: str
5995
- :param code: The code of the transaction portfolio. Together with the scope this uniquely identifies the transaction portfolio. (required)
5996
- :type code: str
5997
- :param operation: The patch document. (required)
5998
- :type operation: List[Operation]
5999
- :param effective_at: The effective datetime or cut label at which the updated or inserted details should become valid. Defaults to the current LUSID system datetime if not specified. Note that this will affect all bitemporal entities in the request, but will not be used for any perpetual entities.
6000
- :type effective_at: str
6001
- :param async_req: Whether to execute the request asynchronously.
6002
- :type async_req: bool, optional
6003
- :param _preload_content: if False, the ApiResponse.data will
6004
- be set to none and raw_data will store the
6005
- HTTP response body without reading/decoding.
6006
- Default is True.
6007
- :type _preload_content: bool, optional
6008
- :param _return_http_data_only: response data instead of ApiResponse
6009
- object with status code, headers, etc
6010
- :type _return_http_data_only: bool, optional
6011
- :param _request_timeout: timeout setting for this request. If one
6012
- number provided, it will be total request
6013
- timeout. It can also be a pair (tuple) of
6014
- (connection, read) timeouts.
6015
- :param _request_auth: set to override the auth_settings for an a single
6016
- request; this effectively ignores the authentication
6017
- in the spec for a single request.
6018
- :type _request_auth: dict, optional
6019
- :type _content_type: string, optional: force content-type for the request
6020
- :return: Returns the result object.
6021
- If the method is called asynchronously,
6022
- returns the request thread.
6023
- :rtype: tuple(PortfolioDetails, status_code(int), headers(HTTPHeaderDict))
6024
- """
6025
-
6026
- _params = locals()
6027
-
6028
- _all_params = [
6029
- 'scope',
6030
- 'code',
6031
- 'operation',
6032
- 'effective_at'
6033
- ]
6034
- _all_params.extend(
6035
- [
6036
- 'async_req',
6037
- '_return_http_data_only',
6038
- '_preload_content',
6039
- '_request_timeout',
6040
- '_request_auth',
6041
- '_content_type',
6042
- '_headers'
6043
- ]
6044
- )
6045
-
6046
- # validate the arguments
6047
- for _key, _val in _params['kwargs'].items():
6048
- if _key not in _all_params:
6049
- raise ApiTypeError(
6050
- "Got an unexpected keyword argument '%s'"
6051
- " to method patch_portfolio_details" % _key
6052
- )
6053
- _params[_key] = _val
6054
- del _params['kwargs']
6055
-
6056
- _collection_formats = {}
6057
-
6058
- # process the path parameters
6059
- _path_params = {}
6060
- if _params['scope']:
6061
- _path_params['scope'] = _params['scope']
6062
-
6063
- if _params['code']:
6064
- _path_params['code'] = _params['code']
6065
-
6066
-
6067
- # process the query parameters
6068
- _query_params = []
6069
- if _params.get('effective_at') is not None: # noqa: E501
6070
- _query_params.append(('effectiveAt', _params['effective_at']))
6071
-
6072
- # process the header parameters
6073
- _header_params = dict(_params.get('_headers', {}))
6074
- # process the form parameters
6075
- _form_params = []
6076
- _files = {}
6077
- # process the body parameter
6078
- _body_params = None
6079
- if _params['operation'] is not None:
6080
- _body_params = _params['operation']
6081
-
6082
- # set the HTTP header `Accept`
6083
- _header_params['Accept'] = self.api_client.select_header_accept(
6084
- ['text/plain', 'application/json', 'text/json']) # noqa: E501
6085
-
6086
- # set the HTTP header `Content-Type`
6087
- _content_types_list = _params.get('_content_type',
6088
- self.api_client.select_header_content_type(
6089
- ['application/json-patch+json', 'application/json', 'text/json', 'application/*+json']))
6090
- if _content_types_list:
6091
- _header_params['Content-Type'] = _content_types_list
6092
-
6093
- # authentication setting
6094
- _auth_settings = ['oauth2'] # noqa: E501
6095
-
6096
- _response_types_map = {
6097
- '200': "PortfolioDetails",
6098
- '400': "LusidValidationProblemDetails",
6099
- }
6100
-
6101
- return self.api_client.call_api(
6102
- '/api/transactionportfolios/{scope}/{code}/details', 'PATCH',
6103
- _path_params,
6104
- _query_params,
6105
- _header_params,
6106
- body=_body_params,
6107
- post_params=_form_params,
6108
- files=_files,
6109
- response_types_map=_response_types_map,
6110
- auth_settings=_auth_settings,
6111
- async_req=_params.get('async_req'),
6112
- _return_http_data_only=_params.get('_return_http_data_only'), # noqa: E501
6113
- _preload_content=_params.get('_preload_content', True),
6114
- _request_timeout=_params.get('_request_timeout'),
6115
- collection_formats=_collection_formats,
6116
- _request_auth=_params.get('_request_auth'))
6117
-
6118
- @overload
6119
- async def resolve_instrument(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the transaction portfolio.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the transaction portfolio. Together with the scope this uniquely identifies the transaction portfolio.")], instrument_identifier_type : Annotated[StrictStr, Field(..., description="The instrument identifier type.")], instrument_identifier_value : Annotated[StrictStr, Field(..., description="The value for the given instrument identifier.")], from_effective_at : Annotated[Optional[StrictStr], Field(description="The lower bound effective datetime or cut label (inclusive) from which to retrieve the data. There is no lower bound if this is not specified.")] = None, re_resolve : Annotated[Optional[StrictBool], Field(description="When set to true, instrument resolution will be attempted for all transactions and holdings for the given identifier and date range. When set to false (default behaviour), instrument resolution will only be attempted for those transactions and holdings that were previously unresolved.")] = None, request_body : Annotated[Optional[Dict[str, StrictStr]], Field(description="The dictionary with the instrument identifiers to be updated on the transaction and holdings.")] = None, **kwargs) -> UpsertPortfolioTransactionsResponse: # noqa: E501
6120
- ...
6121
-
6122
- @overload
6123
- def resolve_instrument(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the transaction portfolio.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the transaction portfolio. Together with the scope this uniquely identifies the transaction portfolio.")], instrument_identifier_type : Annotated[StrictStr, Field(..., description="The instrument identifier type.")], instrument_identifier_value : Annotated[StrictStr, Field(..., description="The value for the given instrument identifier.")], from_effective_at : Annotated[Optional[StrictStr], Field(description="The lower bound effective datetime or cut label (inclusive) from which to retrieve the data. There is no lower bound if this is not specified.")] = None, re_resolve : Annotated[Optional[StrictBool], Field(description="When set to true, instrument resolution will be attempted for all transactions and holdings for the given identifier and date range. When set to false (default behaviour), instrument resolution will only be attempted for those transactions and holdings that were previously unresolved.")] = None, request_body : Annotated[Optional[Dict[str, StrictStr]], Field(description="The dictionary with the instrument identifiers to be updated on the transaction and holdings.")] = None, async_req: Optional[bool]=True, **kwargs) -> UpsertPortfolioTransactionsResponse: # noqa: E501
6124
- ...
6125
-
6126
- @validate_arguments
6127
- def resolve_instrument(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the transaction portfolio.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the transaction portfolio. Together with the scope this uniquely identifies the transaction portfolio.")], instrument_identifier_type : Annotated[StrictStr, Field(..., description="The instrument identifier type.")], instrument_identifier_value : Annotated[StrictStr, Field(..., description="The value for the given instrument identifier.")], from_effective_at : Annotated[Optional[StrictStr], Field(description="The lower bound effective datetime or cut label (inclusive) from which to retrieve the data. There is no lower bound if this is not specified.")] = None, re_resolve : Annotated[Optional[StrictBool], Field(description="When set to true, instrument resolution will be attempted for all transactions and holdings for the given identifier and date range. When set to false (default behaviour), instrument resolution will only be attempted for those transactions and holdings that were previously unresolved.")] = None, request_body : Annotated[Optional[Dict[str, StrictStr]], Field(description="The dictionary with the instrument identifiers to be updated on the transaction and holdings.")] = None, async_req: Optional[bool]=None, **kwargs) -> Union[UpsertPortfolioTransactionsResponse, Awaitable[UpsertPortfolioTransactionsResponse]]: # noqa: E501
6128
- """[EARLY ACCESS] ResolveInstrument: Resolve instrument # noqa: E501
6129
-
6130
- Try to resolve the instrument for transaction and holdings for a given instrument identifier and a specified period of time. Also update the instrument identifiers with the given instrument identifiers collection. # noqa: E501
6131
- This method makes a synchronous HTTP request by default. To make an
6132
- asynchronous HTTP request, please pass async_req=True
6133
-
6134
- >>> thread = api.resolve_instrument(scope, code, instrument_identifier_type, instrument_identifier_value, from_effective_at, re_resolve, request_body, async_req=True)
6135
- >>> result = thread.get()
6136
-
6137
- :param scope: The scope of the transaction portfolio. (required)
6138
- :type scope: str
6139
- :param code: The code of the transaction portfolio. Together with the scope this uniquely identifies the transaction portfolio. (required)
6140
- :type code: str
6141
- :param instrument_identifier_type: The instrument identifier type. (required)
6142
- :type instrument_identifier_type: str
6143
- :param instrument_identifier_value: The value for the given instrument identifier. (required)
6144
- :type instrument_identifier_value: str
6145
- :param from_effective_at: The lower bound effective datetime or cut label (inclusive) from which to retrieve the data. There is no lower bound if this is not specified.
6146
- :type from_effective_at: str
6147
- :param re_resolve: When set to true, instrument resolution will be attempted for all transactions and holdings for the given identifier and date range. When set to false (default behaviour), instrument resolution will only be attempted for those transactions and holdings that were previously unresolved.
6148
- :type re_resolve: bool
6149
- :param request_body: The dictionary with the instrument identifiers to be updated on the transaction and holdings.
6150
- :type request_body: Dict[str, str]
6151
- :param async_req: Whether to execute the request asynchronously.
6152
- :type async_req: bool, optional
6153
- :param _request_timeout: timeout setting for this request.
6154
- If one number provided, it will be total request
6155
- timeout. It can also be a pair (tuple) of
6156
- (connection, read) timeouts.
6157
- :return: Returns the result object.
6158
- If the method is called asynchronously,
6159
- returns the request thread.
6160
- :rtype: UpsertPortfolioTransactionsResponse
5857
+ :rtype: UpsertPortfolioTransactionsResponse
6161
5858
  """
6162
5859
  kwargs['_return_http_data_only'] = True
6163
5860
  if '_preload_content' in kwargs:
@@ -7241,22 +6938,22 @@ class TransactionPortfoliosApi:
7241
6938
  _request_auth=_params.get('_request_auth'))
7242
6939
 
7243
6940
  @overload
7244
- async def upsert_transactions(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the transaction portfolio.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the transaction portfolio. Together with the scope this uniquely identifies the transaction portfolio.")], transaction_request : Annotated[conlist(TransactionRequest), Field(..., description="A list of transactions to be created or updated.")], **kwargs) -> UpsertPortfolioTransactionsResponse: # noqa: E501
6941
+ async def upsert_transactions(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the transaction portfolio.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the transaction portfolio. Together with the scope this uniquely identifies the transaction portfolio.")], transaction_request : Annotated[conlist(TransactionRequest), Field(..., description="A list of transactions to be created or updated.")], preserve_properties : Annotated[Optional[StrictBool], Field(description="If set to false, the entire property set will be overwritten by the provided properties. If not specified or set to true, only the properties provided will be updated.")] = None, **kwargs) -> UpsertPortfolioTransactionsResponse: # noqa: E501
7245
6942
  ...
7246
6943
 
7247
6944
  @overload
7248
- def upsert_transactions(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the transaction portfolio.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the transaction portfolio. Together with the scope this uniquely identifies the transaction portfolio.")], transaction_request : Annotated[conlist(TransactionRequest), Field(..., description="A list of transactions to be created or updated.")], async_req: Optional[bool]=True, **kwargs) -> UpsertPortfolioTransactionsResponse: # noqa: E501
6945
+ def upsert_transactions(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the transaction portfolio.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the transaction portfolio. Together with the scope this uniquely identifies the transaction portfolio.")], transaction_request : Annotated[conlist(TransactionRequest), Field(..., description="A list of transactions to be created or updated.")], preserve_properties : Annotated[Optional[StrictBool], Field(description="If set to false, the entire property set will be overwritten by the provided properties. If not specified or set to true, only the properties provided will be updated.")] = None, async_req: Optional[bool]=True, **kwargs) -> UpsertPortfolioTransactionsResponse: # noqa: E501
7249
6946
  ...
7250
6947
 
7251
6948
  @validate_arguments
7252
- def upsert_transactions(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the transaction portfolio.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the transaction portfolio. Together with the scope this uniquely identifies the transaction portfolio.")], transaction_request : Annotated[conlist(TransactionRequest), Field(..., description="A list of transactions to be created or updated.")], async_req: Optional[bool]=None, **kwargs) -> Union[UpsertPortfolioTransactionsResponse, Awaitable[UpsertPortfolioTransactionsResponse]]: # noqa: E501
6949
+ def upsert_transactions(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the transaction portfolio.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the transaction portfolio. Together with the scope this uniquely identifies the transaction portfolio.")], transaction_request : Annotated[conlist(TransactionRequest), Field(..., description="A list of transactions to be created or updated.")], preserve_properties : Annotated[Optional[StrictBool], Field(description="If set to false, the entire property set will be overwritten by the provided properties. If not specified or set to true, only the properties provided will be updated.")] = None, async_req: Optional[bool]=None, **kwargs) -> Union[UpsertPortfolioTransactionsResponse, Awaitable[UpsertPortfolioTransactionsResponse]]: # noqa: E501
7253
6950
  """UpsertTransactions: Upsert transactions # noqa: E501
7254
6951
 
7255
6952
  Create or update transactions in the transaction portfolio. A transaction will be updated if it already exists and created if it does not. The maximum number of transactions that this method can upsert per request is 10,000. # noqa: E501
7256
6953
  This method makes a synchronous HTTP request by default. To make an
7257
6954
  asynchronous HTTP request, please pass async_req=True
7258
6955
 
7259
- >>> thread = api.upsert_transactions(scope, code, transaction_request, async_req=True)
6956
+ >>> thread = api.upsert_transactions(scope, code, transaction_request, preserve_properties, async_req=True)
7260
6957
  >>> result = thread.get()
7261
6958
 
7262
6959
  :param scope: The scope of the transaction portfolio. (required)
@@ -7265,6 +6962,8 @@ class TransactionPortfoliosApi:
7265
6962
  :type code: str
7266
6963
  :param transaction_request: A list of transactions to be created or updated. (required)
7267
6964
  :type transaction_request: List[TransactionRequest]
6965
+ :param preserve_properties: If set to false, the entire property set will be overwritten by the provided properties. If not specified or set to true, only the properties provided will be updated.
6966
+ :type preserve_properties: bool
7268
6967
  :param async_req: Whether to execute the request asynchronously.
7269
6968
  :type async_req: bool, optional
7270
6969
  :param _request_timeout: timeout setting for this request.
@@ -7282,17 +6981,17 @@ class TransactionPortfoliosApi:
7282
6981
  raise ValueError(message)
7283
6982
  if async_req is not None:
7284
6983
  kwargs['async_req'] = async_req
7285
- return self.upsert_transactions_with_http_info(scope, code, transaction_request, **kwargs) # noqa: E501
6984
+ return self.upsert_transactions_with_http_info(scope, code, transaction_request, preserve_properties, **kwargs) # noqa: E501
7286
6985
 
7287
6986
  @validate_arguments
7288
- def upsert_transactions_with_http_info(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the transaction portfolio.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the transaction portfolio. Together with the scope this uniquely identifies the transaction portfolio.")], transaction_request : Annotated[conlist(TransactionRequest), Field(..., description="A list of transactions to be created or updated.")], **kwargs) -> ApiResponse: # noqa: E501
6987
+ def upsert_transactions_with_http_info(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the transaction portfolio.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the transaction portfolio. Together with the scope this uniquely identifies the transaction portfolio.")], transaction_request : Annotated[conlist(TransactionRequest), Field(..., description="A list of transactions to be created or updated.")], preserve_properties : Annotated[Optional[StrictBool], Field(description="If set to false, the entire property set will be overwritten by the provided properties. If not specified or set to true, only the properties provided will be updated.")] = None, **kwargs) -> ApiResponse: # noqa: E501
7289
6988
  """UpsertTransactions: Upsert transactions # noqa: E501
7290
6989
 
7291
6990
  Create or update transactions in the transaction portfolio. A transaction will be updated if it already exists and created if it does not. The maximum number of transactions that this method can upsert per request is 10,000. # noqa: E501
7292
6991
  This method makes a synchronous HTTP request by default. To make an
7293
6992
  asynchronous HTTP request, please pass async_req=True
7294
6993
 
7295
- >>> thread = api.upsert_transactions_with_http_info(scope, code, transaction_request, async_req=True)
6994
+ >>> thread = api.upsert_transactions_with_http_info(scope, code, transaction_request, preserve_properties, async_req=True)
7296
6995
  >>> result = thread.get()
7297
6996
 
7298
6997
  :param scope: The scope of the transaction portfolio. (required)
@@ -7301,6 +7000,8 @@ class TransactionPortfoliosApi:
7301
7000
  :type code: str
7302
7001
  :param transaction_request: A list of transactions to be created or updated. (required)
7303
7002
  :type transaction_request: List[TransactionRequest]
7003
+ :param preserve_properties: If set to false, the entire property set will be overwritten by the provided properties. If not specified or set to true, only the properties provided will be updated.
7004
+ :type preserve_properties: bool
7304
7005
  :param async_req: Whether to execute the request asynchronously.
7305
7006
  :type async_req: bool, optional
7306
7007
  :param _preload_content: if False, the ApiResponse.data will
@@ -7331,7 +7032,8 @@ class TransactionPortfoliosApi:
7331
7032
  _all_params = [
7332
7033
  'scope',
7333
7034
  'code',
7334
- 'transaction_request'
7035
+ 'transaction_request',
7036
+ 'preserve_properties'
7335
7037
  ]
7336
7038
  _all_params.extend(
7337
7039
  [
@@ -7368,6 +7070,9 @@ class TransactionPortfoliosApi:
7368
7070
 
7369
7071
  # process the query parameters
7370
7072
  _query_params = []
7073
+ if _params.get('preserve_properties') is not None: # noqa: E501
7074
+ _query_params.append(('preserveProperties', _params['preserve_properties']))
7075
+
7371
7076
  # process the header parameters
7372
7077
  _header_params = dict(_params.get('_headers', {}))
7373
7078
  # process the form parameters