lusid-sdk 2.0.50b0__py3-none-any.whl → 2.0.441__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 (319) hide show
  1. lusid/__init__.py +1091 -14
  2. lusid/api/__init__.py +65 -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 +944 -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/quotes_api.py +20 -36
  32. lusid/api/reconciliations_api.py +410 -1978
  33. lusid/api/schemas_api.py +7 -15
  34. lusid/api/scopes_api.py +151 -0
  35. lusid/api/scripted_translation_api.py +30 -28
  36. lusid/api/transaction_configuration_api.py +22 -22
  37. lusid/api/transaction_portfolios_api.py +282 -577
  38. lusid/api_client.py +5 -3
  39. lusid/configuration.py +1 -1
  40. lusid/extensions/__init__.py +10 -7
  41. lusid/extensions/api_client.py +3 -1
  42. lusid/extensions/api_client_factory.py +156 -45
  43. lusid/extensions/api_configuration.py +124 -15
  44. lusid/extensions/configuration_loaders.py +2 -4
  45. lusid/extensions/proxy_config.py +8 -5
  46. lusid/extensions/socket_keep_alive.py +14 -15
  47. lusid/extensions/tcp_keep_alive_connector.py +93 -46
  48. lusid/models/__init__.py +1006 -13
  49. lusid/models/abor.py +9 -2
  50. lusid/models/abor_configuration.py +8 -8
  51. lusid/models/abor_configuration_request.py +9 -9
  52. lusid/models/abor_request.py +1 -1
  53. lusid/models/account.py +6 -1
  54. lusid/models/accumulation_event.py +104 -0
  55. lusid/models/address_key_compliance_parameter.py +5 -12
  56. lusid/models/address_key_list_compliance_parameter.py +3 -3
  57. lusid/models/address_key_option_definition.py +3 -1
  58. lusid/models/amortisation_event.py +4 -6
  59. lusid/models/{underlying_leg.py → asset_leg.py} +15 -15
  60. lusid/models/basket.py +3 -3
  61. lusid/models/block_and_order_id_request.py +78 -0
  62. lusid/models/block_and_orders.py +83 -0
  63. lusid/models/block_and_orders_create_request.py +77 -0
  64. lusid/models/block_and_orders_request.py +134 -0
  65. lusid/models/blocked_order_request.py +130 -0
  66. lusid/models/bond.py +13 -6
  67. lusid/models/bond_coupon_event.py +97 -0
  68. lusid/models/bond_default_event.py +8 -18
  69. lusid/models/bond_principal_event.py +97 -0
  70. lusid/models/book_transactions_request.py +97 -0
  71. lusid/models/bool_compliance_parameter.py +3 -3
  72. lusid/models/bool_list_compliance_parameter.py +3 -3
  73. lusid/models/branch_step.py +101 -0
  74. lusid/models/cap_floor.py +3 -3
  75. lusid/models/cash_dividend_event.py +32 -10
  76. lusid/models/cash_election.py +91 -0
  77. lusid/models/cash_flow_event.py +5 -7
  78. lusid/models/cash_perpetual.py +3 -3
  79. lusid/models/cds_flow_conventions.py +1 -1
  80. lusid/models/cds_index.py +4 -4
  81. lusid/models/check_step.py +110 -0
  82. lusid/models/cleardown_module_details.py +95 -0
  83. lusid/models/cleardown_module_request.py +117 -0
  84. lusid/models/cleardown_module_response.py +139 -0
  85. lusid/models/cleardown_module_rule.py +94 -0
  86. lusid/models/{reconciliation_run_break.py → cleardown_module_rules_updated_response.py} +30 -36
  87. lusid/models/close_event.py +3 -3
  88. lusid/models/close_period_diary_entry_request.py +149 -0
  89. lusid/models/complete_portfolio.py +8 -1
  90. lusid/models/complex_bond.py +4 -4
  91. lusid/models/complex_market_data.py +6 -5
  92. lusid/models/compliance_parameter.py +8 -5
  93. lusid/models/compliance_parameter_type.py +3 -0
  94. lusid/models/compliance_rule_breakdown.py +16 -8
  95. lusid/models/compliance_rule_breakdown_request.py +12 -4
  96. lusid/models/compliance_rule_result_v2.py +85 -0
  97. lusid/models/compliance_step.py +99 -0
  98. lusid/models/compliance_step_type.py +42 -0
  99. lusid/models/compliance_summary_rule_result.py +12 -15
  100. lusid/models/compliance_summary_rule_result_request.py +12 -15
  101. lusid/models/compliance_template_variation.py +12 -2
  102. lusid/models/component_transaction.py +92 -0
  103. lusid/models/composite_dispersion.py +30 -5
  104. lusid/models/compounding.py +4 -4
  105. lusid/models/configuration_recipe.py +10 -19
  106. lusid/models/constant_volatility_surface.py +102 -0
  107. lusid/models/contract_for_difference.py +3 -3
  108. lusid/models/create_derived_property_definition_request.py +3 -3
  109. lusid/models/create_derived_transaction_portfolio_request.py +10 -3
  110. lusid/models/create_property_definition_request.py +12 -5
  111. lusid/models/create_trade_tickets_response.py +87 -0
  112. lusid/models/create_transaction_portfolio_request.py +16 -3
  113. lusid/models/credit_default_swap.py +4 -4
  114. lusid/models/credit_spread_curve_data.py +4 -4
  115. lusid/models/custom_entity_definition.py +8 -2
  116. lusid/models/custom_entity_type.py +8 -2
  117. lusid/models/cut_label_definition.py +7 -1
  118. lusid/models/data_type.py +7 -1
  119. lusid/models/data_type_summary.py +8 -2
  120. lusid/models/date_time_compliance_parameter.py +3 -3
  121. lusid/models/date_time_list_compliance_parameter.py +3 -3
  122. lusid/models/{upsert_reconciliation_run_request.py → day_month.py} +15 -15
  123. lusid/models/decimal_compliance_parameter.py +3 -3
  124. lusid/models/decimal_list_compliance_parameter.py +3 -3
  125. lusid/models/dialect.py +9 -3
  126. lusid/models/diary_entry.py +1 -1
  127. lusid/models/diary_entry_request.py +1 -1
  128. lusid/models/discount_factor_curve_data.py +3 -3
  129. lusid/models/dividend_option_event.py +129 -0
  130. lusid/models/dividend_reinvestment_event.py +124 -0
  131. lusid/models/election_specification.py +73 -0
  132. lusid/models/eligibility_calculation.py +71 -0
  133. lusid/models/empty_model_options.py +3 -3
  134. lusid/models/equity.py +8 -6
  135. lusid/models/equity_curve_by_prices_data.py +3 -3
  136. lusid/models/equity_model_options.py +3 -3
  137. lusid/models/equity_option.py +3 -3
  138. lusid/models/equity_swap.py +4 -4
  139. lusid/models/equity_vol_surface_data.py +3 -3
  140. lusid/models/exchange_traded_option.py +3 -3
  141. lusid/models/exercise_event.py +5 -7
  142. lusid/models/exotic_instrument.py +3 -3
  143. lusid/models/filter_predicate_compliance_parameter.py +91 -0
  144. lusid/models/filter_step.py +101 -0
  145. lusid/models/fixed_leg.py +3 -3
  146. lusid/models/fixed_schedule.py +4 -9
  147. lusid/models/flexible_loan.py +105 -0
  148. lusid/models/float_schedule.py +20 -12
  149. lusid/models/floating_leg.py +3 -3
  150. lusid/models/flow_convention_name.py +1 -1
  151. lusid/models/flow_conventions.py +1 -1
  152. lusid/models/forward_rate_agreement.py +3 -3
  153. lusid/models/from_recipe.py +81 -0
  154. lusid/models/fund.py +182 -0
  155. lusid/models/fund_properties.py +115 -0
  156. lusid/models/fund_request.py +165 -0
  157. lusid/models/fund_share_class.py +99 -0
  158. lusid/models/funding_leg.py +3 -3
  159. lusid/models/funding_leg_options.py +3 -3
  160. lusid/models/future.py +3 -3
  161. lusid/models/fx_conventions.py +73 -0
  162. lusid/models/fx_forward.py +8 -6
  163. lusid/models/fx_forward_curve_by_quote_reference.py +4 -4
  164. lusid/models/fx_forward_curve_data.py +3 -3
  165. lusid/models/fx_forward_model_options.py +3 -3
  166. lusid/models/fx_forward_pips_curve_data.py +3 -3
  167. lusid/models/fx_forward_settlement_event.py +136 -0
  168. lusid/models/fx_forward_tenor_curve_data.py +4 -4
  169. lusid/models/fx_forward_tenor_pips_curve_data.py +4 -4
  170. lusid/models/fx_linked_notional_schedule.py +108 -0
  171. lusid/models/fx_option.py +3 -3
  172. lusid/models/fx_rate_schedule.py +3 -3
  173. lusid/models/fx_swap.py +4 -4
  174. lusid/models/fx_vol_surface_data.py +3 -3
  175. lusid/models/{reconciliation_run.py → get_recipe_composer_response.py} +15 -15
  176. lusid/models/group_by_selector_compliance_parameter.py +91 -0
  177. lusid/models/group_by_step.py +101 -0
  178. lusid/models/group_filter_predicate_compliance_parameter.py +91 -0
  179. lusid/models/group_filter_step.py +110 -0
  180. lusid/models/group_of_market_data_key_rules.py +79 -0
  181. lusid/models/index_convention.py +1 -1
  182. lusid/models/index_model_options.py +3 -3
  183. lusid/models/inflation_index_conventions.py +2 -2
  184. lusid/models/inflation_leg.py +3 -3
  185. lusid/models/inflation_linked_bond.py +3 -3
  186. lusid/models/inflation_swap.py +4 -4
  187. lusid/models/informational_error_event.py +3 -3
  188. lusid/models/informational_event.py +4 -6
  189. lusid/models/instrument_event.py +12 -5
  190. lusid/models/instrument_event_configuration.py +74 -0
  191. lusid/models/instrument_event_holder.py +12 -3
  192. lusid/models/instrument_event_type.py +7 -0
  193. lusid/models/instrument_leg.py +3 -3
  194. lusid/models/instrument_list_compliance_parameter.py +3 -3
  195. lusid/models/instrument_payment_diary_leg.py +5 -3
  196. lusid/models/instrument_resolution_detail.py +105 -0
  197. lusid/models/instrument_type.py +2 -0
  198. lusid/models/interest_rate_swap.py +4 -4
  199. lusid/models/interest_rate_swaption.py +3 -3
  200. lusid/models/intermediate_compliance_step.py +110 -0
  201. lusid/models/ir_vol_cube_data.py +3 -3
  202. lusid/models/journal_entry_line.py +34 -3
  203. lusid/models/journal_entry_lines_query_parameters.py +1 -1
  204. lusid/models/label_value_set.py +1 -1
  205. lusid/models/leg_definition.py +16 -3
  206. lusid/models/lineage_member.py +87 -0
  207. lusid/models/lock_period_diary_entry_request.py +91 -0
  208. lusid/models/lusid_instrument.py +7 -5
  209. lusid/models/lusid_trade_ticket.py +8 -1
  210. lusid/models/market_context.py +17 -2
  211. lusid/models/market_data_type.py +1 -0
  212. lusid/models/maturity_event.py +91 -0
  213. lusid/models/model_options.py +5 -6
  214. lusid/models/model_options_type.py +0 -1
  215. lusid/models/model_selection.py +3 -3
  216. lusid/models/move_orders_to_different_blocks_request.py +77 -0
  217. lusid/models/moved_order_to_different_block_response.py +85 -0
  218. lusid/models/movement_type.py +2 -0
  219. lusid/models/multi_currency_amounts.py +71 -0
  220. lusid/models/opaque_market_data.py +3 -3
  221. lusid/models/opaque_model_options.py +3 -3
  222. lusid/models/open_event.py +3 -3
  223. lusid/models/optionality_schedule.py +3 -3
  224. lusid/models/order_graph_block.py +4 -2
  225. lusid/models/order_graph_block_order_detail.py +16 -2
  226. lusid/models/output_transaction.py +9 -2
  227. lusid/models/paged_resource_list_of_cleardown_module_response.py +113 -0
  228. lusid/models/{paged_resource_list_of_reconciliation_run_break.py → paged_resource_list_of_cleardown_module_rule.py} +11 -11
  229. lusid/models/{paged_resource_list_of_reconciliation_run.py → paged_resource_list_of_fund.py} +11 -11
  230. lusid/models/paged_resource_list_of_property_definition.py +113 -0
  231. lusid/models/paged_resource_list_of_transaction_template.py +113 -0
  232. lusid/models/paged_resource_list_of_transaction_template_specification.py +113 -0
  233. lusid/models/participation_request.py +3 -9
  234. lusid/models/performance_returns_metric.py +1 -1
  235. lusid/models/period_diary_entries_reopened_response.py +104 -0
  236. lusid/models/place_blocks_request.py +77 -0
  237. lusid/models/portfolio.py +15 -2
  238. lusid/models/portfolio_details.py +15 -2
  239. lusid/models/portfolio_group_id_compliance_parameter.py +3 -3
  240. lusid/models/portfolio_group_id_list_compliance_parameter.py +3 -3
  241. lusid/models/portfolio_holding.py +27 -2
  242. lusid/models/portfolio_id_compliance_parameter.py +3 -3
  243. lusid/models/portfolio_id_list_compliance_parameter.py +3 -3
  244. lusid/models/posting_module_rule.py +29 -4
  245. lusid/models/pricing_model.py +2 -1
  246. lusid/models/property_definition.py +17 -4
  247. lusid/models/property_definition_search_result.py +3 -3
  248. lusid/models/property_domain.py +2 -0
  249. lusid/models/property_key_compliance_parameter.py +3 -3
  250. lusid/models/property_key_list_compliance_parameter.py +3 -3
  251. lusid/models/raw_vendor_event.py +5 -7
  252. lusid/models/re_open_period_diary_entry_request.py +84 -0
  253. lusid/models/recipe_block.py +87 -0
  254. lusid/models/recipe_composer.py +100 -0
  255. lusid/models/{reconciliation_break_id.py → recipe_value.py} +22 -23
  256. lusid/models/recombine_step.py +101 -0
  257. lusid/models/reference_instrument.py +3 -3
  258. lusid/models/relative_date_offset.py +71 -0
  259. lusid/models/repo.py +3 -3
  260. lusid/models/reset_event.py +4 -6
  261. lusid/models/resource_list_of_block_and_orders.py +113 -0
  262. lusid/models/resource_list_of_get_recipe_composer_response.py +113 -0
  263. lusid/models/resource_list_of_moved_order_to_different_block_response.py +113 -0
  264. lusid/models/schedule.py +6 -5
  265. lusid/models/schedule_type.py +1 -0
  266. lusid/models/script_map_reference.py +94 -0
  267. lusid/models/security_election.py +86 -0
  268. lusid/models/side_definition.py +1 -8
  269. lusid/models/sides_definition_request.py +1 -8
  270. lusid/models/simple_cash_flow_loan.py +3 -3
  271. lusid/models/simple_instrument.py +3 -3
  272. lusid/models/step_schedule.py +3 -3
  273. lusid/models/stock_split_event.py +3 -3
  274. lusid/models/string_compliance_parameter.py +3 -3
  275. lusid/models/string_list_compliance_parameter.py +3 -3
  276. lusid/models/template_field.py +77 -0
  277. lusid/models/term_deposit.py +3 -3
  278. lusid/models/total_return_swap.py +16 -16
  279. lusid/models/transaction_configuration_movement_data.py +3 -3
  280. lusid/models/transaction_configuration_movement_data_request.py +3 -3
  281. lusid/models/transaction_currency_and_amount.py +81 -0
  282. lusid/models/transaction_field_map.py +97 -0
  283. lusid/models/transaction_price.py +3 -3
  284. lusid/models/transaction_price_and_type.py +81 -0
  285. lusid/models/transaction_price_type.py +1 -0
  286. lusid/models/transaction_property_map.py +80 -0
  287. lusid/models/transaction_template.py +100 -0
  288. lusid/models/transaction_template_request.py +79 -0
  289. lusid/models/transaction_template_specification.py +99 -0
  290. lusid/models/transaction_type_alias.py +0 -7
  291. lusid/models/transaction_type_calculation.py +1 -1
  292. lusid/models/transition_event.py +3 -3
  293. lusid/models/translation_context.py +75 -0
  294. lusid/models/translation_script.py +9 -3
  295. lusid/models/trial_balance.py +46 -11
  296. lusid/models/trial_balance_query_parameters.py +15 -6
  297. lusid/models/trigger_event.py +3 -3
  298. lusid/models/units_ratio.py +71 -0
  299. lusid/models/{compliance_run_summary.py → upsert_compliance_run_summary_result.py} +8 -8
  300. lusid/models/upsert_dialect_request.py +79 -0
  301. lusid/models/upsert_instrument_event_request.py +12 -3
  302. lusid/models/upsert_quote_request.py +1 -1
  303. lusid/models/upsert_recipe_composer_request.py +73 -0
  304. lusid/models/upsert_recipe_request.py +3 -9
  305. lusid/models/upsert_translation_script_request.py +75 -0
  306. lusid/models/valuation_schedule.py +10 -3
  307. lusid/models/weighted_instrument.py +13 -2
  308. lusid/models/weighted_instrument_in_line_lookup_identifiers.py +89 -0
  309. lusid/models/yield_curve_data.py +3 -3
  310. lusid/rest.py +1 -1
  311. {lusid_sdk-2.0.50b0.dist-info → lusid_sdk-2.0.441.dist-info}/METADATA +227 -48
  312. {lusid_sdk-2.0.50b0.dist-info → lusid_sdk-2.0.441.dist-info}/RECORD +313 -235
  313. {lusid_sdk-2.0.50b0.dist-info → lusid_sdk-2.0.441.dist-info}/WHEEL +1 -1
  314. lusid/extensions/api_client_builder.py +0 -138
  315. lusid/models/configuration_recipe_snippet.py +0 -139
  316. lusid/models/je_lines_query_parameters.py +0 -105
  317. lusid/models/look_up_pricing_model_options.py +0 -93
  318. lusid/models/reconciliation_run_id.py +0 -85
  319. lusid/models/upsert_reconciliation_break_request.py +0 -98
