lusid-sdk 2.1.405__py3-none-any.whl → 2.1.537__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.
Files changed (294) hide show
  1. lusid/__init__.py +142 -8
  2. lusid/api/__init__.py +2 -2
  3. lusid/api/abor_api.py +126 -133
  4. lusid/api/abor_configuration_api.py +46 -45
  5. lusid/api/address_key_definition_api.py +28 -27
  6. lusid/api/aggregation_api.py +37 -36
  7. lusid/api/allocations_api.py +39 -38
  8. lusid/api/amortisation_rule_sets_api.py +55 -54
  9. lusid/api/application_metadata_api.py +28 -27
  10. lusid/api/blocks_api.py +37 -36
  11. lusid/api/calendars_api.py +469 -111
  12. lusid/api/chart_of_accounts_api.py +454 -279
  13. lusid/api/complex_market_data_api.py +37 -36
  14. lusid/api/compliance_api.py +136 -135
  15. lusid/api/configuration_recipe_api.py +100 -99
  16. lusid/api/conventions_api.py +109 -108
  17. lusid/api/corporate_action_sources_api.py +82 -81
  18. lusid/api/counterparties_api.py +73 -72
  19. lusid/api/custom_entities_api.py +102 -101
  20. lusid/api/custom_entity_definitions_api.py +37 -36
  21. lusid/api/custom_entity_types_api.py +37 -36
  22. lusid/api/cut_label_definitions_api.py +46 -45
  23. lusid/api/data_types_api.py +248 -72
  24. lusid/api/derived_transaction_portfolios_api.py +19 -18
  25. lusid/api/entities_api.py +431 -46
  26. lusid/api/executions_api.py +37 -36
  27. lusid/api/fee_types_api.py +55 -54
  28. lusid/api/{fund_configurations_api.py → fund_configuration_api.py} +222 -46
  29. lusid/api/funds_api.py +337 -162
  30. lusid/api/group_reconciliations_api.py +2182 -63
  31. lusid/api/instrument_event_types_api.py +64 -63
  32. lusid/api/instrument_events_api.py +46 -45
  33. lusid/api/instruments_api.py +374 -186
  34. lusid/api/legacy_compliance_api.py +73 -72
  35. lusid/api/legal_entities_api.py +167 -166
  36. lusid/api/order_graph_api.py +32 -31
  37. lusid/api/order_instructions_api.py +37 -36
  38. lusid/api/order_management_api.py +251 -90
  39. lusid/api/orders_api.py +37 -36
  40. lusid/api/packages_api.py +37 -36
  41. lusid/api/participations_api.py +37 -36
  42. lusid/api/persons_api.py +163 -162
  43. lusid/api/placements_api.py +37 -36
  44. lusid/api/portfolio_groups_api.py +235 -234
  45. lusid/api/portfolios_api.py +307 -309
  46. lusid/api/property_definitions_api.py +100 -99
  47. lusid/api/queryable_keys_api.py +10 -9
  48. lusid/api/quotes_api.py +82 -81
  49. lusid/api/reconciliations_api.py +136 -135
  50. lusid/api/reference_lists_api.py +39 -38
  51. lusid/api/reference_portfolio_api.py +213 -36
  52. lusid/api/relation_definitions_api.py +28 -27
  53. lusid/api/relations_api.py +19 -18
  54. lusid/api/relationship_definitions_api.py +46 -45
  55. lusid/api/relationships_api.py +19 -18
  56. lusid/api/schemas_api.py +37 -36
  57. lusid/api/scopes_api.py +19 -18
  58. lusid/api/scripted_translation_api.py +73 -72
  59. lusid/api/search_api.py +37 -36
  60. lusid/api/sequences_api.py +37 -36
  61. lusid/api/staged_modifications_api.py +37 -36
  62. lusid/api/staging_rule_set_api.py +46 -45
  63. lusid/api/structured_result_data_api.py +82 -81
  64. lusid/api/system_configuration_api.py +64 -63
  65. lusid/api/tax_rule_sets_api.py +46 -45
  66. lusid/api/transaction_configuration_api.py +100 -99
  67. lusid/api/transaction_fees_api.py +46 -45
  68. lusid/api/transaction_portfolios_api.py +771 -328
  69. lusid/api/translation_api.py +19 -18
  70. lusid/api/workspace_api.py +181 -180
  71. lusid/api_client.py +26 -17
  72. lusid/configuration.py +87 -2
  73. lusid/extensions/api_client.py +25 -17
  74. lusid/extensions/api_client_factory.py +14 -5
  75. lusid/extensions/api_configuration.py +50 -1
  76. lusid/extensions/configuration_loaders.py +39 -11
  77. lusid/extensions/configuration_options.py +67 -0
  78. lusid/extensions/rest.py +78 -26
  79. lusid/extensions/retry.py +109 -37
  80. lusid/models/__init__.py +140 -6
  81. lusid/models/access_metadata_value.py +1 -1
  82. lusid/models/accounting_method.py +7 -0
  83. lusid/models/accumulation_event.py +3 -3
  84. lusid/models/address_key_list.py +3 -3
  85. lusid/models/amortisation_event.py +3 -3
  86. lusid/models/amount.py +69 -0
  87. lusid/models/applicable_instrument_event.py +7 -2
  88. lusid/models/asset_leg.py +1 -1
  89. lusid/models/basket.py +3 -3
  90. lusid/models/batch_update_user_review_for_comparison_result_request.py +81 -0
  91. lusid/models/batch_update_user_review_for_comparison_result_response.py +146 -0
  92. lusid/models/batch_upsert_dates_for_calendar_response.py +146 -0
  93. lusid/models/batch_upsert_portfolio_access_metadata_request.py +27 -17
  94. lusid/models/batch_upsert_portfolio_access_metadata_response.py +56 -16
  95. lusid/models/{metadata_key_value.py → batch_upsert_portfolio_access_metadata_response_item.py} +15 -9
  96. lusid/models/bond.py +3 -3
  97. lusid/models/bond_coupon_event.py +10 -5
  98. lusid/models/bond_default_event.py +3 -3
  99. lusid/models/bond_principal_event.py +10 -5
  100. lusid/models/bonus_issue_event.py +166 -0
  101. lusid/models/{component_rule.py → break_code_source.py} +17 -21
  102. lusid/models/call_on_intermediate_securities_event.py +139 -0
  103. lusid/models/cancel_order_and_move_remaining_result.py +84 -0
  104. lusid/models/cancel_orders_and_move_remaining_request.py +83 -0
  105. lusid/models/cancel_orders_and_move_remaining_response.py +153 -0
  106. lusid/models/cap_floor.py +3 -3
  107. lusid/models/capital_distribution_event.py +3 -3
  108. lusid/models/cash.py +3 -3
  109. lusid/models/cash_dividend_event.py +3 -3
  110. lusid/models/cash_flow_event.py +3 -3
  111. lusid/models/cash_perpetual.py +3 -3
  112. lusid/models/cds_credit_event.py +6 -6
  113. lusid/models/cds_index.py +3 -3
  114. lusid/models/cdx_credit_event.py +6 -6
  115. lusid/models/change_interval.py +123 -0
  116. lusid/models/change_interval_with_order_management_detail.py +3 -3
  117. lusid/models/close_event.py +3 -3
  118. lusid/models/comparison_attribute_value_pair.py +71 -0
  119. lusid/models/complex_bond.py +3 -3
  120. lusid/models/component_transaction.py +10 -3
  121. lusid/models/contract_for_difference.py +3 -3
  122. lusid/models/create_derived_transaction_portfolio_request.py +3 -3
  123. lusid/models/create_group_reconciliation_definition_request.py +113 -0
  124. lusid/models/create_staging_rule_set_request.py +1 -6
  125. lusid/models/create_transaction_portfolio_request.py +3 -3
  126. lusid/models/credit_default_swap.py +3 -3
  127. lusid/models/credit_premium_cash_flow_event.py +3 -3
  128. lusid/models/custodian_account_request.py +1 -1
  129. lusid/models/custom_entity_entity.py +146 -0
  130. lusid/models/custom_entity_response.py +7 -1
  131. lusid/models/decimal_list.py +3 -3
  132. lusid/models/delete_instrument_properties_response.py +7 -1
  133. lusid/models/delete_instrument_response.py +7 -1
  134. lusid/models/delete_instruments_response.py +22 -1
  135. lusid/models/deleted_entity_response.py +7 -1
  136. lusid/models/diary_entry_request.py +10 -1
  137. lusid/models/dividend_option_event.py +3 -3
  138. lusid/models/dividend_reinvestment_event.py +9 -4
  139. lusid/models/effective_range.py +71 -0
  140. lusid/models/equity.py +3 -3
  141. lusid/models/equity_option.py +22 -7
  142. lusid/models/equity_swap.py +3 -3
  143. lusid/models/exchange_traded_option.py +3 -3
  144. lusid/models/exchange_traded_option_contract_details.py +1 -1
  145. lusid/models/exercise_event.py +3 -3
  146. lusid/models/exotic_instrument.py +3 -3
  147. lusid/models/expiry_event.py +3 -3
  148. lusid/models/fee.py +17 -10
  149. lusid/models/fee_request.py +20 -13
  150. lusid/models/fee_type.py +4 -4
  151. lusid/models/fee_type_request.py +3 -3
  152. lusid/models/fixed_leg.py +3 -3
  153. lusid/models/fixed_schedule.py +3 -3
  154. lusid/models/flexible_loan.py +3 -3
  155. lusid/models/float_schedule.py +4 -4
  156. lusid/models/floating_leg.py +3 -3
  157. lusid/models/flow_conventions.py +7 -1
  158. lusid/models/forward_rate_agreement.py +3 -3
  159. lusid/models/fund_configuration.py +44 -17
  160. lusid/models/fund_configuration_request.py +31 -19
  161. lusid/models/fund_id_list.py +99 -0
  162. lusid/models/fund_share_class.py +23 -8
  163. lusid/models/funding_leg.py +3 -3
  164. lusid/models/future.py +3 -3
  165. lusid/models/future_expiry_event.py +3 -3
  166. lusid/models/fx_forward.py +3 -3
  167. lusid/models/fx_forward_settlement_event.py +3 -3
  168. lusid/models/fx_option.py +3 -3
  169. lusid/models/fx_swap.py +3 -3
  170. lusid/models/group_reconciliation_aggregate_attribute_rule.py +2 -2
  171. lusid/models/group_reconciliation_aggregate_attribute_values.py +86 -0
  172. lusid/models/group_reconciliation_aggregate_comparison_rule_operand.py +1 -1
  173. lusid/models/group_reconciliation_comparison_result.py +148 -0
  174. lusid/models/group_reconciliation_core_attribute_values.py +86 -0
  175. lusid/models/group_reconciliation_core_comparison_rule_operand.py +1 -1
  176. lusid/models/group_reconciliation_date_pair.py +81 -0
  177. lusid/models/group_reconciliation_dates.py +78 -0
  178. lusid/models/group_reconciliation_definition.py +136 -0
  179. lusid/models/group_reconciliation_definition_comparison_ruleset_ids.py +83 -0
  180. lusid/models/group_reconciliation_definition_currencies.py +71 -0
  181. lusid/models/group_reconciliation_definition_portfolio_entity_ids.py +86 -0
  182. lusid/models/group_reconciliation_definition_recipe_ids.py +78 -0
  183. lusid/models/group_reconciliation_instance_id.py +71 -0
  184. lusid/models/group_reconciliation_result_statuses.py +89 -0
  185. lusid/models/group_reconciliation_result_types.py +96 -0
  186. lusid/models/group_reconciliation_review_statuses.py +96 -0
  187. lusid/models/group_reconciliation_run_details.py +76 -0
  188. lusid/models/group_reconciliation_run_request.py +75 -0
  189. lusid/models/{metadata_key_value_response.py → group_reconciliation_run_response.py} +20 -29
  190. lusid/models/group_reconciliation_summary.py +121 -0
  191. lusid/models/group_reconciliation_user_review.py +112 -0
  192. lusid/models/group_reconciliation_user_review_add.py +88 -0
  193. lusid/models/group_reconciliation_user_review_break_code.py +80 -0
  194. lusid/models/group_reconciliation_user_review_comment.py +80 -0
  195. lusid/models/group_reconciliation_user_review_match_key.py +80 -0
  196. lusid/models/group_reconciliation_user_review_remove.py +88 -0
  197. lusid/models/holding_contributor.py +11 -4
  198. lusid/models/holding_ids_request.py +69 -0
  199. lusid/models/inflation_leg.py +3 -3
  200. lusid/models/inflation_linked_bond.py +3 -3
  201. lusid/models/inflation_swap.py +3 -3
  202. lusid/models/informational_error_event.py +3 -3
  203. lusid/models/informational_event.py +3 -3
  204. lusid/models/instrument.py +7 -1
  205. lusid/models/instrument_definition.py +8 -2
  206. lusid/models/instrument_event.py +17 -5
  207. lusid/models/instrument_event_holder.py +9 -1
  208. lusid/models/instrument_event_type.py +12 -0
  209. lusid/models/instrument_leg.py +3 -3
  210. lusid/models/instrument_list.py +3 -3
  211. lusid/models/instrument_type.py +2 -0
  212. lusid/models/interest_rate_swap.py +3 -3
  213. lusid/models/interest_rate_swaption.py +3 -3
  214. lusid/models/intermediate_securities_distribution_event.py +140 -0
  215. lusid/models/lapse_election.py +73 -0
  216. lusid/models/loan_facility.py +97 -0
  217. lusid/models/lusid_instrument.py +7 -5
  218. lusid/models/market_data_key_rule.py +5 -3
  219. lusid/models/market_data_specific_rule.py +5 -3
  220. lusid/models/mastered_instrument.py +139 -0
  221. lusid/models/maturity_event.py +3 -3
  222. lusid/models/mbs_coupon_event.py +102 -0
  223. lusid/models/mbs_interest_deferral_event.py +102 -0
  224. lusid/models/mbs_interest_shortfall_event.py +102 -0
  225. lusid/models/mbs_principal_event.py +102 -0
  226. lusid/models/mbs_principal_write_off_event.py +102 -0
  227. lusid/models/merger_event.py +22 -22
  228. lusid/models/new_instrument.py +1 -1
  229. lusid/models/open_event.py +3 -3
  230. lusid/models/option_exercise_cash_event.py +144 -0
  231. lusid/models/option_exercise_election.py +73 -0
  232. lusid/models/option_exercise_physical_event.py +149 -0
  233. lusid/models/output_transaction.py +9 -2
  234. lusid/models/paged_resource_list_of_group_reconciliation_comparison_result.py +113 -0
  235. lusid/models/paged_resource_list_of_group_reconciliation_comparison_ruleset.py +113 -0
  236. lusid/models/paged_resource_list_of_group_reconciliation_definition.py +113 -0
  237. lusid/models/portfolio.py +3 -3
  238. lusid/models/portfolio_details.py +3 -3
  239. lusid/models/portfolio_group_id_list.py +3 -3
  240. lusid/models/portfolio_id_list.py +3 -3
  241. lusid/models/portfolio_without_href.py +3 -3
  242. lusid/models/pricing_options.py +8 -2
  243. lusid/models/property_list.py +3 -3
  244. lusid/models/protection_payout_cash_flow_event.py +102 -0
  245. lusid/models/raw_vendor_event.py +3 -3
  246. lusid/models/reference_instrument.py +3 -3
  247. lusid/models/reference_list.py +6 -5
  248. lusid/models/reference_list_type.py +1 -0
  249. lusid/models/repo.py +3 -3
  250. lusid/models/reset_event.py +3 -3
  251. lusid/models/resource_list_of_change_interval.py +113 -0
  252. lusid/models/resource_list_of_output_transaction.py +113 -0
  253. lusid/models/return_zero_pv_options.py +69 -0
  254. lusid/models/reverse_stock_split_event.py +21 -7
  255. lusid/models/scrip_dividend_event.py +3 -3
  256. lusid/models/settlement_cycle.py +79 -0
  257. lusid/models/share_class_dealing_breakdown.py +3 -2
  258. lusid/models/share_class_details.py +18 -1
  259. lusid/models/simple_cash_flow_loan.py +3 -3
  260. lusid/models/simple_instrument.py +3 -3
  261. lusid/models/simple_rounding_convention.py +76 -0
  262. lusid/models/spin_off_event.py +3 -3
  263. lusid/models/staged_modification_effective_range.py +2 -2
  264. lusid/models/stock_dividend_event.py +20 -6
  265. lusid/models/stock_split_event.py +3 -3
  266. lusid/models/string_list.py +3 -3
  267. lusid/models/swap_cash_flow_event.py +3 -3
  268. lusid/models/swap_principal_event.py +3 -3
  269. lusid/models/target_tax_lot.py +23 -2
  270. lusid/models/target_tax_lot_request.py +23 -2
  271. lusid/models/tender_event.py +172 -0
  272. lusid/models/term_deposit.py +3 -3
  273. lusid/models/total_return_swap.py +4 -4
  274. lusid/models/transaction.py +9 -2
  275. lusid/models/transaction_date_windows.py +85 -0
  276. lusid/models/transaction_price.py +3 -3
  277. lusid/models/transaction_price_type.py +2 -0
  278. lusid/models/transaction_request.py +9 -2
  279. lusid/models/transition_event.py +3 -3
  280. lusid/models/trigger_event.py +3 -3
  281. lusid/models/update_fee_type_request.py +4 -4
  282. lusid/models/update_group_reconciliation_comparison_ruleset_request.py +91 -0
  283. lusid/models/update_group_reconciliation_definition_request.py +107 -0
  284. lusid/models/update_reference_data_request.py +87 -0
  285. lusid/models/update_staging_rule_set_request.py +1 -6
  286. lusid/models/upsert_custom_entities_response.py +20 -1
  287. lusid/models/upsert_reference_portfolio_constituent_properties_request.py +84 -0
  288. lusid/models/upsert_reference_portfolio_constituent_properties_response.py +115 -0
  289. lusid/models/valuation_point_data_query_parameters.py +3 -3
  290. lusid/models/valuation_point_data_response.py +8 -13
  291. lusid/rest.py +70 -20
  292. {lusid_sdk-2.1.405.dist-info → lusid_sdk-2.1.537.dist-info}/METADATA +118 -26
  293. {lusid_sdk-2.1.405.dist-info → lusid_sdk-2.1.537.dist-info}/RECORD +294 -226
  294. {lusid_sdk-2.1.405.dist-info → lusid_sdk-2.1.537.dist-info}/WHEEL +0 -0
