lusid-sdk 2.1.405__py3-none-any.whl → 2.1.450__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 (239) hide show
  1. lusid/__init__.py +66 -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 +163 -162
  30. lusid/api/group_reconciliations_api.py +1437 -45
  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 +187 -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 +91 -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 +327 -326
  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 +64 -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/basket.py +3 -3
  88. lusid/models/batch_upsert_dates_for_calendar_response.py +146 -0
  89. lusid/models/batch_upsert_portfolio_access_metadata_request.py +27 -17
  90. lusid/models/batch_upsert_portfolio_access_metadata_response.py +56 -16
  91. lusid/models/{metadata_key_value.py → batch_upsert_portfolio_access_metadata_response_item.py} +15 -9
  92. lusid/models/bond.py +3 -3
  93. lusid/models/bond_coupon_event.py +3 -3
  94. lusid/models/bond_default_event.py +3 -3
  95. lusid/models/bond_principal_event.py +3 -3
  96. lusid/models/bonus_issue_event.py +166 -0
  97. lusid/models/{component_rule.py → break_code_source.py} +17 -21
  98. lusid/models/cap_floor.py +3 -3
  99. lusid/models/capital_distribution_event.py +3 -3
  100. lusid/models/cash.py +3 -3
  101. lusid/models/cash_dividend_event.py +3 -3
  102. lusid/models/cash_flow_event.py +3 -3
  103. lusid/models/cash_perpetual.py +3 -3
  104. lusid/models/cds_credit_event.py +6 -6
  105. lusid/models/cds_index.py +3 -3
  106. lusid/models/cdx_credit_event.py +6 -6
  107. lusid/models/change_interval.py +123 -0
  108. lusid/models/change_interval_with_order_management_detail.py +3 -3
  109. lusid/models/close_event.py +3 -3
  110. lusid/models/complex_bond.py +3 -3
  111. lusid/models/contract_for_difference.py +3 -3
  112. lusid/models/create_derived_transaction_portfolio_request.py +3 -3
  113. lusid/models/create_group_reconciliation_definition_request.py +113 -0
  114. lusid/models/create_transaction_portfolio_request.py +3 -3
  115. lusid/models/credit_default_swap.py +3 -3
  116. lusid/models/credit_premium_cash_flow_event.py +3 -3
  117. lusid/models/custom_entity_entity.py +146 -0
  118. lusid/models/custom_entity_response.py +7 -1
  119. lusid/models/decimal_list.py +3 -3
  120. lusid/models/diary_entry_request.py +10 -1
  121. lusid/models/dividend_option_event.py +3 -3
  122. lusid/models/dividend_reinvestment_event.py +3 -3
  123. lusid/models/effective_range.py +71 -0
  124. lusid/models/equity.py +3 -3
  125. lusid/models/equity_option.py +3 -3
  126. lusid/models/equity_swap.py +3 -3
  127. lusid/models/exchange_traded_option.py +3 -3
  128. lusid/models/exercise_event.py +3 -3
  129. lusid/models/exotic_instrument.py +3 -3
  130. lusid/models/expiry_event.py +3 -3
  131. lusid/models/fee.py +8 -8
  132. lusid/models/fee_request.py +8 -8
  133. lusid/models/fee_type.py +4 -4
  134. lusid/models/fee_type_request.py +3 -3
  135. lusid/models/fixed_leg.py +3 -3
  136. lusid/models/fixed_schedule.py +3 -3
  137. lusid/models/flexible_loan.py +3 -3
  138. lusid/models/float_schedule.py +4 -4
  139. lusid/models/floating_leg.py +3 -3
  140. lusid/models/flow_conventions.py +7 -1
  141. lusid/models/forward_rate_agreement.py +3 -3
  142. lusid/models/fund_configuration.py +44 -17
  143. lusid/models/fund_configuration_request.py +31 -19
  144. lusid/models/fund_id_list.py +99 -0
  145. lusid/models/fund_share_class.py +23 -8
  146. lusid/models/funding_leg.py +3 -3
  147. lusid/models/future.py +3 -3
  148. lusid/models/future_expiry_event.py +3 -3
  149. lusid/models/fx_forward.py +3 -3
  150. lusid/models/fx_forward_settlement_event.py +3 -3
  151. lusid/models/fx_option.py +3 -3
  152. lusid/models/fx_swap.py +3 -3
  153. lusid/models/group_reconciliation_aggregate_attribute_rule.py +2 -2
  154. lusid/models/group_reconciliation_aggregate_comparison_rule_operand.py +1 -1
  155. lusid/models/group_reconciliation_core_comparison_rule_operand.py +1 -1
  156. lusid/models/group_reconciliation_definition.py +136 -0
  157. lusid/models/group_reconciliation_definition_comparison_ruleset_ids.py +83 -0
  158. lusid/models/group_reconciliation_definition_currencies.py +71 -0
  159. lusid/models/group_reconciliation_definition_portfolio_entity_ids.py +86 -0
  160. lusid/models/group_reconciliation_definition_recipe_ids.py +78 -0
  161. lusid/models/inflation_leg.py +3 -3
  162. lusid/models/inflation_linked_bond.py +3 -3
  163. lusid/models/inflation_swap.py +3 -3
  164. lusid/models/informational_error_event.py +3 -3
  165. lusid/models/informational_event.py +3 -3
  166. lusid/models/instrument.py +7 -1
  167. lusid/models/instrument_definition.py +8 -2
  168. lusid/models/instrument_event.py +10 -5
  169. lusid/models/instrument_event_holder.py +9 -1
  170. lusid/models/instrument_event_type.py +5 -0
  171. lusid/models/instrument_leg.py +3 -3
  172. lusid/models/instrument_list.py +3 -3
  173. lusid/models/instrument_type.py +1 -0
  174. lusid/models/interest_rate_swap.py +3 -3
  175. lusid/models/interest_rate_swaption.py +3 -3
  176. lusid/models/lapse_election.py +73 -0
  177. lusid/models/lusid_instrument.py +6 -5
  178. lusid/models/market_data_key_rule.py +5 -3
  179. lusid/models/market_data_specific_rule.py +5 -3
  180. lusid/models/mastered_instrument.py +139 -0
  181. lusid/models/maturity_event.py +3 -3
  182. lusid/models/mbs_coupon_event.py +97 -0
  183. lusid/models/mbs_interest_deferral_event.py +97 -0
  184. lusid/models/mbs_principal_event.py +97 -0
  185. lusid/models/mbs_principal_write_off_event.py +97 -0
  186. lusid/models/merger_event.py +22 -22
  187. lusid/models/open_event.py +3 -3
  188. lusid/models/output_transaction.py +9 -2
  189. lusid/models/paged_resource_list_of_group_reconciliation_comparison_ruleset.py +113 -0
  190. lusid/models/paged_resource_list_of_group_reconciliation_definition.py +113 -0
  191. lusid/models/portfolio.py +3 -3
  192. lusid/models/portfolio_details.py +3 -3
  193. lusid/models/portfolio_group_id_list.py +3 -3
  194. lusid/models/portfolio_id_list.py +3 -3
  195. lusid/models/portfolio_without_href.py +3 -3
  196. lusid/models/property_list.py +3 -3
  197. lusid/models/raw_vendor_event.py +3 -3
  198. lusid/models/reference_instrument.py +3 -3
  199. lusid/models/reference_list.py +6 -5
  200. lusid/models/reference_list_type.py +1 -0
  201. lusid/models/repo.py +3 -3
  202. lusid/models/reset_event.py +3 -3
  203. lusid/models/resource_list_of_change_interval.py +113 -0
  204. lusid/models/reverse_stock_split_event.py +3 -3
  205. lusid/models/scrip_dividend_event.py +3 -3
  206. lusid/models/settlement_cycle.py +79 -0
  207. lusid/models/share_class_dealing_breakdown.py +3 -2
  208. lusid/models/share_class_details.py +18 -1
  209. lusid/models/simple_cash_flow_loan.py +3 -3
  210. lusid/models/simple_instrument.py +3 -3
  211. lusid/models/simple_rounding_convention.py +76 -0
  212. lusid/models/spin_off_event.py +3 -3
  213. lusid/models/staged_modification_effective_range.py +2 -2
  214. lusid/models/stock_dividend_event.py +20 -6
  215. lusid/models/stock_split_event.py +3 -3
  216. lusid/models/string_list.py +3 -3
  217. lusid/models/swap_cash_flow_event.py +3 -3
  218. lusid/models/swap_principal_event.py +3 -3
  219. lusid/models/term_deposit.py +3 -3
  220. lusid/models/total_return_swap.py +3 -3
  221. lusid/models/transaction.py +9 -2
  222. lusid/models/transaction_date_windows.py +85 -0
  223. lusid/models/transaction_request.py +9 -2
  224. lusid/models/transition_event.py +3 -3
  225. lusid/models/trigger_event.py +3 -3
  226. lusid/models/update_fee_type_request.py +4 -4
  227. lusid/models/update_group_reconciliation_comparison_ruleset_request.py +91 -0
  228. lusid/models/update_group_reconciliation_definition_request.py +107 -0
  229. lusid/models/update_reference_data_request.py +87 -0
  230. lusid/models/upsert_custom_entities_response.py +20 -1
  231. lusid/models/upsert_reference_portfolio_constituent_properties_request.py +84 -0
  232. lusid/models/upsert_reference_portfolio_constituent_properties_response.py +115 -0
  233. lusid/models/valuation_point_data_query_parameters.py +3 -3
  234. lusid/models/valuation_point_data_response.py +8 -13
  235. lusid/rest.py +70 -20
  236. {lusid_sdk-2.1.405.dist-info → lusid_sdk-2.1.450.dist-info}/METADATA +69 -24
  237. {lusid_sdk-2.1.405.dist-info → lusid_sdk-2.1.450.dist-info}/RECORD +238 -208
  238. lusid/models/metadata_key_value_response.py +0 -86
  239. {lusid_sdk-2.1.405.dist-info → lusid_sdk-2.1.450.dist-info}/WHEEL +0 -0