@@ -18,10 +18,9 @@ import re # noqa: F401
18
18
  import json
19
19
 
20
20
 
21
- from typing import Any, Dict, Optional
21
+ from typing import Any, Dict
22
22
  from pydantic import BaseModel, Field
23
23
  from lusid.models.resource_id import ResourceId
24
- from lusid.models.version import Version
25
24
 
26
25
  class ParticipationRequest(BaseModel):
27
26
  """
@@ -30,8 +29,7 @@ class ParticipationRequest(BaseModel):
30
29
  id: ResourceId = Field(...)
31
30
  placement_id: ResourceId = Field(..., alias="placementId")
32
31
  order_id: ResourceId = Field(..., alias="orderId")
33
- version: Optional[Version] = None
34
- __properties = ["id", "placementId", "orderId", "version"]
32
+ __properties = ["id", "placementId", "orderId"]
35
33
 
36
34
  class Config:
37
35
  """Pydantic configuration"""
@@ -66,9 +64,6 @@ class ParticipationRequest(BaseModel):
66
64
  # override the default output from pydantic by calling `to_dict()` of order_id
67
65
  if self.order_id:
68
66
  _dict['orderId'] = self.order_id.to_dict()
69
- # override the default output from pydantic by calling `to_dict()` of version
70
- if self.version:
71
- _dict['version'] = self.version.to_dict()
72
67
  return _dict
73
68
 
74
69
  @classmethod
@@ -83,7 +78,6 @@ class ParticipationRequest(BaseModel):
83
78
  _obj = ParticipationRequest.parse_obj({
84
79
  "id": ResourceId.from_dict(obj.get("id")) if obj.get("id") is not None else None,
85
80
  "placement_id": ResourceId.from_dict(obj.get("placementId")) if obj.get("placementId") is not None else None,
86
- "order_id": ResourceId.from_dict(obj.get("orderId")) if obj.get("orderId") is not None else None,
87
- "version": Version.from_dict(obj.get("version")) if obj.get("version") is not None else None
81
+ "order_id": ResourceId.from_dict(obj.get("orderId")) if obj.get("orderId") is not None else None
88
82
  })
89
83
  return _obj
@@ -27,7 +27,7 @@ class PerformanceReturnsMetric(BaseModel):
27
27
  """
