lusid-sdk 2.1.405__py3-none-any.whl → 2.1.423__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 (72) hide show
  1. lusid/__init__.py +40 -8
  2. lusid/api/__init__.py +2 -2
  3. lusid/api/abor_api.py +8 -16
  4. lusid/api/allocations_api.py +2 -2
  5. lusid/api/chart_of_accounts_api.py +174 -0
  6. lusid/api/custom_entities_api.py +2 -2
  7. lusid/api/entities_api.py +180 -0
  8. lusid/api/{fund_configurations_api.py → fund_configuration_entities_api.py} +1 -1
  9. lusid/api/group_reconciliations_api.py +1418 -27
  10. lusid/api/instruments_api.py +6 -6
  11. lusid/api/legal_entities_api.py +4 -4
  12. lusid/api/order_graph_api.py +4 -4
  13. lusid/api/portfolios_api.py +27 -30
  14. lusid/api/reference_lists_api.py +2 -2
  15. lusid/api/reference_portfolio_api.py +176 -0
  16. lusid/api/transaction_portfolios_api.py +2 -2
  17. lusid/configuration.py +1 -1
  18. lusid/models/__init__.py +38 -6
  19. lusid/models/access_metadata_value.py +1 -1
  20. lusid/models/address_key_list.py +3 -3
  21. lusid/models/amount.py +69 -0
  22. lusid/models/batch_upsert_portfolio_access_metadata_request.py +27 -17
  23. lusid/models/batch_upsert_portfolio_access_metadata_response.py +56 -16
  24. lusid/models/{metadata_key_value.py → batch_upsert_portfolio_access_metadata_response_item.py} +15 -9
  25. lusid/models/{component_rule.py → break_code_source.py} +17 -21
  26. lusid/models/create_group_reconciliation_definition_request.py +113 -0
  27. lusid/models/custom_entity_entity.py +146 -0
  28. lusid/models/decimal_list.py +3 -3
  29. lusid/models/diary_entry_request.py +10 -1
  30. lusid/models/fixed_schedule.py +3 -3
  31. lusid/models/float_schedule.py +4 -4
  32. lusid/models/flow_conventions.py +7 -1
  33. lusid/models/fund_configuration.py +44 -17
  34. lusid/models/fund_configuration_request.py +31 -19
  35. lusid/models/fund_id_list.py +99 -0
  36. lusid/models/group_reconciliation_aggregate_attribute_rule.py +2 -2
  37. lusid/models/group_reconciliation_aggregate_comparison_rule_operand.py +1 -1
  38. lusid/models/group_reconciliation_core_comparison_rule_operand.py +1 -1
  39. lusid/models/group_reconciliation_definition.py +136 -0
  40. lusid/models/group_reconciliation_definition_comparison_ruleset_ids.py +83 -0
  41. lusid/models/group_reconciliation_definition_currencies.py +71 -0
  42. lusid/models/group_reconciliation_definition_portfolio_entity_ids.py +86 -0
  43. lusid/models/group_reconciliation_definition_recipe_ids.py +78 -0
  44. lusid/models/instrument.py +7 -1
  45. lusid/models/instrument_definition.py +8 -2
  46. lusid/models/instrument_list.py +3 -3
  47. lusid/models/market_data_key_rule.py +5 -3
  48. lusid/models/market_data_specific_rule.py +5 -3
  49. lusid/models/merger_event.py +19 -19
  50. lusid/models/output_transaction.py +9 -2
  51. lusid/models/paged_resource_list_of_group_reconciliation_comparison_ruleset.py +113 -0
  52. lusid/models/paged_resource_list_of_group_reconciliation_definition.py +113 -0
  53. lusid/models/portfolio_group_id_list.py +3 -3
  54. lusid/models/portfolio_id_list.py +3 -3
  55. lusid/models/property_list.py +3 -3
  56. lusid/models/reference_list.py +6 -5
  57. lusid/models/reference_list_type.py +1 -0
  58. lusid/models/settlement_cycle.py +79 -0
  59. lusid/models/share_class_dealing_breakdown.py +3 -2
  60. lusid/models/stock_dividend_event.py +17 -3
  61. lusid/models/string_list.py +3 -3
  62. lusid/models/transaction.py +9 -2
  63. lusid/models/transaction_date_windows.py +85 -0
  64. lusid/models/transaction_request.py +9 -2
  65. lusid/models/update_group_reconciliation_comparison_ruleset_request.py +91 -0
  66. lusid/models/update_group_reconciliation_definition_request.py +107 -0
  67. lusid/models/upsert_reference_portfolio_constituent_properties_request.py +84 -0
  68. lusid/models/upsert_reference_portfolio_constituent_properties_response.py +115 -0
  69. {lusid_sdk-2.1.405.dist-info → lusid_sdk-2.1.423.dist-info}/METADATA +50 -23
  70. {lusid_sdk-2.1.405.dist-info → lusid_sdk-2.1.423.dist-info}/RECORD +71 -55
  71. lusid/models/metadata_key_value_response.py +0 -86
  72. {lusid_sdk-2.1.405.dist-info → lusid_sdk-2.1.423.dist-info}/WHEEL +0 -0