@@ -0,0 +1,123 @@
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, StrictInt, StrictStr
23
+ from lusid.models.effective_range import EffectiveRange
24
+ from lusid.models.property_value import PropertyValue
25
+
26
+ class ChangeInterval(BaseModel):
27
+ """
28
+ Defines a change that occured for an entity # noqa: E501
29
+ """
30
+ as_at_modified: Optional[datetime] = Field(None, alias="asAtModified", description="The date/time of the change.")
31
+ user_id_modified: Optional[StrictStr] = Field(None, alias="userIdModified", description="The unique identifier of the user that made the change.")
32
+ request_id_modified: Optional[StrictStr] = Field(None, alias="requestIdModified", description="The unique identifier of the request that the changes were part of.")
33
+ as_at_version_number: Optional[StrictInt] = Field(None, alias="asAtVersionNumber", description="The version number for the entity (the entity was created at version 1). This may refer to the version number of a changed related entity, not a change for the entity itself.")
34
+ staged_modification_id_modified: Optional[StrictStr] = Field(None, alias="stagedModificationIdModified", description="The id of the staged modification that was approved. Will be null if the change didn't come from a staged modification.")
35
+ action: Optional[StrictStr] = Field(None, description="The action performed on the entity.")
36
+ attribute_name: Optional[StrictStr] = Field(None, alias="attributeName", description="The name of the field or property that has been changed.")
37
+ previous_value: Optional[PropertyValue] = Field(None, alias="previousValue")
38
+ new_value: Optional[PropertyValue] = Field(None, alias="newValue")
39
+ effective_range: Optional[EffectiveRange] = Field(None, alias="effectiveRange")
40
+ __properties = ["asAtModified", "userIdModified", "requestIdModified", "asAtVersionNumber", "stagedModificationIdModified", "action", "attributeName", "previousValue", "newValue", "effectiveRange"]
41
+
42
+ class Config:
43
+ """Pydantic configuration"""
44
+ allow_population_by_field_name = True
45
+ validate_assignment = True
46
+
47
+ def to_str(self) -> str:
48
+ """Returns the string representation of the model using alias"""
49
+ return pprint.pformat(self.dict(by_alias=True))
50
+
51
+ def to_json(self) -> str:
52
+ """Returns the JSON representation of the model using alias"""
53
+ return json.dumps(self.to_dict())
54
+
55
+ @classmethod
56
+ def from_json(cls, json_str: str) -> ChangeInterval:
57
+ """Create an instance of ChangeInterval from a JSON string"""
58
+ return cls.from_dict(json.loads(json_str))
59
+
60
+ def to_dict(self):
61
+ """Returns the dictionary representation of the model using alias"""
62
+ _dict = self.dict(by_alias=True,
63
+ exclude={
64
+ },
65
+ exclude_none=True)
66
+ # override the default output from pydantic by calling `to_dict()` of previous_value
67
+ if self.previous_value:
68
+ _dict['previousValue'] = self.previous_value.to_dict()
69
+ # override the default output from pydantic by calling `to_dict()` of new_value
70
+ if self.new_value:
71
+ _dict['newValue'] = self.new_value.to_dict()
72
+ # override the default output from pydantic by calling `to_dict()` of effective_range
73
+ if self.effective_range:
74
+ _dict['effectiveRange'] = self.effective_range.to_dict()
75
+ # set to None if user_id_modified (nullable) is None
76
+ # and __fields_set__ contains the field
77
+ if self.user_id_modified is None and "user_id_modified" in self.__fields_set__:
78
+ _dict['userIdModified'] = None
79
+
80
+ # set to None if request_id_modified (nullable) is None
81
+ # and __fields_set__ contains the field
82
+ if self.request_id_modified is None and "request_id_modified" in self.__fields_set__:
83
+ _dict['requestIdModified'] = None
84
+
85
+ # set to None if staged_modification_id_modified (nullable) is None
86
+ # and __fields_set__ contains the field
87
+ if self.staged_modification_id_modified is None and "staged_modification_id_modified" in self.__fields_set__:
88
+ _dict['stagedModificationIdModified'] = None
89
+
90
+ # set to None if action (nullable) is None
91
+ # and __fields_set__ contains the field
92
+ if self.action is None and "action" in self.__fields_set__:
93
+ _dict['action'] = None
94
+
95
+ # set to None if attribute_name (nullable) is None
96
+ # and __fields_set__ contains the field
97
+ if self.attribute_name is None and "attribute_name" in self.__fields_set__:
98
+ _dict['attributeName'] = None
99
+
100
+ return _dict
101
+
102
+ @classmethod
103
+ def from_dict(cls, obj: dict) -> ChangeInterval:
104
+ """Create an instance of ChangeInterval from a dict"""
105
+ if obj is None:
106
+ return None
107
+
108
+ if not isinstance(obj, dict):
109
+ return ChangeInterval.parse_obj(obj)
110
+
111
+ _obj = ChangeInterval.parse_obj({
112
+ "as_at_modified": obj.get("asAtModified"),
113
+ "user_id_modified": obj.get("userIdModified"),
114
+ "request_id_modified": obj.get("requestIdModified"),
115
+ "as_at_version_number": obj.get("asAtVersionNumber"),
116
+ "staged_modification_id_modified": obj.get("stagedModificationIdModified"),
117
+ "action": obj.get("action"),
118
+ "attribute_name": obj.get("attributeName"),
119
+ "previous_value": PropertyValue.from_dict(obj.get("previousValue")) if obj.get("previousValue") is not None else None,
120
+ "new_value": PropertyValue.from_dict(obj.get("newValue")) if obj.get("newValue") is not None else None,
121
+ "effective_range": EffectiveRange.from_dict(obj.get("effectiveRange")) if obj.get("effectiveRange") is not None else None
122
+ })
123
+ return _obj
@@ -20,8 +20,8 @@ import json
20
20
  from datetime import datetime
21
21
  from typing import Any, Dict, Optional
22
22
  from pydantic.v1 import BaseModel, Field, StrictInt, StrictStr
23
+ from lusid.models.effective_range import EffectiveRange
23
24
  from lusid.models.property_value import PropertyValue
24
- from lusid.models.staged_modification_effective_range import StagedModificationEffectiveRange
25
25
 
26
26
  class ChangeIntervalWithOrderManagementDetail(BaseModel):
27
27
  """
@@ -38,7 +38,7 @@ class ChangeIntervalWithOrderManagementDetail(BaseModel):
38
38
  attribute_name: Optional[StrictStr] = Field(None, alias="attributeName", description="The name of the field or property that has been changed.")
39
39
  previous_value: Optional[PropertyValue] = Field(None, alias="previousValue")
40
40
  new_value: Optional[PropertyValue] = Field(None, alias="newValue")
41
- effective_range: Optional[StagedModificationEffectiveRange] = Field(None, alias="effectiveRange")
41
+ effective_range: Optional[EffectiveRange] = Field(None, alias="effectiveRange")
42
42
  __properties = ["detail", "actionDescription", "asAtModified", "userIdModified", "requestIdModified", "asAtVersionNumber", "stagedModificationIdModified", "action", "attributeName", "previousValue", "newValue", "effectiveRange"]
43
43
 
44
44
  class Config:
@@ -132,6 +132,6 @@ class ChangeIntervalWithOrderManagementDetail(BaseModel):
132
132
  "attribute_name": obj.get("attributeName"),
133
133
  "previous_value": PropertyValue.from_dict(obj.get("previousValue")) if obj.get("previousValue") is not None else None,
134
134
  "new_value": PropertyValue.from_dict(obj.get("newValue")) if obj.get("newValue") is not None else None,
135
- "effective_range": StagedModificationEffectiveRange.from_dict(obj.get("effectiveRange")) if obj.get("effectiveRange") is not None else None
135
+ "effective_range": EffectiveRange.from_dict(obj.get("effectiveRange")) if obj.get("effectiveRange") is not None else None
136
136
  })
137
137
  return _obj
@@ -28,15 +28,15 @@ class CloseEvent(InstrumentEvent):
28
28
  """
29
29
  start_date: Optional[datetime] = Field(None, alias="startDate", description="The first date on which the instrument could close")
30
30
  end_date: Optional[datetime] = Field(None, alias="endDate", description="The last date on which the instrument could close")