28
28
  type: Optional[StrictStr] = Field(None, description="The type of the metric. Default to Return")
29
29
  window: Optional[StrictStr] = Field(None, description="The given metric for the calculation i.e. 1Y, 1D.")
30
- allow_partial: Optional[StrictBool] = Field(None, alias="allowPartial", description="Bool if the metric is allowed partial results. Deafult to false.")
30
+ allow_partial: Optional[StrictBool] = Field(None, alias="allowPartial", description="Bool if the metric is allowed partial results. Default to false.")
31
31
  annualised: Optional[StrictBool] = Field(None, description="Bool if the metric is annualized. Default to false.")
32
32
  with_fee: Optional[StrictBool] = Field(None, alias="withFee", description="Bool if the metric should consider the fees when is calculated. Default to false.")
33
33
  seed_amount: Optional[StrictStr] = Field(None, alias="seedAmount", description="The given seed amount for the calculation of the indicative amount metrics.")
@@ -0,0 +1,104 @@
1
+ # coding: utf-8
2
+
3
+ """
4
+ LUSID API
5
+
6
+ FINBOURNE Technology # noqa: E501
7
+
8
+ Contact: info@finbourne.com
9
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
10
+
11
+ Do not edit the class manually.
12
+ """
13
+
14
+
15
+ from __future__ import annotations
16
+ import pprint
17
+ import re # noqa: F401
18
+ import json
19
+
20
+ from datetime import datetime
21
+ from typing import Any, Dict, List, Optional
22
+ from pydantic import BaseModel, Field, StrictInt, StrictStr, conlist
23
+ from lusid.models.link import Link
24
+
25
+ class PeriodDiaryEntriesReopenedResponse(BaseModel):
26
+ """
27
+ PeriodDiaryEntriesReopenedResponse
28
+ """
29
+ href: Optional[StrictStr] = Field(None, description="The specific Uniform Resource Identifier (URI) for this resource at the requested effective and asAt datetime.")
30
+ effective_from: Optional[datetime] = Field(None, alias="effectiveFrom", description="The effective datetime at which the deletion became valid. May be null in the case where multiple date times are applicable.")
31
+ as_at: datetime = Field(..., alias="asAt", description="The asAt datetime at which the deletion was committed to LUSID.")
32
+ period_diary_entries_removed: StrictInt = Field(..., alias="periodDiaryEntriesRemoved", description="Number of Diary Entries removed as a result of reopening periods")
33
+ period_diary_entries_from: datetime = Field(..., alias="periodDiaryEntriesFrom", description="The start point where periods were removed from")
34
+ period_diary_entries_to: datetime = Field(..., alias="periodDiaryEntriesTo", description="The end point where periods were removed to")
35
+ links: Optional[conlist(Link)] = None
36
+ __properties = ["href", "effectiveFrom", "asAt", "periodDiaryEntriesRemoved", "periodDiaryEntriesFrom", "periodDiaryEntriesTo", "links"]
37
+
38
+ class Config:
39
+ """Pydantic configuration"""
40
+ allow_population_by_field_name = True
41
+ validate_assignment = True
42
+
43
+ def to_str(self) -> str:
44
+ """Returns the string representation of the model using alias"""
45
+ return pprint.pformat(self.dict(by_alias=True))
46
+
47
+ def to_json(self) -> str:
48
+ """Returns the JSON representation of the model using alias"""
49
+ return json.dumps(self.to_dict())
50
+
51
+ @classmethod
52
+ def from_json(cls, json_str: str) -> PeriodDiaryEntriesReopenedResponse:
53
+ """Create an instance of PeriodDiaryEntriesReopenedResponse from a JSON string"""
54
+ return cls.from_dict(json.loads(json_str))
55
+
56
+ def to_dict(self):
57
+ """Returns the dictionary representation of the model using alias"""
58
+ _dict = self.dict(by_alias=True,
59
+ exclude={
60
+ },
61
+ exclude_none=True)
62
+ # override the default output from pydantic by calling `to_dict()` of each item in links (list)
63
+ _items = []
64
+ if self.links:
65
+ for _item in self.links:
66
+ if _item:
67
+ _items.append(_item.to_dict())
68
+ _dict['links'] = _items
69
+ # set to None if href (nullable) is None
70
+ # and __fields_set__ contains the field
71
+ if self.href is None and "href" in self.__fields_set__:
72
+ _dict['href'] = None
73
+
74
+ # set to None if effective_from (nullable) is None
75
+ # and __fields_set__ contains the field
76
+ if self.effective_from is None and "effective_from" in self.__fields_set__:
77
+ _dict['effectiveFrom'] = None
78
+
79
+ # set to None if links (nullable) is None
80
+ # and __fields_set__ contains the field
81
+ if self.links is None and "links" in self.__fields_set__:
82
+ _dict['links'] = None
83
+
84
+ return _dict
85
+
86
+ @classmethod
87
+ def from_dict(cls, obj: dict) -> PeriodDiaryEntriesReopenedResponse:
88
+ """Create an instance of PeriodDiaryEntriesReopenedResponse from a dict"""
89
+ if obj is None:
90
+ return None
91
+
92
+ if not isinstance(obj, dict):
93
+ return PeriodDiaryEntriesReopenedResponse.parse_obj(obj)
94
+
95
+ _obj = PeriodDiaryEntriesReopenedResponse.parse_obj({
96
+ "href": obj.get("href"),
97
+ "effective_from": obj.get("effectiveFrom"),
98
+ "as_at": obj.get("asAt"),
99
+ "period_diary_entries_removed": obj.get("periodDiaryEntriesRemoved"),
100
+ "period_diary_entries_from": obj.get("periodDiaryEntriesFrom"),
101
+ "period_diary_entries_to": obj.get("periodDiaryEntriesTo"),
102
+ "links": [Link.from_dict(_item) for _item in obj.get("links")] if obj.get("links") is not None else None
103
+ })
104
+ return _obj
@@ -0,0 +1,77 @@
1
+ # coding: utf-8
2
+
3
+ """
4
+ LUSID API
5
+
6
+ FINBOURNE Technology # noqa: E501
7
+
8
+ Contact: info@finbourne.com
9
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
10
+
11
+ Do not edit the class manually.
12
+ """
13
+
14
+
15
+ from __future__ import annotations
16
+ import pprint
17
+ import re # noqa: F401
18
+ import json
19
+
20
+
21
+ from typing import Any, Dict, List
22
+ from pydantic import BaseModel, Field, conlist
23
+ from lusid.models.placement_request import PlacementRequest
24
+
25
+ class PlaceBlocksRequest(BaseModel):
26
+ """
27
+ PlaceBlocksRequest
28
+ """
29
+ requests: conlist(PlacementRequest, max_items=100, min_items=1) = Field(..., description="A collection of PlacementRequest.")
30
+ __properties = ["requests"]
31
+
32
+ class Config:
33
+ """Pydantic configuration"""
34
+ allow_population_by_field_name = True
35
+ validate_assignment = True
36
+
37
+ def to_str(self) -> str:
38
+ """Returns the string representation of the model using alias"""
39
+ return pprint.pformat(self.dict(by_alias=True))
40
+
41
+ def to_json(self) -> str:
42
+ """Returns the JSON representation of the model using alias"""
43
+ return json.dumps(self.to_dict())
44
+
45
+ @classmethod
46
+ def from_json(cls, json_str: str) -> PlaceBlocksRequest:
47
+ """Create an instance of PlaceBlocksRequest from a JSON string"""
48
+ return cls.from_dict(json.loads(json_str))
49
+
50
+ def to_dict(self):
51
+ """Returns the dictionary representation of the model using alias"""
52
+ _dict = self.dict(by_alias=True,
53
+ exclude={
54
+ },
55
+ exclude_none=True)
56
+ # override the default output from pydantic by calling `to_dict()` of each item in requests (list)
57
+ _items = []
58
+ if self.requests:
59
+ for _item in self.requests:
60
+ if _item:
61
+ _items.append(_item.to_dict())
62
+ _dict['requests'] = _items
63
+ return _dict
64
+
65
+ @classmethod
66
+ def from_dict(cls, obj: dict) -> PlaceBlocksRequest:
67
+ """Create an instance of PlaceBlocksRequest from a dict"""
68
+ if obj is None:
69
+ return None
70
+
71
+ if not isinstance(obj, dict):
72
+ return PlaceBlocksRequest.parse_obj(obj)
73
+
74
+ _obj = PlaceBlocksRequest.parse_obj({
75
+ "requests": [PlacementRequest.from_dict(_item) for _item in obj.get("requests")] if obj.get("requests") is not None else None
76
+ })
77
+ return _obj
lusid/models/portfolio.py CHANGED
@@ -20,6 +20,7 @@ import json
20
20
  from datetime import datetime