@@ -0,0 +1,75 @@
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, Optional
22
+ from pydantic.v1 import BaseModel, Field, constr
23
+ from lusid.models.group_reconciliation_dates import GroupReconciliationDates
24
+
25
+ class GroupReconciliationRunRequest(BaseModel):
26
+ """
27
+ GroupReconciliationRunRequest
28
+ """
29
+ instance_id: constr(strict=True, max_length=64, min_length=1) = Field(..., alias="instanceId", description="Reconciliation run Id. Consists of run type (manual or workflow) and identifier.")
30
+ dates_to_reconcile: Optional[GroupReconciliationDates] = Field(None, alias="datesToReconcile")
31
+ __properties = ["instanceId", "datesToReconcile"]
32
+
33
+ class Config:
34
+ """Pydantic configuration"""
35
+ allow_population_by_field_name = True
36
+ validate_assignment = True
37
+
38
+ def to_str(self) -> str:
39
+ """Returns the string representation of the model using alias"""
40
+ return pprint.pformat(self.dict(by_alias=True))
41
+
42
+ def to_json(self) -> str:
43
+ """Returns the JSON representation of the model using alias"""
44
+ return json.dumps(self.to_dict())
45
+
46
+ @classmethod
47
+ def from_json(cls, json_str: str) -> GroupReconciliationRunRequest:
48
+ """Create an instance of GroupReconciliationRunRequest from a JSON string"""
49
+ return cls.from_dict(json.loads(json_str))
50
+
51
+ def to_dict(self):
52
+ """Returns the dictionary representation of the model using alias"""
53
+ _dict = self.dict(by_alias=True,
54
+ exclude={
55
+ },
56
+ exclude_none=True)
57
+ # override the default output from pydantic by calling `to_dict()` of dates_to_reconcile
58
+ if self.dates_to_reconcile:
59
+ _dict['datesToReconcile'] = self.dates_to_reconcile.to_dict()
60
+ return _dict
61
+
62
+ @classmethod
63
+ def from_dict(cls, obj: dict) -> GroupReconciliationRunRequest:
64
+ """Create an instance of GroupReconciliationRunRequest from a dict"""
65
+ if obj is None:
66
+ return None
67
+
68
+ if not isinstance(obj, dict):
69
+ return GroupReconciliationRunRequest.parse_obj(obj)
70
+
71
+ _obj = GroupReconciliationRunRequest.parse_obj({
72
+ "instance_id": obj.get("instanceId"),
73
+ "dates_to_reconcile": GroupReconciliationDates.from_dict(obj.get("datesToReconcile")) if obj.get("datesToReconcile") is not None else None
74
+ })
75
+ return _obj
@@ -20,14 +20,14 @@ import json
20
20
 