31
- instrument_event_type: StrictStr = Field(..., alias="instrumentEventType", description="The Type of Event. The available values are: TransitionEvent, InformationalEvent, OpenEvent, CloseEvent, StockSplitEvent, BondDefaultEvent, CashDividendEvent, AmortisationEvent, CashFlowEvent, ExerciseEvent, ResetEvent, TriggerEvent, RawVendorEvent, InformationalErrorEvent, BondCouponEvent, DividendReinvestmentEvent, AccumulationEvent, BondPrincipalEvent, DividendOptionEvent, MaturityEvent, FxForwardSettlementEvent, ExpiryEvent, ScripDividendEvent, StockDividendEvent, ReverseStockSplitEvent, CapitalDistributionEvent, SpinOffEvent, MergerEvent, FutureExpiryEvent, SwapCashFlowEvent, SwapPrincipalEvent, CreditPremiumCashFlowEvent, CdsCreditEvent, CdxCreditEvent")
31
+ instrument_event_type: StrictStr = Field(..., alias="instrumentEventType", description="The Type of Event. The available values are: TransitionEvent, InformationalEvent, OpenEvent, CloseEvent, StockSplitEvent, BondDefaultEvent, CashDividendEvent, AmortisationEvent, CashFlowEvent, ExerciseEvent, ResetEvent, TriggerEvent, RawVendorEvent, InformationalErrorEvent, BondCouponEvent, DividendReinvestmentEvent, AccumulationEvent, BondPrincipalEvent, DividendOptionEvent, MaturityEvent, FxForwardSettlementEvent, ExpiryEvent, ScripDividendEvent, StockDividendEvent, ReverseStockSplitEvent, CapitalDistributionEvent, SpinOffEvent, MergerEvent, FutureExpiryEvent, SwapCashFlowEvent, SwapPrincipalEvent, CreditPremiumCashFlowEvent, CdsCreditEvent, CdxCreditEvent, MbsCouponEvent, MbsPrincipalEvent, BonusIssueEvent, MbsPrincipalWriteOffEvent, MbsInterestDeferralEvent")
32
32
  additional_properties: Dict[str, Any] = {}
33
33
  __properties = ["instrumentEventType", "startDate", "endDate"]
34
34
 
35
35
  @validator('instrument_event_type')
36
36
  def instrument_event_type_validate_enum(cls, value):
37
37
  """Validates the enum"""
38
- if value not in ('TransitionEvent', 'InformationalEvent', 'OpenEvent', 'CloseEvent', 'StockSplitEvent', 'BondDefaultEvent', 'CashDividendEvent', 'AmortisationEvent', 'CashFlowEvent', 'ExerciseEvent', 'ResetEvent', 'TriggerEvent', 'RawVendorEvent', 'InformationalErrorEvent', 'BondCouponEvent', 'DividendReinvestmentEvent', 'AccumulationEvent', 'BondPrincipalEvent', 'DividendOptionEvent', 'MaturityEvent', 'FxForwardSettlementEvent', 'ExpiryEvent', 'ScripDividendEvent', 'StockDividendEvent', 'ReverseStockSplitEvent', 'CapitalDistributionEvent', 'SpinOffEvent', 'MergerEvent', 'FutureExpiryEvent', 'SwapCashFlowEvent', 'SwapPrincipalEvent', 'CreditPremiumCashFlowEvent', 'CdsCreditEvent', 'CdxCreditEvent'):
39
- raise ValueError("must be one of enum values ('TransitionEvent', 'InformationalEvent', 'OpenEvent', 'CloseEvent', 'StockSplitEvent', 'BondDefaultEvent', 'CashDividendEvent', 'AmortisationEvent', 'CashFlowEvent', 'ExerciseEvent', 'ResetEvent', 'TriggerEvent', 'RawVendorEvent', 'InformationalErrorEvent', 'BondCouponEvent', 'DividendReinvestmentEvent', 'AccumulationEvent', 'BondPrincipalEvent', 'DividendOptionEvent', 'MaturityEvent', 'FxForwardSettlementEvent', 'ExpiryEvent', 'ScripDividendEvent', 'StockDividendEvent', 'ReverseStockSplitEvent', 'CapitalDistributionEvent', 'SpinOffEvent', 'MergerEvent', 'FutureExpiryEvent', 'SwapCashFlowEvent', 'SwapPrincipalEvent', 'CreditPremiumCashFlowEvent', 'CdsCreditEvent', 'CdxCreditEvent')")
38
+ if value not in ('TransitionEvent', 'InformationalEvent', 'OpenEvent', 'CloseEvent', 'StockSplitEvent', 'BondDefaultEvent', 'CashDividendEvent', 'AmortisationEvent', 'CashFlowEvent', 'ExerciseEvent', 'ResetEvent', 'TriggerEvent', 'RawVendorEvent', 'InformationalErrorEvent', 'BondCouponEvent', 'DividendReinvestmentEvent', 'AccumulationEvent', 'BondPrincipalEvent', 'DividendOptionEvent', 'MaturityEvent', 'FxForwardSettlementEvent', 'ExpiryEvent', 'ScripDividendEvent', 'StockDividendEvent', 'ReverseStockSplitEvent', 'CapitalDistributionEvent', 'SpinOffEvent', 'MergerEvent', 'FutureExpiryEvent', 'SwapCashFlowEvent', 'SwapPrincipalEvent', 'CreditPremiumCashFlowEvent', 'CdsCreditEvent', 'CdxCreditEvent', 'MbsCouponEvent', 'MbsPrincipalEvent', 'BonusIssueEvent', 'MbsPrincipalWriteOffEvent', 'MbsInterestDeferralEvent'):
39
+ raise ValueError("must be one of enum values ('TransitionEvent', 'InformationalEvent', 'OpenEvent', 'CloseEvent', 'StockSplitEvent', 'BondDefaultEvent', 'CashDividendEvent', 'AmortisationEvent', 'CashFlowEvent', 'ExerciseEvent', 'ResetEvent', 'TriggerEvent', 'RawVendorEvent', 'InformationalErrorEvent', 'BondCouponEvent', 'DividendReinvestmentEvent', 'AccumulationEvent', 'BondPrincipalEvent', 'DividendOptionEvent', 'MaturityEvent', 'FxForwardSettlementEvent', 'ExpiryEvent', 'ScripDividendEvent', 'StockDividendEvent', 'ReverseStockSplitEvent', 'CapitalDistributionEvent', 'SpinOffEvent', 'MergerEvent', 'FutureExpiryEvent', 'SwapCashFlowEvent', 'SwapPrincipalEvent', 'CreditPremiumCashFlowEvent', 'CdsCreditEvent', 'CdxCreditEvent', 'MbsCouponEvent', 'MbsPrincipalEvent', 'BonusIssueEvent', 'MbsPrincipalWriteOffEvent', 'MbsInterestDeferralEvent')")
40
40
  return value
41
41
 
42
42
  class Config:
@@ -34,15 +34,15 @@ class ComplexBond(LusidInstrument):
34
34
  rounding_conventions: Optional[conlist(RoundingConvention)] = Field(None, alias="roundingConventions", description="Rounding conventions for analytics, if any.")
35
35
  asset_backed: Optional[StrictBool] = Field(None, alias="assetBacked", description="If this flag is set to true, then the outstanding notional and principal repayments will be calculated based on pool factors in the quote store. Usually AssetBacked bonds also require a RollConvention setting of within the FlowConventions any given rates schedule (to ensure payment dates always happen on the same day of the month) and US Agency MBSs with Pay Delay features also require their rates schedules to include an ExDividendConfiguration to drive the lag between interest accrual and payment.")
36
36
  asset_pool_identifier: Optional[constr(strict=True, max_length=50, min_length=0)] = Field(None, alias="assetPoolIdentifier", description="Identifier used to retrieve pool factor information about this bond from the quote store. This is typically the bond's ISIN, but can also be ClientInternal. Please ensure you align the MarketDataKeyRule with the correct Quote (Quote.ClientInternal.* or Quote.Isin.*)")
37
- instrument_type: StrictStr = Field(..., alias="instrumentType", description="The available values are: QuotedSecurity, InterestRateSwap, FxForward, Future, ExoticInstrument, FxOption, CreditDefaultSwap, InterestRateSwaption, Bond, EquityOption, FixedLeg, FloatingLeg, BespokeCashFlowsLeg, Unknown, TermDeposit, ContractForDifference, EquitySwap, CashPerpetual, CapFloor, CashSettled, CdsIndex, Basket, FundingLeg, FxSwap, ForwardRateAgreement, SimpleInstrument, Repo, Equity, ExchangeTradedOption, ReferenceInstrument, ComplexBond, InflationLinkedBond, InflationSwap, SimpleCashFlowLoan, TotalReturnSwap, InflationLeg, FundShareClass, FlexibleLoan, UnsettledCash, Cash")
37
+ instrument_type: StrictStr = Field(..., alias="instrumentType", description="The available values are: QuotedSecurity, InterestRateSwap, FxForward, Future, ExoticInstrument, FxOption, CreditDefaultSwap, InterestRateSwaption, Bond, EquityOption, FixedLeg, FloatingLeg, BespokeCashFlowsLeg, Unknown, TermDeposit, ContractForDifference, EquitySwap, CashPerpetual, CapFloor, CashSettled, CdsIndex, Basket, FundingLeg, FxSwap, ForwardRateAgreement, SimpleInstrument, Repo, Equity, ExchangeTradedOption, ReferenceInstrument, ComplexBond, InflationLinkedBond, InflationSwap, SimpleCashFlowLoan, TotalReturnSwap, InflationLeg, FundShareClass, FlexibleLoan, UnsettledCash, Cash, MasteredInstrument")
38
38
  additional_properties: Dict[str, Any] = {}
39
39
  __properties = ["instrumentType", "identifiers", "calculationType", "schedules", "roundingConventions", "assetBacked", "assetPoolIdentifier"]
40
40
 
41
41
  @validator('instrument_type')
42
42
  def instrument_type_validate_enum(cls, value):
43
43
  """Validates the enum"""