21
21
  from typing import Any, Dict, List, Optional
22
22
  from pydantic import BaseModel, Field, StrictBool, StrictStr, conlist, constr, validator
23
+ from lusid.models.instrument_event_configuration import InstrumentEventConfiguration
23
24
  from lusid.models.link import Link
24
25
  from lusid.models.model_property import ModelProperty
25
26
  from lusid.models.relationship import Relationship
@@ -44,10 +45,12 @@ class Portfolio(BaseModel):
44
45
  relationships: Optional[conlist(Relationship)] = Field(None, description="A set of relationships associated to the portfolio.")
45
46
  instrument_scopes: Optional[conlist(StrictStr)] = Field(None, alias="instrumentScopes", description="The instrument scope resolution strategy of this portfolio.")
46
47
  accounting_method: Optional[StrictStr] = Field(None, alias="accountingMethod", description=". The available values are: Default, AverageCost, FirstInFirstOut, LastInFirstOut, HighestCostFirst, LowestCostFirst")
47
- amortisation_method: Optional[StrictStr] = Field(None, alias="amortisationMethod", description="The amortisation method the portfolio is using in the calculation. This can be 'NoAmortisation', 'StraightLine' or 'EffectiveYield'.")
48
+ amortisation_method: Optional[StrictStr] = Field(None, alias="amortisationMethod", description="The amortisation method used by the portfolio for the calculation. The available values are: NoAmortisation, StraightLine, EffectiveYield, StraightLineSettlementDate, EffectiveYieldSettlementDate")
48
49
  transaction_type_scope: Optional[StrictStr] = Field(None, alias="transactionTypeScope", description="The scope of the transaction types.")
50
+ cash_gain_loss_calculation_date: Optional[StrictStr] = Field(None, alias="cashGainLossCalculationDate", description="The scope of the transaction types.")
51
+ instrument_event_configuration: Optional[InstrumentEventConfiguration] = Field(None, alias="instrumentEventConfiguration")
49
52
  links: Optional[conlist(Link)] = None
50
- __properties = ["href", "id", "type", "displayName", "description", "created", "parentPortfolioId", "version", "isDerived", "baseCurrency", "properties", "relationships", "instrumentScopes", "accountingMethod", "amortisationMethod", "transactionTypeScope", "links"]
53
+ __properties = ["href", "id", "type", "displayName", "description", "created", "parentPortfolioId", "version", "isDerived", "baseCurrency", "properties", "relationships", "instrumentScopes", "accountingMethod", "amortisationMethod", "transactionTypeScope", "cashGainLossCalculationDate", "instrumentEventConfiguration", "links"]
51
54
 
52
55
  @validator('type')
53
56
  def type_validate_enum(cls, value):
@@ -113,6 +116,9 @@ class Portfolio(BaseModel):
113
116
  if _item:
114
117
  _items.append(_item.to_dict())
115
118
  _dict['relationships'] = _items
119
+ # override the default output from pydantic by calling `to_dict()` of instrument_event_configuration
120
+ if self.instrument_event_configuration:
121
+ _dict['instrumentEventConfiguration'] = self.instrument_event_configuration.to_dict()
116
122
  # override the default output from pydantic by calling `to_dict()` of each item in links (list)
117
123
  _items = []
118
124
  if self.links:
@@ -160,6 +166,11 @@ class Portfolio(BaseModel):
160
166
  if self.transaction_type_scope is None and "transaction_type_scope" in self.__fields_set__:
161
167
  _dict['transactionTypeScope'] = None
162
168
 
169
+ # set to None if cash_gain_loss_calculation_date (nullable) is None
170
+ # and __fields_set__ contains the field
171
+ if self.cash_gain_loss_calculation_date is None and "cash_gain_loss_calculation_date" in self.__fields_set__:
172
+ _dict['cashGainLossCalculationDate'] = None
173
+
163
174
  # set to None if links (nullable) is None
164
175
  # and __fields_set__ contains the field
165
176
  if self.links is None and "links" in self.__fields_set__:
@@ -198,6 +209,8 @@ class Portfolio(BaseModel):
198
209
  "accounting_method": obj.get("accountingMethod"),
199
210
  "amortisation_method": obj.get("amortisationMethod"),
200
211
  "transaction_type_scope": obj.get("transactionTypeScope"),
212
+ "cash_gain_loss_calculation_date": obj.get("cashGainLossCalculationDate"),
213
+ "instrument_event_configuration": InstrumentEventConfiguration.from_dict(obj.get("instrumentEventConfiguration")) if obj.get("instrumentEventConfiguration") is not None else None,
201
214
  "links": [Link.from_dict(_item) for _item in obj.get("links")] if obj.get("links") is not None else None
202
215
  })
203
216
  return _obj
@@ -20,6 +20,7 @@ import json
20
20
 
21
21
  from typing import Any, Dict, List, Optional
22
22
  from pydantic import BaseModel, Field, StrictStr, conlist, validator
23
+ from lusid.models.instrument_event_configuration import InstrumentEventConfiguration
23
24
  from lusid.models.link import Link
24
25
  from lusid.models.resource_id import ResourceId
25
26
  from lusid.models.version import Version
@@ -36,10 +37,12 @@ class PortfolioDetails(BaseModel):
36
37
  sub_holding_keys: Optional[conlist(StrictStr)] = Field(None, alias="subHoldingKeys")