@@ -20,6 +20,7 @@ import json
20
20
 
21
21
  from typing import Any, Dict
22
22
  from pydantic.v1 import BaseModel, Field
23
+ from lusid.models.amount import Amount
23
24
  from lusid.models.share_class_amount import ShareClassAmount
24
25
 
25
26
  class ShareClassDealingBreakdown(BaseModel):
@@ -27,7 +28,7 @@ class ShareClassDealingBreakdown(BaseModel):
27
28
  The breakdown of Dealing for a Share Class. # noqa: E501
28
29
  """
29
30
  class_dealing: Dict[str, ShareClassAmount] = Field(..., alias="classDealing", description="Bucket of detail for any 'Dealing' specific to the share class that has occured inside the queried period.")
30
- class_dealing_units: Dict[str, ShareClassAmount] = Field(..., alias="classDealingUnits", description="Bucket of detail for any 'Dealing' units specific to the share class that has occured inside the queried period.")
31
+ class_dealing_units: Dict[str, Amount] = Field(..., alias="classDealingUnits", description="Bucket of detail for any 'Dealing' units specific to the share class that has occured inside the queried period.")
31
32
  __properties = ["classDealing", "classDealingUnits"]
32
33
 
33
34
  class Config:
@@ -87,7 +88,7 @@ class ShareClassDealingBreakdown(BaseModel):
87
88
  if obj.get("classDealing") is not None
88
89
  else None,
89
90
  "class_dealing_units": dict(
90
- (_k, ShareClassAmount.from_dict(_v))
91
+ (_k, Amount.from_dict(_v))
91
92
  for _k, _v in obj.get("classDealingUnits").items()
92
93
  )
93
94
  if obj.get("classDealingUnits") is not None
@@ -18,8 +18,8 @@ import re # noqa: F401
18
18
  import json
19
19
 
20
20
  from datetime import datetime
21
- from typing import Any, Dict, Optional
22
- from pydantic.v1 import Field, StrictStr, validator
21
+ from typing import Any, Dict, Optional, Union
22
+ from pydantic.v1 import Field, StrictFloat, StrictInt, StrictStr, validator
23
23
  from lusid.models.instrument_event import InstrumentEvent
24
24
  from lusid.models.units_ratio import UnitsRatio
25
25
 
@@ -31,10 +31,12 @@ class StockDividendEvent(InstrumentEvent):
31
31
  ex_date: datetime = Field(..., alias="exDate", description="The first business day on which the dividend is not owed to the buying party. Typically this is T-1 from the RecordDate.")
32
32
  payment_date: datetime = Field(..., alias="paymentDate", description="The date the company pays out dividends to shareholders.")
33
33
  record_date: Optional[datetime] = Field(None, alias="recordDate", description="Date you have to be the holder of record in order to participate in the tender.")
34
+ fractional_units_cash_price: Optional[Union[StrictFloat, StrictInt]] = Field(None, alias="fractionalUnitsCashPrice", description="The cash price paid in lieu of fractionalUnits.")
35
+ fractional_units_cash_currency: Optional[StrictStr] = Field(None, alias="fractionalUnitsCashCurrency", description="The currency of the cash paid in lieu of fractionalUnits.")
34
36
  units_ratio: UnitsRatio = Field(..., alias="unitsRatio")
35
37
  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")
36
38
  additional_properties: Dict[str, Any] = {}
37
- __properties = ["instrumentEventType", "announcementDate", "exDate", "paymentDate", "recordDate", "unitsRatio"]
39
+ __properties = ["instrumentEventType", "announcementDate", "exDate", "paymentDate", "recordDate", "fractionalUnitsCashPrice", "fractionalUnitsCashCurrency", "unitsRatio"]
38
40
 
39
41
  @validator('instrument_event_type')
40
42
  def instrument_event_type_validate_enum(cls, value):
@@ -86,6 +88,16 @@ class StockDividendEvent(InstrumentEvent):
86
88
  if self.record_date is None and "record_date" in self.__fields_set__:
87
89
  _dict['recordDate'] = None
88
90
 
91
+ # set to None if fractional_units_cash_price (nullable) is None
92
+ # and __fields_set__ contains the field
93
+ if self.fractional_units_cash_price is None and "fractional_units_cash_price" in self.__fields_set__:
94
+ _dict['fractionalUnitsCashPrice'] = None
95
+
96
+ # set to None if fractional_units_cash_currency (nullable) is None
97
+ # and __fields_set__ contains the field
98
+ if self.fractional_units_cash_currency is None and "fractional_units_cash_currency" in self.__fields_set__:
99
+ _dict['fractionalUnitsCashCurrency'] = None
100
+
89
101
  return _dict
90
102
 
91
103
  @classmethod
@@ -103,6 +115,8 @@ class StockDividendEvent(InstrumentEvent):
103
115
  "ex_date": obj.get("exDate"),
104
116
  "payment_date": obj.get("paymentDate"),
105
117
  "record_date": obj.get("recordDate"),
118
+ "fractional_units_cash_price": obj.get("fractionalUnitsCashPrice"),
119
+ "fractional_units_cash_currency": obj.get("fractionalUnitsCashCurrency"),
106
120
  "units_ratio": UnitsRatio.from_dict(obj.get("unitsRatio")) if obj.get("unitsRatio") is not None else None
107
121
  })
108
122
  # store additional fields in additional_properties
@@ -27,15 +27,15 @@ class StringList(ReferenceList):
27
27
  StringList
28
28
  """