44
- if value not in ('QuotedSecurity', 'InterestRateSwap', 'FxForward', 'Future', 'ExoticInstrument', 'FxOption', 'CreditDefaultSwap', 'InterestRateSwaption', 'Bond', 'EquityOption', 'FixedLeg', 'FloatingLeg', 'BespokeCashFlowsLeg', 'Unknown', 'TermDeposit', 'ContractForDifference', 'EquitySwap', 'CashPerpetual', 'CapFloor', 'CashSettled', 'CdsIndex', 'Basket', 'FundingLeg', 'FxSwap', 'ForwardRateAgreement', 'SimpleInstrument', 'Repo', 'Equity', 'ExchangeTradedOption', 'ReferenceInstrument', 'ComplexBond', 'InflationLinkedBond', 'InflationSwap', 'SimpleCashFlowLoan', 'TotalReturnSwap', 'InflationLeg', 'FundShareClass', 'FlexibleLoan', 'UnsettledCash', 'Cash'):
45
- raise ValueError("must be one of enum values ('QuotedSecurity', 'InterestRateSwap', 'FxForward', 'Future', 'ExoticInstrument', 'FxOption', 'CreditDefaultSwap', 'InterestRateSwaption', 'Bond', 'EquityOption', 'FixedLeg', 'FloatingLeg', 'BespokeCashFlowsLeg', 'Unknown', 'TermDeposit', 'ContractForDifference', 'EquitySwap', 'CashPerpetual', 'CapFloor', 'CashSettled', 'CdsIndex', 'Basket', 'FundingLeg', 'FxSwap', 'ForwardRateAgreement', 'SimpleInstrument', 'Repo', 'Equity', 'ExchangeTradedOption', 'ReferenceInstrument', 'ComplexBond', 'InflationLinkedBond', 'InflationSwap', 'SimpleCashFlowLoan', 'TotalReturnSwap', 'InflationLeg', 'FundShareClass', 'FlexibleLoan', 'UnsettledCash', 'Cash')")
44
+ if value not in ('QuotedSecurity', 'InterestRateSwap', 'FxForward', 'Future', 'ExoticInstrument', 'FxOption', 'CreditDefaultSwap', 'InterestRateSwaption', 'Bond', 'EquityOption', 'FixedLeg', 'FloatingLeg', 'BespokeCashFlowsLeg', 'Unknown', 'TermDeposit', 'ContractForDifference', 'EquitySwap', 'CashPerpetual', 'CapFloor', 'CashSettled', 'CdsIndex', 'Basket', 'FundingLeg', 'FxSwap', 'ForwardRateAgreement', 'SimpleInstrument', 'Repo', 'Equity', 'ExchangeTradedOption', 'ReferenceInstrument', 'ComplexBond', 'InflationLinkedBond', 'InflationSwap', 'SimpleCashFlowLoan', 'TotalReturnSwap', 'InflationLeg', 'FundShareClass', 'FlexibleLoan', 'UnsettledCash', 'Cash', 'MasteredInstrument'):
45
+ raise ValueError("must be one of enum values ('QuotedSecurity', 'InterestRateSwap', 'FxForward', 'Future', 'ExoticInstrument', 'FxOption', 'CreditDefaultSwap', 'InterestRateSwaption', 'Bond', 'EquityOption', 'FixedLeg', 'FloatingLeg', 'BespokeCashFlowsLeg', 'Unknown', 'TermDeposit', 'ContractForDifference', 'EquitySwap', 'CashPerpetual', 'CapFloor', 'CashSettled', 'CdsIndex', 'Basket', 'FundingLeg', 'FxSwap', 'ForwardRateAgreement', 'SimpleInstrument', 'Repo', 'Equity', 'ExchangeTradedOption', 'ReferenceInstrument', 'ComplexBond', 'InflationLinkedBond', 'InflationSwap', 'SimpleCashFlowLoan', 'TotalReturnSwap', 'InflationLeg', 'FundShareClass', 'FlexibleLoan', 'UnsettledCash', 'Cash', 'MasteredInstrument')")
46
46
  return value
47
47
 
48
48
  class Config:
@@ -36,15 +36,15 @@ class ContractForDifference(LusidInstrument):
36
36
  underlying_ccy: StrictStr = Field(..., alias="underlyingCcy", description="The currency of the underlying")
37
37
  underlying_identifier: constr(strict=True, min_length=1) = Field(..., alias="underlyingIdentifier", description="External market codes and identifiers for the CFD, e.g. RIC. Supported string (enumeration) values are: [LusidInstrumentId, Isin, Sedol, Cusip, ClientInternal, Figi, RIC, QuotePermId, REDCode, BBGId, ICECode].")
38
38
  lot_size: Optional[StrictInt] = Field(None, alias="lotSize", description="CFD LotSize, the minimum number of shares that can be bought or sold at once. Optional, if set must be non-negative, if not set defaults to 1.")
39
- instrument_type: StrictStr = Field(..., alias="instrumentType", description="The available values are: QuotedSecurity, InterestRateSwap, FxForward, Future, ExoticInstrument, FxOption, CreditDefaultSwap, InterestRateSwaption, Bond, EquityOption, FixedLeg, FloatingLeg, BespokeCashFlowsLeg, Unknown, TermDeposit, ContractForDifference, EquitySwap, CashPerpetual, CapFloor, CashSettled, CdsIndex, Basket, FundingLeg, FxSwap, ForwardRateAgreement, SimpleInstrument, Repo, Equity, ExchangeTradedOption, ReferenceInstrument, ComplexBond, InflationLinkedBond, InflationSwap, SimpleCashFlowLoan, TotalReturnSwap, InflationLeg, FundShareClass, FlexibleLoan, UnsettledCash, Cash")
39
+ instrument_type: StrictStr = Field(..., alias="instrumentType", description="The available values are: QuotedSecurity, InterestRateSwap, FxForward, Future, ExoticInstrument, FxOption, CreditDefaultSwap, InterestRateSwaption, Bond, EquityOption, FixedLeg, FloatingLeg, BespokeCashFlowsLeg, Unknown, TermDeposit, ContractForDifference, EquitySwap, CashPerpetual, CapFloor, CashSettled, CdsIndex, Basket, FundingLeg, FxSwap, ForwardRateAgreement, SimpleInstrument, Repo, Equity, ExchangeTradedOption, ReferenceInstrument, ComplexBond, InflationLinkedBond, InflationSwap, SimpleCashFlowLoan, TotalReturnSwap, InflationLeg, FundShareClass, FlexibleLoan, UnsettledCash, Cash, MasteredInstrument")
40
40
  additional_properties: Dict[str, Any] = {}
41
41
  __properties = ["instrumentType", "startDate", "maturityDate", "code", "contractSize", "payCcy", "referenceRate", "type", "underlyingCcy", "underlyingIdentifier", "lotSize"]
42
42
 
43
43
  @validator('instrument_type')
44
44
  def instrument_type_validate_enum(cls, value):
45
45
  """Validates the enum"""
46
- if value not in ('QuotedSecurity', 'InterestRateSwap', 'FxForward', 'Future', 'ExoticInstrument', 'FxOption', 'CreditDefaultSwap', 'InterestRateSwaption', 'Bond', 'EquityOption', 'FixedLeg', 'FloatingLeg', 'BespokeCashFlowsLeg', 'Unknown', 'TermDeposit', 'ContractForDifference', 'EquitySwap', 'CashPerpetual', 'CapFloor', 'CashSettled', 'CdsIndex', 'Basket', 'FundingLeg', 'FxSwap', 'ForwardRateAgreement', 'SimpleInstrument', 'Repo', 'Equity', 'ExchangeTradedOption', 'ReferenceInstrument', 'ComplexBond', 'InflationLinkedBond', 'InflationSwap', 'SimpleCashFlowLoan', 'TotalReturnSwap', 'InflationLeg', 'FundShareClass', 'FlexibleLoan', 'UnsettledCash', 'Cash'):
47
- raise ValueError("must be one of enum values ('QuotedSecurity', 'InterestRateSwap', 'FxForward', 'Future', 'ExoticInstrument', 'FxOption', 'CreditDefaultSwap', 'InterestRateSwaption', 'Bond', 'EquityOption', 'FixedLeg', 'FloatingLeg', 'BespokeCashFlowsLeg', 'Unknown', 'TermDeposit', 'ContractForDifference', 'EquitySwap', 'CashPerpetual', 'CapFloor', 'CashSettled', 'CdsIndex', 'Basket', 'FundingLeg', 'FxSwap', 'ForwardRateAgreement', 'SimpleInstrument', 'Repo', 'Equity', 'ExchangeTradedOption', 'ReferenceInstrument', 'ComplexBond', 'InflationLinkedBond', 'InflationSwap', 'SimpleCashFlowLoan', 'TotalReturnSwap', 'InflationLeg', 'FundShareClass', 'FlexibleLoan', 'UnsettledCash', 'Cash')")
46
+ if value not in ('QuotedSecurity', 'InterestRateSwap', 'FxForward', 'Future', 'ExoticInstrument', 'FxOption', 'CreditDefaultSwap', 'InterestRateSwaption', 'Bond', 'EquityOption', 'FixedLeg', 'FloatingLeg', 'BespokeCashFlowsLeg', 'Unknown', 'TermDeposit', 'ContractForDifference', 'EquitySwap', 'CashPerpetual', 'CapFloor', 'CashSettled', 'CdsIndex', 'Basket', 'FundingLeg', 'FxSwap', 'ForwardRateAgreement', 'SimpleInstrument', 'Repo', 'Equity', 'ExchangeTradedOption', 'ReferenceInstrument', 'ComplexBond', 'InflationLinkedBond', 'InflationSwap', 'SimpleCashFlowLoan', 'TotalReturnSwap', 'InflationLeg', 'FundShareClass', 'FlexibleLoan', 'UnsettledCash', 'Cash', 'MasteredInstrument'):
47
+ raise ValueError("must be one of enum values ('QuotedSecurity', 'InterestRateSwap', 'FxForward', 'Future', 'ExoticInstrument', 'FxOption', 'CreditDefaultSwap', 'InterestRateSwaption', 'Bond', 'EquityOption', 'FixedLeg', 'FloatingLeg', 'BespokeCashFlowsLeg', 'Unknown', 'TermDeposit', 'ContractForDifference', 'EquitySwap', 'CashPerpetual', 'CapFloor', 'CashSettled', 'CdsIndex', 'Basket', 'FundingLeg', 'FxSwap', 'ForwardRateAgreement', 'SimpleInstrument', 'Repo', 'Equity', 'ExchangeTradedOption', 'ReferenceInstrument', 'ComplexBond', 'InflationLinkedBond', 'InflationSwap', 'SimpleCashFlowLoan', 'TotalReturnSwap', 'InflationLeg', 'FundShareClass', 'FlexibleLoan', 'UnsettledCash', 'Cash', 'MasteredInstrument')")
48
48
  return value