37
38
  instrument_scopes: Optional[conlist(StrictStr)] = Field(None, alias="instrumentScopes", description="The resolution strategy used to resolve instruments of transactions/holdings upserted to the transaction portfolio.")
38
39
  accounting_method: Optional[StrictStr] = Field(None, alias="accountingMethod", description=". The available values are: Default, AverageCost, FirstInFirstOut, LastInFirstOut, HighestCostFirst, LowestCostFirst")
39
- amortisation_method: Optional[StrictStr] = Field(None, alias="amortisationMethod", description="The amortisation method the portfolio is using in the calculation. This can be 'NoAmortisation', 'StraightLine' or 'EffectiveYield'.")
40
+ amortisation_method: Optional[StrictStr] = Field(None, alias="amortisationMethod", description="The amortisation method used by the portfolio for the calculation. The available values are: NoAmortisation, StraightLine, EffectiveYield, StraightLineSettlementDate, EffectiveYieldSettlementDate")
40
41
  transaction_type_scope: Optional[StrictStr] = Field(None, alias="transactionTypeScope", description="The scope of the transaction types.")
42
+ cash_gain_loss_calculation_date: Optional[StrictStr] = Field(None, alias="cashGainLossCalculationDate", description="The option when the Cash Gain Loss to be calulated, TransactionDate/SettlementDate. Defaults to SettlementDate.")
43
+ instrument_event_configuration: Optional[InstrumentEventConfiguration] = Field(None, alias="instrumentEventConfiguration")
41
44
  links: Optional[conlist(Link)] = None
42
- __properties = ["href", "originPortfolioId", "version", "baseCurrency", "corporateActionSourceId", "subHoldingKeys", "instrumentScopes", "accountingMethod", "amortisationMethod", "transactionTypeScope", "links"]
45
+ __properties = ["href", "originPortfolioId", "version", "baseCurrency", "corporateActionSourceId", "subHoldingKeys", "instrumentScopes", "accountingMethod", "amortisationMethod", "transactionTypeScope", "cashGainLossCalculationDate", "instrumentEventConfiguration", "links"]
43
46
 
44
47
  @validator('accounting_method')
45
48
  def accounting_method_validate_enum(cls, value):
@@ -84,6 +87,9 @@ class PortfolioDetails(BaseModel):
84
87
  # override the default output from pydantic by calling `to_dict()` of corporate_action_source_id
85
88
  if self.corporate_action_source_id:
86
89
  _dict['corporateActionSourceId'] = self.corporate_action_source_id.to_dict()
90
+ # override the default output from pydantic by calling `to_dict()` of instrument_event_configuration
91
+ if self.instrument_event_configuration:
92
+ _dict['instrumentEventConfiguration'] = self.instrument_event_configuration.to_dict()
87
93
  # override the default output from pydantic by calling `to_dict()` of each item in links (list)
88
94
  _items = []
89
95
  if self.links:
@@ -116,6 +122,11 @@ class PortfolioDetails(BaseModel):
116
122
  if self.transaction_type_scope is None and "transaction_type_scope" in self.__fields_set__:
117
123
  _dict['transactionTypeScope'] = None
118
124
 
125
+ # set to None if cash_gain_loss_calculation_date (nullable) is None
126
+ # and __fields_set__ contains the field
127
+ if self.cash_gain_loss_calculation_date is None and "cash_gain_loss_calculation_date" in self.__fields_set__:
128
+ _dict['cashGainLossCalculationDate'] = None
129
+
119
130
  # set to None if links (nullable) is None
120
131
  # and __fields_set__ contains the field
121
132
  if self.links is None and "links" in self.__fields_set__:
@@ -143,6 +154,8 @@ class PortfolioDetails(BaseModel):
143
154
  "accounting_method": obj.get("accountingMethod"),
144
155
  "amortisation_method": obj.get("amortisationMethod"),
145
156
  "transaction_type_scope": obj.get("transactionTypeScope"),
157
+ "cash_gain_loss_calculation_date": obj.get("cashGainLossCalculationDate"),
158
+ "instrument_event_configuration": InstrumentEventConfiguration.from_dict(obj.get("instrumentEventConfiguration")) if obj.get("instrumentEventConfiguration") is not None else None,
146
159
  "links": [Link.from_dict(_item) for _item in obj.get("links")] if obj.get("links") is not None else None
147
160
  })
148
161
  return _obj
@@ -28,15 +28,15 @@ class PortfolioGroupIdComplianceParameter(ComplianceParameter):
28
28
  PortfolioGroupIdComplianceParameter
29
29
  """
30
30
  value: ResourceId = Field(...)
31
- compliance_parameter_type: StrictStr = Field(..., alias="complianceParameterType", description="The parameter type. The available values are: BoolComplianceParameter, StringComplianceParameter, DecimalComplianceParameter, DateTimeComplianceParameter, PropertyKeyComplianceParameter, AddressKeyComplianceParameter, PortfolioIdComplianceParameter, PortfolioGroupIdComplianceParameter, StringListComplianceParameter, BoolListComplianceParameter, DateTimeListComplianceParameter, DecimalListComplianceParameter, PropertyKeyListComplianceParameter, AddressKeyListComplianceParameter, PortfolioIdListComplianceParameter, PortfolioGroupIdListComplianceParameter, InstrumentListComplianceParameter")
31
+ compliance_parameter_type: StrictStr = Field(..., alias="complianceParameterType", description="The parameter type. The available values are: BoolComplianceParameter, StringComplianceParameter, DecimalComplianceParameter, DateTimeComplianceParameter, PropertyKeyComplianceParameter, AddressKeyComplianceParameter, PortfolioIdComplianceParameter, PortfolioGroupIdComplianceParameter, StringListComplianceParameter, BoolListComplianceParameter, DateTimeListComplianceParameter, DecimalListComplianceParameter, PropertyKeyListComplianceParameter, AddressKeyListComplianceParameter, PortfolioIdListComplianceParameter, PortfolioGroupIdListComplianceParameter, InstrumentListComplianceParameter, FilterPredicateComplianceParameter, GroupFilterPredicateComplianceParameter, GroupBySelectorComplianceParameter")
32
32
  additional_properties: Dict[str, Any] = {}
33
33
  __properties = ["complianceParameterType", "value"]
34
34
 
35
35
  @validator('compliance_parameter_type')
36
36
  def compliance_parameter_type_validate_enum(cls, value):
37
37
  """Validates the enum"""
38
- if value not in ('BoolComplianceParameter', 'StringComplianceParameter', 'DecimalComplianceParameter', 'DateTimeComplianceParameter', 'PropertyKeyComplianceParameter', 'AddressKeyComplianceParameter', 'PortfolioIdComplianceParameter', 'PortfolioGroupIdComplianceParameter', 'StringListComplianceParameter', 'BoolListComplianceParameter', 'DateTimeListComplianceParameter', 'DecimalListComplianceParameter', 'PropertyKeyListComplianceParameter', 'AddressKeyListComplianceParameter', 'PortfolioIdListComplianceParameter', 'PortfolioGroupIdListComplianceParameter', 'InstrumentListComplianceParameter'):
39
- raise ValueError("must be one of enum values ('BoolComplianceParameter', 'StringComplianceParameter', 'DecimalComplianceParameter', 'DateTimeComplianceParameter', 'PropertyKeyComplianceParameter', 'AddressKeyComplianceParameter', 'PortfolioIdComplianceParameter', 'PortfolioGroupIdComplianceParameter', 'StringListComplianceParameter', 'BoolListComplianceParameter', 'DateTimeListComplianceParameter', 'DecimalListComplianceParameter', 'PropertyKeyListComplianceParameter', 'AddressKeyListComplianceParameter', 'PortfolioIdListComplianceParameter', 'PortfolioGroupIdListComplianceParameter', 'InstrumentListComplianceParameter')")
38
+ if value not in ('BoolComplianceParameter', 'StringComplianceParameter', 'DecimalComplianceParameter', 'DateTimeComplianceParameter', 'PropertyKeyComplianceParameter', 'AddressKeyComplianceParameter', 'PortfolioIdComplianceParameter', 'PortfolioGroupIdComplianceParameter', 'StringListComplianceParameter', 'BoolListComplianceParameter', 'DateTimeListComplianceParameter', 'DecimalListComplianceParameter', 'PropertyKeyListComplianceParameter', 'AddressKeyListComplianceParameter', 'PortfolioIdListComplianceParameter', 'PortfolioGroupIdListComplianceParameter', 'InstrumentListComplianceParameter', 'FilterPredicateComplianceParameter', 'GroupFilterPredicateComplianceParameter', 'GroupBySelectorComplianceParameter'):
39
+ raise ValueError("must be one of enum values ('BoolComplianceParameter', 'StringComplianceParameter', 'DecimalComplianceParameter', 'DateTimeComplianceParameter', 'PropertyKeyComplianceParameter', 'AddressKeyComplianceParameter', 'PortfolioIdComplianceParameter', 'PortfolioGroupIdComplianceParameter', 'StringListComplianceParameter', 'BoolListComplianceParameter', 'DateTimeListComplianceParameter', 'DecimalListComplianceParameter', 'PropertyKeyListComplianceParameter', 'AddressKeyListComplianceParameter', 'PortfolioIdListComplianceParameter', 'PortfolioGroupIdListComplianceParameter', 'InstrumentListComplianceParameter', 'FilterPredicateComplianceParameter', 'GroupFilterPredicateComplianceParameter', 'GroupBySelectorComplianceParameter')")
40
40
  return value
41
41
 
42
42
  class Config:
@@ -28,15 +28,15 @@ class PortfolioGroupIdListComplianceParameter(ComplianceParameter):
28
28
  PortfolioGroupIdListComplianceParameter
29
29
  """
