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
@@ -27,8 +27,11 @@ from pydantic import Field, constr, validator
27
27
  from typing import Optional
28
28
 
29
29
  from lusid.models.annul_single_structured_data_response import AnnulSingleStructuredDataResponse
30
+ from lusid.models.get_recipe_composer_response import GetRecipeComposerResponse
30
31
  from lusid.models.get_recipe_response import GetRecipeResponse
32
+ from lusid.models.resource_list_of_get_recipe_composer_response import ResourceListOfGetRecipeComposerResponse
31
33
  from lusid.models.resource_list_of_get_recipe_response import ResourceListOfGetRecipeResponse
34
+ from lusid.models.upsert_recipe_composer_request import UpsertRecipeComposerRequest
32
35
  from lusid.models.upsert_recipe_request import UpsertRecipeRequest
33
36
  from lusid.models.upsert_single_structured_data_response import UpsertSingleStructuredDataResponse
34
37
 
@@ -211,31 +214,1018 @@ class ConfigurationRecipeApi:
211
214
  collection_formats=_collection_formats,
212
215
  _request_auth=_params.get('_request_auth'))
213
216
 
217
+ @overload
218
+ async def delete_recipe_composer(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the Recipe Composer to delete.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The Recipe Composer to delete.")], **kwargs) -> AnnulSingleStructuredDataResponse: # noqa: E501
219
+ ...
220
+
221
+ @overload
222
+ def delete_recipe_composer(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the Recipe Composer to delete.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The Recipe Composer to delete.")], async_req: Optional[bool]=True, **kwargs) -> AnnulSingleStructuredDataResponse: # noqa: E501
223
+ ...
224
+
225
+ @validate_arguments
226
+ def delete_recipe_composer(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the Recipe Composer to delete.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The Recipe Composer to delete.")], async_req: Optional[bool]=None, **kwargs) -> Union[AnnulSingleStructuredDataResponse, Awaitable[AnnulSingleStructuredDataResponse]]: # noqa: E501
227
+ """[EXPERIMENTAL] DeleteRecipeComposer: Delete a Recipe Composer, assuming that it is present. # noqa: E501
228
+
229
+ Delete the specified Recipe Composer from a single scope. The response will return either detail of the deleted item, or an explanation (failure) as to why this did not succeed. It is important to always check for any unsuccessful response. # noqa: E501
230
+ This method makes a synchronous HTTP request by default. To make an
231
+ asynchronous HTTP request, please pass async_req=True
232
+
233
+ >>> thread = api.delete_recipe_composer(scope, code, async_req=True)
234
+ >>> result = thread.get()
235
+
236
+ :param scope: The scope of the Recipe Composer to delete. (required)
237
+ :type scope: str
238
+ :param code: The Recipe Composer to delete. (required)
239
+ :type code: str
240
+ :param async_req: Whether to execute the request asynchronously.
241
+ :type async_req: bool, optional
242
+ :param _request_timeout: timeout setting for this request.
243
+ If one number provided, it will be total request
244
+ timeout. It can also be a pair (tuple) of
245
+ (connection, read) timeouts.
246
+ :return: Returns the result object.
247
+ If the method is called asynchronously,
248
+ returns the request thread.
249
+ :rtype: AnnulSingleStructuredDataResponse
250
+ """
251
+ kwargs['_return_http_data_only'] = True
252
+ if '_preload_content' in kwargs:
253
+ message = "Error! Please call the delete_recipe_composer_with_http_info method with `_preload_content` instead and obtain raw data from ApiResponse.raw_data" # noqa: E501
254
+ raise ValueError(message)
255
+ if async_req is not None:
256
+ kwargs['async_req'] = async_req
257
+ return self.delete_recipe_composer_with_http_info(scope, code, **kwargs) # noqa: E501
258
+
259
+ @validate_arguments
260
+ def delete_recipe_composer_with_http_info(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the Recipe Composer to delete.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The Recipe Composer to delete.")], **kwargs) -> ApiResponse: # noqa: E501
261
+ """[EXPERIMENTAL] DeleteRecipeComposer: Delete a Recipe Composer, assuming that it is present. # noqa: E501
262
+
263
+ Delete the specified Recipe Composer from a single scope. The response will return either detail of the deleted item, or an explanation (failure) as to why this did not succeed. It is important to always check for any unsuccessful response. # noqa: E501
264
+ This method makes a synchronous HTTP request by default. To make an
265
+ asynchronous HTTP request, please pass async_req=True
266
+
267
+ >>> thread = api.delete_recipe_composer_with_http_info(scope, code, async_req=True)
268
+ >>> result = thread.get()
269
+
270
+ :param scope: The scope of the Recipe Composer to delete. (required)
271
+ :type scope: str
272
+ :param code: The Recipe Composer to delete. (required)
273
+ :type code: str
274
+ :param async_req: Whether to execute the request asynchronously.
275
+ :type async_req: bool, optional
276
+ :param _preload_content: if False, the ApiResponse.data will
277
+ be set to none and raw_data will store the
278
+ HTTP response body without reading/decoding.
279
+ Default is True.
280
+ :type _preload_content: bool, optional
281
+ :param _return_http_data_only: response data instead of ApiResponse
282
+ object with status code, headers, etc
283
+ :type _return_http_data_only: bool, optional
284
+ :param _request_timeout: timeout setting for this request. If one
285
+ number provided, it will be total request
286
+ timeout. It can also be a pair (tuple) of
287
+ (connection, read) timeouts.
288
+ :param _request_auth: set to override the auth_settings for an a single
289
+ request; this effectively ignores the authentication
290
+ in the spec for a single request.
291
+ :type _request_auth: dict, optional
292
+ :type _content_type: string, optional: force content-type for the request
293
+ :return: Returns the result object.
294
+ If the method is called asynchronously,
295
+ returns the request thread.
296
+ :rtype: tuple(AnnulSingleStructuredDataResponse, status_code(int), headers(HTTPHeaderDict))
297
+ """
298
+
299
+ _params = locals()
300
+
301
+ _all_params = [
302
+ 'scope',
303
+ 'code'
304
+ ]
305
+ _all_params.extend(
306
+ [
307
+ 'async_req',
308
+ '_return_http_data_only',
309
+ '_preload_content',
310
+ '_request_timeout',
311
+ '_request_auth',
312
+ '_content_type',
313
+ '_headers'
314
+ ]
315
+ )
316
+
317
+ # validate the arguments
318
+ for _key, _val in _params['kwargs'].items():
319
+ if _key not in _all_params:
320
+ raise ApiTypeError(
321
+ "Got an unexpected keyword argument '%s'"
322
+ " to method delete_recipe_composer" % _key
323
+ )
324
+ _params[_key] = _val
325
+ del _params['kwargs']
326
+
327
+ _collection_formats = {}
328
+
329
+ # process the path parameters
330
+ _path_params = {}
331
+ if _params['scope']:
332
+ _path_params['scope'] = _params['scope']
333
+
334
+ if _params['code']:
335
+ _path_params['code'] = _params['code']
336
+
337
+
338
+ # process the query parameters
339
+ _query_params = []
340
+ # process the header parameters
341
+ _header_params = dict(_params.get('_headers', {}))
342
+ # process the form parameters
343
+ _form_params = []
344
+ _files = {}
345
+ # process the body parameter
346
+ _body_params = None
347
+ # set the HTTP header `Accept`
348
+ _header_params['Accept'] = self.api_client.select_header_accept(
349
+ ['text/plain', 'application/json', 'text/json']) # noqa: E501
350
+
351
+ # authentication setting
352
+ _auth_settings = ['oauth2'] # noqa: E501
353
+
354
+ _response_types_map = {
355
+ '200': "AnnulSingleStructuredDataResponse",
356
+ '400': "LusidValidationProblemDetails",
357
+ }
358
+
359
+ return self.api_client.call_api(
360
+ '/api/recipes/composer/{scope}/{code}', 'DELETE',
361
+ _path_params,
362
+ _query_params,
363
+ _header_params,
364
+ body=_body_params,
365
+ post_params=_form_params,
366
+ files=_files,
367
+ response_types_map=_response_types_map,
368
+ auth_settings=_auth_settings,
369
+ async_req=_params.get('async_req'),
370
+ _return_http_data_only=_params.get('_return_http_data_only'), # noqa: E501
371
+ _preload_content=_params.get('_preload_content', True),
372
+ _request_timeout=_params.get('_request_timeout'),
373
+ collection_formats=_collection_formats,
374
+ _request_auth=_params.get('_request_auth'))
375
+
214
376
  @overload
215
377
  async def get_configuration_recipe(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the Configuration Recipe to retrieve.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The name of the recipe to retrieve the data for.")], as_at : Annotated[Optional[datetime], Field(description="The asAt datetime at which to retrieve the Configuration Recipe. Defaults to return the latest version if not specified.")] = None, **kwargs) -> GetRecipeResponse: # noqa: E501
216
378
  ...
217
379
 
218
380
  @overload
219
- def get_configuration_recipe(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the Configuration Recipe to retrieve.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The name of the recipe to retrieve the data for.")], as_at : Annotated[Optional[datetime], Field(description="The asAt datetime at which to retrieve the Configuration Recipe. Defaults to return the latest version if not specified.")] = None, async_req: Optional[bool]=True, **kwargs) -> GetRecipeResponse: # noqa: E501
381
+ def get_configuration_recipe(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the Configuration Recipe to retrieve.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The name of the recipe to retrieve the data for.")], as_at : Annotated[Optional[datetime], Field(description="The asAt datetime at which to retrieve the Configuration Recipe. Defaults to return the latest version if not specified.")] = None, async_req: Optional[bool]=True, **kwargs) -> GetRecipeResponse: # noqa: E501
382
+ ...
383
+
384
+ @validate_arguments
385
+ def get_configuration_recipe(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the Configuration Recipe to retrieve.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The name of the recipe to retrieve the data for.")], as_at : Annotated[Optional[datetime], Field(description="The asAt datetime at which to retrieve the Configuration Recipe. Defaults to return the latest version if not specified.")] = None, async_req: Optional[bool]=None, **kwargs) -> Union[GetRecipeResponse, Awaitable[GetRecipeResponse]]: # noqa: E501
386
+ """GetConfigurationRecipe: Get Configuration Recipe # noqa: E501
387
+
388
+ Get a Configuration Recipe from a single scope. The response will return either the recipe that has been stored, or a failure explaining why the request was unsuccessful. It is important to always check for any unsuccessful requests (failures). # noqa: E501
389
+ This method makes a synchronous HTTP request by default. To make an
390
+ asynchronous HTTP request, please pass async_req=True
391
+
392
+ >>> thread = api.get_configuration_recipe(scope, code, as_at, async_req=True)
393
+ >>> result = thread.get()
394
+
395
+ :param scope: The scope of the Configuration Recipe to retrieve. (required)
396
+ :type scope: str
397
+ :param code: The name of the recipe to retrieve the data for. (required)
398
+ :type code: str
399
+ :param as_at: The asAt datetime at which to retrieve the Configuration Recipe. Defaults to return the latest version if not specified.
400
+ :type as_at: datetime
401
+ :param async_req: Whether to execute the request asynchronously.
402
+ :type async_req: bool, optional
403
+ :param _request_timeout: timeout setting for this request.
404
+ If one number provided, it will be total request
405
+ timeout. It can also be a pair (tuple) of
406
+ (connection, read) timeouts.
407
+ :return: Returns the result object.
408
+ If the method is called asynchronously,
409
+ returns the request thread.
410
+ :rtype: GetRecipeResponse
411
+ """
412
+ kwargs['_return_http_data_only'] = True
413
+ if '_preload_content' in kwargs:
414
+ message = "Error! Please call the get_configuration_recipe_with_http_info method with `_preload_content` instead and obtain raw data from ApiResponse.raw_data" # noqa: E501
415
+ raise ValueError(message)
416
+ if async_req is not None:
417
+ kwargs['async_req'] = async_req
418
+ return self.get_configuration_recipe_with_http_info(scope, code, as_at, **kwargs) # noqa: E501
419
+
420
+ @validate_arguments
421
+ def get_configuration_recipe_with_http_info(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the Configuration Recipe to retrieve.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The name of the recipe to retrieve the data for.")], as_at : Annotated[Optional[datetime], Field(description="The asAt datetime at which to retrieve the Configuration Recipe. Defaults to return the latest version if not specified.")] = None, **kwargs) -> ApiResponse: # noqa: E501
422
+ """GetConfigurationRecipe: Get Configuration Recipe # noqa: E501
423
+
424
+ Get a Configuration Recipe from a single scope. The response will return either the recipe that has been stored, or a failure explaining why the request was unsuccessful. It is important to always check for any unsuccessful requests (failures). # noqa: E501
425
+ This method makes a synchronous HTTP request by default. To make an
426
+ asynchronous HTTP request, please pass async_req=True
427
+
428
+ >>> thread = api.get_configuration_recipe_with_http_info(scope, code, as_at, async_req=True)
429
+ >>> result = thread.get()
430
+
431
+ :param scope: The scope of the Configuration Recipe to retrieve. (required)
432
+ :type scope: str
433
+ :param code: The name of the recipe to retrieve the data for. (required)
434
+ :type code: str
435
+ :param as_at: The asAt datetime at which to retrieve the Configuration Recipe. Defaults to return the latest version if not specified.
436
+ :type as_at: datetime
437
+ :param async_req: Whether to execute the request asynchronously.
438
+ :type async_req: bool, optional
439
+ :param _preload_content: if False, the ApiResponse.data will
440
+ be set to none and raw_data will store the
441
+ HTTP response body without reading/decoding.
442
+ Default is True.
443
+ :type _preload_content: bool, optional
444
+ :param _return_http_data_only: response data instead of ApiResponse
445
+ object with status code, headers, etc
446
+ :type _return_http_data_only: bool, optional
447
+ :param _request_timeout: timeout setting for this request. If one
448
+ number provided, it will be total request
449
+ timeout. It can also be a pair (tuple) of
450
+ (connection, read) timeouts.
451
+ :param _request_auth: set to override the auth_settings for an a single
452
+ request; this effectively ignores the authentication
453
+ in the spec for a single request.
454
+ :type _request_auth: dict, optional
455
+ :type _content_type: string, optional: force content-type for the request
456
+ :return: Returns the result object.
457
+ If the method is called asynchronously,
458
+ returns the request thread.
459
+ :rtype: tuple(GetRecipeResponse, status_code(int), headers(HTTPHeaderDict))
460
+ """
461
+
462
+ _params = locals()
463
+
464
+ _all_params = [
465
+ 'scope',
466
+ 'code',
467
+ 'as_at'
468
+ ]
469
+ _all_params.extend(
470
+ [
471
+ 'async_req',
472
+ '_return_http_data_only',
473
+ '_preload_content',
474
+ '_request_timeout',
475
+ '_request_auth',
476
+ '_content_type',
477
+ '_headers'
478
+ ]
479
+ )
480
+
481
+ # validate the arguments
482
+ for _key, _val in _params['kwargs'].items():
483
+ if _key not in _all_params:
484
+ raise ApiTypeError(
485
+ "Got an unexpected keyword argument '%s'"
486
+ " to method get_configuration_recipe" % _key
487
+ )
488
+ _params[_key] = _val
489
+ del _params['kwargs']
490
+
491
+ _collection_formats = {}
492
+
493
+ # process the path parameters
494
+ _path_params = {}
495
+ if _params['scope']:
496
+ _path_params['scope'] = _params['scope']
497
+
498
+ if _params['code']:
499
+ _path_params['code'] = _params['code']
500
+
501
+
502
+ # process the query parameters
503
+ _query_params = []
504
+ if _params.get('as_at') is not None: # noqa: E501
505
+ if isinstance(_params['as_at'], datetime):
506
+ _query_params.append(('asAt', _params['as_at'].strftime(self.api_client.configuration.datetime_format)))
507
+ else:
508
+ _query_params.append(('asAt', _params['as_at']))
509
+
510
+ # process the header parameters
511
+ _header_params = dict(_params.get('_headers', {}))
512
+ # process the form parameters
513
+ _form_params = []
514
+ _files = {}
515
+ # process the body parameter
516
+ _body_params = None
517
+ # set the HTTP header `Accept`
518
+ _header_params['Accept'] = self.api_client.select_header_accept(
519
+ ['text/plain', 'application/json', 'text/json']) # noqa: E501
520
+
521
+ # authentication setting
522
+ _auth_settings = ['oauth2'] # noqa: E501
523
+
524
+ _response_types_map = {
525
+ '200': "GetRecipeResponse",
526
+ '400': "LusidValidationProblemDetails",
527
+ }
528
+
529
+ return self.api_client.call_api(
530
+ '/api/recipes/{scope}/{code}', 'GET',
531
+ _path_params,
532
+ _query_params,
533
+ _header_params,
534
+ body=_body_params,
535
+ post_params=_form_params,
536
+ files=_files,
537
+ response_types_map=_response_types_map,
538
+ auth_settings=_auth_settings,
539
+ async_req=_params.get('async_req'),
540
+ _return_http_data_only=_params.get('_return_http_data_only'), # noqa: E501
541
+ _preload_content=_params.get('_preload_content', True),
542
+ _request_timeout=_params.get('_request_timeout'),
543
+ collection_formats=_collection_formats,
544
+ _request_auth=_params.get('_request_auth'))
545
+
546
+ @overload
547
+ async def get_derived_recipe(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the Configuration Recipe or Recipe Composer to return.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the Configuration Recipe or Recipe Composer to return.")], as_at : Annotated[Optional[datetime], Field(description="The asAt datetime at which to retrieve the Configuration Recipe. Defaults to return the latest version if not specified.")] = None, **kwargs) -> GetRecipeResponse: # noqa: E501
548
+ ...
549
+
550
+ @overload
551
+ def get_derived_recipe(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the Configuration Recipe or Recipe Composer to return.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the Configuration Recipe or Recipe Composer to return.")], as_at : Annotated[Optional[datetime], Field(description="The asAt datetime at which to retrieve the Configuration Recipe. Defaults to return the latest version if not specified.")] = None, async_req: Optional[bool]=True, **kwargs) -> GetRecipeResponse: # noqa: E501
552
+ ...
553
+
554
+ @validate_arguments
555
+ def get_derived_recipe(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the Configuration Recipe or Recipe Composer to return.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the Configuration Recipe or Recipe Composer to return.")], as_at : Annotated[Optional[datetime], Field(description="The asAt datetime at which to retrieve the Configuration Recipe. Defaults to return the latest version if not specified.")] = None, async_req: Optional[bool]=None, **kwargs) -> Union[GetRecipeResponse, Awaitable[GetRecipeResponse]]: # noqa: E501
556
+ """[EXPERIMENTAL] GetDerivedRecipe: Get Configuration Recipe either from the store or expanded from a Recipe Composer. # noqa: E501
557
+
558
+ If scope-code is referring to a Configuration Recipe it is returned, if it refers to Recipe Composer, it is expanded into a Configuration Recipe and returned. # noqa: E501
559
+ This method makes a synchronous HTTP request by default. To make an
560
+ asynchronous HTTP request, please pass async_req=True
561
+
562
+ >>> thread = api.get_derived_recipe(scope, code, as_at, async_req=True)
563
+ >>> result = thread.get()
564
+
565
+ :param scope: The scope of the Configuration Recipe or Recipe Composer to return. (required)
566
+ :type scope: str
567
+ :param code: The code of the Configuration Recipe or Recipe Composer to return. (required)
568
+ :type code: str
569
+ :param as_at: The asAt datetime at which to retrieve the Configuration Recipe. Defaults to return the latest version if not specified.
570
+ :type as_at: datetime
571
+ :param async_req: Whether to execute the request asynchronously.
572
+ :type async_req: bool, optional
573
+ :param _request_timeout: timeout setting for this request.
574
+ If one number provided, it will be total request
575
+ timeout. It can also be a pair (tuple) of
576
+ (connection, read) timeouts.
577
+ :return: Returns the result object.
578
+ If the method is called asynchronously,
579
+ returns the request thread.
580
+ :rtype: GetRecipeResponse
581
+ """
582
+ kwargs['_return_http_data_only'] = True
583
+ if '_preload_content' in kwargs:
584
+ message = "Error! Please call the get_derived_recipe_with_http_info method with `_preload_content` instead and obtain raw data from ApiResponse.raw_data" # noqa: E501
585
+ raise ValueError(message)
586
+ if async_req is not None:
587
+ kwargs['async_req'] = async_req
588
+ return self.get_derived_recipe_with_http_info(scope, code, as_at, **kwargs) # noqa: E501
589
+
590
+ @validate_arguments
591
+ def get_derived_recipe_with_http_info(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the Configuration Recipe or Recipe Composer to return.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the Configuration Recipe or Recipe Composer to return.")], as_at : Annotated[Optional[datetime], Field(description="The asAt datetime at which to retrieve the Configuration Recipe. Defaults to return the latest version if not specified.")] = None, **kwargs) -> ApiResponse: # noqa: E501
592
+ """[EXPERIMENTAL] GetDerivedRecipe: Get Configuration Recipe either from the store or expanded from a Recipe Composer. # noqa: E501
593
+
594
+ If scope-code is referring to a Configuration Recipe it is returned, if it refers to Recipe Composer, it is expanded into a Configuration Recipe and returned. # noqa: E501
595
+ This method makes a synchronous HTTP request by default. To make an
596
+ asynchronous HTTP request, please pass async_req=True
597
+
598
+ >>> thread = api.get_derived_recipe_with_http_info(scope, code, as_at, async_req=True)
599
+ >>> result = thread.get()
600
+
601
+ :param scope: The scope of the Configuration Recipe or Recipe Composer to return. (required)
602
+ :type scope: str
603
+ :param code: The code of the Configuration Recipe or Recipe Composer to return. (required)
604
+ :type code: str
605
+ :param as_at: The asAt datetime at which to retrieve the Configuration Recipe. Defaults to return the latest version if not specified.
606
+ :type as_at: datetime
607
+ :param async_req: Whether to execute the request asynchronously.
608
+ :type async_req: bool, optional
609
+ :param _preload_content: if False, the ApiResponse.data will
610
+ be set to none and raw_data will store the
611
+ HTTP response body without reading/decoding.
612
+ Default is True.
613
+ :type _preload_content: bool, optional
614
+ :param _return_http_data_only: response data instead of ApiResponse
615
+ object with status code, headers, etc
616
+ :type _return_http_data_only: bool, optional
617
+ :param _request_timeout: timeout setting for this request. If one
618
+ number provided, it will be total request
619
+ timeout. It can also be a pair (tuple) of
620
+ (connection, read) timeouts.
621
+ :param _request_auth: set to override the auth_settings for an a single
622
+ request; this effectively ignores the authentication
623
+ in the spec for a single request.
624
+ :type _request_auth: dict, optional
625
+ :type _content_type: string, optional: force content-type for the request
626
+ :return: Returns the result object.
627
+ If the method is called asynchronously,
628
+ returns the request thread.
629
+ :rtype: tuple(GetRecipeResponse, status_code(int), headers(HTTPHeaderDict))
630
+ """
631
+
632
+ _params = locals()
633
+
634
+ _all_params = [
635
+ 'scope',
636
+ 'code',
637
+ 'as_at'
638
+ ]
639
+ _all_params.extend(
640
+ [
641
+ 'async_req',
642
+ '_return_http_data_only',
643
+ '_preload_content',
644
+ '_request_timeout',
645
+ '_request_auth',
646
+ '_content_type',
647
+ '_headers'
648
+ ]
649
+ )
650
+
651
+ # validate the arguments
652
+ for _key, _val in _params['kwargs'].items():
653
+ if _key not in _all_params:
654
+ raise ApiTypeError(
655
+ "Got an unexpected keyword argument '%s'"
656
+ " to method get_derived_recipe" % _key
657
+ )
658
+ _params[_key] = _val
659
+ del _params['kwargs']
660
+
661
+ _collection_formats = {}
662
+
663
+ # process the path parameters
664
+ _path_params = {}
665
+ if _params['scope']:
666
+ _path_params['scope'] = _params['scope']
667
+
668
+ if _params['code']:
669
+ _path_params['code'] = _params['code']
670
+
671
+
672
+ # process the query parameters
673
+ _query_params = []
674
+ if _params.get('as_at') is not None: # noqa: E501
675
+ if isinstance(_params['as_at'], datetime):
676
+ _query_params.append(('asAt', _params['as_at'].strftime(self.api_client.configuration.datetime_format)))
677
+ else:
678
+ _query_params.append(('asAt', _params['as_at']))
679
+
680
+ # process the header parameters
681
+ _header_params = dict(_params.get('_headers', {}))
682
+ # process the form parameters
683
+ _form_params = []
684
+ _files = {}
685
+ # process the body parameter
686
+ _body_params = None
687
+ # set the HTTP header `Accept`
688
+ _header_params['Accept'] = self.api_client.select_header_accept(
689
+ ['text/plain', 'application/json', 'text/json']) # noqa: E501
690
+
691
+ # authentication setting
692
+ _auth_settings = ['oauth2'] # noqa: E501
693
+
694
+ _response_types_map = {
695
+ '200': "GetRecipeResponse",
696
+ '400': "LusidValidationProblemDetails",
697
+ }
698
+
699
+ return self.api_client.call_api(
700
+ '/api/recipes/derived/{scope}/{code}', 'GET',
701
+ _path_params,
702
+ _query_params,
703
+ _header_params,
704
+ body=_body_params,
705
+ post_params=_form_params,
706
+ files=_files,
707
+ response_types_map=_response_types_map,
708
+ auth_settings=_auth_settings,
709
+ async_req=_params.get('async_req'),
710
+ _return_http_data_only=_params.get('_return_http_data_only'), # noqa: E501
711
+ _preload_content=_params.get('_preload_content', True),
712
+ _request_timeout=_params.get('_request_timeout'),
713
+ collection_formats=_collection_formats,
714
+ _request_auth=_params.get('_request_auth'))
715
+
716
+ @overload
717
+ async def get_recipe_composer(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the Recipe Composer to retrieve.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The name of the Recipe Composer to retrieve the data for.")], as_at : Annotated[Optional[datetime], Field(description="The asAt datetime at which to retrieve the Recipe Composer. Defaults to return the latest version if not specified.")] = None, **kwargs) -> GetRecipeComposerResponse: # noqa: E501
718
+ ...
719
+
720
+ @overload
721
+ def get_recipe_composer(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the Recipe Composer to retrieve.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The name of the Recipe Composer to retrieve the data for.")], as_at : Annotated[Optional[datetime], Field(description="The asAt datetime at which to retrieve the Recipe Composer. Defaults to return the latest version if not specified.")] = None, async_req: Optional[bool]=True, **kwargs) -> GetRecipeComposerResponse: # noqa: E501
722
+ ...
723
+
724
+ @validate_arguments
725
+ def get_recipe_composer(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the Recipe Composer to retrieve.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The name of the Recipe Composer to retrieve the data for.")], as_at : Annotated[Optional[datetime], Field(description="The asAt datetime at which to retrieve the Recipe Composer. Defaults to return the latest version if not specified.")] = None, async_req: Optional[bool]=None, **kwargs) -> Union[GetRecipeComposerResponse, Awaitable[GetRecipeComposerResponse]]: # noqa: E501
726
+ """[EXPERIMENTAL] GetRecipeComposer: Get Recipe Composer # noqa: E501
727
+
728
+ Get a Recipe Composer from a single scope. The response will return either the recipe composer that has been stored, or a failure explaining why the request was unsuccessful. It is important to always check for any unsuccessful requests (failures). # noqa: E501
729
+ This method makes a synchronous HTTP request by default. To make an
730
+ asynchronous HTTP request, please pass async_req=True
731
+
732
+ >>> thread = api.get_recipe_composer(scope, code, as_at, async_req=True)
733
+ >>> result = thread.get()
734
+
735
+ :param scope: The scope of the Recipe Composer to retrieve. (required)
736
+ :type scope: str
737
+ :param code: The name of the Recipe Composer to retrieve the data for. (required)
738
+ :type code: str
739
+ :param as_at: The asAt datetime at which to retrieve the Recipe Composer. Defaults to return the latest version if not specified.
740
+ :type as_at: datetime
741
+ :param async_req: Whether to execute the request asynchronously.
742
+ :type async_req: bool, optional
743
+ :param _request_timeout: timeout setting for this request.
744
+ If one number provided, it will be total request
745
+ timeout. It can also be a pair (tuple) of
746
+ (connection, read) timeouts.
747
+ :return: Returns the result object.
748
+ If the method is called asynchronously,
749
+ returns the request thread.
750
+ :rtype: GetRecipeComposerResponse
751
+ """
752
+ kwargs['_return_http_data_only'] = True
753
+ if '_preload_content' in kwargs:
754
+ message = "Error! Please call the get_recipe_composer_with_http_info method with `_preload_content` instead and obtain raw data from ApiResponse.raw_data" # noqa: E501
755
+ raise ValueError(message)
756
+ if async_req is not None:
757
+ kwargs['async_req'] = async_req
758
+ return self.get_recipe_composer_with_http_info(scope, code, as_at, **kwargs) # noqa: E501
759
+
760
+ @validate_arguments
761
+ def get_recipe_composer_with_http_info(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the Recipe Composer to retrieve.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The name of the Recipe Composer to retrieve the data for.")], as_at : Annotated[Optional[datetime], Field(description="The asAt datetime at which to retrieve the Recipe Composer. Defaults to return the latest version if not specified.")] = None, **kwargs) -> ApiResponse: # noqa: E501
762
+ """[EXPERIMENTAL] GetRecipeComposer: Get Recipe Composer # noqa: E501
763
+
764
+ Get a Recipe Composer from a single scope. The response will return either the recipe composer that has been stored, or a failure explaining why the request was unsuccessful. It is important to always check for any unsuccessful requests (failures). # noqa: E501
765
+ This method makes a synchronous HTTP request by default. To make an
766
+ asynchronous HTTP request, please pass async_req=True
767
+
768
+ >>> thread = api.get_recipe_composer_with_http_info(scope, code, as_at, async_req=True)
769
+ >>> result = thread.get()
770
+
771
+ :param scope: The scope of the Recipe Composer to retrieve. (required)
772
+ :type scope: str
773
+ :param code: The name of the Recipe Composer to retrieve the data for. (required)
774
+ :type code: str
775
+ :param as_at: The asAt datetime at which to retrieve the Recipe Composer. Defaults to return the latest version if not specified.
776
+ :type as_at: datetime
777
+ :param async_req: Whether to execute the request asynchronously.
778
+ :type async_req: bool, optional
779
+ :param _preload_content: if False, the ApiResponse.data will
780
+ be set to none and raw_data will store the
781
+ HTTP response body without reading/decoding.
782
+ Default is True.
783
+ :type _preload_content: bool, optional
784
+ :param _return_http_data_only: response data instead of ApiResponse
785
+ object with status code, headers, etc
786
+ :type _return_http_data_only: bool, optional
787
+ :param _request_timeout: timeout setting for this request. If one
788
+ number provided, it will be total request
789
+ timeout. It can also be a pair (tuple) of
790
+ (connection, read) timeouts.
791
+ :param _request_auth: set to override the auth_settings for an a single
792
+ request; this effectively ignores the authentication
793
+ in the spec for a single request.
794
+ :type _request_auth: dict, optional
795
+ :type _content_type: string, optional: force content-type for the request
796
+ :return: Returns the result object.
797
+ If the method is called asynchronously,
798
+ returns the request thread.
799
+ :rtype: tuple(GetRecipeComposerResponse, status_code(int), headers(HTTPHeaderDict))
800
+ """
801
+
802
+ _params = locals()
803
+
804
+ _all_params = [
805
+ 'scope',
806
+ 'code',
807
+ 'as_at'
808
+ ]
809
+ _all_params.extend(
810
+ [
811
+ 'async_req',
812
+ '_return_http_data_only',
813
+ '_preload_content',
814
+ '_request_timeout',
815
+ '_request_auth',
816
+ '_content_type',
817
+ '_headers'
818
+ ]
819
+ )
820
+
821
+ # validate the arguments
822
+ for _key, _val in _params['kwargs'].items():
823
+ if _key not in _all_params:
824
+ raise ApiTypeError(
825
+ "Got an unexpected keyword argument '%s'"
826
+ " to method get_recipe_composer" % _key
827
+ )
828
+ _params[_key] = _val
829
+ del _params['kwargs']
830
+
831
+ _collection_formats = {}
832
+
833
+ # process the path parameters
834
+ _path_params = {}
835
+ if _params['scope']:
836
+ _path_params['scope'] = _params['scope']
837
+
838
+ if _params['code']:
839
+ _path_params['code'] = _params['code']
840
+
841
+
842
+ # process the query parameters
843
+ _query_params = []
844
+ if _params.get('as_at') is not None: # noqa: E501
845
+ if isinstance(_params['as_at'], datetime):
846
+ _query_params.append(('asAt', _params['as_at'].strftime(self.api_client.configuration.datetime_format)))
847
+ else:
848
+ _query_params.append(('asAt', _params['as_at']))
849
+
850
+ # process the header parameters
851
+ _header_params = dict(_params.get('_headers', {}))
852
+ # process the form parameters
853
+ _form_params = []
854
+ _files = {}
855
+ # process the body parameter
856
+ _body_params = None
857
+ # set the HTTP header `Accept`
858
+ _header_params['Accept'] = self.api_client.select_header_accept(
859
+ ['text/plain', 'application/json', 'text/json']) # noqa: E501
860
+
861
+ # authentication setting
862
+ _auth_settings = ['oauth2'] # noqa: E501
863
+
864
+ _response_types_map = {
865
+ '200': "GetRecipeComposerResponse",
866
+ '400': "LusidValidationProblemDetails",
867
+ }
868
+
869
+ return self.api_client.call_api(
870
+ '/api/recipes/composer/{scope}/{code}', 'GET',
871
+ _path_params,
872
+ _query_params,
873
+ _header_params,
874
+ body=_body_params,
875
+ post_params=_form_params,
876
+ files=_files,
877
+ response_types_map=_response_types_map,
878
+ auth_settings=_auth_settings,
879
+ async_req=_params.get('async_req'),
880
+ _return_http_data_only=_params.get('_return_http_data_only'), # noqa: E501
881
+ _preload_content=_params.get('_preload_content', True),
882
+ _request_timeout=_params.get('_request_timeout'),
883
+ collection_formats=_collection_formats,
884
+ _request_auth=_params.get('_request_auth'))
885
+
886
+ @overload
887
+ async def get_recipe_composer_resolved_inline(self, upsert_recipe_composer_request : Annotated[UpsertRecipeComposerRequest, Field(..., description="Recipe composer used to expand into the Configuration Recipe.")], **kwargs) -> GetRecipeResponse: # noqa: E501
888
+ ...
889
+
890
+ @overload
891
+ def get_recipe_composer_resolved_inline(self, upsert_recipe_composer_request : Annotated[UpsertRecipeComposerRequest, Field(..., description="Recipe composer used to expand into the Configuration Recipe.")], async_req: Optional[bool]=True, **kwargs) -> GetRecipeResponse: # noqa: E501
892
+ ...
893
+
894
+ @validate_arguments
895
+ def get_recipe_composer_resolved_inline(self, upsert_recipe_composer_request : Annotated[UpsertRecipeComposerRequest, Field(..., description="Recipe composer used to expand into the Configuration Recipe.")], async_req: Optional[bool]=None, **kwargs) -> Union[GetRecipeResponse, Awaitable[GetRecipeResponse]]: # noqa: E501
896
+ """[EXPERIMENTAL] GetRecipeComposerResolvedInline: Given a Recipe Composer, this endpoint expands into a Configuration Recipe without persistence. Primarily used for testing purposes. # noqa: E501
897
+
898
+ Resolves an inline recipe composer into a ConfigurationRecipe. # noqa: E501
899
+ This method makes a synchronous HTTP request by default. To make an
900
+ asynchronous HTTP request, please pass async_req=True
901
+
902
+ >>> thread = api.get_recipe_composer_resolved_inline(upsert_recipe_composer_request, async_req=True)
903
+ >>> result = thread.get()
904
+
905
+ :param upsert_recipe_composer_request: Recipe composer used to expand into the Configuration Recipe. (required)
906
+ :type upsert_recipe_composer_request: UpsertRecipeComposerRequest
907
+ :param async_req: Whether to execute the request asynchronously.
908
+ :type async_req: bool, optional
909
+ :param _request_timeout: timeout setting for this request.
910
+ If one number provided, it will be total request
911
+ timeout. It can also be a pair (tuple) of
912
+ (connection, read) timeouts.
913
+ :return: Returns the result object.
914
+ If the method is called asynchronously,
915
+ returns the request thread.
916
+ :rtype: GetRecipeResponse
917
+ """
918
+ kwargs['_return_http_data_only'] = True
919
+ if '_preload_content' in kwargs:
920
+ message = "Error! Please call the get_recipe_composer_resolved_inline_with_http_info method with `_preload_content` instead and obtain raw data from ApiResponse.raw_data" # noqa: E501
921
+ raise ValueError(message)
922
+ if async_req is not None:
923
+ kwargs['async_req'] = async_req
924
+ return self.get_recipe_composer_resolved_inline_with_http_info(upsert_recipe_composer_request, **kwargs) # noqa: E501
925
+
926
+ @validate_arguments
927
+ def get_recipe_composer_resolved_inline_with_http_info(self, upsert_recipe_composer_request : Annotated[UpsertRecipeComposerRequest, Field(..., description="Recipe composer used to expand into the Configuration Recipe.")], **kwargs) -> ApiResponse: # noqa: E501
928
+ """[EXPERIMENTAL] GetRecipeComposerResolvedInline: Given a Recipe Composer, this endpoint expands into a Configuration Recipe without persistence. Primarily used for testing purposes. # noqa: E501
929
+
930
+ Resolves an inline recipe composer into a ConfigurationRecipe. # noqa: E501
931
+ This method makes a synchronous HTTP request by default. To make an
932
+ asynchronous HTTP request, please pass async_req=True
933
+
934
+ >>> thread = api.get_recipe_composer_resolved_inline_with_http_info(upsert_recipe_composer_request, async_req=True)
935
+ >>> result = thread.get()
936
+
937
+ :param upsert_recipe_composer_request: Recipe composer used to expand into the Configuration Recipe. (required)
938
+ :type upsert_recipe_composer_request: UpsertRecipeComposerRequest
939
+ :param async_req: Whether to execute the request asynchronously.
940
+ :type async_req: bool, optional
941
+ :param _preload_content: if False, the ApiResponse.data will
942
+ be set to none and raw_data will store the
943
+ HTTP response body without reading/decoding.
944
+ Default is True.
945
+ :type _preload_content: bool, optional
946
+ :param _return_http_data_only: response data instead of ApiResponse
947
+ object with status code, headers, etc
948
+ :type _return_http_data_only: bool, optional
949
+ :param _request_timeout: timeout setting for this request. If one
950
+ number provided, it will be total request
951
+ timeout. It can also be a pair (tuple) of
952
+ (connection, read) timeouts.
953
+ :param _request_auth: set to override the auth_settings for an a single
954
+ request; this effectively ignores the authentication
955
+ in the spec for a single request.
956
+ :type _request_auth: dict, optional
957
+ :type _content_type: string, optional: force content-type for the request
958
+ :return: Returns the result object.
959
+ If the method is called asynchronously,
960
+ returns the request thread.
961
+ :rtype: tuple(GetRecipeResponse, status_code(int), headers(HTTPHeaderDict))
962
+ """
963
+
964
+ _params = locals()
965
+
966
+ _all_params = [
967
+ 'upsert_recipe_composer_request'
968
+ ]
969
+ _all_params.extend(
970
+ [
971
+ 'async_req',
972
+ '_return_http_data_only',
973
+ '_preload_content',
974
+ '_request_timeout',
975
+ '_request_auth',
976
+ '_content_type',
977
+ '_headers'
978
+ ]
979
+ )
980
+
981
+ # validate the arguments
982
+ for _key, _val in _params['kwargs'].items():
983
+ if _key not in _all_params:
984
+ raise ApiTypeError(
985
+ "Got an unexpected keyword argument '%s'"
986
+ " to method get_recipe_composer_resolved_inline" % _key
987
+ )
988
+ _params[_key] = _val
989
+ del _params['kwargs']
990
+
991
+ _collection_formats = {}
992
+
993
+ # process the path parameters
994
+ _path_params = {}
995
+
996
+ # process the query parameters
997
+ _query_params = []
998
+ # process the header parameters
999
+ _header_params = dict(_params.get('_headers', {}))
1000
+ # process the form parameters
1001
+ _form_params = []
1002
+ _files = {}
1003
+ # process the body parameter
1004
+ _body_params = None
1005
+ if _params['upsert_recipe_composer_request'] is not None:
1006
+ _body_params = _params['upsert_recipe_composer_request']
1007
+
1008
+ # set the HTTP header `Accept`
1009
+ _header_params['Accept'] = self.api_client.select_header_accept(
1010
+ ['text/plain', 'application/json', 'text/json']) # noqa: E501
1011
+
1012
+ # set the HTTP header `Content-Type`
1013
+ _content_types_list = _params.get('_content_type',
1014
+ self.api_client.select_header_content_type(
1015
+ ['application/json-patch+json', 'application/json', 'text/json', 'application/*+json']))
1016
+ if _content_types_list:
1017
+ _header_params['Content-Type'] = _content_types_list
1018
+
1019
+ # authentication setting
1020
+ _auth_settings = ['oauth2'] # noqa: E501
1021
+
1022
+ _response_types_map = {
1023
+ '200': "GetRecipeResponse",
1024
+ '400': "LusidValidationProblemDetails",
1025
+ }
1026
+
1027
+ return self.api_client.call_api(
1028
+ '/api/recipes/composer/resolvedinline$', 'POST',
1029
+ _path_params,
1030
+ _query_params,
1031
+ _header_params,
1032
+ body=_body_params,
1033
+ post_params=_form_params,
1034
+ files=_files,
1035
+ response_types_map=_response_types_map,
1036
+ auth_settings=_auth_settings,
1037
+ async_req=_params.get('async_req'),
1038
+ _return_http_data_only=_params.get('_return_http_data_only'), # noqa: E501
1039
+ _preload_content=_params.get('_preload_content', True),
1040
+ _request_timeout=_params.get('_request_timeout'),
1041
+ collection_formats=_collection_formats,
1042
+ _request_auth=_params.get('_request_auth'))
1043
+
1044
+ @overload
1045
+ async def list_configuration_recipes(self, as_at : Annotated[Optional[datetime], Field(description="The asAt datetime at which to list the Configuration Recipes. Defaults to latest if not specified.")] = None, filter : Annotated[Optional[constr(strict=True, max_length=16384, min_length=0)], Field(description="Expression to filter the result set. Read more about filtering results from LUSID here: https://support.lusid.com/filtering-results-from-lusid.")] = None, **kwargs) -> ResourceListOfGetRecipeResponse: # noqa: E501
1046
+ ...
1047
+
1048
+ @overload
1049
+ def list_configuration_recipes(self, as_at : Annotated[Optional[datetime], Field(description="The asAt datetime at which to list the Configuration Recipes. Defaults to latest if not specified.")] = None, filter : Annotated[Optional[constr(strict=True, max_length=16384, min_length=0)], Field(description="Expression to filter the result set. Read more about filtering results from LUSID here: https://support.lusid.com/filtering-results-from-lusid.")] = None, async_req: Optional[bool]=True, **kwargs) -> ResourceListOfGetRecipeResponse: # noqa: E501
1050
+ ...
1051
+
1052
+ @validate_arguments
1053
+ def list_configuration_recipes(self, as_at : Annotated[Optional[datetime], Field(description="The asAt datetime at which to list the Configuration Recipes. Defaults to latest if not specified.")] = None, filter : Annotated[Optional[constr(strict=True, max_length=16384, min_length=0)], Field(description="Expression to filter the result set. Read more about filtering results from LUSID here: https://support.lusid.com/filtering-results-from-lusid.")] = None, async_req: Optional[bool]=None, **kwargs) -> Union[ResourceListOfGetRecipeResponse, Awaitable[ResourceListOfGetRecipeResponse]]: # noqa: E501
1054
+ """ListConfigurationRecipes: List the set of Configuration Recipes # noqa: E501
1055
+
1056
+ List the set of configuration recipes at the specified date/time and scope. Note this only returns recipes stored directly and does not include any recipes expanded from recipe composers. # noqa: E501
1057
+ This method makes a synchronous HTTP request by default. To make an
1058
+ asynchronous HTTP request, please pass async_req=True
1059
+
1060
+ >>> thread = api.list_configuration_recipes(as_at, filter, async_req=True)
1061
+ >>> result = thread.get()
1062
+
1063
+ :param as_at: The asAt datetime at which to list the Configuration Recipes. Defaults to latest if not specified.
1064
+ :type as_at: datetime
1065
+ :param filter: Expression to filter the result set. Read more about filtering results from LUSID here: https://support.lusid.com/filtering-results-from-lusid.
1066
+ :type filter: str
1067
+ :param async_req: Whether to execute the request asynchronously.
1068
+ :type async_req: bool, optional
1069
+ :param _request_timeout: timeout setting for this request.
1070
+ If one number provided, it will be total request
1071
+ timeout. It can also be a pair (tuple) of
1072
+ (connection, read) timeouts.
1073
+ :return: Returns the result object.
1074
+ If the method is called asynchronously,
1075
+ returns the request thread.
1076
+ :rtype: ResourceListOfGetRecipeResponse
1077
+ """
1078
+ kwargs['_return_http_data_only'] = True
1079
+ if '_preload_content' in kwargs:
1080
+ message = "Error! Please call the list_configuration_recipes_with_http_info method with `_preload_content` instead and obtain raw data from ApiResponse.raw_data" # noqa: E501
1081
+ raise ValueError(message)
1082
+ if async_req is not None:
1083
+ kwargs['async_req'] = async_req
1084
+ return self.list_configuration_recipes_with_http_info(as_at, filter, **kwargs) # noqa: E501
1085
+
1086
+ @validate_arguments
1087
+ def list_configuration_recipes_with_http_info(self, as_at : Annotated[Optional[datetime], Field(description="The asAt datetime at which to list the Configuration Recipes. Defaults to latest if not specified.")] = None, filter : Annotated[Optional[constr(strict=True, max_length=16384, min_length=0)], Field(description="Expression to filter the result set. Read more about filtering results from LUSID here: https://support.lusid.com/filtering-results-from-lusid.")] = None, **kwargs) -> ApiResponse: # noqa: E501
1088
+ """ListConfigurationRecipes: List the set of Configuration Recipes # noqa: E501
1089
+
1090
+ List the set of configuration recipes at the specified date/time and scope. Note this only returns recipes stored directly and does not include any recipes expanded from recipe composers. # noqa: E501
1091
+ This method makes a synchronous HTTP request by default. To make an
1092
+ asynchronous HTTP request, please pass async_req=True
1093
+
1094
+ >>> thread = api.list_configuration_recipes_with_http_info(as_at, filter, async_req=True)
1095
+ >>> result = thread.get()
1096
+
1097
+ :param as_at: The asAt datetime at which to list the Configuration Recipes. Defaults to latest if not specified.
1098
+ :type as_at: datetime
1099
+ :param filter: Expression to filter the result set. Read more about filtering results from LUSID here: https://support.lusid.com/filtering-results-from-lusid.
1100
+ :type filter: str
1101
+ :param async_req: Whether to execute the request asynchronously.
1102
+ :type async_req: bool, optional
1103
+ :param _preload_content: if False, the ApiResponse.data will
1104
+ be set to none and raw_data will store the
1105
+ HTTP response body without reading/decoding.
1106
+ Default is True.
1107
+ :type _preload_content: bool, optional
1108
+ :param _return_http_data_only: response data instead of ApiResponse
1109
+ object with status code, headers, etc
1110
+ :type _return_http_data_only: bool, optional
1111
+ :param _request_timeout: timeout setting for this request. If one
1112
+ number provided, it will be total request
1113
+ timeout. It can also be a pair (tuple) of
1114
+ (connection, read) timeouts.
1115
+ :param _request_auth: set to override the auth_settings for an a single
1116
+ request; this effectively ignores the authentication
1117
+ in the spec for a single request.
1118
+ :type _request_auth: dict, optional
1119
+ :type _content_type: string, optional: force content-type for the request
1120
+ :return: Returns the result object.
1121
+ If the method is called asynchronously,
1122
+ returns the request thread.
1123
+ :rtype: tuple(ResourceListOfGetRecipeResponse, status_code(int), headers(HTTPHeaderDict))
1124
+ """
1125
+
1126
+ _params = locals()
1127
+
1128
+ _all_params = [
1129
+ 'as_at',
1130
+ 'filter'
1131
+ ]
1132
+ _all_params.extend(
1133
+ [
1134
+ 'async_req',
1135
+ '_return_http_data_only',
1136
+ '_preload_content',
1137
+ '_request_timeout',
1138
+ '_request_auth',
1139
+ '_content_type',
1140
+ '_headers'
1141
+ ]
1142
+ )
1143
+
1144
+ # validate the arguments
1145
+ for _key, _val in _params['kwargs'].items():
1146
+ if _key not in _all_params:
1147
+ raise ApiTypeError(
1148
+ "Got an unexpected keyword argument '%s'"
1149
+ " to method list_configuration_recipes" % _key
1150
+ )
1151
+ _params[_key] = _val
1152
+ del _params['kwargs']
1153
+
1154
+ _collection_formats = {}
1155
+
1156
+ # process the path parameters
1157
+ _path_params = {}
1158
+
1159
+ # process the query parameters
1160
+ _query_params = []
1161
+ if _params.get('as_at') is not None: # noqa: E501
1162
+ if isinstance(_params['as_at'], datetime):
1163
+ _query_params.append(('asAt', _params['as_at'].strftime(self.api_client.configuration.datetime_format)))
1164
+ else:
1165
+ _query_params.append(('asAt', _params['as_at']))
1166
+
1167
+ if _params.get('filter') is not None: # noqa: E501
1168
+ _query_params.append(('filter', _params['filter']))
1169
+
1170
+ # process the header parameters
1171
+ _header_params = dict(_params.get('_headers', {}))
1172
+ # process the form parameters
1173
+ _form_params = []
1174
+ _files = {}
1175
+ # process the body parameter
1176
+ _body_params = None
1177
+ # set the HTTP header `Accept`
1178
+ _header_params['Accept'] = self.api_client.select_header_accept(
1179
+ ['text/plain', 'application/json', 'text/json']) # noqa: E501
1180
+
1181
+ # authentication setting
1182
+ _auth_settings = ['oauth2'] # noqa: E501
1183
+
1184
+ _response_types_map = {
1185
+ '200': "ResourceListOfGetRecipeResponse",
1186
+ '400': "LusidValidationProblemDetails",
1187
+ }
1188
+
1189
+ return self.api_client.call_api(
1190
+ '/api/recipes', 'GET',
1191
+ _path_params,
1192
+ _query_params,
1193
+ _header_params,
1194
+ body=_body_params,
1195
+ post_params=_form_params,
1196
+ files=_files,
1197
+ response_types_map=_response_types_map,
1198
+ auth_settings=_auth_settings,
1199
+ async_req=_params.get('async_req'),
1200
+ _return_http_data_only=_params.get('_return_http_data_only'), # noqa: E501
1201
+ _preload_content=_params.get('_preload_content', True),
1202
+ _request_timeout=_params.get('_request_timeout'),
1203
+ collection_formats=_collection_formats,
1204
+ _request_auth=_params.get('_request_auth'))
1205
+
1206
+ @overload
1207
+ async def list_derived_recipes(self, as_at : Annotated[Optional[datetime], Field(description="The asAt datetime at which to list the Configuration Recipes. Defaults to latest if not specified.")] = None, filter : Annotated[Optional[constr(strict=True, max_length=16384, min_length=0)], Field(description="Expression to filter the result set, note this functionality is not yet enabled for this endpoint.")] = None, **kwargs) -> ResourceListOfGetRecipeResponse: # noqa: E501
1208
+ ...
1209
+
1210
+ @overload
1211
+ def list_derived_recipes(self, as_at : Annotated[Optional[datetime], Field(description="The asAt datetime at which to list the Configuration Recipes. Defaults to latest if not specified.")] = None, filter : Annotated[Optional[constr(strict=True, max_length=16384, min_length=0)], Field(description="Expression to filter the result set, note this functionality is not yet enabled for this endpoint.")] = None, async_req: Optional[bool]=True, **kwargs) -> ResourceListOfGetRecipeResponse: # noqa: E501
220
1212
  ...
221
1213
 
222
1214
  @validate_arguments
223
- def get_configuration_recipe(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the Configuration Recipe to retrieve.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The name of the recipe to retrieve the data for.")], as_at : Annotated[Optional[datetime], Field(description="The asAt datetime at which to retrieve the Configuration Recipe. Defaults to return the latest version if not specified.")] = None, async_req: Optional[bool]=None, **kwargs) -> Union[GetRecipeResponse, Awaitable[GetRecipeResponse]]: # noqa: E501
224
- """GetConfigurationRecipe: Get Configuration Recipe # noqa: E501
1215
+ def list_derived_recipes(self, as_at : Annotated[Optional[datetime], Field(description="The asAt datetime at which to list the Configuration Recipes. Defaults to latest if not specified.")] = None, filter : Annotated[Optional[constr(strict=True, max_length=16384, min_length=0)], Field(description="Expression to filter the result set, note this functionality is not yet enabled for this endpoint.")] = None, async_req: Optional[bool]=None, **kwargs) -> Union[ResourceListOfGetRecipeResponse, Awaitable[ResourceListOfGetRecipeResponse]]: # noqa: E501
1216
+ """[EXPERIMENTAL] ListDerivedRecipes: List the complete set of all Configuration Recipes, both from the configuration recipe store and also from expanded recipe composers. # noqa: E501
225
1217
 
226
- Get a Configuration Recipe from a single scope. The response will return either the recipe that has been stored, or a failure explaining why the request was unsuccessful. It is important to always check for any unsuccessful requests (failures). # noqa: E501
1218
+ This endpoints returns a union of the output of ListConfigurationRecipes and the resolved Recipe Composers from the ListRecipeComposers endpoints. # noqa: E501
227
1219
  This method makes a synchronous HTTP request by default. To make an
228
1220
  asynchronous HTTP request, please pass async_req=True
229
1221
 
230
- >>> thread = api.get_configuration_recipe(scope, code, as_at, async_req=True)
1222
+ >>> thread = api.list_derived_recipes(as_at, filter, async_req=True)
231
1223
  >>> result = thread.get()
232
1224
 
233
- :param scope: The scope of the Configuration Recipe to retrieve. (required)
234
- :type scope: str
235
- :param code: The name of the recipe to retrieve the data for. (required)
236
- :type code: str
237
- :param as_at: The asAt datetime at which to retrieve the Configuration Recipe. Defaults to return the latest version if not specified.
1225
+ :param as_at: The asAt datetime at which to list the Configuration Recipes. Defaults to latest if not specified.
238
1226
  :type as_at: datetime
1227
+ :param filter: Expression to filter the result set, note this functionality is not yet enabled for this endpoint.
1228
+ :type filter: str
239
1229
  :param async_req: Whether to execute the request asynchronously.
240
1230
  :type async_req: bool, optional
241
1231
  :param _request_timeout: timeout setting for this request.
@@ -245,33 +1235,31 @@ class ConfigurationRecipeApi:
245
1235
  :return: Returns the result object.
246
1236
  If the method is called asynchronously,
247
1237
  returns the request thread.
248
- :rtype: GetRecipeResponse
1238
+ :rtype: ResourceListOfGetRecipeResponse
249
1239
  """
250
1240
  kwargs['_return_http_data_only'] = True
251
1241
  if '_preload_content' in kwargs:
252
- message = "Error! Please call the get_configuration_recipe_with_http_info method with `_preload_content` instead and obtain raw data from ApiResponse.raw_data" # noqa: E501
1242
+ message = "Error! Please call the list_derived_recipes_with_http_info method with `_preload_content` instead and obtain raw data from ApiResponse.raw_data" # noqa: E501
253
1243
  raise ValueError(message)
254
1244
  if async_req is not None:
255
1245
  kwargs['async_req'] = async_req
256
- return self.get_configuration_recipe_with_http_info(scope, code, as_at, **kwargs) # noqa: E501
1246
+ return self.list_derived_recipes_with_http_info(as_at, filter, **kwargs) # noqa: E501
257
1247
 
258
1248
  @validate_arguments
259
- def get_configuration_recipe_with_http_info(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the Configuration Recipe to retrieve.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The name of the recipe to retrieve the data for.")], as_at : Annotated[Optional[datetime], Field(description="The asAt datetime at which to retrieve the Configuration Recipe. Defaults to return the latest version if not specified.")] = None, **kwargs) -> ApiResponse: # noqa: E501
260
- """GetConfigurationRecipe: Get Configuration Recipe # noqa: E501
1249
+ def list_derived_recipes_with_http_info(self, as_at : Annotated[Optional[datetime], Field(description="The asAt datetime at which to list the Configuration Recipes. Defaults to latest if not specified.")] = None, filter : Annotated[Optional[constr(strict=True, max_length=16384, min_length=0)], Field(description="Expression to filter the result set, note this functionality is not yet enabled for this endpoint.")] = None, **kwargs) -> ApiResponse: # noqa: E501
1250
+ """[EXPERIMENTAL] ListDerivedRecipes: List the complete set of all Configuration Recipes, both from the configuration recipe store and also from expanded recipe composers. # noqa: E501
261
1251
 
262
- Get a Configuration Recipe from a single scope. The response will return either the recipe that has been stored, or a failure explaining why the request was unsuccessful. It is important to always check for any unsuccessful requests (failures). # noqa: E501
1252
+ This endpoints returns a union of the output of ListConfigurationRecipes and the resolved Recipe Composers from the ListRecipeComposers endpoints. # noqa: E501
263
1253
  This method makes a synchronous HTTP request by default. To make an
264
1254
  asynchronous HTTP request, please pass async_req=True
265
1255
 
266
- >>> thread = api.get_configuration_recipe_with_http_info(scope, code, as_at, async_req=True)
1256
+ >>> thread = api.list_derived_recipes_with_http_info(as_at, filter, async_req=True)
267
1257
  >>> result = thread.get()
268
1258
 
269
- :param scope: The scope of the Configuration Recipe to retrieve. (required)
270
- :type scope: str
271
- :param code: The name of the recipe to retrieve the data for. (required)
272
- :type code: str
273
- :param as_at: The asAt datetime at which to retrieve the Configuration Recipe. Defaults to return the latest version if not specified.
1259
+ :param as_at: The asAt datetime at which to list the Configuration Recipes. Defaults to latest if not specified.
274
1260
  :type as_at: datetime
1261
+ :param filter: Expression to filter the result set, note this functionality is not yet enabled for this endpoint.
1262
+ :type filter: str
275
1263
  :param async_req: Whether to execute the request asynchronously.
276
1264
  :type async_req: bool, optional
277
1265
  :param _preload_content: if False, the ApiResponse.data will
@@ -294,15 +1282,14 @@ class ConfigurationRecipeApi:
294
1282
  :return: Returns the result object.
295
1283
  If the method is called asynchronously,
296
1284
  returns the request thread.
297
- :rtype: tuple(GetRecipeResponse, status_code(int), headers(HTTPHeaderDict))
1285
+ :rtype: tuple(ResourceListOfGetRecipeResponse, status_code(int), headers(HTTPHeaderDict))
298
1286
  """
299
1287
 
300
1288
  _params = locals()
301
1289
 
302
1290
  _all_params = [
303
- 'scope',
304
- 'code',
305
- 'as_at'
1291
+ 'as_at',
1292
+ 'filter'
306
1293
  ]
307
1294
  _all_params.extend(
308
1295
  [
@@ -321,7 +1308,7 @@ class ConfigurationRecipeApi:
321
1308
  if _key not in _all_params:
322
1309
  raise ApiTypeError(
323
1310
  "Got an unexpected keyword argument '%s'"
324
- " to method get_configuration_recipe" % _key
1311
+ " to method list_derived_recipes" % _key
325
1312
  )
326
1313
  _params[_key] = _val
327
1314
  del _params['kwargs']
@@ -330,12 +1317,6 @@ class ConfigurationRecipeApi:
330
1317
 
331
1318
  # process the path parameters
332
1319
  _path_params = {}
333
- if _params['scope']:
334
- _path_params['scope'] = _params['scope']
335
-
336
- if _params['code']:
337
- _path_params['code'] = _params['code']
338
-
339
1320
 
340
1321
  # process the query parameters
341
1322
  _query_params = []
@@ -345,6 +1326,9 @@ class ConfigurationRecipeApi:
345
1326
  else:
346
1327
  _query_params.append(('asAt', _params['as_at']))
347
1328
 
1329
+ if _params.get('filter') is not None: # noqa: E501
1330
+ _query_params.append(('filter', _params['filter']))
1331
+
348
1332
  # process the header parameters
349
1333
  _header_params = dict(_params.get('_headers', {}))
350
1334
  # process the form parameters
@@ -360,12 +1344,12 @@ class ConfigurationRecipeApi:
360
1344
  _auth_settings = ['oauth2'] # noqa: E501
361
1345
 
362
1346
  _response_types_map = {
363
- '200': "GetRecipeResponse",
1347
+ '200': "ResourceListOfGetRecipeResponse",
364
1348
  '400': "LusidValidationProblemDetails",
365
1349
  }
366
1350
 
367
1351
  return self.api_client.call_api(
368
- '/api/recipes/{scope}/{code}', 'GET',
1352
+ '/api/recipes/derived', 'GET',
369
1353
  _path_params,
370
1354
  _query_params,
371
1355
  _header_params,
@@ -382,27 +1366,27 @@ class ConfigurationRecipeApi:
382
1366
  _request_auth=_params.get('_request_auth'))
383
1367
 
384
1368
  @overload
385
- async def list_configuration_recipes(self, as_at : Annotated[Optional[datetime], Field(description="The asAt datetime at which to list the Configuration Recipes. Defaults to latest if not specified.")] = None, filter : Annotated[Optional[constr(strict=True, max_length=16384, min_length=0)], Field(description="Expression to filter the result set. Read more about filtering results from LUSID here: https://support.lusid.com/filtering-results-from-lusid.")] = None, **kwargs) -> ResourceListOfGetRecipeResponse: # noqa: E501
1369
+ async def list_recipe_composers(self, as_at : Annotated[Optional[datetime], Field(description="The asAt datetime at which to list the Recipes Composers. Defaults to latest if not specified.")] = None, filter : Annotated[Optional[constr(strict=True, max_length=16384, min_length=0)], Field(description="Expression to filter the result set, note this functionality is not yet enabled for this endpoint.")] = None, **kwargs) -> ResourceListOfGetRecipeComposerResponse: # noqa: E501
386
1370
  ...
387
1371
 
388
1372
  @overload
389
- def list_configuration_recipes(self, as_at : Annotated[Optional[datetime], Field(description="The asAt datetime at which to list the Configuration Recipes. Defaults to latest if not specified.")] = None, filter : Annotated[Optional[constr(strict=True, max_length=16384, min_length=0)], Field(description="Expression to filter the result set. Read more about filtering results from LUSID here: https://support.lusid.com/filtering-results-from-lusid.")] = None, async_req: Optional[bool]=True, **kwargs) -> ResourceListOfGetRecipeResponse: # noqa: E501
1373
+ def list_recipe_composers(self, as_at : Annotated[Optional[datetime], Field(description="The asAt datetime at which to list the Recipes Composers. Defaults to latest if not specified.")] = None, filter : Annotated[Optional[constr(strict=True, max_length=16384, min_length=0)], Field(description="Expression to filter the result set, note this functionality is not yet enabled for this endpoint.")] = None, async_req: Optional[bool]=True, **kwargs) -> ResourceListOfGetRecipeComposerResponse: # noqa: E501
390
1374
  ...
391
1375
 
392
1376
  @validate_arguments
393
- def list_configuration_recipes(self, as_at : Annotated[Optional[datetime], Field(description="The asAt datetime at which to list the Configuration Recipes. Defaults to latest if not specified.")] = None, filter : Annotated[Optional[constr(strict=True, max_length=16384, min_length=0)], Field(description="Expression to filter the result set. Read more about filtering results from LUSID here: https://support.lusid.com/filtering-results-from-lusid.")] = None, async_req: Optional[bool]=None, **kwargs) -> Union[ResourceListOfGetRecipeResponse, Awaitable[ResourceListOfGetRecipeResponse]]: # noqa: E501
394
- """ListConfigurationRecipes: List the set of Configuration Recipes # noqa: E501
1377
+ def list_recipe_composers(self, as_at : Annotated[Optional[datetime], Field(description="The asAt datetime at which to list the Recipes Composers. Defaults to latest if not specified.")] = None, filter : Annotated[Optional[constr(strict=True, max_length=16384, min_length=0)], Field(description="Expression to filter the result set, note this functionality is not yet enabled for this endpoint.")] = None, async_req: Optional[bool]=None, **kwargs) -> Union[ResourceListOfGetRecipeComposerResponse, Awaitable[ResourceListOfGetRecipeComposerResponse]]: # noqa: E501
1378
+ """[EXPERIMENTAL] ListRecipeComposers: List the set of Recipe Composers # noqa: E501
395
1379
 
396
- List the set of configuration recipes at the specified date/time and scope # noqa: E501
1380
+ List the set of Recipe Composers at the specified date/time and scope # noqa: E501
397
1381
  This method makes a synchronous HTTP request by default. To make an
398
1382
  asynchronous HTTP request, please pass async_req=True
399
1383
 
400
- >>> thread = api.list_configuration_recipes(as_at, filter, async_req=True)
1384
+ >>> thread = api.list_recipe_composers(as_at, filter, async_req=True)
401
1385
  >>> result = thread.get()
402
1386
 
403
- :param as_at: The asAt datetime at which to list the Configuration Recipes. Defaults to latest if not specified.
1387
+ :param as_at: The asAt datetime at which to list the Recipes Composers. Defaults to latest if not specified.
404
1388
  :type as_at: datetime
405
- :param filter: Expression to filter the result set. Read more about filtering results from LUSID here: https://support.lusid.com/filtering-results-from-lusid.
1389
+ :param filter: Expression to filter the result set, note this functionality is not yet enabled for this endpoint.
406
1390
  :type filter: str
407
1391
  :param async_req: Whether to execute the request asynchronously.
408
1392
  :type async_req: bool, optional
@@ -413,30 +1397,30 @@ class ConfigurationRecipeApi:
413
1397
  :return: Returns the result object.
414
1398
  If the method is called asynchronously,
415
1399
  returns the request thread.
416
- :rtype: ResourceListOfGetRecipeResponse
1400
+ :rtype: ResourceListOfGetRecipeComposerResponse
417
1401
  """
418
1402
  kwargs['_return_http_data_only'] = True
419
1403
  if '_preload_content' in kwargs:
420
- message = "Error! Please call the list_configuration_recipes_with_http_info method with `_preload_content` instead and obtain raw data from ApiResponse.raw_data" # noqa: E501
1404
+ message = "Error! Please call the list_recipe_composers_with_http_info method with `_preload_content` instead and obtain raw data from ApiResponse.raw_data" # noqa: E501
421
1405
  raise ValueError(message)
422
1406
  if async_req is not None:
423
1407
  kwargs['async_req'] = async_req
424
- return self.list_configuration_recipes_with_http_info(as_at, filter, **kwargs) # noqa: E501
1408
+ return self.list_recipe_composers_with_http_info(as_at, filter, **kwargs) # noqa: E501
425
1409
 
426
1410
  @validate_arguments
427
- def list_configuration_recipes_with_http_info(self, as_at : Annotated[Optional[datetime], Field(description="The asAt datetime at which to list the Configuration Recipes. Defaults to latest if not specified.")] = None, filter : Annotated[Optional[constr(strict=True, max_length=16384, min_length=0)], Field(description="Expression to filter the result set. Read more about filtering results from LUSID here: https://support.lusid.com/filtering-results-from-lusid.")] = None, **kwargs) -> ApiResponse: # noqa: E501
428
- """ListConfigurationRecipes: List the set of Configuration Recipes # noqa: E501
1411
+ def list_recipe_composers_with_http_info(self, as_at : Annotated[Optional[datetime], Field(description="The asAt datetime at which to list the Recipes Composers. Defaults to latest if not specified.")] = None, filter : Annotated[Optional[constr(strict=True, max_length=16384, min_length=0)], Field(description="Expression to filter the result set, note this functionality is not yet enabled for this endpoint.")] = None, **kwargs) -> ApiResponse: # noqa: E501
1412
+ """[EXPERIMENTAL] ListRecipeComposers: List the set of Recipe Composers # noqa: E501
429
1413
 
430
- List the set of configuration recipes at the specified date/time and scope # noqa: E501
1414
+ List the set of Recipe Composers at the specified date/time and scope # noqa: E501
431
1415
  This method makes a synchronous HTTP request by default. To make an
432
1416
  asynchronous HTTP request, please pass async_req=True
433
1417
 
434
- >>> thread = api.list_configuration_recipes_with_http_info(as_at, filter, async_req=True)
1418
+ >>> thread = api.list_recipe_composers_with_http_info(as_at, filter, async_req=True)
435
1419
  >>> result = thread.get()
436
1420
 
437
- :param as_at: The asAt datetime at which to list the Configuration Recipes. Defaults to latest if not specified.
1421
+ :param as_at: The asAt datetime at which to list the Recipes Composers. Defaults to latest if not specified.
438
1422
  :type as_at: datetime
439
- :param filter: Expression to filter the result set. Read more about filtering results from LUSID here: https://support.lusid.com/filtering-results-from-lusid.
1423
+ :param filter: Expression to filter the result set, note this functionality is not yet enabled for this endpoint.
440
1424
  :type filter: str
441
1425
  :param async_req: Whether to execute the request asynchronously.
442
1426
  :type async_req: bool, optional
@@ -460,7 +1444,7 @@ class ConfigurationRecipeApi:
460
1444
  :return: Returns the result object.
461
1445
  If the method is called asynchronously,
462
1446
  returns the request thread.
463
- :rtype: tuple(ResourceListOfGetRecipeResponse, status_code(int), headers(HTTPHeaderDict))
1447
+ :rtype: tuple(ResourceListOfGetRecipeComposerResponse, status_code(int), headers(HTTPHeaderDict))
464
1448
  """
465
1449
 
466
1450
  _params = locals()
@@ -486,7 +1470,7 @@ class ConfigurationRecipeApi:
486
1470
  if _key not in _all_params:
487
1471
  raise ApiTypeError(
488
1472
  "Got an unexpected keyword argument '%s'"
489
- " to method list_configuration_recipes" % _key
1473
+ " to method list_recipe_composers" % _key
490
1474
  )
491
1475
  _params[_key] = _val
492
1476
  del _params['kwargs']
@@ -522,12 +1506,12 @@ class ConfigurationRecipeApi:
522
1506
  _auth_settings = ['oauth2'] # noqa: E501
523
1507
 
524
1508
  _response_types_map = {
525
- '200': "ResourceListOfGetRecipeResponse",
1509
+ '200': "ResourceListOfGetRecipeComposerResponse",
526
1510
  '400': "LusidValidationProblemDetails",
527
1511
  }
528
1512
 
529
1513
  return self.api_client.call_api(
530
- '/api/recipes', 'GET',
1514
+ '/api/recipes/composer', 'GET',
531
1515
  _path_params,
532
1516
  _query_params,
533
1517
  _header_params,
@@ -700,3 +1684,161 @@ class ConfigurationRecipeApi:
700
1684
  _request_timeout=_params.get('_request_timeout'),
701
1685
  collection_formats=_collection_formats,
702
1686
  _request_auth=_params.get('_request_auth'))
1687
+
1688
+ @overload
1689
+ async def upsert_recipe_composer(self, upsert_recipe_composer_request : Annotated[UpsertRecipeComposerRequest, Field(..., description="The Recipe Composer to update or insert")], **kwargs) -> UpsertSingleStructuredDataResponse: # noqa: E501
1690
+ ...
1691
+
1692
+ @overload
1693
+ def upsert_recipe_composer(self, upsert_recipe_composer_request : Annotated[UpsertRecipeComposerRequest, Field(..., description="The Recipe Composer to update or insert")], async_req: Optional[bool]=True, **kwargs) -> UpsertSingleStructuredDataResponse: # noqa: E501
1694
+ ...
1695
+
1696
+ @validate_arguments
1697
+ def upsert_recipe_composer(self, upsert_recipe_composer_request : Annotated[UpsertRecipeComposerRequest, Field(..., description="The Recipe Composer to update or insert")], async_req: Optional[bool]=None, **kwargs) -> Union[UpsertSingleStructuredDataResponse, Awaitable[UpsertSingleStructuredDataResponse]]: # noqa: E501
1698
+ """[EXPERIMENTAL] UpsertRecipeComposer: Upsert a Recipe Composer. This creates or updates the data in Lusid. # noqa: E501
1699
+
1700
+ Update or insert one Recipe Composer in a single scope. An item will be updated if it already exists and inserted if it does not. The response will return the successfully updated or inserted Recipe Composer or failure message if unsuccessful It is important to always check to verify success (or failure). # noqa: E501
1701
+ This method makes a synchronous HTTP request by default. To make an
1702
+ asynchronous HTTP request, please pass async_req=True
1703
+
1704
+ >>> thread = api.upsert_recipe_composer(upsert_recipe_composer_request, async_req=True)
1705
+ >>> result = thread.get()
1706
+
1707
+ :param upsert_recipe_composer_request: The Recipe Composer to update or insert (required)
1708
+ :type upsert_recipe_composer_request: UpsertRecipeComposerRequest
1709
+ :param async_req: Whether to execute the request asynchronously.
1710
+ :type async_req: bool, optional
1711
+ :param _request_timeout: timeout setting for this request.
1712
+ If one number provided, it will be total request
1713
+ timeout. It can also be a pair (tuple) of
1714
+ (connection, read) timeouts.
1715
+ :return: Returns the result object.
1716
+ If the method is called asynchronously,
1717
+ returns the request thread.
1718
+ :rtype: UpsertSingleStructuredDataResponse
1719
+ """
1720
+ kwargs['_return_http_data_only'] = True
1721
+ if '_preload_content' in kwargs:
1722
+ message = "Error! Please call the upsert_recipe_composer_with_http_info method with `_preload_content` instead and obtain raw data from ApiResponse.raw_data" # noqa: E501
1723
+ raise ValueError(message)
1724
+ if async_req is not None:
1725
+ kwargs['async_req'] = async_req
1726
+ return self.upsert_recipe_composer_with_http_info(upsert_recipe_composer_request, **kwargs) # noqa: E501
1727
+
1728
+ @validate_arguments
1729
+ def upsert_recipe_composer_with_http_info(self, upsert_recipe_composer_request : Annotated[UpsertRecipeComposerRequest, Field(..., description="The Recipe Composer to update or insert")], **kwargs) -> ApiResponse: # noqa: E501
1730
+ """[EXPERIMENTAL] UpsertRecipeComposer: Upsert a Recipe Composer. This creates or updates the data in Lusid. # noqa: E501
1731
+
1732
+ Update or insert one Recipe Composer in a single scope. An item will be updated if it already exists and inserted if it does not. The response will return the successfully updated or inserted Recipe Composer or failure message if unsuccessful It is important to always check to verify success (or failure). # noqa: E501
1733
+ This method makes a synchronous HTTP request by default. To make an
1734
+ asynchronous HTTP request, please pass async_req=True
1735
+
1736
+ >>> thread = api.upsert_recipe_composer_with_http_info(upsert_recipe_composer_request, async_req=True)
1737
+ >>> result = thread.get()
1738
+
1739
+ :param upsert_recipe_composer_request: The Recipe Composer to update or insert (required)
1740
+ :type upsert_recipe_composer_request: UpsertRecipeComposerRequest
1741
+ :param async_req: Whether to execute the request asynchronously.
1742
+ :type async_req: bool, optional
1743
+ :param _preload_content: if False, the ApiResponse.data will
1744
+ be set to none and raw_data will store the
1745
+ HTTP response body without reading/decoding.
1746
+ Default is True.
1747
+ :type _preload_content: bool, optional
1748
+ :param _return_http_data_only: response data instead of ApiResponse
1749
+ object with status code, headers, etc
1750
+ :type _return_http_data_only: bool, optional
1751
+ :param _request_timeout: timeout setting for this request. If one
1752
+ number provided, it will be total request
1753
+ timeout. It can also be a pair (tuple) of
1754
+ (connection, read) timeouts.
1755
+ :param _request_auth: set to override the auth_settings for an a single
1756
+ request; this effectively ignores the authentication
1757
+ in the spec for a single request.
1758
+ :type _request_auth: dict, optional
1759
+ :type _content_type: string, optional: force content-type for the request
1760
+ :return: Returns the result object.
1761
+ If the method is called asynchronously,
1762
+ returns the request thread.
1763
+ :rtype: tuple(UpsertSingleStructuredDataResponse, status_code(int), headers(HTTPHeaderDict))
1764
+ """
1765
+
1766
+ _params = locals()
1767
+
1768
+ _all_params = [
1769
+ 'upsert_recipe_composer_request'
1770
+ ]
1771
+ _all_params.extend(
1772
+ [
1773
+ 'async_req',
1774
+ '_return_http_data_only',
1775
+ '_preload_content',
1776
+ '_request_timeout',
1777
+ '_request_auth',
1778
+ '_content_type',
1779
+ '_headers'
1780
+ ]
1781
+ )
1782
+
1783
+ # validate the arguments
1784
+ for _key, _val in _params['kwargs'].items():
1785
+ if _key not in _all_params:
1786
+ raise ApiTypeError(
1787
+ "Got an unexpected keyword argument '%s'"
1788
+ " to method upsert_recipe_composer" % _key
1789
+ )
1790
+ _params[_key] = _val
1791
+ del _params['kwargs']
1792
+
1793
+ _collection_formats = {}
1794
+
1795
+ # process the path parameters
1796
+ _path_params = {}
1797
+
1798
+ # process the query parameters
1799
+ _query_params = []
1800
+ # process the header parameters
1801
+ _header_params = dict(_params.get('_headers', {}))
1802
+ # process the form parameters
1803
+ _form_params = []
1804
+ _files = {}
1805
+ # process the body parameter
1806
+ _body_params = None
1807
+ if _params['upsert_recipe_composer_request'] is not None:
1808
+ _body_params = _params['upsert_recipe_composer_request']
1809
+
1810
+ # set the HTTP header `Accept`
1811
+ _header_params['Accept'] = self.api_client.select_header_accept(
1812
+ ['text/plain', 'application/json', 'text/json']) # noqa: E501
1813
+
1814
+ # set the HTTP header `Content-Type`
1815
+ _content_types_list = _params.get('_content_type',
1816
+ self.api_client.select_header_content_type(
1817
+ ['application/json-patch+json', 'application/json', 'text/json', 'application/*+json']))
1818
+ if _content_types_list:
1819
+ _header_params['Content-Type'] = _content_types_list
1820
+
1821
+ # authentication setting
1822
+ _auth_settings = ['oauth2'] # noqa: E501
1823
+
1824
+ _response_types_map = {
1825
+ '200': "UpsertSingleStructuredDataResponse",
1826
+ '400': "LusidValidationProblemDetails",
1827
+ }
1828
+
1829
+ return self.api_client.call_api(
1830
+ '/api/recipes/composer', 'POST',
1831
+ _path_params,
1832
+ _query_params,
1833
+ _header_params,
1834
+ body=_body_params,
1835
+ post_params=_form_params,
1836
+ files=_files,
1837
+ response_types_map=_response_types_map,
1838
+ auth_settings=_auth_settings,
1839
+ async_req=_params.get('async_req'),
1840
+ _return_http_data_only=_params.get('_return_http_data_only'), # noqa: E501
1841
+ _preload_content=_params.get('_preload_content', True),
1842
+ _request_timeout=_params.get('_request_timeout'),
1843
+ collection_formats=_collection_formats,
1844
+ _request_auth=_params.get('_request_auth'))