49
49
 
50
50
  class Config:
@@ -32,7 +32,7 @@ class CreateDerivedTransactionPortfolioRequest(BaseModel):
32
32
  parent_portfolio_id: ResourceId = Field(..., alias="parentPortfolioId")
33
33
  created: Optional[datetime] = Field(None, description="This will be auto-populated to be the parent portfolio creation date.")
34
34
  corporate_action_source_id: Optional[ResourceId] = Field(None, alias="corporateActionSourceId")
35
- accounting_method: Optional[StrictStr] = Field(None, alias="accountingMethod", description=". The available values are: Default, AverageCost, FirstInFirstOut, LastInFirstOut, HighestCostFirst, LowestCostFirst, ProRateByUnits, ProRateByCost, ProRateByCostPortfolioCurrency")
35
+ accounting_method: Optional[StrictStr] = Field(None, alias="accountingMethod", description=". The available values are: Default, AverageCost, FirstInFirstOut, LastInFirstOut, HighestCostFirst, LowestCostFirst, ProRateByUnits, ProRateByCost, ProRateByCostPortfolioCurrency, IntraDayThenFirstInFirstOut, LongTermHighestCostFirst, LongTermHighestCostFirstPortfolioCurrency, HighestCostFirstPortfolioCurrency, LowestCostFirstPortfolioCurrency, MaximumLossMinimumGain, MaximumLossMinimumGainPortfolioCurrency")
36
36
  sub_holding_keys: Optional[conlist(StrictStr)] = Field(None, alias="subHoldingKeys", description="A set of unique transaction properties to group the derived transaction portfolio's holdings by, perhaps for strategy tagging. Each property must be from the 'Transaction' domain and identified by a key in the format {domain}/{scope}/{code}, for example 'Transaction/strategies/quantsignal'. See https://support.lusid.com/knowledgebase/article/KA-01879/en-us for more information.")
37
37
  instrument_scopes: Optional[conlist(StrictStr, max_items=1)] = Field(None, alias="instrumentScopes", description="The resolution strategy used to resolve instruments of transactions/holdings upserted to this derived portfolio.")
38
38
  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")
@@ -71,8 +71,8 @@ class CreateDerivedTransactionPortfolioRequest(BaseModel):
71
71
  if value is None:
72
72
  return value
73
73
 
74
- if value not in ('Default', 'AverageCost', 'FirstInFirstOut', 'LastInFirstOut', 'HighestCostFirst', 'LowestCostFirst', 'ProRateByUnits', 'ProRateByCost', 'ProRateByCostPortfolioCurrency'):
75
- raise ValueError("must be one of enum values ('Default', 'AverageCost', 'FirstInFirstOut', 'LastInFirstOut', 'HighestCostFirst', 'LowestCostFirst', 'ProRateByUnits', 'ProRateByCost', 'ProRateByCostPortfolioCurrency')")
74
+ if value not in ('Default', 'AverageCost', 'FirstInFirstOut', 'LastInFirstOut', 'HighestCostFirst', 'LowestCostFirst', 'ProRateByUnits', 'ProRateByCost', 'ProRateByCostPortfolioCurrency', 'IntraDayThenFirstInFirstOut', 'LongTermHighestCostFirst', 'LongTermHighestCostFirstPortfolioCurrency', 'HighestCostFirstPortfolioCurrency', 'LowestCostFirstPortfolioCurrency', 'MaximumLossMinimumGain', 'MaximumLossMinimumGainPortfolioCurrency'):
75
+ raise ValueError("must be one of enum values ('Default', 'AverageCost', 'FirstInFirstOut', 'LastInFirstOut', 'HighestCostFirst', 'LowestCostFirst', 'ProRateByUnits', 'ProRateByCost', 'ProRateByCostPortfolioCurrency', 'IntraDayThenFirstInFirstOut', 'LongTermHighestCostFirst', 'LongTermHighestCostFirstPortfolioCurrency', 'HighestCostFirstPortfolioCurrency', 'LowestCostFirstPortfolioCurrency', 'MaximumLossMinimumGain', 'MaximumLossMinimumGainPortfolioCurrency')")
76
76
  return value
77
77
 
78
78
  @validator('transaction_type_scope')
@@ -0,0 +1,113 @@
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.break_code_source import BreakCodeSource
24
+ from lusid.models.group_reconciliation_definition_comparison_ruleset_ids import GroupReconciliationDefinitionComparisonRulesetIds
25
+ from lusid.models.group_reconciliation_definition_currencies import GroupReconciliationDefinitionCurrencies
26
+ from lusid.models.group_reconciliation_definition_portfolio_entity_ids import GroupReconciliationDefinitionPortfolioEntityIds
27
+ from lusid.models.group_reconciliation_definition_recipe_ids import GroupReconciliationDefinitionRecipeIds
28
+ from lusid.models.resource_id import ResourceId
29
+ from lusid.models.transaction_date_windows import TransactionDateWindows
30
+
31
+ class CreateGroupReconciliationDefinitionRequest(BaseModel):
32
+ """
33
+ CreateGroupReconciliationDefinitionRequest
34
+ """
35
+ id: Optional[ResourceId] = None
36
+ display_name: constr(strict=True, min_length=1) = Field(..., alias="displayName", description="The name of the Group Reconciliation Definition")
37
+ description: constr(strict=True, min_length=1) = Field(..., description="The description of the Group Reconciliation Definition")
38
+ portfolio_entity_ids: GroupReconciliationDefinitionPortfolioEntityIds = Field(..., alias="portfolioEntityIds")
39
+ recipe_ids: Optional[GroupReconciliationDefinitionRecipeIds] = Field(None, alias="recipeIds")
40
+ currencies: Optional[GroupReconciliationDefinitionCurrencies] = None
41
+ transaction_date_windows: Optional[TransactionDateWindows] = Field(None, alias="transactionDateWindows")
42
+ comparison_ruleset_ids: Optional[GroupReconciliationDefinitionComparisonRulesetIds] = Field(None, alias="comparisonRulesetIds")
43
+ break_code_source: BreakCodeSource = Field(..., alias="breakCodeSource")
44
+ __properties = ["id", "displayName", "description", "portfolioEntityIds", "recipeIds", "currencies", "transactionDateWindows", "comparisonRulesetIds", "breakCodeSource"]
45
+
46
+ class Config:
47
+ """Pydantic configuration"""
48
+ allow_population_by_field_name = True
49
+ validate_assignment = True
50
+
51
+ def to_str(self) -> str:
52
+ """Returns the string representation of the model using alias"""
53
+ return pprint.pformat(self.dict(by_alias=True))
54
+
55
+ def to_json(self) -> str:
56
+ """Returns the JSON representation of the model using alias"""
57
+ return json.dumps(self.to_dict())
58
+
59
+ @classmethod
60
+ def from_json(cls, json_str: str) -> CreateGroupReconciliationDefinitionRequest:
61
+ """Create an instance of CreateGroupReconciliationDefinitionRequest from a JSON string"""
62
+ return cls.from_dict(json.loads(json_str))
63
+
64
+ def to_dict(self):
65
+ """Returns the dictionary representation of the model using alias"""
66
+ _dict = self.dict(by_alias=True,
67
+ exclude={
68
+ },
69
+ exclude_none=True)
70
+ # override the default output from pydantic by calling `to_dict()` of id
71
+ if self.id:
72
+ _dict['id'] = self.id.to_dict()
73
+ # override the default output from pydantic by calling `to_dict()` of portfolio_entity_ids
74
+ if self.portfolio_entity_ids:
75
+ _dict['portfolioEntityIds'] = self.portfolio_entity_ids.to_dict()
76
+ # override the default output from pydantic by calling `to_dict()` of recipe_ids
77
+ if self.recipe_ids:
78
+ _dict['recipeIds'] = self.recipe_ids.to_dict()
79
+ # override the default output from pydantic by calling `to_dict()` of currencies
80
+ if self.currencies:
81
+ _dict['currencies'] = self.currencies.to_dict()
82
+ # override the default output from pydantic by calling `to_dict()` of transaction_date_windows
83
+ if self.transaction_date_windows:
84
+ _dict['transactionDateWindows'] = self.transaction_date_windows.to_dict()
85
+ # override the default output from pydantic by calling `to_dict()` of comparison_ruleset_ids
86
+ if self.comparison_ruleset_ids:
87
+ _dict['comparisonRulesetIds'] = self.comparison_ruleset_ids.to_dict()
88
+ # override the default output from pydantic by calling `to_dict()` of break_code_source
89
+ if self.break_code_source:
90
+ _dict['breakCodeSource'] = self.break_code_source.to_dict()
91
+ return _dict
92
+
93
+ @classmethod
94
+ def from_dict(cls, obj: dict) -> CreateGroupReconciliationDefinitionRequest:
95
+ """Create an instance of CreateGroupReconciliationDefinitionRequest from a dict"""
96
+ if obj is None:
97
+ return None
98
+
99
+ if not isinstance(obj, dict):
100
+ return CreateGroupReconciliationDefinitionRequest.parse_obj(obj)
101
+
102
+ _obj = CreateGroupReconciliationDefinitionRequest.parse_obj({
103
+ "id": ResourceId.from_dict(obj.get("id")) if obj.get("id") is not None else None,
104
+ "display_name": obj.get("displayName"),
105
+ "description": obj.get("description"),
106
+ "portfolio_entity_ids": GroupReconciliationDefinitionPortfolioEntityIds.from_dict(obj.get("portfolioEntityIds")) if obj.get("portfolioEntityIds") is not None else None,
107
+ "recipe_ids": GroupReconciliationDefinitionRecipeIds.from_dict(obj.get("recipeIds")) if obj.get("recipeIds") is not None else None,
108
+ "currencies": GroupReconciliationDefinitionCurrencies.from_dict(obj.get("currencies")) if obj.get("currencies") is not None else None,
109
+ "transaction_date_windows": TransactionDateWindows.from_dict(obj.get("transactionDateWindows")) if obj.get("transactionDateWindows") is not None else None,
110
+ "comparison_ruleset_ids": GroupReconciliationDefinitionComparisonRulesetIds.from_dict(obj.get("comparisonRulesetIds")) if obj.get("comparisonRulesetIds") is not None else None,
111
+ "break_code_source": BreakCodeSource.from_dict(obj.get("breakCodeSource")) if obj.get("breakCodeSource") is not None else None
112
+ })
113
+ return _obj
@@ -34,7 +34,7 @@ class CreateTransactionPortfolioRequest(BaseModel):
34
34
  created: Optional[datetime] = Field(None, description="The effective datetime at which to create the transaction portfolio. No transactions can be added to the transaction portfolio before this date. Defaults to the current LUSID system datetime if not specified.")