29
29
  values: conlist(StrictStr, max_items=100, min_items=0) = Field(...)
30
- reference_list_type: StrictStr = Field(..., alias="referenceListType", description="The reference list values. The available values are: PortfolioGroupIdList, PortfolioIdList, AddressKeyList, StringList, InstrumentList, DecimalList, PropertyList")
30
+ reference_list_type: StrictStr = Field(..., alias="referenceListType", description="The reference list values. The available values are: PortfolioGroupIdList, PortfolioIdList, AddressKeyList, StringList, InstrumentList, DecimalList, PropertyList, FundIdList")
31
31
  additional_properties: Dict[str, Any] = {}
32
32
  __properties = ["referenceListType", "values"]
33
33
 
34
34
  @validator('reference_list_type')
35
35
  def reference_list_type_validate_enum(cls, value):
36
36
  """Validates the enum"""
37
- if value not in ('PortfolioGroupIdList', 'PortfolioIdList', 'AddressKeyList', 'StringList', 'InstrumentList', 'DecimalList', 'PropertyList'):
38
- raise ValueError("must be one of enum values ('PortfolioGroupIdList', 'PortfolioIdList', 'AddressKeyList', 'StringList', 'InstrumentList', 'DecimalList', 'PropertyList')")
37
+ if value not in ('PortfolioGroupIdList', 'PortfolioIdList', 'AddressKeyList', 'StringList', 'InstrumentList', 'DecimalList', 'PropertyList', 'FundIdList'):
38
+ raise ValueError("must be one of enum values ('PortfolioGroupIdList', 'PortfolioIdList', 'AddressKeyList', 'StringList', 'InstrumentList', 'DecimalList', 'PropertyList', 'FundIdList')")
39
39
  return value
40
40
 
41
41
  class Config:
@@ -53,7 +53,8 @@ class Transaction(BaseModel):
53
53
  order_id: Optional[ResourceId] = Field(None, alias="orderId")
54
54
  allocation_id: Optional[ResourceId] = Field(None, alias="allocationId")
55
55
  custodian_account: Optional[CustodianAccount] = Field(None, alias="custodianAccount")
56
- __properties = ["transactionId", "type", "instrumentIdentifiers", "instrumentScope", "instrumentUid", "transactionDate", "settlementDate", "units", "transactionPrice", "totalConsideration", "exchangeRate", "transactionCurrency", "properties", "counterpartyId", "source", "entryDateTime", "otcConfirmation", "transactionStatus", "cancelDateTime", "orderId", "allocationId", "custodianAccount"]
56
+ transaction_group_id: Optional[StrictStr] = Field(None, alias="transactionGroupId", description="The identifier for grouping economic events across multiple transactions")
57
+ __properties = ["transactionId", "type", "instrumentIdentifiers", "instrumentScope", "instrumentUid", "transactionDate", "settlementDate", "units", "transactionPrice", "totalConsideration", "exchangeRate", "transactionCurrency", "properties", "counterpartyId", "source", "entryDateTime", "otcConfirmation", "transactionStatus", "cancelDateTime", "orderId", "allocationId", "custodianAccount", "transactionGroupId"]
57
58
 
58
59
  @validator('transaction_status')