21
21
  from typing import Any, Dict, List
22
22
  from pydantic.v1 import BaseModel, Field, conlist
23
- from lusid.models.access_metadata_value import AccessMetadataValue
23
+ from lusid.models.group_reconciliation_summary import GroupReconciliationSummary
24
24
 
25
- class MetadataKeyValueResponse(BaseModel):
25
+ class GroupReconciliationRunResponse(BaseModel):
26
26
  """
27
- MetadataKeyValueResponse
27
+ GroupReconciliationRunResponse
28
28
  """
29
- metadata: Dict[str, conlist(AccessMetadataValue)] = Field(...)
30
- __properties = ["metadata"]
29
+ reconciliation_summaries: conlist(GroupReconciliationSummary) = Field(..., alias="reconciliationSummaries", description="One summary record for each of the \"Holding\" | \"Transaction\" | \"Valuation\" reconciliations performed")
30
+ __properties = ["reconciliationSummaries"]
31
31
 
32
32
  class Config:
33
33
  """Pydantic configuration"""
@@ -43,8 +43,8 @@ class MetadataKeyValueResponse(BaseModel):
43
43
  return json.dumps(self.to_dict())
44
44
 
45
45
  @classmethod
46
- def from_json(cls, json_str: str) -> MetadataKeyValueResponse:
47
- """Create an instance of MetadataKeyValueResponse from a JSON string"""
46
+ def from_json(cls, json_str: str) -> GroupReconciliationRunResponse:
47
+ """Create an instance of GroupReconciliationRunResponse from a JSON string"""
48
48
  return cls.from_dict(json.loads(json_str))