30
30
  value: ResourceId = Field(...)
31
- compliance_parameter_type: StrictStr = Field(..., alias="complianceParameterType", description="The parameter type. The available values are: BoolComplianceParameter, StringComplianceParameter, DecimalComplianceParameter, DateTimeComplianceParameter, PropertyKeyComplianceParameter, AddressKeyComplianceParameter, PortfolioIdComplianceParameter, PortfolioGroupIdComplianceParameter, StringListComplianceParameter, BoolListComplianceParameter, DateTimeListComplianceParameter, DecimalListComplianceParameter, PropertyKeyListComplianceParameter, AddressKeyListComplianceParameter, PortfolioIdListComplianceParameter, PortfolioGroupIdListComplianceParameter, InstrumentListComplianceParameter")
31
+ compliance_parameter_type: StrictStr = Field(..., alias="complianceParameterType", description="The parameter type. The available values are: BoolComplianceParameter, StringComplianceParameter, DecimalComplianceParameter, DateTimeComplianceParameter, PropertyKeyComplianceParameter, AddressKeyComplianceParameter, PortfolioIdComplianceParameter, PortfolioGroupIdComplianceParameter, StringListComplianceParameter, BoolListComplianceParameter, DateTimeListComplianceParameter, DecimalListComplianceParameter, PropertyKeyListComplianceParameter, AddressKeyListComplianceParameter, PortfolioIdListComplianceParameter, PortfolioGroupIdListComplianceParameter, InstrumentListComplianceParameter, FilterPredicateComplianceParameter, GroupFilterPredicateComplianceParameter, GroupBySelectorComplianceParameter")
32
32
  additional_properties: Dict[str, Any] = {}
33
33
  __properties = ["complianceParameterType", "value"]
34
34
 
35
35
  @validator('compliance_parameter_type')
36
36
  def compliance_parameter_type_validate_enum(cls, value):
37
37
  """Validates the enum"""
38
- if value not in ('BoolComplianceParameter', 'StringComplianceParameter', 'DecimalComplianceParameter', 'DateTimeComplianceParameter', 'PropertyKeyComplianceParameter', 'AddressKeyComplianceParameter', 'PortfolioIdComplianceParameter', 'PortfolioGroupIdComplianceParameter', 'StringListComplianceParameter', 'BoolListComplianceParameter', 'DateTimeListComplianceParameter', 'DecimalListComplianceParameter', 'PropertyKeyListComplianceParameter', 'AddressKeyListComplianceParameter', 'PortfolioIdListComplianceParameter', 'PortfolioGroupIdListComplianceParameter', 'InstrumentListComplianceParameter'):
39
- raise ValueError("must be one of enum values ('BoolComplianceParameter', 'StringComplianceParameter', 'DecimalComplianceParameter', 'DateTimeComplianceParameter', 'PropertyKeyComplianceParameter', 'AddressKeyComplianceParameter', 'PortfolioIdComplianceParameter', 'PortfolioGroupIdComplianceParameter', 'StringListComplianceParameter', 'BoolListComplianceParameter', 'DateTimeListComplianceParameter', 'DecimalListComplianceParameter', 'PropertyKeyListComplianceParameter', 'AddressKeyListComplianceParameter', 'PortfolioIdListComplianceParameter', 'PortfolioGroupIdListComplianceParameter', 'InstrumentListComplianceParameter')")
38
+ if value not in ('BoolComplianceParameter', 'StringComplianceParameter', 'DecimalComplianceParameter', 'DateTimeComplianceParameter', 'PropertyKeyComplianceParameter', 'AddressKeyComplianceParameter', 'PortfolioIdComplianceParameter', 'PortfolioGroupIdComplianceParameter', 'StringListComplianceParameter', 'BoolListComplianceParameter', 'DateTimeListComplianceParameter', 'DecimalListComplianceParameter', 'PropertyKeyListComplianceParameter', 'AddressKeyListComplianceParameter', 'PortfolioIdListComplianceParameter', 'PortfolioGroupIdListComplianceParameter', 'InstrumentListComplianceParameter', 'FilterPredicateComplianceParameter', 'GroupFilterPredicateComplianceParameter', 'GroupBySelectorComplianceParameter'):
39
+ raise ValueError("must be one of enum values ('BoolComplianceParameter', 'StringComplianceParameter', 'DecimalComplianceParameter', 'DateTimeComplianceParameter', 'PropertyKeyComplianceParameter', 'AddressKeyComplianceParameter', 'PortfolioIdComplianceParameter', 'PortfolioGroupIdComplianceParameter', 'StringListComplianceParameter', 'BoolListComplianceParameter', 'DateTimeListComplianceParameter', 'DecimalListComplianceParameter', 'PropertyKeyListComplianceParameter', 'AddressKeyListComplianceParameter', 'PortfolioIdListComplianceParameter', 'PortfolioGroupIdListComplianceParameter', 'InstrumentListComplianceParameter', 'FilterPredicateComplianceParameter', 'GroupFilterPredicateComplianceParameter', 'GroupBySelectorComplianceParameter')")
40
40
  return value
41
41
 
42
42
  class Config:
@@ -42,7 +42,12 @@ class PortfolioHolding(BaseModel):
42
42
  currency: Optional[StrictStr] = Field(None, description="The holding currency.")
43
43
  holding_type_name: Optional[StrictStr] = Field(None, alias="holdingTypeName", description="The decoded type of the holding e.g. Position, Balance, CashCommitment, Receivable, ForwardFX etc.")
44
44
  holding_id: Optional[StrictInt] = Field(None, alias="holdingId", description="A single identifier for the holding within the portfolio. The holdingId is constructed from the LusidInstrumentId, sub-holding keys and currrency and is unique within the portfolio.")
45
- __properties = ["instrumentScope", "instrumentUid", "subHoldingKeys", "properties", "holdingType", "units", "settledUnits", "cost", "costPortfolioCcy", "transaction", "currency", "holdingTypeName", "holdingId"]
45
+ notional_cost: Optional[CurrencyAndAmount] = Field(None, alias="notionalCost")
46
+ amortised_cost: Optional[CurrencyAndAmount] = Field(None, alias="amortisedCost")
47
+ amortised_cost_portfolio_ccy: Optional[CurrencyAndAmount] = Field(None, alias="amortisedCostPortfolioCcy")
48
+ variation_margin: Optional[CurrencyAndAmount] = Field(None, alias="variationMargin")
49
+ variation_margin_portfolio_ccy: Optional[CurrencyAndAmount] = Field(None, alias="variationMarginPortfolioCcy")
50
+ __properties = ["instrumentScope", "instrumentUid", "subHoldingKeys", "properties", "holdingType", "units", "settledUnits", "cost", "costPortfolioCcy", "transaction", "currency", "holdingTypeName", "holdingId", "notionalCost", "amortisedCost", "amortisedCostPortfolioCcy", "variationMargin", "variationMarginPortfolioCcy"]
46
51
 
47
52
  class Config:
48
53
  """Pydantic configuration"""
@@ -91,6 +96,21 @@ class PortfolioHolding(BaseModel):
91
96
  # override the default output from pydantic by calling `to_dict()` of transaction
92
97
  if self.transaction:
93
98
  _dict['transaction'] = self.transaction.to_dict()
