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
lusid/api/funds_api.py ADDED
@@ -0,0 +1,1119 @@
1
+ # coding: utf-8
2
+
3
+ """
4
+ LUSID API
5
+
6
+ FINBOURNE Technology # noqa: E501
7
+
8
+ Contact: info@finbourne.com
9
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
10
+
11
+ Do not edit the class manually.
12
+ """
13
+
14
+
15
+ import re # noqa: F401
16
+ import io
17
+ import warnings
18
+
19
+ from pydantic import validate_arguments, ValidationError
20
+ from typing import overload, Optional, Union, Awaitable
21
+
22
+ from typing_extensions import Annotated
23
+ from datetime import datetime
24
+
25
+ from pydantic import Field, StrictStr, conint, conlist, constr, validator
26
+
27
+ from typing import Dict, Optional
28
+
29
+ from lusid.models.deleted_entity_response import DeletedEntityResponse
30
+ from lusid.models.fund import Fund
31
+ from lusid.models.fund_properties import FundProperties
32
+ from lusid.models.fund_request import FundRequest
33
+ from lusid.models.model_property import ModelProperty
34
+ from lusid.models.paged_resource_list_of_fund import PagedResourceListOfFund
35
+ from lusid.models.set_share_class_instruments_request import SetShareClassInstrumentsRequest
36
+
37
+ from lusid.api_client import ApiClient
38
+ from lusid.api_response import ApiResponse
39
+ from lusid.exceptions import ( # noqa: F401
40
+ ApiTypeError,
41
+ ApiValueError
42
+ )
43
+
44
+
45
+ class FundsApi:
46
+ """NOTE: This class is auto generated by OpenAPI Generator
47
+ Ref: https://openapi-generator.tech
48
+
49
+ Do not edit the class manually.
50
+ """
51
+
52
+ def __init__(self, api_client=None) -> None:
53
+ if api_client is None:
54
+ api_client = ApiClient.get_default()
55
+ self.api_client = api_client
56
+
57
+ @overload
58
+ async def create_fund(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the Fund.")], fund_request : Annotated[FundRequest, Field(..., description="The definition of the Fund.")], **kwargs) -> Fund: # noqa: E501
59
+ ...
60
+
61
+ @overload
62
+ def create_fund(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the Fund.")], fund_request : Annotated[FundRequest, Field(..., description="The definition of the Fund.")], async_req: Optional[bool]=True, **kwargs) -> Fund: # noqa: E501
63
+ ...
64
+
65
+ @validate_arguments
66
+ def create_fund(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the Fund.")], fund_request : Annotated[FundRequest, Field(..., description="The definition of the Fund.")], async_req: Optional[bool]=None, **kwargs) -> Union[Fund, Awaitable[Fund]]: # noqa: E501
67
+ """[EXPERIMENTAL] CreateFund: Create a Fund. # noqa: E501
68
+
69
+ Create the given Fund. # noqa: E501
70
+ This method makes a synchronous HTTP request by default. To make an
71
+ asynchronous HTTP request, please pass async_req=True
72
+
73
+ >>> thread = api.create_fund(scope, fund_request, async_req=True)
74
+ >>> result = thread.get()
75
+
76
+ :param scope: The scope of the Fund. (required)
77
+ :type scope: str
78
+ :param fund_request: The definition of the Fund. (required)
79
+ :type fund_request: FundRequest
80
+ :param async_req: Whether to execute the request asynchronously.
81
+ :type async_req: bool, optional
82
+ :param _request_timeout: timeout setting for this request.
83
+ If one number provided, it will be total request
84
+ timeout. It can also be a pair (tuple) of
85
+ (connection, read) timeouts.
86
+ :return: Returns the result object.
87
+ If the method is called asynchronously,
88
+ returns the request thread.
89
+ :rtype: Fund
90
+ """
91
+ kwargs['_return_http_data_only'] = True
92
+ if '_preload_content' in kwargs:
93
+ message = "Error! Please call the create_fund_with_http_info method with `_preload_content` instead and obtain raw data from ApiResponse.raw_data" # noqa: E501
94
+ raise ValueError(message)
95
+ if async_req is not None:
96
+ kwargs['async_req'] = async_req
97
+ return self.create_fund_with_http_info(scope, fund_request, **kwargs) # noqa: E501
98
+
99
+ @validate_arguments
100
+ def create_fund_with_http_info(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the Fund.")], fund_request : Annotated[FundRequest, Field(..., description="The definition of the Fund.")], **kwargs) -> ApiResponse: # noqa: E501
101
+ """[EXPERIMENTAL] CreateFund: Create a Fund. # noqa: E501
102
+
103
+ Create the given Fund. # noqa: E501
104
+ This method makes a synchronous HTTP request by default. To make an
105
+ asynchronous HTTP request, please pass async_req=True
106
+
107
+ >>> thread = api.create_fund_with_http_info(scope, fund_request, async_req=True)
108
+ >>> result = thread.get()
109
+
110
+ :param scope: The scope of the Fund. (required)
111
+ :type scope: str
112
+ :param fund_request: The definition of the Fund. (required)
113
+ :type fund_request: FundRequest
114
+ :param async_req: Whether to execute the request asynchronously.
115
+ :type async_req: bool, optional
116
+ :param _preload_content: if False, the ApiResponse.data will
117
+ be set to none and raw_data will store the
118
+ HTTP response body without reading/decoding.
119
+ Default is True.
120
+ :type _preload_content: bool, optional
121
+ :param _return_http_data_only: response data instead of ApiResponse
122
+ object with status code, headers, etc
123
+ :type _return_http_data_only: bool, optional
124
+ :param _request_timeout: timeout setting for this request. If one
125
+ number provided, it will be total request
126
+ timeout. It can also be a pair (tuple) of
127
+ (connection, read) timeouts.
128
+ :param _request_auth: set to override the auth_settings for an a single
129
+ request; this effectively ignores the authentication
130
+ in the spec for a single request.
131
+ :type _request_auth: dict, optional
132
+ :type _content_type: string, optional: force content-type for the request
133
+ :return: Returns the result object.
134
+ If the method is called asynchronously,
135
+ returns the request thread.
136
+ :rtype: tuple(Fund, status_code(int), headers(HTTPHeaderDict))
137
+ """
138
+
139
+ _params = locals()
140
+
141
+ _all_params = [
142
+ 'scope',
143
+ 'fund_request'
144
+ ]
145
+ _all_params.extend(
146
+ [
147
+ 'async_req',
148
+ '_return_http_data_only',
149
+ '_preload_content',
150
+ '_request_timeout',
151
+ '_request_auth',
152
+ '_content_type',
153
+ '_headers'
154
+ ]
155
+ )
156
+
157
+ # validate the arguments
158
+ for _key, _val in _params['kwargs'].items():
159
+ if _key not in _all_params:
160
+ raise ApiTypeError(
161
+ "Got an unexpected keyword argument '%s'"
162
+ " to method create_fund" % _key
163
+ )
164
+ _params[_key] = _val
165
+ del _params['kwargs']
166
+
167
+ _collection_formats = {}
168
+
169
+ # process the path parameters
170
+ _path_params = {}
171
+ if _params['scope']:
172
+ _path_params['scope'] = _params['scope']
173
+
174
+
175
+ # process the query parameters
176
+ _query_params = []
177
+ # process the header parameters
178
+ _header_params = dict(_params.get('_headers', {}))
179
+ # process the form parameters
180
+ _form_params = []
181
+ _files = {}
182
+ # process the body parameter
183
+ _body_params = None
184
+ if _params['fund_request'] is not None:
185
+ _body_params = _params['fund_request']
186
+
187
+ # set the HTTP header `Accept`
188
+ _header_params['Accept'] = self.api_client.select_header_accept(
189
+ ['text/plain', 'application/json', 'text/json']) # noqa: E501
190
+
191
+ # set the HTTP header `Content-Type`
192
+ _content_types_list = _params.get('_content_type',
193
+ self.api_client.select_header_content_type(
194
+ ['application/json-patch+json', 'application/json', 'text/json', 'application/*+json']))
195
+ if _content_types_list:
196
+ _header_params['Content-Type'] = _content_types_list
197
+
198
+ # authentication setting
199
+ _auth_settings = ['oauth2'] # noqa: E501
200
+
201
+ _response_types_map = {
202
+ '201': "Fund",
203
+ '400': "LusidValidationProblemDetails",
204
+ }
205
+
206
+ return self.api_client.call_api(
207
+ '/api/funds/{scope}', 'POST',
208
+ _path_params,
209
+ _query_params,
210
+ _header_params,
211
+ body=_body_params,
212
+ post_params=_form_params,
213
+ files=_files,
214
+ response_types_map=_response_types_map,
215
+ auth_settings=_auth_settings,
216
+ async_req=_params.get('async_req'),
217
+ _return_http_data_only=_params.get('_return_http_data_only'), # noqa: E501
218
+ _preload_content=_params.get('_preload_content', True),
219
+ _request_timeout=_params.get('_request_timeout'),
220
+ collection_formats=_collection_formats,
221
+ _request_auth=_params.get('_request_auth'))
222
+
223
+ @overload
224
+ async def delete_fund(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the Fund to be deleted.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the Fund to be deleted. Together with the scope this uniquely identifies the Fund.")], **kwargs) -> DeletedEntityResponse: # noqa: E501
225
+ ...
226
+
227
+ @overload
228
+ def delete_fund(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the Fund to be deleted.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the Fund to be deleted. Together with the scope this uniquely identifies the Fund.")], async_req: Optional[bool]=True, **kwargs) -> DeletedEntityResponse: # noqa: E501
229
+ ...
230
+
231
+ @validate_arguments
232
+ def delete_fund(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the Fund to be deleted.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the Fund to be deleted. Together with the scope this uniquely identifies the Fund.")], async_req: Optional[bool]=None, **kwargs) -> Union[DeletedEntityResponse, Awaitable[DeletedEntityResponse]]: # noqa: E501
233
+ """[EXPERIMENTAL] DeleteFund: Delete a Fund. # noqa: E501
234
+
235
+ Delete the given Fund. # noqa: E501
236
+ This method makes a synchronous HTTP request by default. To make an
237
+ asynchronous HTTP request, please pass async_req=True
238
+
239
+ >>> thread = api.delete_fund(scope, code, async_req=True)
240
+ >>> result = thread.get()
241
+
242
+ :param scope: The scope of the Fund to be deleted. (required)
243
+ :type scope: str
244
+ :param code: The code of the Fund to be deleted. Together with the scope this uniquely identifies the Fund. (required)
245
+ :type code: str
246
+ :param async_req: Whether to execute the request asynchronously.
247
+ :type async_req: bool, optional
248
+ :param _request_timeout: timeout setting for this request.
249
+ If one number provided, it will be total request
250
+ timeout. It can also be a pair (tuple) of
251
+ (connection, read) timeouts.
252
+ :return: Returns the result object.
253
+ If the method is called asynchronously,
254
+ returns the request thread.
255
+ :rtype: DeletedEntityResponse
256
+ """
257
+ kwargs['_return_http_data_only'] = True
258
+ if '_preload_content' in kwargs:
259
+ message = "Error! Please call the delete_fund_with_http_info method with `_preload_content` instead and obtain raw data from ApiResponse.raw_data" # noqa: E501
260
+ raise ValueError(message)
261
+ if async_req is not None:
262
+ kwargs['async_req'] = async_req
263
+ return self.delete_fund_with_http_info(scope, code, **kwargs) # noqa: E501
264
+
265
+ @validate_arguments
266
+ def delete_fund_with_http_info(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the Fund to be deleted.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the Fund to be deleted. Together with the scope this uniquely identifies the Fund.")], **kwargs) -> ApiResponse: # noqa: E501
267
+ """[EXPERIMENTAL] DeleteFund: Delete a Fund. # noqa: E501
268
+
269
+ Delete the given Fund. # noqa: E501
270
+ This method makes a synchronous HTTP request by default. To make an
271
+ asynchronous HTTP request, please pass async_req=True
272
+
273
+ >>> thread = api.delete_fund_with_http_info(scope, code, async_req=True)
274
+ >>> result = thread.get()
275
+
276
+ :param scope: The scope of the Fund to be deleted. (required)
277
+ :type scope: str
278
+ :param code: The code of the Fund to be deleted. Together with the scope this uniquely identifies the Fund. (required)
279
+ :type code: str
280
+ :param async_req: Whether to execute the request asynchronously.
281
+ :type async_req: bool, optional
282
+ :param _preload_content: if False, the ApiResponse.data will
283
+ be set to none and raw_data will store the
284
+ HTTP response body without reading/decoding.
285
+ Default is True.
286
+ :type _preload_content: bool, optional
287
+ :param _return_http_data_only: response data instead of ApiResponse
288
+ object with status code, headers, etc
289
+ :type _return_http_data_only: bool, optional
290
+ :param _request_timeout: timeout setting for this request. If one
291
+ number provided, it will be total request
292
+ timeout. It can also be a pair (tuple) of
293
+ (connection, read) timeouts.
294
+ :param _request_auth: set to override the auth_settings for an a single
295
+ request; this effectively ignores the authentication
296
+ in the spec for a single request.
297
+ :type _request_auth: dict, optional
298
+ :type _content_type: string, optional: force content-type for the request
299
+ :return: Returns the result object.
300
+ If the method is called asynchronously,
301
+ returns the request thread.
302
+ :rtype: tuple(DeletedEntityResponse, status_code(int), headers(HTTPHeaderDict))
303
+ """
304
+
305
+ _params = locals()
306
+
307
+ _all_params = [
308
+ 'scope',
309
+ 'code'
310
+ ]
311
+ _all_params.extend(
312
+ [
313
+ 'async_req',
314
+ '_return_http_data_only',
315
+ '_preload_content',
316
+ '_request_timeout',
317
+ '_request_auth',
318
+ '_content_type',
319
+ '_headers'
320
+ ]
321
+ )
322
+
323
+ # validate the arguments
324
+ for _key, _val in _params['kwargs'].items():
325
+ if _key not in _all_params:
326
+ raise ApiTypeError(
327
+ "Got an unexpected keyword argument '%s'"
328
+ " to method delete_fund" % _key
329
+ )
330
+ _params[_key] = _val
331
+ del _params['kwargs']
332
+
333
+ _collection_formats = {}
334
+
335
+ # process the path parameters
336
+ _path_params = {}
337
+ if _params['scope']:
338
+ _path_params['scope'] = _params['scope']
339
+
340
+ if _params['code']:
341
+ _path_params['code'] = _params['code']
342
+
343
+
344
+ # process the query parameters
345
+ _query_params = []
346
+ # process the header parameters
347
+ _header_params = dict(_params.get('_headers', {}))
348
+ # process the form parameters
349
+ _form_params = []
350
+ _files = {}
351
+ # process the body parameter
352
+ _body_params = None
353
+ # set the HTTP header `Accept`
354
+ _header_params['Accept'] = self.api_client.select_header_accept(
355
+ ['text/plain', 'application/json', 'text/json']) # noqa: E501
356
+
357
+ # authentication setting
358
+ _auth_settings = ['oauth2'] # noqa: E501
359
+
360
+ _response_types_map = {
361
+ '200': "DeletedEntityResponse",
362
+ '400': "LusidValidationProblemDetails",
363
+ }
364
+
365
+ return self.api_client.call_api(
366
+ '/api/funds/{scope}/{code}', 'DELETE',
367
+ _path_params,
368
+ _query_params,
369
+ _header_params,
370
+ body=_body_params,
371
+ post_params=_form_params,
372
+ files=_files,
373
+ response_types_map=_response_types_map,
374
+ auth_settings=_auth_settings,
375
+ async_req=_params.get('async_req'),
376
+ _return_http_data_only=_params.get('_return_http_data_only'), # noqa: E501
377
+ _preload_content=_params.get('_preload_content', True),
378
+ _request_timeout=_params.get('_request_timeout'),
379
+ collection_formats=_collection_formats,
380
+ _request_auth=_params.get('_request_auth'))
381
+
382
+ @overload
383
+ async def get_fund(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the Fund.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the Fund. Together with the scope this uniquely identifies the Fund.")], effective_at : Annotated[Optional[StrictStr], Field(description="The effective datetime or cut label at which to retrieve the Fund properties. 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 Fund definition. Defaults to returning the latest version of the Fund definition if not specified.")] = None, property_keys : Annotated[Optional[conlist(StrictStr)], Field(description="A list of property keys from the 'Fund' domain to decorate onto the Fund. These must take the format {domain}/{scope}/{code}, for example 'Fund/Manager/Id'. If no properties are specified, then no properties will be returned.")] = None, **kwargs) -> Fund: # noqa: E501
384
+ ...
385
+
386
+ @overload
387
+ def get_fund(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the Fund.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the Fund. Together with the scope this uniquely identifies the Fund.")], effective_at : Annotated[Optional[StrictStr], Field(description="The effective datetime or cut label at which to retrieve the Fund properties. 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 Fund definition. Defaults to returning the latest version of the Fund definition if not specified.")] = None, property_keys : Annotated[Optional[conlist(StrictStr)], Field(description="A list of property keys from the 'Fund' domain to decorate onto the Fund. These must take the format {domain}/{scope}/{code}, for example 'Fund/Manager/Id'. If no properties are specified, then no properties will be returned.")] = None, async_req: Optional[bool]=True, **kwargs) -> Fund: # noqa: E501
388
+ ...
389
+
390
+ @validate_arguments
391
+ def get_fund(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the Fund.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the Fund. Together with the scope this uniquely identifies the Fund.")], effective_at : Annotated[Optional[StrictStr], Field(description="The effective datetime or cut label at which to retrieve the Fund properties. 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 Fund definition. Defaults to returning the latest version of the Fund definition if not specified.")] = None, property_keys : Annotated[Optional[conlist(StrictStr)], Field(description="A list of property keys from the 'Fund' domain to decorate onto the Fund. These must take the format {domain}/{scope}/{code}, for example 'Fund/Manager/Id'. If no properties are specified, then no properties will be returned.")] = None, async_req: Optional[bool]=None, **kwargs) -> Union[Fund, Awaitable[Fund]]: # noqa: E501
392
+ """[EXPERIMENTAL] GetFund: Get a Fund. # noqa: E501
393
+
394
+ Retrieve the definition of a particular Fund. # noqa: E501
395
+ This method makes a synchronous HTTP request by default. To make an
396
+ asynchronous HTTP request, please pass async_req=True
397
+
398
+ >>> thread = api.get_fund(scope, code, effective_at, as_at, property_keys, async_req=True)
399
+ >>> result = thread.get()
400
+
401
+ :param scope: The scope of the Fund. (required)
402
+ :type scope: str
403
+ :param code: The code of the Fund. Together with the scope this uniquely identifies the Fund. (required)
404
+ :type code: str
405
+ :param effective_at: The effective datetime or cut label at which to retrieve the Fund properties. Defaults to the current LUSID system datetime if not specified.
406
+ :type effective_at: str
407
+ :param as_at: The asAt datetime at which to retrieve the Fund definition. Defaults to returning the latest version of the Fund definition if not specified.
408
+ :type as_at: datetime
409
+ :param property_keys: A list of property keys from the 'Fund' domain to decorate onto the Fund. These must take the format {domain}/{scope}/{code}, for example 'Fund/Manager/Id'. If no properties are specified, then no properties will be returned.
410
+ :type property_keys: List[str]
411
+ :param async_req: Whether to execute the request asynchronously.
412
+ :type async_req: bool, optional
413
+ :param _request_timeout: timeout setting for this request.
414
+ If one number provided, it will be total request
415
+ timeout. It can also be a pair (tuple) of
416
+ (connection, read) timeouts.
417
+ :return: Returns the result object.
418
+ If the method is called asynchronously,
419
+ returns the request thread.
420
+ :rtype: Fund
421
+ """
422
+ kwargs['_return_http_data_only'] = True
423
+ if '_preload_content' in kwargs:
424
+ message = "Error! Please call the get_fund_with_http_info method with `_preload_content` instead and obtain raw data from ApiResponse.raw_data" # noqa: E501
425
+ raise ValueError(message)
426
+ if async_req is not None:
427
+ kwargs['async_req'] = async_req
428
+ return self.get_fund_with_http_info(scope, code, effective_at, as_at, property_keys, **kwargs) # noqa: E501
429
+
430
+ @validate_arguments
431
+ def get_fund_with_http_info(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the Fund.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the Fund. Together with the scope this uniquely identifies the Fund.")], effective_at : Annotated[Optional[StrictStr], Field(description="The effective datetime or cut label at which to retrieve the Fund properties. 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 Fund definition. Defaults to returning the latest version of the Fund definition if not specified.")] = None, property_keys : Annotated[Optional[conlist(StrictStr)], Field(description="A list of property keys from the 'Fund' domain to decorate onto the Fund. These must take the format {domain}/{scope}/{code}, for example 'Fund/Manager/Id'. If no properties are specified, then no properties will be returned.")] = None, **kwargs) -> ApiResponse: # noqa: E501
432
+ """[EXPERIMENTAL] GetFund: Get a Fund. # noqa: E501
433
+
434
+ Retrieve the definition of a particular Fund. # noqa: E501
435
+ This method makes a synchronous HTTP request by default. To make an
436
+ asynchronous HTTP request, please pass async_req=True
437
+
438
+ >>> thread = api.get_fund_with_http_info(scope, code, effective_at, as_at, property_keys, async_req=True)
439
+ >>> result = thread.get()
440
+
441
+ :param scope: The scope of the Fund. (required)
442
+ :type scope: str
443
+ :param code: The code of the Fund. Together with the scope this uniquely identifies the Fund. (required)
444
+ :type code: str
445
+ :param effective_at: The effective datetime or cut label at which to retrieve the Fund properties. Defaults to the current LUSID system datetime if not specified.
446
+ :type effective_at: str
447
+ :param as_at: The asAt datetime at which to retrieve the Fund definition. Defaults to returning the latest version of the Fund definition if not specified.
448
+ :type as_at: datetime
449
+ :param property_keys: A list of property keys from the 'Fund' domain to decorate onto the Fund. These must take the format {domain}/{scope}/{code}, for example 'Fund/Manager/Id'. If no properties are specified, then no properties will be returned.
450
+ :type property_keys: List[str]
451
+ :param async_req: Whether to execute the request asynchronously.
452
+ :type async_req: bool, optional
453
+ :param _preload_content: if False, the ApiResponse.data will
454
+ be set to none and raw_data will store the
455
+ HTTP response body without reading/decoding.
456
+ Default is True.
457
+ :type _preload_content: bool, optional
458
+ :param _return_http_data_only: response data instead of ApiResponse
459
+ object with status code, headers, etc
460
+ :type _return_http_data_only: bool, optional
461
+ :param _request_timeout: timeout setting for this request. If one
462
+ number provided, it will be total request
463
+ timeout. It can also be a pair (tuple) of
464
+ (connection, read) timeouts.
465
+ :param _request_auth: set to override the auth_settings for an a single
466
+ request; this effectively ignores the authentication
467
+ in the spec for a single request.
468
+ :type _request_auth: dict, optional
469
+ :type _content_type: string, optional: force content-type for the request
470
+ :return: Returns the result object.
471
+ If the method is called asynchronously,
472
+ returns the request thread.
473
+ :rtype: tuple(Fund, status_code(int), headers(HTTPHeaderDict))
474
+ """
475
+
476
+ _params = locals()
477
+
478
+ _all_params = [
479
+ 'scope',
480
+ 'code',
481
+ 'effective_at',
482
+ 'as_at',
483
+ 'property_keys'
484
+ ]
485
+ _all_params.extend(
486
+ [
487
+ 'async_req',
488
+ '_return_http_data_only',
489
+ '_preload_content',
490
+ '_request_timeout',
491
+ '_request_auth',
492
+ '_content_type',
493
+ '_headers'
494
+ ]
495
+ )
496
+
497
+ # validate the arguments
498
+ for _key, _val in _params['kwargs'].items():
499
+ if _key not in _all_params:
500
+ raise ApiTypeError(
501
+ "Got an unexpected keyword argument '%s'"
502
+ " to method get_fund" % _key
503
+ )
504
+ _params[_key] = _val
505
+ del _params['kwargs']
506
+
507
+ _collection_formats = {}
508
+
509
+ # process the path parameters
510
+ _path_params = {}
511
+ if _params['scope']:
512
+ _path_params['scope'] = _params['scope']
513
+
514
+ if _params['code']:
515
+ _path_params['code'] = _params['code']
516
+
517
+
518
+ # process the query parameters
519
+ _query_params = []
520
+ if _params.get('effective_at') is not None: # noqa: E501
521
+ _query_params.append(('effectiveAt', _params['effective_at']))
522
+
523
+ if _params.get('as_at') is not None: # noqa: E501
524
+ if isinstance(_params['as_at'], datetime):
525
+ _query_params.append(('asAt', _params['as_at'].strftime(self.api_client.configuration.datetime_format)))
526
+ else:
527
+ _query_params.append(('asAt', _params['as_at']))
528
+
529
+ if _params.get('property_keys') is not None: # noqa: E501
530
+ _query_params.append(('propertyKeys', _params['property_keys']))
531
+ _collection_formats['propertyKeys'] = 'multi'
532
+
533
+ # process the header parameters
534
+ _header_params = dict(_params.get('_headers', {}))
535
+ # process the form parameters
536
+ _form_params = []
537
+ _files = {}
538
+ # process the body parameter
539
+ _body_params = None
540
+ # set the HTTP header `Accept`
541
+ _header_params['Accept'] = self.api_client.select_header_accept(
542
+ ['text/plain', 'application/json', 'text/json']) # noqa: E501
543
+
544
+ # authentication setting
545
+ _auth_settings = ['oauth2'] # noqa: E501
546
+
547
+ _response_types_map = {
548
+ '200': "Fund",
549
+ '400': "LusidValidationProblemDetails",
550
+ }
551
+
552
+ return self.api_client.call_api(
553
+ '/api/funds/{scope}/{code}', 'GET',
554
+ _path_params,
555
+ _query_params,
556
+ _header_params,
557
+ body=_body_params,
558
+ post_params=_form_params,
559
+ files=_files,
560
+ response_types_map=_response_types_map,
561
+ auth_settings=_auth_settings,
562
+ async_req=_params.get('async_req'),
563
+ _return_http_data_only=_params.get('_return_http_data_only'), # noqa: E501
564
+ _preload_content=_params.get('_preload_content', True),
565
+ _request_timeout=_params.get('_request_timeout'),
566
+ collection_formats=_collection_formats,
567
+ _request_auth=_params.get('_request_auth'))
568
+
569
+ @overload
570
+ async def list_funds(self, effective_at : Annotated[Optional[StrictStr], Field(description="The effective datetime or cut label at which to list the TimeVariant properties for the Funds. Defaults to the current LUSID system datetime if not specified.")] = None, as_at : Annotated[Optional[datetime], Field(description="The asAt datetime at which to list the Funds. Defaults to returning the latest version of each Fund 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 Funds; 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 Fund type, specify \"id.Code eq 'Fund1'\". For more information about filtering results, see https://support.lusid.com/knowledgebase/article/KA-01914.")] = 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, property_keys : Annotated[Optional[conlist(StrictStr)], Field(description="A list of property keys from the 'Fund' domain to decorate onto each Fund. These must take the format {domain}/{scope}/{code}, for example 'Fund/Manager/Id'.")] = None, **kwargs) -> PagedResourceListOfFund: # noqa: E501
571
+ ...
572
+
573
+ @overload
574
+ def list_funds(self, effective_at : Annotated[Optional[StrictStr], Field(description="The effective datetime or cut label at which to list the TimeVariant properties for the Funds. Defaults to the current LUSID system datetime if not specified.")] = None, as_at : Annotated[Optional[datetime], Field(description="The asAt datetime at which to list the Funds. Defaults to returning the latest version of each Fund 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 Funds; 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 Fund type, specify \"id.Code eq 'Fund1'\". For more information about filtering results, see https://support.lusid.com/knowledgebase/article/KA-01914.")] = 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, property_keys : Annotated[Optional[conlist(StrictStr)], Field(description="A list of property keys from the 'Fund' domain to decorate onto each Fund. These must take the format {domain}/{scope}/{code}, for example 'Fund/Manager/Id'.")] = None, async_req: Optional[bool]=True, **kwargs) -> PagedResourceListOfFund: # noqa: E501
575
+ ...
576
+
577
+ @validate_arguments
578
+ def list_funds(self, effective_at : Annotated[Optional[StrictStr], Field(description="The effective datetime or cut label at which to list the TimeVariant properties for the Funds. Defaults to the current LUSID system datetime if not specified.")] = None, as_at : Annotated[Optional[datetime], Field(description="The asAt datetime at which to list the Funds. Defaults to returning the latest version of each Fund 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 Funds; 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 Fund type, specify \"id.Code eq 'Fund1'\". For more information about filtering results, see https://support.lusid.com/knowledgebase/article/KA-01914.")] = 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, property_keys : Annotated[Optional[conlist(StrictStr)], Field(description="A list of property keys from the 'Fund' domain to decorate onto each Fund. These must take the format {domain}/{scope}/{code}, for example 'Fund/Manager/Id'.")] = None, async_req: Optional[bool]=None, **kwargs) -> Union[PagedResourceListOfFund, Awaitable[PagedResourceListOfFund]]: # noqa: E501
579
+ """[EXPERIMENTAL] ListFunds: List Funds. # noqa: E501
580
+
581
+ List all the Funds matching particular criteria. # noqa: E501
582
+ This method makes a synchronous HTTP request by default. To make an
583
+ asynchronous HTTP request, please pass async_req=True
584
+
585
+ >>> thread = api.list_funds(effective_at, as_at, page, limit, filter, sort_by, property_keys, async_req=True)
586
+ >>> result = thread.get()
587
+
588
+ :param effective_at: The effective datetime or cut label at which to list the TimeVariant properties for the Funds. Defaults to the current LUSID system datetime if not specified.
589
+ :type effective_at: str
590
+ :param as_at: The asAt datetime at which to list the Funds. Defaults to returning the latest version of each Fund if not specified.
591
+ :type as_at: datetime
592
+ :param page: The pagination token to use to continue listing Funds; 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.
593
+ :type page: str
594
+ :param limit: When paginating, limit the results to this number. Defaults to 100 if not specified.
595
+ :type limit: int
596
+ :param filter: Expression to filter the results. For example, to filter on the Fund type, specify \"id.Code eq 'Fund1'\". For more information about filtering results, see https://support.lusid.com/knowledgebase/article/KA-01914.
597
+ :type filter: str
598
+ :param sort_by: A list of field names or properties to sort by, each suffixed by \" ASC\" or \" DESC\"
599
+ :type sort_by: List[str]
600
+ :param property_keys: A list of property keys from the 'Fund' domain to decorate onto each Fund. These must take the format {domain}/{scope}/{code}, for example 'Fund/Manager/Id'.
601
+ :type property_keys: List[str]
602
+ :param async_req: Whether to execute the request asynchronously.
603
+ :type async_req: bool, optional
604
+ :param _request_timeout: timeout setting for this request.
605
+ If one number provided, it will be total request
606
+ timeout. It can also be a pair (tuple) of
607
+ (connection, read) timeouts.
608
+ :return: Returns the result object.
609
+ If the method is called asynchronously,
610
+ returns the request thread.
611
+ :rtype: PagedResourceListOfFund
612
+ """
613
+ kwargs['_return_http_data_only'] = True
614
+ if '_preload_content' in kwargs:
615
+ message = "Error! Please call the list_funds_with_http_info method with `_preload_content` instead and obtain raw data from ApiResponse.raw_data" # noqa: E501
616
+ raise ValueError(message)
617
+ if async_req is not None:
618
+ kwargs['async_req'] = async_req
619
+ return self.list_funds_with_http_info(effective_at, as_at, page, limit, filter, sort_by, property_keys, **kwargs) # noqa: E501
620
+
621
+ @validate_arguments
622
+ def list_funds_with_http_info(self, effective_at : Annotated[Optional[StrictStr], Field(description="The effective datetime or cut label at which to list the TimeVariant properties for the Funds. Defaults to the current LUSID system datetime if not specified.")] = None, as_at : Annotated[Optional[datetime], Field(description="The asAt datetime at which to list the Funds. Defaults to returning the latest version of each Fund 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 Funds; 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 Fund type, specify \"id.Code eq 'Fund1'\". For more information about filtering results, see https://support.lusid.com/knowledgebase/article/KA-01914.")] = 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, property_keys : Annotated[Optional[conlist(StrictStr)], Field(description="A list of property keys from the 'Fund' domain to decorate onto each Fund. These must take the format {domain}/{scope}/{code}, for example 'Fund/Manager/Id'.")] = None, **kwargs) -> ApiResponse: # noqa: E501
623
+ """[EXPERIMENTAL] ListFunds: List Funds. # noqa: E501
624
+
625
+ List all the Funds matching particular criteria. # noqa: E501
626
+ This method makes a synchronous HTTP request by default. To make an
627
+ asynchronous HTTP request, please pass async_req=True
628
+
629
+ >>> thread = api.list_funds_with_http_info(effective_at, as_at, page, limit, filter, sort_by, property_keys, async_req=True)
630
+ >>> result = thread.get()
631
+
632
+ :param effective_at: The effective datetime or cut label at which to list the TimeVariant properties for the Funds. Defaults to the current LUSID system datetime if not specified.
633
+ :type effective_at: str
634
+ :param as_at: The asAt datetime at which to list the Funds. Defaults to returning the latest version of each Fund if not specified.
635
+ :type as_at: datetime
636
+ :param page: The pagination token to use to continue listing Funds; 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.
637
+ :type page: str
638
+ :param limit: When paginating, limit the results to this number. Defaults to 100 if not specified.
639
+ :type limit: int
640
+ :param filter: Expression to filter the results. For example, to filter on the Fund type, specify \"id.Code eq 'Fund1'\". For more information about filtering results, see https://support.lusid.com/knowledgebase/article/KA-01914.
641
+ :type filter: str
642
+ :param sort_by: A list of field names or properties to sort by, each suffixed by \" ASC\" or \" DESC\"
643
+ :type sort_by: List[str]
644
+ :param property_keys: A list of property keys from the 'Fund' domain to decorate onto each Fund. These must take the format {domain}/{scope}/{code}, for example 'Fund/Manager/Id'.
645
+ :type property_keys: List[str]
646
+ :param async_req: Whether to execute the request asynchronously.
647
+ :type async_req: bool, optional
648
+ :param _preload_content: if False, the ApiResponse.data will
649
+ be set to none and raw_data will store the
650
+ HTTP response body without reading/decoding.
651
+ Default is True.
652
+ :type _preload_content: bool, optional
653
+ :param _return_http_data_only: response data instead of ApiResponse
654
+ object with status code, headers, etc
655
+ :type _return_http_data_only: bool, optional
656
+ :param _request_timeout: timeout setting for this request. If one
657
+ number provided, it will be total request
658
+ timeout. It can also be a pair (tuple) of
659
+ (connection, read) timeouts.
660
+ :param _request_auth: set to override the auth_settings for an a single
661
+ request; this effectively ignores the authentication
662
+ in the spec for a single request.
663
+ :type _request_auth: dict, optional
664
+ :type _content_type: string, optional: force content-type for the request
665
+ :return: Returns the result object.
666
+ If the method is called asynchronously,
667
+ returns the request thread.
668
+ :rtype: tuple(PagedResourceListOfFund, status_code(int), headers(HTTPHeaderDict))
669
+ """
670
+
671
+ _params = locals()
672
+
673
+ _all_params = [
674
+ 'effective_at',
675
+ 'as_at',
676
+ 'page',
677
+ 'limit',
678
+ 'filter',
679
+ 'sort_by',
680
+ 'property_keys'
681
+ ]
682
+ _all_params.extend(
683
+ [
684
+ 'async_req',
685
+ '_return_http_data_only',
686
+ '_preload_content',
687
+ '_request_timeout',
688
+ '_request_auth',
689
+ '_content_type',
690
+ '_headers'
691
+ ]
692
+ )
693
+
694
+ # validate the arguments
695
+ for _key, _val in _params['kwargs'].items():
696
+ if _key not in _all_params:
697
+ raise ApiTypeError(
698
+ "Got an unexpected keyword argument '%s'"
699
+ " to method list_funds" % _key
700
+ )
701
+ _params[_key] = _val
702
+ del _params['kwargs']
703
+
704
+ _collection_formats = {}
705
+
706
+ # process the path parameters
707
+ _path_params = {}
708
+
709
+ # process the query parameters
710
+ _query_params = []
711
+ if _params.get('effective_at') is not None: # noqa: E501
712
+ _query_params.append(('effectiveAt', _params['effective_at']))
713
+
714
+ if _params.get('as_at') is not None: # noqa: E501
715
+ if isinstance(_params['as_at'], datetime):
716
+ _query_params.append(('asAt', _params['as_at'].strftime(self.api_client.configuration.datetime_format)))
717
+ else:
718
+ _query_params.append(('asAt', _params['as_at']))
719
+
720
+ if _params.get('page') is not None: # noqa: E501
721
+ _query_params.append(('page', _params['page']))
722
+
723
+ if _params.get('limit') is not None: # noqa: E501
724
+ _query_params.append(('limit', _params['limit']))
725
+
726
+ if _params.get('filter') is not None: # noqa: E501
727
+ _query_params.append(('filter', _params['filter']))
728
+
729
+ if _params.get('sort_by') is not None: # noqa: E501
730
+ _query_params.append(('sortBy', _params['sort_by']))
731
+ _collection_formats['sortBy'] = 'multi'
732
+
733
+ if _params.get('property_keys') is not None: # noqa: E501
734
+ _query_params.append(('propertyKeys', _params['property_keys']))
735
+ _collection_formats['propertyKeys'] = 'multi'
736
+
737
+ # process the header parameters
738
+ _header_params = dict(_params.get('_headers', {}))
739
+ # process the form parameters
740
+ _form_params = []
741
+ _files = {}
742
+ # process the body parameter
743
+ _body_params = None
744
+ # set the HTTP header `Accept`
745
+ _header_params['Accept'] = self.api_client.select_header_accept(
746
+ ['text/plain', 'application/json', 'text/json']) # noqa: E501
747
+
748
+ # authentication setting
749
+ _auth_settings = ['oauth2'] # noqa: E501
750
+
751
+ _response_types_map = {
752
+ '200': "PagedResourceListOfFund",
753
+ '400': "LusidValidationProblemDetails",
754
+ }
755
+
756
+ return self.api_client.call_api(
757
+ '/api/funds', 'GET',
758
+ _path_params,
759
+ _query_params,
760
+ _header_params,
761
+ body=_body_params,
762
+ post_params=_form_params,
763
+ files=_files,
764
+ response_types_map=_response_types_map,
765
+ auth_settings=_auth_settings,
766
+ async_req=_params.get('async_req'),
767
+ _return_http_data_only=_params.get('_return_http_data_only'), # noqa: E501
768
+ _preload_content=_params.get('_preload_content', True),
769
+ _request_timeout=_params.get('_request_timeout'),
770
+ collection_formats=_collection_formats,
771
+ _request_auth=_params.get('_request_auth'))
772
+
773
+ @overload
774
+ async def set_share_class_instruments(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the Fund.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the Fund.")], set_share_class_instruments_request : Annotated[SetShareClassInstrumentsRequest, Field(..., description="The scopes and instrument identifiers for the instruments to be set.")], **kwargs) -> Fund: # noqa: E501
775
+ ...
776
+
777
+ @overload
778
+ def set_share_class_instruments(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the Fund.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the Fund.")], set_share_class_instruments_request : Annotated[SetShareClassInstrumentsRequest, Field(..., description="The scopes and instrument identifiers for the instruments to be set.")], async_req: Optional[bool]=True, **kwargs) -> Fund: # noqa: E501
779
+ ...
780
+
781
+ @validate_arguments
782
+ def set_share_class_instruments(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the Fund.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the Fund.")], set_share_class_instruments_request : Annotated[SetShareClassInstrumentsRequest, Field(..., description="The scopes and instrument identifiers for the instruments to be set.")], async_req: Optional[bool]=None, **kwargs) -> Union[Fund, Awaitable[Fund]]: # noqa: E501
783
+ """[EXPERIMENTAL] SetShareClassInstruments: Set the ShareClass Instruments on a fund. # noqa: E501
784
+
785
+ Update the ShareClass Instruments on an existing fund with the set of instruments provided. # noqa: E501
786
+ This method makes a synchronous HTTP request by default. To make an
787
+ asynchronous HTTP request, please pass async_req=True
788
+
789
+ >>> thread = api.set_share_class_instruments(scope, code, set_share_class_instruments_request, async_req=True)
790
+ >>> result = thread.get()
791
+
792
+ :param scope: The scope of the Fund. (required)
793
+ :type scope: str
794
+ :param code: The code of the Fund. (required)
795
+ :type code: str
796
+ :param set_share_class_instruments_request: The scopes and instrument identifiers for the instruments to be set. (required)
797
+ :type set_share_class_instruments_request: SetShareClassInstrumentsRequest
798
+ :param async_req: Whether to execute the request asynchronously.
799
+ :type async_req: bool, optional
800
+ :param _request_timeout: timeout setting for this request.
801
+ If one number provided, it will be total request
802
+ timeout. It can also be a pair (tuple) of
803
+ (connection, read) timeouts.
804
+ :return: Returns the result object.
805
+ If the method is called asynchronously,
806
+ returns the request thread.
807
+ :rtype: Fund
808
+ """
809
+ kwargs['_return_http_data_only'] = True
810
+ if '_preload_content' in kwargs:
811
+ message = "Error! Please call the set_share_class_instruments_with_http_info method with `_preload_content` instead and obtain raw data from ApiResponse.raw_data" # noqa: E501
812
+ raise ValueError(message)
813
+ if async_req is not None:
814
+ kwargs['async_req'] = async_req
815
+ return self.set_share_class_instruments_with_http_info(scope, code, set_share_class_instruments_request, **kwargs) # noqa: E501
816
+
817
+ @validate_arguments
818
+ def set_share_class_instruments_with_http_info(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the Fund.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the Fund.")], set_share_class_instruments_request : Annotated[SetShareClassInstrumentsRequest, Field(..., description="The scopes and instrument identifiers for the instruments to be set.")], **kwargs) -> ApiResponse: # noqa: E501
819
+ """[EXPERIMENTAL] SetShareClassInstruments: Set the ShareClass Instruments on a fund. # noqa: E501
820
+
821
+ Update the ShareClass Instruments on an existing fund with the set of instruments provided. # noqa: E501
822
+ This method makes a synchronous HTTP request by default. To make an
823
+ asynchronous HTTP request, please pass async_req=True
824
+
825
+ >>> thread = api.set_share_class_instruments_with_http_info(scope, code, set_share_class_instruments_request, async_req=True)
826
+ >>> result = thread.get()
827
+
828
+ :param scope: The scope of the Fund. (required)
829
+ :type scope: str
830
+ :param code: The code of the Fund. (required)
831
+ :type code: str
832
+ :param set_share_class_instruments_request: The scopes and instrument identifiers for the instruments to be set. (required)
833
+ :type set_share_class_instruments_request: SetShareClassInstrumentsRequest
834
+ :param async_req: Whether to execute the request asynchronously.
835
+ :type async_req: bool, optional
836
+ :param _preload_content: if False, the ApiResponse.data will
837
+ be set to none and raw_data will store the
838
+ HTTP response body without reading/decoding.
839
+ Default is True.
840
+ :type _preload_content: bool, optional
841
+ :param _return_http_data_only: response data instead of ApiResponse
842
+ object with status code, headers, etc
843
+ :type _return_http_data_only: bool, optional
844
+ :param _request_timeout: timeout setting for this request. If one
845
+ number provided, it will be total request
846
+ timeout. It can also be a pair (tuple) of
847
+ (connection, read) timeouts.
848
+ :param _request_auth: set to override the auth_settings for an a single
849
+ request; this effectively ignores the authentication
850
+ in the spec for a single request.
851
+ :type _request_auth: dict, optional
852
+ :type _content_type: string, optional: force content-type for the request
853
+ :return: Returns the result object.
854
+ If the method is called asynchronously,
855
+ returns the request thread.
856
+ :rtype: tuple(Fund, status_code(int), headers(HTTPHeaderDict))
857
+ """
858
+
859
+ _params = locals()
860
+
861
+ _all_params = [
862
+ 'scope',
863
+ 'code',
864
+ 'set_share_class_instruments_request'
865
+ ]
866
+ _all_params.extend(
867
+ [
868
+ 'async_req',
869
+ '_return_http_data_only',
870
+ '_preload_content',
871
+ '_request_timeout',
872
+ '_request_auth',
873
+ '_content_type',
874
+ '_headers'
875
+ ]
876
+ )
877
+
878
+ # validate the arguments
879
+ for _key, _val in _params['kwargs'].items():
880
+ if _key not in _all_params:
881
+ raise ApiTypeError(
882
+ "Got an unexpected keyword argument '%s'"
883
+ " to method set_share_class_instruments" % _key
884
+ )
885
+ _params[_key] = _val
886
+ del _params['kwargs']
887
+
888
+ _collection_formats = {}
889
+
890
+ # process the path parameters
891
+ _path_params = {}
892
+ if _params['scope']:
893
+ _path_params['scope'] = _params['scope']
894
+
895
+ if _params['code']:
896
+ _path_params['code'] = _params['code']
897
+
898
+
899
+ # process the query parameters
900
+ _query_params = []
901
+ # process the header parameters
902
+ _header_params = dict(_params.get('_headers', {}))
903
+ # process the form parameters
904
+ _form_params = []
905
+ _files = {}
906
+ # process the body parameter
907
+ _body_params = None
908
+ if _params['set_share_class_instruments_request'] is not None:
909
+ _body_params = _params['set_share_class_instruments_request']
910
+
911
+ # set the HTTP header `Accept`
912
+ _header_params['Accept'] = self.api_client.select_header_accept(
913
+ ['text/plain', 'application/json', 'text/json']) # noqa: E501
914
+
915
+ # set the HTTP header `Content-Type`
916
+ _content_types_list = _params.get('_content_type',
917
+ self.api_client.select_header_content_type(
918
+ ['application/json-patch+json', 'application/json', 'text/json', 'application/*+json']))
919
+ if _content_types_list:
920
+ _header_params['Content-Type'] = _content_types_list
921
+
922
+ # authentication setting
923
+ _auth_settings = ['oauth2'] # noqa: E501
924
+
925
+ _response_types_map = {
926
+ '201': "Fund",
927
+ '400': "LusidValidationProblemDetails",
928
+ }
929
+
930
+ return self.api_client.call_api(
931
+ '/api/funds/{scope}/{code}/shareclasses', 'POST',
932
+ _path_params,
933
+ _query_params,
934
+ _header_params,
935
+ body=_body_params,
936
+ post_params=_form_params,
937
+ files=_files,
938
+ response_types_map=_response_types_map,
939
+ auth_settings=_auth_settings,
940
+ async_req=_params.get('async_req'),
941
+ _return_http_data_only=_params.get('_return_http_data_only'), # noqa: E501
942
+ _preload_content=_params.get('_preload_content', True),
943
+ _request_timeout=_params.get('_request_timeout'),
944
+ collection_formats=_collection_formats,
945
+ _request_auth=_params.get('_request_auth'))
946
+
947
+ @overload
948
+ async def upsert_fund_properties(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the Fund to update or insert the properties onto.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the Fund to update or insert the properties onto. Together with the scope this uniquely identifies the Fund.")], request_body : Annotated[Optional[Dict[str, ModelProperty]], Field(description="The properties to be updated or inserted onto the Fund. Each property in the request must be keyed by its unique property key. This has the format {domain}/{scope}/{code} e.g. \"Fund/Manager/Id\".")] = None, **kwargs) -> FundProperties: # noqa: E501
949
+ ...
950
+
951
+ @overload
952
+ def upsert_fund_properties(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the Fund to update or insert the properties onto.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the Fund to update or insert the properties onto. Together with the scope this uniquely identifies the Fund.")], request_body : Annotated[Optional[Dict[str, ModelProperty]], Field(description="The properties to be updated or inserted onto the Fund. Each property in the request must be keyed by its unique property key. This has the format {domain}/{scope}/{code} e.g. \"Fund/Manager/Id\".")] = None, async_req: Optional[bool]=True, **kwargs) -> FundProperties: # noqa: E501
953
+ ...
954
+
955
+ @validate_arguments
956
+ def upsert_fund_properties(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the Fund to update or insert the properties onto.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the Fund to update or insert the properties onto. Together with the scope this uniquely identifies the Fund.")], request_body : Annotated[Optional[Dict[str, ModelProperty]], Field(description="The properties to be updated or inserted onto the Fund. Each property in the request must be keyed by its unique property key. This has the format {domain}/{scope}/{code} e.g. \"Fund/Manager/Id\".")] = None, async_req: Optional[bool]=None, **kwargs) -> Union[FundProperties, Awaitable[FundProperties]]: # noqa: E501
957
+ """[EXPERIMENTAL] UpsertFundProperties: Upsert Fund properties # noqa: E501
958
+
959
+ Update or insert one or more properties onto a single Fund. A property will be updated if it already exists and inserted if it does not. All properties must be of the domain 'Fund'. Upserting a property that exists for an Fund, with a null value, will delete the instance of the property for that group. Properties have an <i>effectiveFrom</i> datetime for which the property is valid, and an <i>effectiveUntil</i> datetime until which the property is valid. Not supplying an <i>effectiveUntil</i> datetime results in the property being valid indefinitely, or until the next <i>effectiveFrom</i> datetime of the property. # noqa: E501
960
+ This method makes a synchronous HTTP request by default. To make an
961
+ asynchronous HTTP request, please pass async_req=True
962
+
963
+ >>> thread = api.upsert_fund_properties(scope, code, request_body, async_req=True)
964
+ >>> result = thread.get()
965
+
966
+ :param scope: The scope of the Fund to update or insert the properties onto. (required)
967
+ :type scope: str
968
+ :param code: The code of the Fund to update or insert the properties onto. Together with the scope this uniquely identifies the Fund. (required)
969
+ :type code: str
970
+ :param request_body: The properties to be updated or inserted onto the Fund. Each property in the request must be keyed by its unique property key. This has the format {domain}/{scope}/{code} e.g. \"Fund/Manager/Id\".
971
+ :type request_body: Dict[str, ModelProperty]
972
+ :param async_req: Whether to execute the request asynchronously.
973
+ :type async_req: bool, optional
974
+ :param _request_timeout: timeout setting for this request.
975
+ If one number provided, it will be total request
976
+ timeout. It can also be a pair (tuple) of
977
+ (connection, read) timeouts.
978
+ :return: Returns the result object.
979
+ If the method is called asynchronously,
980
+ returns the request thread.
981
+ :rtype: FundProperties
982
+ """
983
+ kwargs['_return_http_data_only'] = True
984
+ if '_preload_content' in kwargs:
985
+ message = "Error! Please call the upsert_fund_properties_with_http_info method with `_preload_content` instead and obtain raw data from ApiResponse.raw_data" # noqa: E501
986
+ raise ValueError(message)
987
+ if async_req is not None:
988
+ kwargs['async_req'] = async_req
989
+ return self.upsert_fund_properties_with_http_info(scope, code, request_body, **kwargs) # noqa: E501
990
+
991
+ @validate_arguments
992
+ def upsert_fund_properties_with_http_info(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the Fund to update or insert the properties onto.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the Fund to update or insert the properties onto. Together with the scope this uniquely identifies the Fund.")], request_body : Annotated[Optional[Dict[str, ModelProperty]], Field(description="The properties to be updated or inserted onto the Fund. Each property in the request must be keyed by its unique property key. This has the format {domain}/{scope}/{code} e.g. \"Fund/Manager/Id\".")] = None, **kwargs) -> ApiResponse: # noqa: E501
993
+ """[EXPERIMENTAL] UpsertFundProperties: Upsert Fund properties # noqa: E501
994
+
995
+ Update or insert one or more properties onto a single Fund. A property will be updated if it already exists and inserted if it does not. All properties must be of the domain 'Fund'. Upserting a property that exists for an Fund, with a null value, will delete the instance of the property for that group. Properties have an <i>effectiveFrom</i> datetime for which the property is valid, and an <i>effectiveUntil</i> datetime until which the property is valid. Not supplying an <i>effectiveUntil</i> datetime results in the property being valid indefinitely, or until the next <i>effectiveFrom</i> datetime of the property. # noqa: E501
996
+ This method makes a synchronous HTTP request by default. To make an
997
+ asynchronous HTTP request, please pass async_req=True
998
+
999
+ >>> thread = api.upsert_fund_properties_with_http_info(scope, code, request_body, async_req=True)
1000
+ >>> result = thread.get()
1001
+
1002
+ :param scope: The scope of the Fund to update or insert the properties onto. (required)
1003
+ :type scope: str
1004
+ :param code: The code of the Fund to update or insert the properties onto. Together with the scope this uniquely identifies the Fund. (required)
1005
+ :type code: str
1006
+ :param request_body: The properties to be updated or inserted onto the Fund. Each property in the request must be keyed by its unique property key. This has the format {domain}/{scope}/{code} e.g. \"Fund/Manager/Id\".
1007
+ :type request_body: Dict[str, ModelProperty]
1008
+ :param async_req: Whether to execute the request asynchronously.
1009
+ :type async_req: bool, optional
1010
+ :param _preload_content: if False, the ApiResponse.data will
1011
+ be set to none and raw_data will store the
1012
+ HTTP response body without reading/decoding.
1013
+ Default is True.
1014
+ :type _preload_content: bool, optional
1015
+ :param _return_http_data_only: response data instead of ApiResponse
1016
+ object with status code, headers, etc
1017
+ :type _return_http_data_only: bool, optional
1018
+ :param _request_timeout: timeout setting for this request. If one
1019
+ number provided, it will be total request
1020
+ timeout. It can also be a pair (tuple) of
1021
+ (connection, read) timeouts.
1022
+ :param _request_auth: set to override the auth_settings for an a single
1023
+ request; this effectively ignores the authentication
1024
+ in the spec for a single request.
1025
+ :type _request_auth: dict, optional
1026
+ :type _content_type: string, optional: force content-type for the request
1027
+ :return: Returns the result object.
1028
+ If the method is called asynchronously,
1029
+ returns the request thread.
1030
+ :rtype: tuple(FundProperties, status_code(int), headers(HTTPHeaderDict))
1031
+ """
1032
+
1033
+ _params = locals()
1034
+
1035
+ _all_params = [
1036
+ 'scope',
1037
+ 'code',
1038
+ 'request_body'
1039
+ ]
1040
+ _all_params.extend(
1041
+ [
1042
+ 'async_req',
1043
+ '_return_http_data_only',
1044
+ '_preload_content',
1045
+ '_request_timeout',
1046
+ '_request_auth',
1047
+ '_content_type',
1048
+ '_headers'
1049
+ ]
1050
+ )
1051
+
1052
+ # validate the arguments
1053
+ for _key, _val in _params['kwargs'].items():
1054
+ if _key not in _all_params:
1055
+ raise ApiTypeError(
1056
+ "Got an unexpected keyword argument '%s'"
1057
+ " to method upsert_fund_properties" % _key
1058
+ )
1059
+ _params[_key] = _val
1060
+ del _params['kwargs']
1061
+
1062
+ _collection_formats = {}
1063
+
1064
+ # process the path parameters
1065
+ _path_params = {}
1066
+ if _params['scope']:
1067
+ _path_params['scope'] = _params['scope']
1068
+
1069
+ if _params['code']:
1070
+ _path_params['code'] = _params['code']
1071
+
1072
+
1073
+ # process the query parameters
1074
+ _query_params = []
1075
+ # process the header parameters
1076
+ _header_params = dict(_params.get('_headers', {}))
1077
+ # process the form parameters
1078
+ _form_params = []
1079
+ _files = {}
1080
+ # process the body parameter
1081
+ _body_params = None
1082
+ if _params['request_body'] is not None:
1083
+ _body_params = _params['request_body']
1084
+
1085
+ # set the HTTP header `Accept`
1086
+ _header_params['Accept'] = self.api_client.select_header_accept(
1087
+ ['text/plain', 'application/json', 'text/json']) # noqa: E501
1088
+
1089
+ # set the HTTP header `Content-Type`
1090
+ _content_types_list = _params.get('_content_type',
1091
+ self.api_client.select_header_content_type(
1092
+ ['application/json-patch+json', 'application/json', 'text/json', 'application/*+json']))
1093
+ if _content_types_list:
1094
+ _header_params['Content-Type'] = _content_types_list
1095
+
1096
+ # authentication setting
1097
+ _auth_settings = ['oauth2'] # noqa: E501
1098
+
1099
+ _response_types_map = {
1100
+ '200': "FundProperties",
1101
+ '400': "LusidValidationProblemDetails",
1102
+ }
1103
+
1104
+ return self.api_client.call_api(
1105
+ '/api/funds/{scope}/{code}/properties/$upsert', 'POST',
1106
+ _path_params,
1107
+ _query_params,
1108
+ _header_params,
1109
+ body=_body_params,
1110
+ post_params=_form_params,
1111
+ files=_files,
1112
+ response_types_map=_response_types_map,
1113
+ auth_settings=_auth_settings,
1114
+ async_req=_params.get('async_req'),
1115
+ _return_http_data_only=_params.get('_return_http_data_only'), # noqa: E501
1116
+ _preload_content=_params.get('_preload_content', True),
1117
+ _request_timeout=_params.get('_request_timeout'),
1118
+ collection_formats=_collection_formats,
1119
+ _request_auth=_params.get('_request_auth'))