49
49
 
50
50
  def to_dict(self):
@@ -53,34 +53,25 @@ class MetadataKeyValueResponse(BaseModel):
53
53
  exclude={
54
54
  },
55
55
  exclude_none=True)
56
- # override the default output from pydantic by calling `to_dict()` of each value in metadata (dict of array)
57
- _field_dict_of_array = {}
58
- if self.metadata:
59
- for _key in self.metadata:
60
- if self.metadata[_key]:
61
- _field_dict_of_array[_key] = [
62
- _item.to_dict() for _item in self.metadata[_key]
63
- ]
64
- _dict['metadata'] = _field_dict_of_array
56
+ # override the default output from pydantic by calling `to_dict()` of each item in reconciliation_summaries (list)
57
+ _items = []
58
+ if self.reconciliation_summaries:
59
+ for _item in self.reconciliation_summaries:
60
+ if _item:
61
+ _items.append(_item.to_dict())
62
+ _dict['reconciliationSummaries'] = _items
65
63
  return _dict
66
64
 
67
65
  @classmethod
68
- def from_dict(cls, obj: dict) -> MetadataKeyValueResponse:
69
- """Create an instance of MetadataKeyValueResponse from a dict"""
66
+ def from_dict(cls, obj: dict) -> GroupReconciliationRunResponse:
67
+ """Create an instance of GroupReconciliationRunResponse from a dict"""
70
68
  if obj is None:
71
69
  return None
72
70
 
73
71
  if not isinstance(obj, dict):
74
- return MetadataKeyValueResponse.parse_obj(obj)
75
-
76
- _obj = MetadataKeyValueResponse.parse_obj({
77
- "metadata": dict(
78
- (_k,
79
- [AccessMetadataValue.from_dict(_item) for _item in _v]
80
- if _v is not None
81
- else None
82
- )
83
- for _k, _v in obj.get("metadata").items()
84
- )
72
+ return GroupReconciliationRunResponse.parse_obj(obj)
73
+
74
+ _obj = GroupReconciliationRunResponse.parse_obj({
75
+ "reconciliation_summaries": [GroupReconciliationSummary.from_dict(_item) for _item in obj.get("reconciliationSummaries")] if obj.get("reconciliationSummaries") is not None else None
85
76
  })
86
77
  return _obj
@@ -0,0 +1,121 @@
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, Optional
22
+ from pydantic.v1 import BaseModel, Field, StrictInt, constr
23
+ from lusid.models.group_reconciliation_dates import GroupReconciliationDates
24
+ from lusid.models.group_reconciliation_instance_id import GroupReconciliationInstanceId
25
+ from lusid.models.group_reconciliation_result_statuses import GroupReconciliationResultStatuses
26
+ from lusid.models.group_reconciliation_result_types import GroupReconciliationResultTypes
27
+ from lusid.models.group_reconciliation_review_statuses import GroupReconciliationReviewStatuses
28
+ from lusid.models.group_reconciliation_run_details import GroupReconciliationRunDetails
29
+ from lusid.models.link import Link
30
+ from lusid.models.resource_id import ResourceId
31
+
32
+ class GroupReconciliationSummary(BaseModel):
33
+ """
34
+ GroupReconciliationSummary
35
+ """
36
+ run_details: Optional[GroupReconciliationRunDetails] = Field(None, alias="runDetails")
37
+ group_reconciliation_definition_id: Optional[ResourceId] = Field(None, alias="groupReconciliationDefinitionId")
38
+ reconciliation_type: constr(strict=True, min_length=1) = Field(..., alias="reconciliationType", description="The type of reconciliation to perform. \"Holding\" | \"Transaction\" | \"Valuation\"")
39
+ instance_id: GroupReconciliationInstanceId = Field(..., alias="instanceId")
40
+ dates_reconciled: GroupReconciliationDates = Field(..., alias="datesReconciled")
41
+ reconciliation_run_as_at: constr(strict=True, min_length=1) = Field(..., alias="reconciliationRunAsAt", description="The date and time the reconciliation was run")
42
+ count_comparison_results: StrictInt = Field(..., alias="countComparisonResults", description="The total number of comparison results with this InstanceId and ReconciliationType")
43
+ link_comparison_results: Optional[Link] = Field(None, alias="linkComparisonResults")
44
+ result_types: Optional[GroupReconciliationResultTypes] = Field(None, alias="resultTypes")
45
+ result_statuses: Optional[GroupReconciliationResultStatuses] = Field(None, alias="resultStatuses")
46
+ review_statuses: Optional[GroupReconciliationReviewStatuses] = Field(None, alias="reviewStatuses")
47
+ __properties = ["runDetails", "groupReconciliationDefinitionId", "reconciliationType", "instanceId", "datesReconciled", "reconciliationRunAsAt", "countComparisonResults", "linkComparisonResults", "resultTypes", "resultStatuses", "reviewStatuses"]
48
+
49
+ class Config:
50
+ """Pydantic configuration"""
51
+ allow_population_by_field_name = True
52
+ validate_assignment = True
53
+
54
+ def to_str(self) -> str:
55
+ """Returns the string representation of the model using alias"""
56
+ return pprint.pformat(self.dict(by_alias=True))
57
+
58
+ def to_json(self) -> str:
59
+ """Returns the JSON representation of the model using alias"""
60
+ return json.dumps(self.to_dict())
61
+
62
+ @classmethod
63
+ def from_json(cls, json_str: str) -> GroupReconciliationSummary:
64
+ """Create an instance of GroupReconciliationSummary from a JSON string"""
65
+ return cls.from_dict(json.loads(json_str))
66
+
67
+ def to_dict(self):
68
+ """Returns the dictionary representation of the model using alias"""
69
+ _dict = self.dict(by_alias=True,
70
+ exclude={
71
+ },
72
+ exclude_none=True)
73
+ # override the default output from pydantic by calling `to_dict()` of run_details
74
+ if self.run_details:
75
+ _dict['runDetails'] = self.run_details.to_dict()
76
+ # override the default output from pydantic by calling `to_dict()` of group_reconciliation_definition_id
77
+ if self.group_reconciliation_definition_id:
78
+ _dict['groupReconciliationDefinitionId'] = self.group_reconciliation_definition_id.to_dict()
79
+ # override the default output from pydantic by calling `to_dict()` of instance_id
80
+ if self.instance_id:
81
+ _dict['instanceId'] = self.instance_id.to_dict()
82
+ # override the default output from pydantic by calling `to_dict()` of dates_reconciled
83
+ if self.dates_reconciled:
84
+ _dict['datesReconciled'] = self.dates_reconciled.to_dict()
85
+ # override the default output from pydantic by calling `to_dict()` of link_comparison_results
86
+ if self.link_comparison_results:
87
+ _dict['linkComparisonResults'] = self.link_comparison_results.to_dict()
88
+ # override the default output from pydantic by calling `to_dict()` of result_types
89
+ if self.result_types:
90
+ _dict['resultTypes'] = self.result_types.to_dict()
91
+ # override the default output from pydantic by calling `to_dict()` of result_statuses
92
+ if self.result_statuses:
93
+ _dict['resultStatuses'] = self.result_statuses.to_dict()
94
+ # override the default output from pydantic by calling `to_dict()` of review_statuses
95
+ if self.review_statuses:
96
+ _dict['reviewStatuses'] = self.review_statuses.to_dict()
97
+ return _dict
98
+
99
+ @classmethod
100
+ def from_dict(cls, obj: dict) -> GroupReconciliationSummary:
101
+ """Create an instance of GroupReconciliationSummary from a dict"""
102
+ if obj is None:
103
+ return None
104
+
105
+ if not isinstance(obj, dict):
106
+ return GroupReconciliationSummary.parse_obj(obj)
107
+
108
+ _obj = GroupReconciliationSummary.parse_obj({
109
+ "run_details": GroupReconciliationRunDetails.from_dict(obj.get("runDetails")) if obj.get("runDetails") is not None else None,
110
+ "group_reconciliation_definition_id": ResourceId.from_dict(obj.get("groupReconciliationDefinitionId")) if obj.get("groupReconciliationDefinitionId") is not None else None,
111
+ "reconciliation_type": obj.get("reconciliationType"),
112
+ "instance_id": GroupReconciliationInstanceId.from_dict(obj.get("instanceId")) if obj.get("instanceId") is not None else None,
113
+ "dates_reconciled": GroupReconciliationDates.from_dict(obj.get("datesReconciled")) if obj.get("datesReconciled") is not None else None,
114
+ "reconciliation_run_as_at": obj.get("reconciliationRunAsAt"),
115
+ "count_comparison_results": obj.get("countComparisonResults"),
116
+ "link_comparison_results": Link.from_dict(obj.get("linkComparisonResults")) if obj.get("linkComparisonResults") is not None else None,
117
+ "result_types": GroupReconciliationResultTypes.from_dict(obj.get("resultTypes")) if obj.get("resultTypes") is not None else None,
118
+ "result_statuses": GroupReconciliationResultStatuses.from_dict(obj.get("resultStatuses")) if obj.get("resultStatuses") is not None else None,
119
+ "review_statuses": GroupReconciliationReviewStatuses.from_dict(obj.get("reviewStatuses")) if obj.get("reviewStatuses") is not None else None
120
+ })
121
+ return _obj
@@ -0,0 +1,112 @@
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, Optional
22
+ from pydantic.v1 import BaseModel, Field, conlist
23
+ from lusid.models.group_reconciliation_user_review_break_code import GroupReconciliationUserReviewBreakCode
24
+ from lusid.models.group_reconciliation_user_review_comment import GroupReconciliationUserReviewComment
25
+ from lusid.models.group_reconciliation_user_review_match_key import GroupReconciliationUserReviewMatchKey
26
+
27
+ class GroupReconciliationUserReview(BaseModel):
28
+ """
29
+ GroupReconciliationUserReview
30
+ """
31
+ break_codes: Optional[conlist(GroupReconciliationUserReviewBreakCode)] = Field(None, alias="breakCodes", description="A list of break codes shared between the reconciliation runs of the same run instance and result hash.")
32
+ match_keys: Optional[conlist(GroupReconciliationUserReviewMatchKey)] = Field(None, alias="matchKeys", description="A list of match keys shared between the reconciliation runs of the same run instance and result hash.")
33
+ comments: Optional[conlist(GroupReconciliationUserReviewComment)] = Field(None, description="A list of comments shared between the reconciliation runs of the same run instance and result hash.")
34
+ __properties = ["breakCodes", "matchKeys", "comments"]
35
+
36
+ class Config:
37
+ """Pydantic configuration"""
38
+ allow_population_by_field_name = True
39
+ validate_assignment = True
40
+
41
+ def to_str(self) -> str:
42
+ """Returns the string representation of the model using alias"""
43
+ return pprint.pformat(self.dict(by_alias=True))
44
+
45
+ def to_json(self) -> str:
46
+ """Returns the JSON representation of the model using alias"""
47
+ return json.dumps(self.to_dict())
48
+
49
+ @classmethod
50
+ def from_json(cls, json_str: str) -> GroupReconciliationUserReview:
51
+ """Create an instance of GroupReconciliationUserReview from a JSON string"""
52
+ return cls.from_dict(json.loads(json_str))
53
+
54
+ def to_dict(self):
55
+ """Returns the dictionary representation of the model using alias"""
56
+ _dict = self.dict(by_alias=True,
57
+ exclude={
58
+ },
59
+ exclude_none=True)
60
+ # override the default output from pydantic by calling `to_dict()` of each item in break_codes (list)
61
+ _items = []
62
+ if self.break_codes:
63
+ for _item in self.break_codes:
64
+ if _item:
65
+ _items.append(_item.to_dict())
66
+ _dict['breakCodes'] = _items
67
+ # override the default output from pydantic by calling `to_dict()` of each item in match_keys (list)
68
+ _items = []
69
+ if self.match_keys:
70
+ for _item in self.match_keys:
71
+ if _item:
72
+ _items.append(_item.to_dict())
73
+ _dict['matchKeys'] = _items
74
+ # override the default output from pydantic by calling `to_dict()` of each item in comments (list)
75
+ _items = []
76
+ if self.comments:
77
+ for _item in self.comments:
78
+ if _item:
79
+ _items.append(_item.to_dict())
80
+ _dict['comments'] = _items
81
+ # set to None if break_codes (nullable) is None
82
+ # and __fields_set__ contains the field
83
+ if self.break_codes is None and "break_codes" in self.__fields_set__:
84
+ _dict['breakCodes'] = None
85
+
86
+ # set to None if match_keys (nullable) is None
87
+ # and __fields_set__ contains the field
88
+ if self.match_keys is None and "match_keys" in self.__fields_set__:
89
+ _dict['matchKeys'] = None
90
+
91
+ # set to None if comments (nullable) is None
92
+ # and __fields_set__ contains the field
93
+ if self.comments is None and "comments" in self.__fields_set__:
94
+ _dict['comments'] = None
95
+
96
+ return _dict
97
+
98
+ @classmethod
99
+ def from_dict(cls, obj: dict) -> GroupReconciliationUserReview:
100
+ """Create an instance of GroupReconciliationUserReview from a dict"""
101
+ if obj is None:
102
+ return None
103
+
104
+ if not isinstance(obj, dict):
105
+ return GroupReconciliationUserReview.parse_obj(obj)
106
+
107
+ _obj = GroupReconciliationUserReview.parse_obj({
108
+ "break_codes": [GroupReconciliationUserReviewBreakCode.from_dict(_item) for _item in obj.get("breakCodes")] if obj.get("breakCodes") is not None else None,
109
+ "match_keys": [GroupReconciliationUserReviewMatchKey.from_dict(_item) for _item in obj.get("matchKeys")] if obj.get("matchKeys") is not None else None,
110
+ "comments": [GroupReconciliationUserReviewComment.from_dict(_item) for _item in obj.get("comments")] if obj.get("comments") is not None else None
111
+ })
112
+ return _obj
@@ -0,0 +1,88 @@
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, Optional
22
+ from pydantic.v1 import BaseModel, Field, StrictStr
23
+
24
+ class GroupReconciliationUserReviewAdd(BaseModel):
25
+ """
26
+ GroupReconciliationUserReviewAdd
27
+ """
28
+ break_code: Optional[StrictStr] = Field(None, alias="breakCode", description="The break code of the reconciliation result.")
29
+ match_key: Optional[StrictStr] = Field(None, alias="matchKey", description="The match key of the reconciliation result.")
30
+ comment_text: Optional[StrictStr] = Field(None, alias="commentText", description="User's comment regarding the reconciliation result.")
31
+ __properties = ["breakCode", "matchKey", "commentText"]
32
+
33
+ class Config:
34
+ """Pydantic configuration"""
35
+ allow_population_by_field_name = True
36
+ validate_assignment = True
37
+
38
+ def to_str(self) -> str:
39
+ """Returns the string representation of the model using alias"""
40
+ return pprint.pformat(self.dict(by_alias=True))
41
+
42
+ def to_json(self) -> str:
43
+ """Returns the JSON representation of the model using alias"""
44
+ return json.dumps(self.to_dict())
45
+
46
+ @classmethod
47
+ def from_json(cls, json_str: str) -> GroupReconciliationUserReviewAdd:
48
+ """Create an instance of GroupReconciliationUserReviewAdd from a JSON string"""
49
+ return cls.from_dict(json.loads(json_str))
50
+
51
+ def to_dict(self):
52
+ """Returns the dictionary representation of the model using alias"""
53
+ _dict = self.dict(by_alias=True,
54
+ exclude={
55
+ },
56
+ exclude_none=True)
57
+ # set to None if break_code (nullable) is None
58
+ # and __fields_set__ contains the field
59
+ if self.break_code is None and "break_code" in self.__fields_set__:
60
+ _dict['breakCode'] = None
61
+
62
+ # set to None if match_key (nullable) is None
63
+ # and __fields_set__ contains the field
64
+ if self.match_key is None and "match_key" in self.__fields_set__:
65
+ _dict['matchKey'] = None
66
+
67
+ # set to None if comment_text (nullable) is None
68
+ # and __fields_set__ contains the field
69
+ if self.comment_text is None and "comment_text" in self.__fields_set__:
70
+ _dict['commentText'] = None
71
+
72
+ return _dict
73
+
74
+ @classmethod
75
+ def from_dict(cls, obj: dict) -> GroupReconciliationUserReviewAdd:
76
+ """Create an instance of GroupReconciliationUserReviewAdd from a dict"""
77
+ if obj is None:
78
+ return None
79
+
80
+ if not isinstance(obj, dict):
81
+ return GroupReconciliationUserReviewAdd.parse_obj(obj)
82
+
83
+ _obj = GroupReconciliationUserReviewAdd.parse_obj({
84
+ "break_code": obj.get("breakCode"),
85
+ "match_key": obj.get("matchKey"),
86
+ "comment_text": obj.get("commentText")
87
+ })
88
+ return _obj
@@ -0,0 +1,80 @@
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, Optional
22
+ from pydantic.v1 import BaseModel, Field, constr
23
+
24
+ class GroupReconciliationUserReviewBreakCode(BaseModel):
25
+ """
26
+ GroupReconciliationUserReviewBreakCode
27
+ """
28
+ break_code: constr(strict=True, min_length=1) = Field(..., alias="breakCode", description="The break code of the reconciliation result.")
29
+ user_id: Optional[constr(strict=True, max_length=16384, min_length=0)] = Field(None, alias="userId", description="Id of the user who made a User Review input.")
30
+ as_at_added: Optional[datetime] = Field(None, alias="asAtAdded", description="The timestamp of the added User Review input.")
31
+ as_at_invalid: Optional[datetime] = Field(None, alias="asAtInvalid", description="The timestamp when User Review input became invalid e.g. because of the different attribute values within the new run.")
32
+ __properties = ["breakCode", "userId", "asAtAdded", "asAtInvalid"]
33
+
34
+ class Config:
35
+ """Pydantic configuration"""
36
+ allow_population_by_field_name = True
37
+ validate_assignment = True
38
+
39
+ def to_str(self) -> str:
40
+ """Returns the string representation of the model using alias"""
41
+ return pprint.pformat(self.dict(by_alias=True))
42
+
43
+ def to_json(self) -> str:
44
+ """Returns the JSON representation of the model using alias"""
45
+ return json.dumps(self.to_dict())
46
+
47
+ @classmethod
48
+ def from_json(cls, json_str: str) -> GroupReconciliationUserReviewBreakCode:
49
+ """Create an instance of GroupReconciliationUserReviewBreakCode from a JSON string"""
50
+ return cls.from_dict(json.loads(json_str))
51
+
52
+ def to_dict(self):
53
+ """Returns the dictionary representation of the model using alias"""
54
+ _dict = self.dict(by_alias=True,
55
+ exclude={
56
+ },
57
+ exclude_none=True)
58
+ # set to None if user_id (nullable) is None
59
+ # and __fields_set__ contains the field
60
+ if self.user_id is None and "user_id" in self.__fields_set__:
61
+ _dict['userId'] = None
62
+
63
+ return _dict
64
+
65
+ @classmethod
66
+ def from_dict(cls, obj: dict) -> GroupReconciliationUserReviewBreakCode:
67
+ """Create an instance of GroupReconciliationUserReviewBreakCode from a dict"""
68
+ if obj is None:
69
+ return None
70
+
71
+ if not isinstance(obj, dict):
72
+ return GroupReconciliationUserReviewBreakCode.parse_obj(obj)
73
+
74
+ _obj = GroupReconciliationUserReviewBreakCode.parse_obj({
75
+ "break_code": obj.get("breakCode"),
76
+ "user_id": obj.get("userId"),
77
+ "as_at_added": obj.get("asAtAdded"),
78
+ "as_at_invalid": obj.get("asAtInvalid")
79
+ })
80
+ return _obj
@@ -0,0 +1,80 @@
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, Optional
22
+ from pydantic.v1 import BaseModel, Field, constr
23
+
24
+ class GroupReconciliationUserReviewComment(BaseModel):
25
+ """
26
+ GroupReconciliationUserReviewComment
27
+ """
28
+ comment_text: constr(strict=True, min_length=1) = Field(..., alias="commentText", description="User's comment regarding the reconciliation result.")
29
+ user_id: Optional[constr(strict=True, max_length=16384, min_length=0)] = Field(None, alias="userId", description="Id of the user who made a User Review input.")
30
+ as_at_added: Optional[datetime] = Field(None, alias="asAtAdded", description="The timestamp of the added User Review input.")
31
+ as_at_invalid: Optional[datetime] = Field(None, alias="asAtInvalid", description="The timestamp when User Review input became invalid e.g. because of the different attribute values within the new run.")
32
+ __properties = ["commentText", "userId", "asAtAdded", "asAtInvalid"]
33
+
34
+ class Config:
35
+ """Pydantic configuration"""
36
+ allow_population_by_field_name = True
37
+ validate_assignment = True
38
+
39
+ def to_str(self) -> str:
40
+ """Returns the string representation of the model using alias"""
41
+ return pprint.pformat(self.dict(by_alias=True))
42
+
43
+ def to_json(self) -> str:
44
+ """Returns the JSON representation of the model using alias"""
45
+ return json.dumps(self.to_dict())
46
+
47
+ @classmethod
48
+ def from_json(cls, json_str: str) -> GroupReconciliationUserReviewComment:
49
+ """Create an instance of GroupReconciliationUserReviewComment from a JSON string"""
50
+ return cls.from_dict(json.loads(json_str))
51
+
52
+ def to_dict(self):
53
+ """Returns the dictionary representation of the model using alias"""
54
+ _dict = self.dict(by_alias=True,
55
+ exclude={
56
+ },
57
+ exclude_none=True)
58
+ # set to None if user_id (nullable) is None
59
+ # and __fields_set__ contains the field
60
+ if self.user_id is None and "user_id" in self.__fields_set__:
61
+ _dict['userId'] = None
62
+
63
+ return _dict
64
+
65
+ @classmethod
66
+ def from_dict(cls, obj: dict) -> GroupReconciliationUserReviewComment:
67
+ """Create an instance of GroupReconciliationUserReviewComment from a dict"""
68
+ if obj is None:
69
+ return None
70
+
71
+ if not isinstance(obj, dict):
72
+ return GroupReconciliationUserReviewComment.parse_obj(obj)
73
+
74
+ _obj = GroupReconciliationUserReviewComment.parse_obj({
75
+ "comment_text": obj.get("commentText"),
76
+ "user_id": obj.get("userId"),
77
+ "as_at_added": obj.get("asAtAdded"),
78
+ "as_at_invalid": obj.get("asAtInvalid")
79
+ })
80
+ return _obj