99
+ # override the default output from pydantic by calling `to_dict()` of notional_cost
100
+ if self.notional_cost:
101
+ _dict['notionalCost'] = self.notional_cost.to_dict()
102
+ # override the default output from pydantic by calling `to_dict()` of amortised_cost
103
+ if self.amortised_cost:
104
+ _dict['amortisedCost'] = self.amortised_cost.to_dict()
105
+ # override the default output from pydantic by calling `to_dict()` of amortised_cost_portfolio_ccy
106
+ if self.amortised_cost_portfolio_ccy:
107
+ _dict['amortisedCostPortfolioCcy'] = self.amortised_cost_portfolio_ccy.to_dict()
108
+ # override the default output from pydantic by calling `to_dict()` of variation_margin
109
+ if self.variation_margin:
110
+ _dict['variationMargin'] = self.variation_margin.to_dict()
111
+ # override the default output from pydantic by calling `to_dict()` of variation_margin_portfolio_ccy
112
+ if self.variation_margin_portfolio_ccy:
113
+ _dict['variationMarginPortfolioCcy'] = self.variation_margin_portfolio_ccy.to_dict()
94
114
  # set to None if instrument_scope (nullable) is None
95
115
  # and __fields_set__ contains the field
96
116
  if self.instrument_scope is None and "instrument_scope" in self.__fields_set__:
@@ -155,6 +175,11 @@ class PortfolioHolding(BaseModel):
155
175
  "transaction": Transaction.from_dict(obj.get("transaction")) if obj.get("transaction") is not None else None,
156
176
  "currency": obj.get("currency"),
157
177
  "holding_type_name": obj.get("holdingTypeName"),
158
- "holding_id": obj.get("holdingId")
178
+ "holding_id": obj.get("holdingId"),
179
+ "notional_cost": CurrencyAndAmount.from_dict(obj.get("notionalCost")) if obj.get("notionalCost") is not None else None,
180
+ "amortised_cost": CurrencyAndAmount.from_dict(obj.get("amortisedCost")) if obj.get("amortisedCost") is not None else None,
181
+ "amortised_cost_portfolio_ccy": CurrencyAndAmount.from_dict(obj.get("amortisedCostPortfolioCcy")) if obj.get("amortisedCostPortfolioCcy") is not None else None,
182
+ "variation_margin": CurrencyAndAmount.from_dict(obj.get("variationMargin")) if obj.get("variationMargin") is not None else None,
183
+ "variation_margin_portfolio_ccy": CurrencyAndAmount.from_dict(obj.get("variationMarginPortfolioCcy")) if obj.get("variationMarginPortfolioCcy") is not None else None
159
184
  })
160
185
  return _obj
@@ -28,15 +28,15 @@ class PortfolioIdComplianceParameter(ComplianceParameter):
28
28
  PortfolioIdComplianceParameter
29
29
  """
30
30
  value: ResourceId = Field(...)
31
- compliance_parameter_type: StrictStr = Field(..., alias="complianceParameterType", description="The parameter type. The available values are: BoolComplianceParameter, StringComplianceParameter, DecimalComplianceParameter, DateTimeComplianceParameter, PropertyKeyComplianceParameter, AddressKeyComplianceParameter, PortfolioIdComplianceParameter, PortfolioGroupIdComplianceParameter, StringListComplianceParameter, BoolListComplianceParameter, DateTimeListComplianceParameter, DecimalListComplianceParameter, PropertyKeyListComplianceParameter, AddressKeyListComplianceParameter, PortfolioIdListComplianceParameter, PortfolioGroupIdListComplianceParameter, InstrumentListComplianceParameter")
31
+ compliance_parameter_type: StrictStr = Field(..., alias="complianceParameterType", description="The parameter type. The available values are: BoolComplianceParameter, StringComplianceParameter, DecimalComplianceParameter, DateTimeComplianceParameter, PropertyKeyComplianceParameter, AddressKeyComplianceParameter, PortfolioIdComplianceParameter, PortfolioGroupIdComplianceParameter, StringListComplianceParameter, BoolListComplianceParameter, DateTimeListComplianceParameter, DecimalListComplianceParameter, PropertyKeyListComplianceParameter, AddressKeyListComplianceParameter, PortfolioIdListComplianceParameter, PortfolioGroupIdListComplianceParameter, InstrumentListComplianceParameter, FilterPredicateComplianceParameter, GroupFilterPredicateComplianceParameter, GroupBySelectorComplianceParameter")
32
32
  additional_properties: Dict[str, Any] = {}
33
33
  __properties = ["complianceParameterType", "value"]
34
34
 
35
35
  @validator('compliance_parameter_type')
36
36
  def compliance_parameter_type_validate_enum(cls, value):
37
37
  """Validates the enum"""
38
- if value not in ('BoolComplianceParameter', 'StringComplianceParameter', 'DecimalComplianceParameter', 'DateTimeComplianceParameter', 'PropertyKeyComplianceParameter', 'AddressKeyComplianceParameter', 'PortfolioIdComplianceParameter', 'PortfolioGroupIdComplianceParameter', 'StringListComplianceParameter', 'BoolListComplianceParameter', 'DateTimeListComplianceParameter', 'DecimalListComplianceParameter', 'PropertyKeyListComplianceParameter', 'AddressKeyListComplianceParameter', 'PortfolioIdListComplianceParameter', 'PortfolioGroupIdListComplianceParameter', 'InstrumentListComplianceParameter'):
39
- raise ValueError("must be one of enum values ('BoolComplianceParameter', 'StringComplianceParameter', 'DecimalComplianceParameter', 'DateTimeComplianceParameter', 'PropertyKeyComplianceParameter', 'AddressKeyComplianceParameter', 'PortfolioIdComplianceParameter', 'PortfolioGroupIdComplianceParameter', 'StringListComplianceParameter', 'BoolListComplianceParameter', 'DateTimeListComplianceParameter', 'DecimalListComplianceParameter', 'PropertyKeyListComplianceParameter', 'AddressKeyListComplianceParameter', 'PortfolioIdListComplianceParameter', 'PortfolioGroupIdListComplianceParameter', 'InstrumentListComplianceParameter')")
38
+ if value not in ('BoolComplianceParameter', 'StringComplianceParameter', 'DecimalComplianceParameter', 'DateTimeComplianceParameter', 'PropertyKeyComplianceParameter', 'AddressKeyComplianceParameter', 'PortfolioIdComplianceParameter', 'PortfolioGroupIdComplianceParameter', 'StringListComplianceParameter', 'BoolListComplianceParameter', 'DateTimeListComplianceParameter', 'DecimalListComplianceParameter', 'PropertyKeyListComplianceParameter', 'AddressKeyListComplianceParameter', 'PortfolioIdListComplianceParameter', 'PortfolioGroupIdListComplianceParameter', 'InstrumentListComplianceParameter', 'FilterPredicateComplianceParameter', 'GroupFilterPredicateComplianceParameter', 'GroupBySelectorComplianceParameter'):
39
+ raise ValueError("must be one of enum values ('BoolComplianceParameter', 'StringComplianceParameter', 'DecimalComplianceParameter', 'DateTimeComplianceParameter', 'PropertyKeyComplianceParameter', 'AddressKeyComplianceParameter', 'PortfolioIdComplianceParameter', 'PortfolioGroupIdComplianceParameter', 'StringListComplianceParameter', 'BoolListComplianceParameter', 'DateTimeListComplianceParameter', 'DecimalListComplianceParameter', 'PropertyKeyListComplianceParameter', 'AddressKeyListComplianceParameter', 'PortfolioIdListComplianceParameter', 'PortfolioGroupIdListComplianceParameter', 'InstrumentListComplianceParameter', 'FilterPredicateComplianceParameter', 'GroupFilterPredicateComplianceParameter', 'GroupBySelectorComplianceParameter')")
40
40
  return value
41
41
 
42
42
  class Config:
@@ -28,15 +28,15 @@ class PortfolioIdListComplianceParameter(ComplianceParameter):
28
28
  PortfolioIdListComplianceParameter
29
29
  """
30
30
  value: ResourceId = Field(...)
31
- compliance_parameter_type: StrictStr = Field(..., alias="complianceParameterType", description="The parameter type. The available values are: BoolComplianceParameter, StringComplianceParameter, DecimalComplianceParameter, DateTimeComplianceParameter, PropertyKeyComplianceParameter, AddressKeyComplianceParameter, PortfolioIdComplianceParameter, PortfolioGroupIdComplianceParameter, StringListComplianceParameter, BoolListComplianceParameter, DateTimeListComplianceParameter, DecimalListComplianceParameter, PropertyKeyListComplianceParameter, AddressKeyListComplianceParameter, PortfolioIdListComplianceParameter, PortfolioGroupIdListComplianceParameter, InstrumentListComplianceParameter")
31
+ compliance_parameter_type: StrictStr = Field(..., alias="complianceParameterType", description="The parameter type. The available values are: BoolComplianceParameter, StringComplianceParameter, DecimalComplianceParameter, DateTimeComplianceParameter, PropertyKeyComplianceParameter, AddressKeyComplianceParameter, PortfolioIdComplianceParameter, PortfolioGroupIdComplianceParameter, StringListComplianceParameter, BoolListComplianceParameter, DateTimeListComplianceParameter, DecimalListComplianceParameter, PropertyKeyListComplianceParameter, AddressKeyListComplianceParameter, PortfolioIdListComplianceParameter, PortfolioGroupIdListComplianceParameter, InstrumentListComplianceParameter, FilterPredicateComplianceParameter, GroupFilterPredicateComplianceParameter, GroupBySelectorComplianceParameter")
32
32
  additional_properties: Dict[str, Any] = {}