35
35
  base_currency: StrictStr = Field(..., alias="baseCurrency", description="The base currency of the transaction portfolio in ISO 4217 currency code format.")
36
36
  corporate_action_source_id: Optional[ResourceId] = Field(None, alias="corporateActionSourceId")
37
- accounting_method: Optional[StrictStr] = Field(None, alias="accountingMethod", description=". The available values are: Default, AverageCost, FirstInFirstOut, LastInFirstOut, HighestCostFirst, LowestCostFirst, ProRateByUnits, ProRateByCost, ProRateByCostPortfolioCurrency")
37
+ accounting_method: Optional[StrictStr] = Field(None, alias="accountingMethod", description=". The available values are: Default, AverageCost, FirstInFirstOut, LastInFirstOut, HighestCostFirst, LowestCostFirst, ProRateByUnits, ProRateByCost, ProRateByCostPortfolioCurrency, IntraDayThenFirstInFirstOut, LongTermHighestCostFirst, LongTermHighestCostFirstPortfolioCurrency, HighestCostFirstPortfolioCurrency, LowestCostFirstPortfolioCurrency, MaximumLossMinimumGain, MaximumLossMinimumGainPortfolioCurrency")
38
38
  sub_holding_keys: Optional[conlist(StrictStr, max_items=100)] = Field(None, alias="subHoldingKeys", description="A set of unique transaction properties to group the transaction portfolio's holdings by, perhaps for strategy tagging. Each property must be from the 'Transaction' domain and identified by a key in the format {domain}/{scope}/{code}, for example 'Transaction/strategies/quantsignal'. See https://support.lusid.com/knowledgebase/article/KA-01879/en-us for more information.")
39
39
  properties: Optional[Dict[str, ModelProperty]] = Field(None, description="A set of unique portfolio properties to add custom data to the transaction portfolio. Each property must be from the 'Portfolio' domain and identified by a key in the format {domain}/{scope}/{code}, for example 'Portfolio/Manager/Id'. Note these properties must be pre-defined.")
40
40
  instrument_scopes: Optional[conlist(StrictStr, max_items=1)] = Field(None, alias="instrumentScopes", description="The resolution strategy used to resolve instruments of transactions/holdings upserted to this portfolio.")
@@ -51,8 +51,8 @@ class CreateTransactionPortfolioRequest(BaseModel):
51
51
  if value is None:
52
52
  return value
53
53
 
54
- if value not in ('Default', 'AverageCost', 'FirstInFirstOut', 'LastInFirstOut', 'HighestCostFirst', 'LowestCostFirst', 'ProRateByUnits', 'ProRateByCost', 'ProRateByCostPortfolioCurrency'):
55
- raise ValueError("must be one of enum values ('Default', 'AverageCost', 'FirstInFirstOut', 'LastInFirstOut', 'HighestCostFirst', 'LowestCostFirst', 'ProRateByUnits', 'ProRateByCost', 'ProRateByCostPortfolioCurrency')")
54
+ if value not in ('Default', 'AverageCost', 'FirstInFirstOut', 'LastInFirstOut', 'HighestCostFirst', 'LowestCostFirst', 'ProRateByUnits', 'ProRateByCost', 'ProRateByCostPortfolioCurrency', 'IntraDayThenFirstInFirstOut', 'LongTermHighestCostFirst', 'LongTermHighestCostFirstPortfolioCurrency', 'HighestCostFirstPortfolioCurrency', 'LowestCostFirstPortfolioCurrency', 'MaximumLossMinimumGain', 'MaximumLossMinimumGainPortfolioCurrency'):
55
+ raise ValueError("must be one of enum values ('Default', 'AverageCost', 'FirstInFirstOut', 'LastInFirstOut', 'HighestCostFirst', 'LowestCostFirst', 'ProRateByUnits', 'ProRateByCost', 'ProRateByCostPortfolioCurrency', 'IntraDayThenFirstInFirstOut', 'LongTermHighestCostFirst', 'LongTermHighestCostFirstPortfolioCurrency', 'HighestCostFirstPortfolioCurrency', 'LowestCostFirstPortfolioCurrency', 'MaximumLossMinimumGain', 'MaximumLossMinimumGainPortfolioCurrency')")
56
56
  return value
57
57
 
58
58
  @validator('transaction_type_scope')
@@ -37,15 +37,15 @@ class CreditDefaultSwap(LusidInstrument):
37
37
  convention_name: Optional[FlowConventionName] = Field(None, alias="conventionName")
38
38
  notional: Optional[Union[StrictFloat, StrictInt]] = Field(None, description="The notional protected by the Credit Default Swap")
39
39
  protection_detail_specification: CdsProtectionDetailSpecification = Field(..., alias="protectionDetailSpecification")
40
- instrument_type: StrictStr = Field(..., alias="instrumentType", description="The available values are: QuotedSecurity, InterestRateSwap, FxForward, Future, ExoticInstrument, FxOption, CreditDefaultSwap, InterestRateSwaption, Bond, EquityOption, FixedLeg, FloatingLeg, BespokeCashFlowsLeg, Unknown, TermDeposit, ContractForDifference, EquitySwap, CashPerpetual, CapFloor, CashSettled, CdsIndex, Basket, FundingLeg, FxSwap, ForwardRateAgreement, SimpleInstrument, Repo, Equity, ExchangeTradedOption, ReferenceInstrument, ComplexBond, InflationLinkedBond, InflationSwap, SimpleCashFlowLoan, TotalReturnSwap, InflationLeg, FundShareClass, FlexibleLoan, UnsettledCash, Cash")
40
+ instrument_type: StrictStr = Field(..., alias="instrumentType", description="The available values are: QuotedSecurity, InterestRateSwap, FxForward, Future, ExoticInstrument, FxOption, CreditDefaultSwap, InterestRateSwaption, Bond, EquityOption, FixedLeg, FloatingLeg, BespokeCashFlowsLeg, Unknown, TermDeposit, ContractForDifference, EquitySwap, CashPerpetual, CapFloor, CashSettled, CdsIndex, Basket, FundingLeg, FxSwap, ForwardRateAgreement, SimpleInstrument, Repo, Equity, ExchangeTradedOption, ReferenceInstrument, ComplexBond, InflationLinkedBond, InflationSwap, SimpleCashFlowLoan, TotalReturnSwap, InflationLeg, FundShareClass, FlexibleLoan, UnsettledCash, Cash, MasteredInstrument")
41
41
  additional_properties: Dict[str, Any] = {}
42
42
  __properties = ["instrumentType", "ticker", "startDate", "maturityDate", "flowConventions", "couponRate", "conventionName", "notional", "protectionDetailSpecification"]
43
43
 
44
44
  @validator('instrument_type')
45
45
  def instrument_type_validate_enum(cls, value):
46
46
  """Validates the enum"""
47
- if value not in ('QuotedSecurity', 'InterestRateSwap', 'FxForward', 'Future', 'ExoticInstrument', 'FxOption', 'CreditDefaultSwap', 'InterestRateSwaption', 'Bond', 'EquityOption', 'FixedLeg', 'FloatingLeg', 'BespokeCashFlowsLeg', 'Unknown', 'TermDeposit', 'ContractForDifference', 'EquitySwap', 'CashPerpetual', 'CapFloor', 'CashSettled', 'CdsIndex', 'Basket', 'FundingLeg', 'FxSwap', 'ForwardRateAgreement', 'SimpleInstrument', 'Repo', 'Equity', 'ExchangeTradedOption', 'ReferenceInstrument', 'ComplexBond', 'InflationLinkedBond', 'InflationSwap', 'SimpleCashFlowLoan', 'TotalReturnSwap', 'InflationLeg', 'FundShareClass', 'FlexibleLoan', 'UnsettledCash', 'Cash'):
48
- raise ValueError("must be one of enum values ('QuotedSecurity', 'InterestRateSwap', 'FxForward', 'Future', 'ExoticInstrument', 'FxOption', 'CreditDefaultSwap', 'InterestRateSwaption', 'Bond', 'EquityOption', 'FixedLeg', 'FloatingLeg', 'BespokeCashFlowsLeg', 'Unknown', 'TermDeposit', 'ContractForDifference', 'EquitySwap', 'CashPerpetual', 'CapFloor', 'CashSettled', 'CdsIndex', 'Basket', 'FundingLeg', 'FxSwap', 'ForwardRateAgreement', 'SimpleInstrument', 'Repo', 'Equity', 'ExchangeTradedOption', 'ReferenceInstrument', 'ComplexBond', 'InflationLinkedBond', 'InflationSwap', 'SimpleCashFlowLoan', 'TotalReturnSwap', 'InflationLeg', 'FundShareClass', 'FlexibleLoan', 'UnsettledCash', 'Cash')")
47
+ if value not in ('QuotedSecurity', 'InterestRateSwap', 'FxForward', 'Future', 'ExoticInstrument', 'FxOption', 'CreditDefaultSwap', 'InterestRateSwaption', 'Bond', 'EquityOption', 'FixedLeg', 'FloatingLeg', 'BespokeCashFlowsLeg', 'Unknown', 'TermDeposit', 'ContractForDifference', 'EquitySwap', 'CashPerpetual', 'CapFloor', 'CashSettled', 'CdsIndex', 'Basket', 'FundingLeg', 'FxSwap', 'ForwardRateAgreement', 'SimpleInstrument', 'Repo', 'Equity', 'ExchangeTradedOption', 'ReferenceInstrument', 'ComplexBond', 'InflationLinkedBond', 'InflationSwap', 'SimpleCashFlowLoan', 'TotalReturnSwap', 'InflationLeg', 'FundShareClass', 'FlexibleLoan', 'UnsettledCash', 'Cash', 'MasteredInstrument'):
48
+ raise ValueError("must be one of enum values ('QuotedSecurity', 'InterestRateSwap', 'FxForward', 'Future', 'ExoticInstrument', 'FxOption', 'CreditDefaultSwap', 'InterestRateSwaption', 'Bond', 'EquityOption', 'FixedLeg', 'FloatingLeg', 'BespokeCashFlowsLeg', 'Unknown', 'TermDeposit', 'ContractForDifference', 'EquitySwap', 'CashPerpetual', 'CapFloor', 'CashSettled', 'CdsIndex', 'Basket', 'FundingLeg', 'FxSwap', 'ForwardRateAgreement', 'SimpleInstrument', 'Repo', 'Equity', 'ExchangeTradedOption', 'ReferenceInstrument', 'ComplexBond', 'InflationLinkedBond', 'InflationSwap', 'SimpleCashFlowLoan', 'TotalReturnSwap', 'InflationLeg', 'FundShareClass', 'FlexibleLoan', 'UnsettledCash', 'Cash', 'MasteredInstrument')")
49
49
  return value
50
50
 
51
51
  class Config:
@@ -30,15 +30,15 @@ class CreditPremiumCashFlowEvent(InstrumentEvent):
30
30
  payment_date: datetime = Field(..., alias="paymentDate", description="The payment date of the cashflow.")
31
31
  currency: StrictStr = Field(..., description="The currency in which the cashflow is paid.")
32
32
  cash_flow_per_unit: Optional[Union[StrictFloat, StrictInt]] = Field(None, alias="cashFlowPerUnit", description="The cashflow amount received for each unit of the instrument held on the ex date.")
33
- instrument_event_type: StrictStr = Field(..., alias="instrumentEventType", description="The Type of Event. The available values are: TransitionEvent, InformationalEvent, OpenEvent, CloseEvent, StockSplitEvent, BondDefaultEvent, CashDividendEvent, AmortisationEvent, CashFlowEvent, ExerciseEvent, ResetEvent, TriggerEvent, RawVendorEvent, InformationalErrorEvent, BondCouponEvent, DividendReinvestmentEvent, AccumulationEvent, BondPrincipalEvent, DividendOptionEvent, MaturityEvent, FxForwardSettlementEvent, ExpiryEvent, ScripDividendEvent, StockDividendEvent, ReverseStockSplitEvent, CapitalDistributionEvent, SpinOffEvent, MergerEvent, FutureExpiryEvent, SwapCashFlowEvent, SwapPrincipalEvent, CreditPremiumCashFlowEvent, CdsCreditEvent, CdxCreditEvent")
33
+ instrument_event_type: StrictStr = Field(..., alias="instrumentEventType", description="The Type of Event. The available values are: TransitionEvent, InformationalEvent, OpenEvent, CloseEvent, StockSplitEvent, BondDefaultEvent, CashDividendEvent, AmortisationEvent, CashFlowEvent, ExerciseEvent, ResetEvent, TriggerEvent, RawVendorEvent, InformationalErrorEvent, BondCouponEvent, DividendReinvestmentEvent, AccumulationEvent, BondPrincipalEvent, DividendOptionEvent, MaturityEvent, FxForwardSettlementEvent, ExpiryEvent, ScripDividendEvent, StockDividendEvent, ReverseStockSplitEvent, CapitalDistributionEvent, SpinOffEvent, MergerEvent, FutureExpiryEvent, SwapCashFlowEvent, SwapPrincipalEvent, CreditPremiumCashFlowEvent, CdsCreditEvent, CdxCreditEvent, MbsCouponEvent, MbsPrincipalEvent, BonusIssueEvent, MbsPrincipalWriteOffEvent, MbsInterestDeferralEvent")
34
34
  additional_properties: Dict[str, Any] = {}
35
35
  __properties = ["instrumentEventType", "exDate", "paymentDate", "currency", "cashFlowPerUnit"]
36
36
 
37
37
  @validator('instrument_event_type')
38
38
  def instrument_event_type_validate_enum(cls, value):
39
39
  """Validates the enum"""
40
- if value not in ('TransitionEvent', 'InformationalEvent', 'OpenEvent', 'CloseEvent', 'StockSplitEvent', 'BondDefaultEvent', 'CashDividendEvent', 'AmortisationEvent', 'CashFlowEvent', 'ExerciseEvent', 'ResetEvent', 'TriggerEvent', 'RawVendorEvent', 'InformationalErrorEvent', 'BondCouponEvent', 'DividendReinvestmentEvent', 'AccumulationEvent', 'BondPrincipalEvent', 'DividendOptionEvent', 'MaturityEvent', 'FxForwardSettlementEvent', 'ExpiryEvent', 'ScripDividendEvent', 'StockDividendEvent', 'ReverseStockSplitEvent', 'CapitalDistributionEvent', 'SpinOffEvent', 'MergerEvent', 'FutureExpiryEvent', 'SwapCashFlowEvent', 'SwapPrincipalEvent', 'CreditPremiumCashFlowEvent', 'CdsCreditEvent', 'CdxCreditEvent'):
41
- raise ValueError("must be one of enum values ('TransitionEvent', 'InformationalEvent', 'OpenEvent', 'CloseEvent', 'StockSplitEvent', 'BondDefaultEvent', 'CashDividendEvent', 'AmortisationEvent', 'CashFlowEvent', 'ExerciseEvent', 'ResetEvent', 'TriggerEvent', 'RawVendorEvent', 'InformationalErrorEvent', 'BondCouponEvent', 'DividendReinvestmentEvent', 'AccumulationEvent', 'BondPrincipalEvent', 'DividendOptionEvent', 'MaturityEvent', 'FxForwardSettlementEvent', 'ExpiryEvent', 'ScripDividendEvent', 'StockDividendEvent', 'ReverseStockSplitEvent', 'CapitalDistributionEvent', 'SpinOffEvent', 'MergerEvent', 'FutureExpiryEvent', 'SwapCashFlowEvent', 'SwapPrincipalEvent', 'CreditPremiumCashFlowEvent', 'CdsCreditEvent', 'CdxCreditEvent')")
40
+ if value not in ('TransitionEvent', 'InformationalEvent', 'OpenEvent', 'CloseEvent', 'StockSplitEvent', 'BondDefaultEvent', 'CashDividendEvent', 'AmortisationEvent', 'CashFlowEvent', 'ExerciseEvent', 'ResetEvent', 'TriggerEvent', 'RawVendorEvent', 'InformationalErrorEvent', 'BondCouponEvent', 'DividendReinvestmentEvent', 'AccumulationEvent', 'BondPrincipalEvent', 'DividendOptionEvent', 'MaturityEvent', 'FxForwardSettlementEvent', 'ExpiryEvent', 'ScripDividendEvent', 'StockDividendEvent', 'ReverseStockSplitEvent', 'CapitalDistributionEvent', 'SpinOffEvent', 'MergerEvent', 'FutureExpiryEvent', 'SwapCashFlowEvent', 'SwapPrincipalEvent', 'CreditPremiumCashFlowEvent', 'CdsCreditEvent', 'CdxCreditEvent', 'MbsCouponEvent', 'MbsPrincipalEvent', 'BonusIssueEvent', 'MbsPrincipalWriteOffEvent', 'MbsInterestDeferralEvent'):
41
+ raise ValueError("must be one of enum values ('TransitionEvent', 'InformationalEvent', 'OpenEvent', 'CloseEvent', 'StockSplitEvent', 'BondDefaultEvent', 'CashDividendEvent', 'AmortisationEvent', 'CashFlowEvent', 'ExerciseEvent', 'ResetEvent', 'TriggerEvent', 'RawVendorEvent', 'InformationalErrorEvent', 'BondCouponEvent', 'DividendReinvestmentEvent', 'AccumulationEvent', 'BondPrincipalEvent', 'DividendOptionEvent', 'MaturityEvent', 'FxForwardSettlementEvent', 'ExpiryEvent', 'ScripDividendEvent', 'StockDividendEvent', 'ReverseStockSplitEvent', 'CapitalDistributionEvent', 'SpinOffEvent', 'MergerEvent', 'FutureExpiryEvent', 'SwapCashFlowEvent', 'SwapPrincipalEvent', 'CreditPremiumCashFlowEvent', 'CdsCreditEvent', 'CdxCreditEvent', 'MbsCouponEvent', 'MbsPrincipalEvent', 'BonusIssueEvent', 'MbsPrincipalWriteOffEvent', 'MbsInterestDeferralEvent')")
42
42
  return value
43
43
 
44
44
  class Config:
@@ -0,0 +1,146 @@
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.v1 import BaseModel, Field, StrictInt, StrictStr, conlist, constr
23
+ from lusid.models.custom_entity_response import CustomEntityResponse
24
+ from lusid.models.link import Link
25
+
26
+ class CustomEntityEntity(BaseModel):
27
+ """
28
+ CustomEntityEntity
29
+ """
30
+ href: StrictStr = Field(..., description="The specific Uniform Resource Identifier (URI) for this resource at the requested effective and asAt datetime.")
31
+ entity_unique_id: constr(strict=True, min_length=1) = Field(..., alias="entityUniqueId", description="The unique id of the entity.")
32
+ as_at_version_number: Optional[StrictInt] = Field(None, alias="asAtVersionNumber", description="The integer version number for the entity (the entity was created at version 1)")
33
+ status: constr(strict=True, min_length=1) = Field(..., description="The status of the entity at the current time.")
34
+ as_at_deleted: Optional[datetime] = Field(None, alias="asAtDeleted", description="The asAt datetime at which the entity was deleted.")
35
+ user_id_deleted: Optional[StrictStr] = Field(None, alias="userIdDeleted", description="The unique id of the user who deleted the entity.")
36
+ request_id_deleted: Optional[StrictStr] = Field(None, alias="requestIdDeleted", description="The unique request id of the command that deleted the entity.")
37
+ effective_at_created: Optional[datetime] = Field(None, alias="effectiveAtCreated", description="The EffectiveAt this Entity is created, if entity does not currently exist in EffectiveAt.")
38
+ prevailing_custom_entity: Optional[CustomEntityResponse] = Field(None, alias="prevailingCustomEntity")
39
+ deleted_custom_entity: Optional[CustomEntityResponse] = Field(None, alias="deletedCustomEntity")
40
+ previewed_status: Optional[StrictStr] = Field(None, alias="previewedStatus", description="The status of the previewed entity.")
41
+ previewed_custom_entity: Optional[CustomEntityResponse] = Field(None, alias="previewedCustomEntity")
42
+ links: Optional[conlist(Link)] = None
43
+ __properties = ["href", "entityUniqueId", "asAtVersionNumber", "status", "asAtDeleted", "userIdDeleted", "requestIdDeleted", "effectiveAtCreated", "prevailingCustomEntity", "deletedCustomEntity", "previewedStatus", "previewedCustomEntity", "links"]
44
+
45
+ class Config:
46
+ """Pydantic configuration"""
47
+ allow_population_by_field_name = True
48
+ validate_assignment = True
49
+
50
+ def to_str(self) -> str:
51
+ """Returns the string representation of the model using alias"""
52
+ return pprint.pformat(self.dict(by_alias=True))
53
+
54
+ def to_json(self) -> str:
55
+ """Returns the JSON representation of the model using alias"""
56
+ return json.dumps(self.to_dict())
57
+
58
+ @classmethod
59
+ def from_json(cls, json_str: str) -> CustomEntityEntity:
60
+ """Create an instance of CustomEntityEntity from a JSON string"""
61
+ return cls.from_dict(json.loads(json_str))
62
+
63
+ def to_dict(self):
64
+ """Returns the dictionary representation of the model using alias"""
65
+ _dict = self.dict(by_alias=True,
66
+ exclude={
67
+ },
68
+ exclude_none=True)
69
+ # override the default output from pydantic by calling `to_dict()` of prevailing_custom_entity
70
+ if self.prevailing_custom_entity:
71
+ _dict['prevailingCustomEntity'] = self.prevailing_custom_entity.to_dict()
72
+ # override the default output from pydantic by calling `to_dict()` of deleted_custom_entity
73
+ if self.deleted_custom_entity:
74
+ _dict['deletedCustomEntity'] = self.deleted_custom_entity.to_dict()
75
+ # override the default output from pydantic by calling `to_dict()` of previewed_custom_entity
76
+ if self.previewed_custom_entity:
77
+ _dict['previewedCustomEntity'] = self.previewed_custom_entity.to_dict()
78
+ # override the default output from pydantic by calling `to_dict()` of each item in links (list)
79
+ _items = []
80
+ if self.links:
81
+ for _item in self.links:
82
+ if _item:
83
+ _items.append(_item.to_dict())
84
+ _dict['links'] = _items
85
+ # set to None if as_at_version_number (nullable) is None
86
+ # and __fields_set__ contains the field
87
+ if self.as_at_version_number is None and "as_at_version_number" in self.__fields_set__:
88
+ _dict['asAtVersionNumber'] = None
89
+
90
+ # set to None if as_at_deleted (nullable) is None
91
+ # and __fields_set__ contains the field
92
+ if self.as_at_deleted is None and "as_at_deleted" in self.__fields_set__:
93
+ _dict['asAtDeleted'] = None
94
+
95
+ # set to None if user_id_deleted (nullable) is None
96
+ # and __fields_set__ contains the field
97
+ if self.user_id_deleted is None and "user_id_deleted" in self.__fields_set__:
98
+ _dict['userIdDeleted'] = None
99
+
100
+ # set to None if request_id_deleted (nullable) is None
101
+ # and __fields_set__ contains the field
102
+ if self.request_id_deleted is None and "request_id_deleted" in self.__fields_set__:
103
+ _dict['requestIdDeleted'] = None
104
+
105
+ # set to None if effective_at_created (nullable) is None
106
+ # and __fields_set__ contains the field
107
+ if self.effective_at_created is None and "effective_at_created" in self.__fields_set__:
108
+ _dict['effectiveAtCreated'] = None
109
+
110
+ # set to None if previewed_status (nullable) is None
111
+ # and __fields_set__ contains the field
112
+ if self.previewed_status is None and "previewed_status" in self.__fields_set__:
113
+ _dict['previewedStatus'] = None
114
+
115
+ # set to None if links (nullable) is None
116
+ # and __fields_set__ contains the field
117
+ if self.links is None and "links" in self.__fields_set__:
118
+ _dict['links'] = None
119
+
120
+ return _dict
121
+
122
+ @classmethod
123
+ def from_dict(cls, obj: dict) -> CustomEntityEntity:
124
+ """Create an instance of CustomEntityEntity from a dict"""
125
+ if obj is None:
126
+ return None
127
+
128
+ if not isinstance(obj, dict):
129
+ return CustomEntityEntity.parse_obj(obj)
130
+
131
+ _obj = CustomEntityEntity.parse_obj({
132
+ "href": obj.get("href"),
133
+ "entity_unique_id": obj.get("entityUniqueId"),
134
+ "as_at_version_number": obj.get("asAtVersionNumber"),
135
+ "status": obj.get("status"),
136
+ "as_at_deleted": obj.get("asAtDeleted"),
137
+ "user_id_deleted": obj.get("userIdDeleted"),
138
+ "request_id_deleted": obj.get("requestIdDeleted"),
139
+ "effective_at_created": obj.get("effectiveAtCreated"),
140
+ "prevailing_custom_entity": CustomEntityResponse.from_dict(obj.get("prevailingCustomEntity")) if obj.get("prevailingCustomEntity") is not None else None,
141
+ "deleted_custom_entity": CustomEntityResponse.from_dict(obj.get("deletedCustomEntity")) if obj.get("deletedCustomEntity") is not None else None,
142
+ "previewed_status": obj.get("previewedStatus"),
143
+ "previewed_custom_entity": CustomEntityResponse.from_dict(obj.get("previewedCustomEntity")) if obj.get("previewedCustomEntity") is not None else None,
144
+ "links": [Link.from_dict(_item) for _item in obj.get("links")] if obj.get("links") is not None else None
145
+ })
146
+ return _obj