59
60
  def transaction_status_validate_enum(cls, value):
@@ -154,6 +155,11 @@ class Transaction(BaseModel):
154
155
  if self.cancel_date_time is None and "cancel_date_time" in self.__fields_set__:
155
156
  _dict['cancelDateTime'] = None
156
157
 
158
+ # set to None if transaction_group_id (nullable) is None
159
+ # and __fields_set__ contains the field
160
+ if self.transaction_group_id is None and "transaction_group_id" in self.__fields_set__:
161
+ _dict['transactionGroupId'] = None
162
+
157
163
  return _dict
158
164
 
159
165
  @classmethod
@@ -192,6 +198,7 @@ class Transaction(BaseModel):
192
198
  "cancel_date_time": obj.get("cancelDateTime"),
193
199
  "order_id": ResourceId.from_dict(obj.get("orderId")) if obj.get("orderId") is not None else None,
194
200
  "allocation_id": ResourceId.from_dict(obj.get("allocationId")) if obj.get("allocationId") is not None else None,
195
- "custodian_account": CustodianAccount.from_dict(obj.get("custodianAccount")) if obj.get("custodianAccount") is not None else None
201
+ "custodian_account": CustodianAccount.from_dict(obj.get("custodianAccount")) if obj.get("custodianAccount") is not None else None,
202
+ "transaction_group_id": obj.get("transactionGroupId")
196
203
  })
197
204
  return _obj
@@ -0,0 +1,85 @@
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
22
+ from pydantic.v1 import BaseModel, Field, constr, validator
23
+
24
+ class TransactionDateWindows(BaseModel):
25
+ """
26
+ TransactionDateWindows
27
+ """
28
+ left: constr(strict=True, max_length=30, min_length=2) = Field(..., description="Transaction Date Window for the left side of a reconciliation")
29
+ right: constr(strict=True, max_length=30, min_length=2) = Field(..., description="Transaction Date Window for the right side of a reconciliation")
30
+ __properties = ["left", "right"]
31
+
32
+ @validator('left')
33
+ def left_validate_regular_expression(cls, value):
34
+ """Validates the regular expression"""
35
+ if not re.match(r"^P(?!$)((\d+Y)|(\d+\.\d+Y$))?((\d+M)|(\d+\.\d+M$))?((\d+W)|(\d+\.\d+W$))?((\d+D)|(\d+\.\d+D$))?(T(?=\d)((\d+H)|(\d+\.\d+H$))?((\d+M)|(\d+\.\d+M$))?(\d+(\.\d+)?S)?)??$", value):
36
+ raise ValueError(r"must validate the regular expression /^P(?!$)((\d+Y)|(\d+\.\d+Y$))?((\d+M)|(\d+\.\d+M$))?((\d+W)|(\d+\.\d+W$))?((\d+D)|(\d+\.\d+D$))?(T(?=\d)((\d+H)|(\d+\.\d+H$))?((\d+M)|(\d+\.\d+M$))?(\d+(\.\d+)?S)?)??$/")
37
+ return value
38
+
39
+ @validator('right')
40
+ def right_validate_regular_expression(cls, value):
41
+ """Validates the regular expression"""
42
+ if not re.match(r"^P(?!$)((\d+Y)|(\d+\.\d+Y$))?((\d+M)|(\d+\.\d+M$))?((\d+W)|(\d+\.\d+W$))?((\d+D)|(\d+\.\d+D$))?(T(?=\d)((\d+H)|(\d+\.\d+H$))?((\d+M)|(\d+\.\d+M$))?(\d+(\.\d+)?S)?)??$", value):
43
+ raise ValueError(r"must validate the regular expression /^P(?!$)((\d+Y)|(\d+\.\d+Y$))?((\d+M)|(\d+\.\d+M$))?((\d+W)|(\d+\.\d+W$))?((\d+D)|(\d+\.\d+D$))?(T(?=\d)((\d+H)|(\d+\.\d+H$))?((\d+M)|(\d+\.\d+M$))?(\d+(\.\d+)?S)?)??$/")
44
+ return value
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) -> TransactionDateWindows:
61
+ """Create an instance of TransactionDateWindows 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
+ return _dict
71
+
72
+ @classmethod
73
+ def from_dict(cls, obj: dict) -> TransactionDateWindows:
74
+ """Create an instance of TransactionDateWindows from a dict"""
75
+ if obj is None:
76
+ return None
77
+
78
+ if not isinstance(obj, dict):
79
+ return TransactionDateWindows.parse_obj(obj)
80
+
81
+ _obj = TransactionDateWindows.parse_obj({
82
+ "left": obj.get("left"),
83
+ "right": obj.get("right")
84
+ })
85
+ return _obj
@@ -47,7 +47,8 @@ class TransactionRequest(BaseModel):
47
47
  order_id: Optional[ResourceId] = Field(None, alias="orderId")
48
48
  allocation_id: Optional[ResourceId] = Field(None, alias="allocationId")
49
49
  custodian_account_id: Optional[ResourceId] = Field(None, alias="custodianAccountId")
50
- __properties = ["transactionId", "type", "instrumentIdentifiers", "transactionDate", "settlementDate", "units", "transactionPrice", "totalConsideration", "exchangeRate", "transactionCurrency", "properties", "counterpartyId", "source", "otcConfirmation", "orderId", "allocationId", "custodianAccountId"]
50
+ transaction_group_id: Optional[constr(strict=True, max_length=64, min_length=1)] = Field(None, alias="transactionGroupId", description="The identifier for grouping economic events across multiple transactions")
51
+ __properties = ["transactionId", "type", "instrumentIdentifiers", "transactionDate", "settlementDate", "units", "transactionPrice", "totalConsideration", "exchangeRate", "transactionCurrency", "properties", "counterpartyId", "source", "otcConfirmation", "orderId", "allocationId", "custodianAccountId", "transactionGroupId"]
51
52
 
52
53
  class Config:
53
54
  """Pydantic configuration"""
@@ -123,6 +124,11 @@ class TransactionRequest(BaseModel):
123
124
  if self.source is None and "source" in self.__fields_set__:
124
125
  _dict['source'] = None
125
126
 
127
+ # set to None if transaction_group_id (nullable) is None
128
+ # and __fields_set__ contains the field
129
+ if self.transaction_group_id is None and "transaction_group_id" in self.__fields_set__:
130
+ _dict['transactionGroupId'] = None
131
+
126
132
  return _dict
127
133
 
128
134
  @classmethod
@@ -156,6 +162,7 @@ class TransactionRequest(BaseModel):
156
162
  "otc_confirmation": OtcConfirmation.from_dict(obj.get("otcConfirmation")) if obj.get("otcConfirmation") is not None else None,
157
163
  "order_id": ResourceId.from_dict(obj.get("orderId")) if obj.get("orderId") is not None else None,
158
164
  "allocation_id": ResourceId.from_dict(obj.get("allocationId")) if obj.get("allocationId") is not None else None,
159
- "custodian_account_id": ResourceId.from_dict(obj.get("custodianAccountId")) if obj.get("custodianAccountId") is not None else None
165
+ "custodian_account_id": ResourceId.from_dict(obj.get("custodianAccountId")) if obj.get("custodianAccountId") is not None else None,
166
+ "transaction_group_id": obj.get("transactionGroupId")
160
167
  })
161
168
  return _obj
@@ -0,0 +1,91 @@
1
+ # coding: utf-8
2
+
3
+ """
4
+ LUSID API
5
+
6
+ FINBOURNE Technology # noqa: E501
7
+
8
+ Contact: info@finbourne.com
9
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
10
+
11
+ Do not edit the class manually.
12
+ """
13
+
14
+
15
+ from __future__ import annotations
16
+ import pprint
17
+ import re # noqa: F401
18
+ import json
19
+
20
+
21
+ from typing import Any, Dict, List
22
+ from pydantic.v1 import BaseModel, Field, conlist, constr
23
+ from lusid.models.group_reconciliation_aggregate_attribute_rule import GroupReconciliationAggregateAttributeRule
24
+ from lusid.models.group_reconciliation_core_attribute_rule import GroupReconciliationCoreAttributeRule
25
+
26
+ class UpdateGroupReconciliationComparisonRulesetRequest(BaseModel):
27
+ """
28
+ UpdateGroupReconciliationComparisonRulesetRequest
29
+ """
30
+ display_name: constr(strict=True, max_length=256, min_length=1) = Field(..., alias="displayName", description="The name of the ruleset")
31
+ reconciliation_type: constr(strict=True, min_length=1) = Field(..., alias="reconciliationType", description="The type of reconciliation to perform. \"Holding\" | \"Transaction\" | \"Valuation\"")
32
+ core_attribute_rules: conlist(GroupReconciliationCoreAttributeRule, min_items=1) = Field(..., alias="coreAttributeRules", description="The core comparison rules")
33
+ aggregate_attribute_rules: conlist(GroupReconciliationAggregateAttributeRule, min_items=1) = Field(..., alias="aggregateAttributeRules", description="The aggregate comparison rules")
34
+ __properties = ["displayName", "reconciliationType", "coreAttributeRules", "aggregateAttributeRules"]
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) -> UpdateGroupReconciliationComparisonRulesetRequest:
51
+ """Create an instance of UpdateGroupReconciliationComparisonRulesetRequest 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 core_attribute_rules (list)
61
+ _items = []
62
+ if self.core_attribute_rules:
63
+ for _item in self.core_attribute_rules:
64
+ if _item:
65
+ _items.append(_item.to_dict())
66
+ _dict['coreAttributeRules'] = _items
67
+ # override the default output from pydantic by calling `to_dict()` of each item in aggregate_attribute_rules (list)
68
+ _items = []
69
+ if self.aggregate_attribute_rules:
70
+ for _item in self.aggregate_attribute_rules:
71
+ if _item:
72
+ _items.append(_item.to_dict())
73
+ _dict['aggregateAttributeRules'] = _items
74
+ return _dict
75
+
76
+ @classmethod
77
+ def from_dict(cls, obj: dict) -> UpdateGroupReconciliationComparisonRulesetRequest:
78
+ """Create an instance of UpdateGroupReconciliationComparisonRulesetRequest from a dict"""
79
+ if obj is None:
80
+ return None
81
+
82
+ if not isinstance(obj, dict):
83
+ return UpdateGroupReconciliationComparisonRulesetRequest.parse_obj(obj)
84
+
85
+ _obj = UpdateGroupReconciliationComparisonRulesetRequest.parse_obj({
86
+ "display_name": obj.get("displayName"),
87
+ "reconciliation_type": obj.get("reconciliationType"),
88
+ "core_attribute_rules": [GroupReconciliationCoreAttributeRule.from_dict(_item) for _item in obj.get("coreAttributeRules")] if obj.get("coreAttributeRules") is not None else None,
89
+ "aggregate_attribute_rules": [GroupReconciliationAggregateAttributeRule.from_dict(_item) for _item in obj.get("aggregateAttributeRules")] if obj.get("aggregateAttributeRules") is not None else None
90
+ })
91
+ return _obj
@@ -0,0 +1,107 @@
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.transaction_date_windows import TransactionDateWindows
29
+
30
+ class UpdateGroupReconciliationDefinitionRequest(BaseModel):
31
+ """
32
+ UpdateGroupReconciliationDefinitionRequest
33
+ """
34
+ display_name: constr(strict=True, min_length=1) = Field(..., alias="displayName", description="The name of the Group Reconciliation Definition")
35
+ description: constr(strict=True, min_length=1) = Field(..., description="The description of the Group Reconciliation Definition")
36
+ portfolio_entity_ids: GroupReconciliationDefinitionPortfolioEntityIds = Field(..., alias="portfolioEntityIds")
37
+ recipe_ids: Optional[GroupReconciliationDefinitionRecipeIds] = Field(None, alias="recipeIds")
38
+ currencies: Optional[GroupReconciliationDefinitionCurrencies] = None
39
+ transaction_date_windows: Optional[TransactionDateWindows] = Field(None, alias="transactionDateWindows")
40
+ comparison_ruleset_ids: Optional[GroupReconciliationDefinitionComparisonRulesetIds] = Field(None, alias="comparisonRulesetIds")
41
+ break_code_source: BreakCodeSource = Field(..., alias="breakCodeSource")
42
+ __properties = ["displayName", "description", "portfolioEntityIds", "recipeIds", "currencies", "transactionDateWindows", "comparisonRulesetIds", "breakCodeSource"]
43
+
44
+ class Config:
45
+ """Pydantic configuration"""
46
+ allow_population_by_field_name = True
47
+ validate_assignment = True
48
+
49
+ def to_str(self) -> str:
50
+ """Returns the string representation of the model using alias"""
51
+ return pprint.pformat(self.dict(by_alias=True))
52
+
53
+ def to_json(self) -> str:
54
+ """Returns the JSON representation of the model using alias"""
55
+ return json.dumps(self.to_dict())
56
+
57
+ @classmethod
58
+ def from_json(cls, json_str: str) -> UpdateGroupReconciliationDefinitionRequest:
59
+ """Create an instance of UpdateGroupReconciliationDefinitionRequest from a JSON string"""
60
+ return cls.from_dict(json.loads(json_str))
61
+
62
+ def to_dict(self):
63
+ """Returns the dictionary representation of the model using alias"""
64
+ _dict = self.dict(by_alias=True,
65
+ exclude={
66
+ },
67
+ exclude_none=True)
68
+ # override the default output from pydantic by calling `to_dict()` of portfolio_entity_ids
69
+ if self.portfolio_entity_ids:
70
+ _dict['portfolioEntityIds'] = self.portfolio_entity_ids.to_dict()
71
+ # override the default output from pydantic by calling `to_dict()` of recipe_ids
72
+ if self.recipe_ids:
73
+ _dict['recipeIds'] = self.recipe_ids.to_dict()
74
+ # override the default output from pydantic by calling `to_dict()` of currencies
75
+ if self.currencies:
76
+ _dict['currencies'] = self.currencies.to_dict()
77
+ # override the default output from pydantic by calling `to_dict()` of transaction_date_windows
78
+ if self.transaction_date_windows:
79
+ _dict['transactionDateWindows'] = self.transaction_date_windows.to_dict()
80
+ # override the default output from pydantic by calling `to_dict()` of comparison_ruleset_ids
81
+ if self.comparison_ruleset_ids:
82
+ _dict['comparisonRulesetIds'] = self.comparison_ruleset_ids.to_dict()
83
+ # override the default output from pydantic by calling `to_dict()` of break_code_source
84
+ if self.break_code_source:
85
+ _dict['breakCodeSource'] = self.break_code_source.to_dict()
86
+ return _dict
87
+
88
+ @classmethod
89
+ def from_dict(cls, obj: dict) -> UpdateGroupReconciliationDefinitionRequest:
90
+ """Create an instance of UpdateGroupReconciliationDefinitionRequest from a dict"""
91
+ if obj is None:
92
+ return None
93
+
94
+ if not isinstance(obj, dict):
95
+ return UpdateGroupReconciliationDefinitionRequest.parse_obj(obj)
96
+
97
+ _obj = UpdateGroupReconciliationDefinitionRequest.parse_obj({
98
+ "display_name": obj.get("displayName"),
99
+ "description": obj.get("description"),
100
+ "portfolio_entity_ids": GroupReconciliationDefinitionPortfolioEntityIds.from_dict(obj.get("portfolioEntityIds")) if obj.get("portfolioEntityIds") is not None else None,
101
+ "recipe_ids": GroupReconciliationDefinitionRecipeIds.from_dict(obj.get("recipeIds")) if obj.get("recipeIds") is not None else None,
102
+ "currencies": GroupReconciliationDefinitionCurrencies.from_dict(obj.get("currencies")) if obj.get("currencies") is not None else None,
103
+ "transaction_date_windows": TransactionDateWindows.from_dict(obj.get("transactionDateWindows")) if obj.get("transactionDateWindows") is not None else None,
104
+ "comparison_ruleset_ids": GroupReconciliationDefinitionComparisonRulesetIds.from_dict(obj.get("comparisonRulesetIds")) if obj.get("comparisonRulesetIds") is not None else None,
105
+ "break_code_source": BreakCodeSource.from_dict(obj.get("breakCodeSource")) if obj.get("breakCodeSource") is not None else None
106
+ })
107
+ return _obj
@@ -0,0 +1,84 @@
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
22
+ from pydantic.v1 import BaseModel, Field, StrictStr
23
+ from lusid.models.perpetual_property import PerpetualProperty
24
+
25
+ class UpsertReferencePortfolioConstituentPropertiesRequest(BaseModel):
26
+ """
27
+ UpsertReferencePortfolioConstituentPropertiesRequest
28
+ """
29
+ identifiers: Dict[str, StrictStr] = Field(..., description="A set of instrument identifiers that can resolve the constituent to a unique instrument.")
30
+ properties: Dict[str, PerpetualProperty] = Field(..., description="The updated collection of properties of the constituent.")
31
+ __properties = ["identifiers", "properties"]
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) -> UpsertReferencePortfolioConstituentPropertiesRequest:
48
+ """Create an instance of UpsertReferencePortfolioConstituentPropertiesRequest 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 each value in properties (dict)
58
+ _field_dict = {}
59
+ if self.properties:
60
+ for _key in self.properties:
61
+ if self.properties[_key]:
62
+ _field_dict[_key] = self.properties[_key].to_dict()
63
+ _dict['properties'] = _field_dict
64
+ return _dict
65
+
66
+ @classmethod
67
+ def from_dict(cls, obj: dict) -> UpsertReferencePortfolioConstituentPropertiesRequest:
68
+ """Create an instance of UpsertReferencePortfolioConstituentPropertiesRequest from a dict"""
69
+ if obj is None:
70
+ return None
71
+
72
+ if not isinstance(obj, dict):
73
+ return UpsertReferencePortfolioConstituentPropertiesRequest.parse_obj(obj)
74
+
75
+ _obj = UpsertReferencePortfolioConstituentPropertiesRequest.parse_obj({
76
+ "identifiers": obj.get("identifiers"),
77
+ "properties": dict(
78
+ (_k, PerpetualProperty.from_dict(_v))
79
+ for _k, _v in obj.get("properties").items()
80
+ )
81
+ if obj.get("properties") is not None
82
+ else None
83
+ })
84
+ return _obj
@@ -0,0 +1,115 @@
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, StrictStr, conlist
23
+ from lusid.models.link import Link
24
+ from lusid.models.perpetual_property import PerpetualProperty
25
+ from lusid.models.version import Version
26
+
27
+ class UpsertReferencePortfolioConstituentPropertiesResponse(BaseModel):
28
+ """
29
+ UpsertReferencePortfolioConstituentPropertiesResponse
30
+ """
31
+ href: Optional[StrictStr] = Field(None, description="The specific Uniform Resource Identifier (URI) for this resource at the requested effective and asAt datetime.")
32
+ version: Optional[Version] = None
33
+ properties: Optional[Dict[str, PerpetualProperty]] = Field(None, description="The updated collection of properties of the constituent.")
34
+ links: Optional[conlist(Link)] = None
35
+ __properties = ["href", "version", "properties", "links"]
36
+
37
+ class Config:
38
+ """Pydantic configuration"""
39
+ allow_population_by_field_name = True
40
+ validate_assignment = True
41
+
42
+ def to_str(self) -> str:
43
+ """Returns the string representation of the model using alias"""
44
+ return pprint.pformat(self.dict(by_alias=True))
45
+
46
+ def to_json(self) -> str:
47
+ """Returns the JSON representation of the model using alias"""
48
+ return json.dumps(self.to_dict())
49
+
50
+ @classmethod
51
+ def from_json(cls, json_str: str) -> UpsertReferencePortfolioConstituentPropertiesResponse:
52
+ """Create an instance of UpsertReferencePortfolioConstituentPropertiesResponse from a JSON string"""
53
+ return cls.from_dict(json.loads(json_str))
54
+
55
+ def to_dict(self):
56
+ """Returns the dictionary representation of the model using alias"""
57
+ _dict = self.dict(by_alias=True,
58
+ exclude={
59
+ },
60
+ exclude_none=True)
61
+ # override the default output from pydantic by calling `to_dict()` of version
62
+ if self.version:
63
+ _dict['version'] = self.version.to_dict()
64
+ # override the default output from pydantic by calling `to_dict()` of each value in properties (dict)
65
+ _field_dict = {}
66
+ if self.properties:
67
+ for _key in self.properties:
68
+ if self.properties[_key]:
69
+ _field_dict[_key] = self.properties[_key].to_dict()
70
+ _dict['properties'] = _field_dict
71
+ # override the default output from pydantic by calling `to_dict()` of each item in links (list)
72
+ _items = []
73
+ if self.links:
74
+ for _item in self.links:
75
+ if _item:
76
+ _items.append(_item.to_dict())
77
+ _dict['links'] = _items
78
+ # set to None if href (nullable) is None
79
+ # and __fields_set__ contains the field
80
+ if self.href is None and "href" in self.__fields_set__:
81
+ _dict['href'] = None
82
+
83
+ # set to None if properties (nullable) is None
84
+ # and __fields_set__ contains the field
85
+ if self.properties is None and "properties" in self.__fields_set__:
86
+ _dict['properties'] = None
87
+
88
+ # set to None if links (nullable) is None
89
+ # and __fields_set__ contains the field
90
+ if self.links is None and "links" in self.__fields_set__:
91
+ _dict['links'] = None
92
+
93
+ return _dict
94
+
95
+ @classmethod
96
+ def from_dict(cls, obj: dict) -> UpsertReferencePortfolioConstituentPropertiesResponse:
97
+ """Create an instance of UpsertReferencePortfolioConstituentPropertiesResponse from a dict"""
98
+ if obj is None:
99
+ return None
100
+
101
+ if not isinstance(obj, dict):
102
+ return UpsertReferencePortfolioConstituentPropertiesResponse.parse_obj(obj)
103
+
104
+ _obj = UpsertReferencePortfolioConstituentPropertiesResponse.parse_obj({
105
+ "href": obj.get("href"),
106
+ "version": Version.from_dict(obj.get("version")) if obj.get("version") is not None else None,
107
+ "properties": dict(
108
+ (_k, PerpetualProperty.from_dict(_v))
109
+ for _k, _v in obj.get("properties").items()
110
+ )
111
+ if obj.get("properties") is not None
112
+ else None,
113
+ "links": [Link.from_dict(_item) for _item in obj.get("links")] if obj.get("links") is not None else None
114
+ })
115
+ return _obj