33
33
  __properties = ["complianceParameterType", "value"]
34
34
 
35
35
  @validator('compliance_parameter_type')
36
36
  def compliance_parameter_type_validate_enum(cls, value):
37
37
  """Validates the enum"""
38
- if value not in ('BoolComplianceParameter', 'StringComplianceParameter', 'DecimalComplianceParameter', 'DateTimeComplianceParameter', 'PropertyKeyComplianceParameter', 'AddressKeyComplianceParameter', 'PortfolioIdComplianceParameter', 'PortfolioGroupIdComplianceParameter', 'StringListComplianceParameter', 'BoolListComplianceParameter', 'DateTimeListComplianceParameter', 'DecimalListComplianceParameter', 'PropertyKeyListComplianceParameter', 'AddressKeyListComplianceParameter', 'PortfolioIdListComplianceParameter', 'PortfolioGroupIdListComplianceParameter', 'InstrumentListComplianceParameter'):
39
- raise ValueError("must be one of enum values ('BoolComplianceParameter', 'StringComplianceParameter', 'DecimalComplianceParameter', 'DateTimeComplianceParameter', 'PropertyKeyComplianceParameter', 'AddressKeyComplianceParameter', 'PortfolioIdComplianceParameter', 'PortfolioGroupIdComplianceParameter', 'StringListComplianceParameter', 'BoolListComplianceParameter', 'DateTimeListComplianceParameter', 'DecimalListComplianceParameter', 'PropertyKeyListComplianceParameter', 'AddressKeyListComplianceParameter', 'PortfolioIdListComplianceParameter', 'PortfolioGroupIdListComplianceParameter', 'InstrumentListComplianceParameter')")
38
+ if value not in ('BoolComplianceParameter', 'StringComplianceParameter', 'DecimalComplianceParameter', 'DateTimeComplianceParameter', 'PropertyKeyComplianceParameter', 'AddressKeyComplianceParameter', 'PortfolioIdComplianceParameter', 'PortfolioGroupIdComplianceParameter', 'StringListComplianceParameter', 'BoolListComplianceParameter', 'DateTimeListComplianceParameter', 'DecimalListComplianceParameter', 'PropertyKeyListComplianceParameter', 'AddressKeyListComplianceParameter', 'PortfolioIdListComplianceParameter', 'PortfolioGroupIdListComplianceParameter', 'InstrumentListComplianceParameter', 'FilterPredicateComplianceParameter', 'GroupFilterPredicateComplianceParameter', 'GroupBySelectorComplianceParameter'):
39
+ raise ValueError("must be one of enum values ('BoolComplianceParameter', 'StringComplianceParameter', 'DecimalComplianceParameter', 'DateTimeComplianceParameter', 'PropertyKeyComplianceParameter', 'AddressKeyComplianceParameter', 'PortfolioIdComplianceParameter', 'PortfolioGroupIdComplianceParameter', 'StringListComplianceParameter', 'BoolListComplianceParameter', 'DateTimeListComplianceParameter', 'DecimalListComplianceParameter', 'PropertyKeyListComplianceParameter', 'AddressKeyListComplianceParameter', 'PortfolioIdListComplianceParameter', 'PortfolioGroupIdListComplianceParameter', 'InstrumentListComplianceParameter', 'FilterPredicateComplianceParameter', 'GroupFilterPredicateComplianceParameter', 'GroupBySelectorComplianceParameter')")
40
40
  return value
41
41
 
42
42
  class Config:
@@ -18,7 +18,7 @@ import re # noqa: F401
18
18
  import json
19
19
 
20
20
 
21
- from typing import Any, Dict
21
+ from typing import Any, Dict, Optional
22
22
  from pydantic import BaseModel, Field, constr, validator
23
23
 
24
24
  class PostingModuleRule(BaseModel):
@@ -26,9 +26,10 @@ class PostingModuleRule(BaseModel):
26
26
  A Posting rule # noqa: E501
27
27
  """
28
28
  rule_id: constr(strict=True, max_length=64, min_length=1) = Field(..., alias="ruleId", description="The identifier for the Posting Rule.")
29
- account: constr(strict=True, max_length=512, min_length=1) = Field(..., description="The account to post the Activity credit or debit to.")
29
+ account: Optional[constr(strict=True, max_length=512, min_length=1)] = Field(None, description="The general ledger account to post the Activity credit or debit to.")
30
30
  rule_filter: constr(strict=True, max_length=16384, min_length=1) = Field(..., alias="ruleFilter", description="The filter syntax for the Posting Rule. See https://support.lusid.com/knowledgebase/article/KA-02140 for more information on filter syntax.")
31
- __properties = ["ruleId", "account", "ruleFilter"]
31
+ general_ledger_account_code: Optional[constr(strict=True, max_length=512, min_length=1)] = Field(None, alias="generalLedgerAccountCode", description="The general ledger account to post the Activity credit or debit to.")
32
+ __properties = ["ruleId", "account", "ruleFilter", "generalLedgerAccountCode"]
32
33
 
33
34
  @validator('rule_id')
34
35
  def rule_id_validate_regular_expression(cls, value):
@@ -40,6 +41,9 @@ class PostingModuleRule(BaseModel):
40
41
  @validator('account')
41
42
  def account_validate_regular_expression(cls, value):
42
43
  """Validates the regular expression"""
44
+ if value is None:
45
+ return value
46
+
43
47
  if not re.match(r"^[\s\S]*$", value):
44
48
  raise ValueError(r"must validate the regular expression /^[\s\S]*$/")
45
49
  return value
@@ -51,6 +55,16 @@ class PostingModuleRule(BaseModel):
51
55
  raise ValueError(r"must validate the regular expression /^[\s\S]*$/")
52
56
  return value
53
57
 
58
+ @validator('general_ledger_account_code')
59
+ def general_ledger_account_code_validate_regular_expression(cls, value):
60
+ """Validates the regular expression"""
61
+ if value is None:
62
+ return value
63
+
64
+ if not re.match(r"^[\s\S]*$", value):
65
+ raise ValueError(r"must validate the regular expression /^[\s\S]*$/")
66
+ return value
67
+
54
68
  class Config:
55
69
  """Pydantic configuration"""
56
70
  allow_population_by_field_name = True
@@ -75,6 +89,16 @@ class PostingModuleRule(BaseModel):
75
89
  exclude={
76
90
  },
77
91
  exclude_none=True)
92
+ # set to None if account (nullable) is None
93
+ # and __fields_set__ contains the field
94
+ if self.account is None and "account" in self.__fields_set__:
95
+ _dict['account'] = None
96
+
97
+ # set to None if general_ledger_account_code (nullable) is None
98
+ # and __fields_set__ contains the field
99
+ if self.general_ledger_account_code is None and "general_ledger_account_code" in self.__fields_set__:
100
+ _dict['generalLedgerAccountCode'] = None
101
+
78
102
  return _dict
79
103
 
80
104
  @classmethod
@@ -89,6 +113,7 @@ class PostingModuleRule(BaseModel):
89
113
  _obj = PostingModuleRule.parse_obj({
90
114
  "rule_id": obj.get("ruleId"),
91
115
  "account": obj.get("account"),
92
- "rule_filter": obj.get("ruleFilter")
116
+ "rule_filter": obj.get("ruleFilter"),
117
+ "general_ledger_account_code": obj.get("generalLedgerAccountCode")
93
118
  })
94
119
  return _obj
@@ -46,7 +46,8 @@ class PricingModel(str, Enum):
46
46
  FORWARDFROMCURVEUNDISCOUNTED = 'ForwardFromCurveUndiscounted'
47
47
  BLACKSCHOLESDIGITAL = 'BlackScholesDigital'
48
48
  BJERKSUNDSTENSLAND1993 = 'BjerksundStensland1993'
49
- LOOKUPPRICING = 'LookUpPricing'
49
+ BONDLOOKUPPRICER = 'BondLookupPricer'
50
+ FLEXIBLELOANPRICER = 'FlexibleLoanPricer'
50
51
 
51
52
  @classmethod
52
53
  def from_json(cls, json_str: str) -> PricingModel: