lusid-sdk 2.1.174__py3-none-any.whl → 2.1.184__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of lusid-sdk might be problematic. Click here for more details.

lusid/__init__.py CHANGED
@@ -390,6 +390,7 @@ from lusid.models.expanded_group import ExpandedGroup
390
390
  from lusid.models.expiry_event import ExpiryEvent
391
391
  from lusid.models.fee import Fee
392
392
  from lusid.models.fee_accrual import FeeAccrual
393
+ from lusid.models.fee_properties import FeeProperties
393
394
  from lusid.models.fee_request import FeeRequest
394
395
  from lusid.models.fee_rule import FeeRule
395
396
  from lusid.models.fee_rule_upsert_request import FeeRuleUpsertRequest
@@ -1461,6 +1462,7 @@ __all__ = [
1461
1462
  "ExpiryEvent",
1462
1463
  "Fee",
1463
1464
  "FeeAccrual",
1465
+ "FeeProperties",
1464
1466
  "FeeRequest",
1465
1467
  "FeeRule",
1466
1468
  "FeeRuleUpsertRequest",
lusid/api/funds_api.py CHANGED
@@ -29,6 +29,7 @@ from typing import Dict, Optional
29
29
  from lusid.models.deleted_entity_response import DeletedEntityResponse
30
30
  from lusid.models.diary_entry import DiaryEntry
31
31
  from lusid.models.fee import Fee
32
+ from lusid.models.fee_properties import FeeProperties
32
33
  from lusid.models.fee_request import FeeRequest
33
34
  from lusid.models.fund import Fund
34
35
  from lusid.models.fund_properties import FundProperties
@@ -64,22 +65,22 @@ class FundsApi:
64
65
  self.api_client = api_client
65
66
 
66
67
  @overload
67
- async def accept_estimate_point(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the Fund.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the Fund. Together with the scope this uniquely identifies the Fund.")], valuation_point_data_request : Annotated[ValuationPointDataRequest, Field(..., description="The valuationPointDataRequest which contains the Diary Entry code for the Estimate Valuation Point to move to Candidate or Final state.")], **kwargs) -> ValuationPointDataResponse: # noqa: E501
68
+ async def accept_estimate_valuation_point(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the Fund.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the Fund. Together with the scope this uniquely identifies the Fund.")], valuation_point_data_request : Annotated[ValuationPointDataRequest, Field(..., description="The valuationPointDataRequest which contains the Diary Entry code for the Estimate Valuation Point to move to Candidate or Final state.")], **kwargs) -> ValuationPointDataResponse: # noqa: E501
68
69
  ...
69
70
 
70
71
  @overload
71
- def accept_estimate_point(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the Fund.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the Fund. Together with the scope this uniquely identifies the Fund.")], valuation_point_data_request : Annotated[ValuationPointDataRequest, Field(..., description="The valuationPointDataRequest which contains the Diary Entry code for the Estimate Valuation Point to move to Candidate or Final state.")], async_req: Optional[bool]=True, **kwargs) -> ValuationPointDataResponse: # noqa: E501
72
+ def accept_estimate_valuation_point(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the Fund.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the Fund. Together with the scope this uniquely identifies the Fund.")], valuation_point_data_request : Annotated[ValuationPointDataRequest, Field(..., description="The valuationPointDataRequest which contains the Diary Entry code for the Estimate Valuation Point to move to Candidate or Final state.")], async_req: Optional[bool]=True, **kwargs) -> ValuationPointDataResponse: # noqa: E501
72
73
  ...
73
74
 
74
75
  @validate_arguments
75
- def accept_estimate_point(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the Fund.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the Fund. Together with the scope this uniquely identifies the Fund.")], valuation_point_data_request : Annotated[ValuationPointDataRequest, Field(..., description="The valuationPointDataRequest which contains the Diary Entry code for the Estimate Valuation Point to move to Candidate or Final state.")], async_req: Optional[bool]=None, **kwargs) -> Union[ValuationPointDataResponse, Awaitable[ValuationPointDataResponse]]: # noqa: E501
76
- """[EXPERIMENTAL] AcceptEstimatePoint: Accepts an Estimate Valuation Point. # noqa: E501
76
+ def accept_estimate_valuation_point(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the Fund.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the Fund. Together with the scope this uniquely identifies the Fund.")], valuation_point_data_request : Annotated[ValuationPointDataRequest, Field(..., description="The valuationPointDataRequest which contains the Diary Entry code for the Estimate Valuation Point to move to Candidate or Final state.")], async_req: Optional[bool]=None, **kwargs) -> Union[ValuationPointDataResponse, Awaitable[ValuationPointDataResponse]]: # noqa: E501
77
+ """[EXPERIMENTAL] AcceptEstimateValuationPoint: Accepts an Estimate Valuation Point. # noqa: E501
77
78
 
78
79
  Accepts the specified estimate Valuation Point. Should the Valuation Point differ since the valuation Point was last run, status will be marked as 'Candidate', otherwise it will be marked as 'Final' # noqa: E501
79
80
  This method makes a synchronous HTTP request by default. To make an
80
81
  asynchronous HTTP request, please pass async_req=True
81
82
 
82
- >>> thread = api.accept_estimate_point(scope, code, valuation_point_data_request, async_req=True)
83
+ >>> thread = api.accept_estimate_valuation_point(scope, code, valuation_point_data_request, async_req=True)
83
84
  >>> result = thread.get()
84
85
 
85
86
  :param scope: The scope of the Fund. (required)
@@ -101,21 +102,21 @@ class FundsApi:
101
102
  """
102
103
  kwargs['_return_http_data_only'] = True
103
104
  if '_preload_content' in kwargs:
104
- message = "Error! Please call the accept_estimate_point_with_http_info method with `_preload_content` instead and obtain raw data from ApiResponse.raw_data" # noqa: E501
105
+ message = "Error! Please call the accept_estimate_valuation_point_with_http_info method with `_preload_content` instead and obtain raw data from ApiResponse.raw_data" # noqa: E501
105
106
  raise ValueError(message)
106
107
  if async_req is not None:
107
108
  kwargs['async_req'] = async_req
108
- return self.accept_estimate_point_with_http_info(scope, code, valuation_point_data_request, **kwargs) # noqa: E501
109
+ return self.accept_estimate_valuation_point_with_http_info(scope, code, valuation_point_data_request, **kwargs) # noqa: E501
109
110
 
110
111
  @validate_arguments
111
- def accept_estimate_point_with_http_info(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the Fund.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the Fund. Together with the scope this uniquely identifies the Fund.")], valuation_point_data_request : Annotated[ValuationPointDataRequest, Field(..., description="The valuationPointDataRequest which contains the Diary Entry code for the Estimate Valuation Point to move to Candidate or Final state.")], **kwargs) -> ApiResponse: # noqa: E501
112
- """[EXPERIMENTAL] AcceptEstimatePoint: Accepts an Estimate Valuation Point. # noqa: E501
112
+ def accept_estimate_valuation_point_with_http_info(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the Fund.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the Fund. Together with the scope this uniquely identifies the Fund.")], valuation_point_data_request : Annotated[ValuationPointDataRequest, Field(..., description="The valuationPointDataRequest which contains the Diary Entry code for the Estimate Valuation Point to move to Candidate or Final state.")], **kwargs) -> ApiResponse: # noqa: E501
113
+ """[EXPERIMENTAL] AcceptEstimateValuationPoint: Accepts an Estimate Valuation Point. # noqa: E501
113
114
 
114
115
  Accepts the specified estimate Valuation Point. Should the Valuation Point differ since the valuation Point was last run, status will be marked as 'Candidate', otherwise it will be marked as 'Final' # noqa: E501
115
116
  This method makes a synchronous HTTP request by default. To make an
116
117
  asynchronous HTTP request, please pass async_req=True
117
118
 
118
- >>> thread = api.accept_estimate_point_with_http_info(scope, code, valuation_point_data_request, async_req=True)
119
+ >>> thread = api.accept_estimate_valuation_point_with_http_info(scope, code, valuation_point_data_request, async_req=True)
119
120
  >>> result = thread.get()
120
121
 
121
122
  :param scope: The scope of the Fund. (required)
@@ -173,7 +174,7 @@ class FundsApi:
173
174
  if _key not in _all_params:
174
175
  raise ApiTypeError(
175
176
  "Got an unexpected keyword argument '%s'"
176
- " to method accept_estimate_point" % _key
177
+ " to method accept_estimate_valuation_point" % _key
177
178
  )
178
179
  _params[_key] = _val
179
180
  del _params['kwargs']
@@ -1079,22 +1080,22 @@ class FundsApi:
1079
1080
  _request_auth=_params.get('_request_auth'))
1080
1081
 
1081
1082
  @overload
1082
- async def finalise_candidate_valuation(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the Fund.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the Fund. Together with the scope this uniquely identifies the Fund.")], valuation_point_data_request : Annotated[ValuationPointDataRequest, Field(..., description="The valuationPointDataRequest which contains the diary entry code to mark as final.")], **kwargs) -> ValuationPointDataResponse: # noqa: E501
1083
+ async def finalise_candidate_valuation_point(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the Fund.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the Fund. Together with the scope this uniquely identifies the Fund.")], valuation_point_data_request : Annotated[ValuationPointDataRequest, Field(..., description="The valuationPointDataRequest which contains the diary entry code to mark as final.")], **kwargs) -> ValuationPointDataResponse: # noqa: E501
1083
1084
  ...
1084
1085
 
1085
1086
  @overload
1086
- def finalise_candidate_valuation(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the Fund.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the Fund. Together with the scope this uniquely identifies the Fund.")], valuation_point_data_request : Annotated[ValuationPointDataRequest, Field(..., description="The valuationPointDataRequest which contains the diary entry code to mark as final.")], async_req: Optional[bool]=True, **kwargs) -> ValuationPointDataResponse: # noqa: E501
1087
+ def finalise_candidate_valuation_point(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the Fund.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the Fund. Together with the scope this uniquely identifies the Fund.")], valuation_point_data_request : Annotated[ValuationPointDataRequest, Field(..., description="The valuationPointDataRequest which contains the diary entry code to mark as final.")], async_req: Optional[bool]=True, **kwargs) -> ValuationPointDataResponse: # noqa: E501
1087
1088
  ...
1088
1089
 
1089
1090
  @validate_arguments
1090
- def finalise_candidate_valuation(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the Fund.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the Fund. Together with the scope this uniquely identifies the Fund.")], valuation_point_data_request : Annotated[ValuationPointDataRequest, Field(..., description="The valuationPointDataRequest which contains the diary entry code to mark as final.")], async_req: Optional[bool]=None, **kwargs) -> Union[ValuationPointDataResponse, Awaitable[ValuationPointDataResponse]]: # noqa: E501
1091
- """[EXPERIMENTAL] FinaliseCandidateValuation: Finalise Candidate. # noqa: E501
1091
+ def finalise_candidate_valuation_point(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the Fund.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the Fund. Together with the scope this uniquely identifies the Fund.")], valuation_point_data_request : Annotated[ValuationPointDataRequest, Field(..., description="The valuationPointDataRequest which contains the diary entry code to mark as final.")], async_req: Optional[bool]=None, **kwargs) -> Union[ValuationPointDataResponse, Awaitable[ValuationPointDataResponse]]: # noqa: E501
1092
+ """[EXPERIMENTAL] FinaliseCandidateValuationPoint: Finalise Candidate. # noqa: E501
1092
1093
 
1093
1094
  Moves a 'Candidate' status Valuation Point to status 'Final'. # noqa: E501
1094
1095
  This method makes a synchronous HTTP request by default. To make an
1095
1096
  asynchronous HTTP request, please pass async_req=True
1096
1097
 
1097
- >>> thread = api.finalise_candidate_valuation(scope, code, valuation_point_data_request, async_req=True)
1098
+ >>> thread = api.finalise_candidate_valuation_point(scope, code, valuation_point_data_request, async_req=True)
1098
1099
  >>> result = thread.get()
1099
1100
 
1100
1101
  :param scope: The scope of the Fund. (required)
@@ -1116,21 +1117,21 @@ class FundsApi:
1116
1117
  """
1117
1118
  kwargs['_return_http_data_only'] = True
1118
1119
  if '_preload_content' in kwargs:
1119
- message = "Error! Please call the finalise_candidate_valuation_with_http_info method with `_preload_content` instead and obtain raw data from ApiResponse.raw_data" # noqa: E501
1120
+ message = "Error! Please call the finalise_candidate_valuation_point_with_http_info method with `_preload_content` instead and obtain raw data from ApiResponse.raw_data" # noqa: E501
1120
1121
  raise ValueError(message)
1121
1122
  if async_req is not None:
1122
1123
  kwargs['async_req'] = async_req
1123
- return self.finalise_candidate_valuation_with_http_info(scope, code, valuation_point_data_request, **kwargs) # noqa: E501
1124
+ return self.finalise_candidate_valuation_point_with_http_info(scope, code, valuation_point_data_request, **kwargs) # noqa: E501
1124
1125
 
1125
1126
  @validate_arguments
1126
- def finalise_candidate_valuation_with_http_info(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the Fund.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the Fund. Together with the scope this uniquely identifies the Fund.")], valuation_point_data_request : Annotated[ValuationPointDataRequest, Field(..., description="The valuationPointDataRequest which contains the diary entry code to mark as final.")], **kwargs) -> ApiResponse: # noqa: E501
1127
- """[EXPERIMENTAL] FinaliseCandidateValuation: Finalise Candidate. # noqa: E501
1127
+ def finalise_candidate_valuation_point_with_http_info(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the Fund.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the Fund. Together with the scope this uniquely identifies the Fund.")], valuation_point_data_request : Annotated[ValuationPointDataRequest, Field(..., description="The valuationPointDataRequest which contains the diary entry code to mark as final.")], **kwargs) -> ApiResponse: # noqa: E501
1128
+ """[EXPERIMENTAL] FinaliseCandidateValuationPoint: Finalise Candidate. # noqa: E501
1128
1129
 
1129
1130
  Moves a 'Candidate' status Valuation Point to status 'Final'. # noqa: E501
1130
1131
  This method makes a synchronous HTTP request by default. To make an
1131
1132
  asynchronous HTTP request, please pass async_req=True
1132
1133
 
1133
- >>> thread = api.finalise_candidate_valuation_with_http_info(scope, code, valuation_point_data_request, async_req=True)
1134
+ >>> thread = api.finalise_candidate_valuation_point_with_http_info(scope, code, valuation_point_data_request, async_req=True)
1134
1135
  >>> result = thread.get()
1135
1136
 
1136
1137
  :param scope: The scope of the Fund. (required)
@@ -1188,7 +1189,7 @@ class FundsApi:
1188
1189
  if _key not in _all_params:
1189
1190
  raise ApiTypeError(
1190
1191
  "Got an unexpected keyword argument '%s'"
1191
- " to method finalise_candidate_valuation" % _key
1192
+ " to method finalise_candidate_valuation_point" % _key
1192
1193
  )
1193
1194
  _params[_key] = _val
1194
1195
  del _params['kwargs']
@@ -1803,7 +1804,7 @@ class FundsApi:
1803
1804
  }
1804
1805
 
1805
1806
  return self.api_client.call_api(
1806
- '/api/funds/{scope}/{code}/valuationpoints', 'POST',
1807
+ '/api/funds/{scope}/{code}/valuationpoints/$query', 'POST',
1807
1808
  _path_params,
1808
1809
  _query_params,
1809
1810
  _header_params,
@@ -2600,29 +2601,205 @@ class FundsApi:
2600
2601
  _request_auth=_params.get('_request_auth'))
2601
2602
 
2602
2603
  @overload
2603
- async def upsert_fund_properties(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the Fund to update or insert the properties onto.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the Fund to update or insert the properties onto. Together with the scope this uniquely identifies the Fund.")], request_body : Annotated[Optional[Dict[str, ModelProperty]], Field(description="The properties to be updated or inserted onto the Fund. Each property in the request must be keyed by its unique property key. This has the format {domain}/{scope}/{code} e.g. \"Fund/Manager/Id\".")] = None, **kwargs) -> FundProperties: # noqa: E501
2604
+ async def upsert_diary_entry_type_valuation_point(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the Fund.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the Fund. Together with the scope this uniquely identifies the Fund.")], upsert_valuation_point_request : Annotated[UpsertValuationPointRequest, Field(..., description="The Valuation Point Estimate definition to Upsert")], **kwargs) -> DiaryEntry: # noqa: E501
2604
2605
  ...
2605
2606
 
2606
2607
  @overload
2607
- def upsert_fund_properties(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the Fund to update or insert the properties onto.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the Fund to update or insert the properties onto. Together with the scope this uniquely identifies the Fund.")], request_body : Annotated[Optional[Dict[str, ModelProperty]], Field(description="The properties to be updated or inserted onto the Fund. Each property in the request must be keyed by its unique property key. This has the format {domain}/{scope}/{code} e.g. \"Fund/Manager/Id\".")] = None, async_req: Optional[bool]=True, **kwargs) -> FundProperties: # noqa: E501
2608
+ def upsert_diary_entry_type_valuation_point(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the Fund.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the Fund. Together with the scope this uniquely identifies the Fund.")], upsert_valuation_point_request : Annotated[UpsertValuationPointRequest, Field(..., description="The Valuation Point Estimate definition to Upsert")], async_req: Optional[bool]=True, **kwargs) -> DiaryEntry: # noqa: E501
2608
2609
  ...
2609
2610
 
2610
2611
  @validate_arguments
2611
- def upsert_fund_properties(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the Fund to update or insert the properties onto.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the Fund to update or insert the properties onto. Together with the scope this uniquely identifies the Fund.")], request_body : Annotated[Optional[Dict[str, ModelProperty]], Field(description="The properties to be updated or inserted onto the Fund. Each property in the request must be keyed by its unique property key. This has the format {domain}/{scope}/{code} e.g. \"Fund/Manager/Id\".")] = None, async_req: Optional[bool]=None, **kwargs) -> Union[FundProperties, Awaitable[FundProperties]]: # noqa: E501
2612
- """[EXPERIMENTAL] UpsertFundProperties: Upsert Fund properties. # noqa: E501
2612
+ def upsert_diary_entry_type_valuation_point(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the Fund.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the Fund. Together with the scope this uniquely identifies the Fund.")], upsert_valuation_point_request : Annotated[UpsertValuationPointRequest, Field(..., description="The Valuation Point Estimate definition to Upsert")], async_req: Optional[bool]=None, **kwargs) -> Union[DiaryEntry, Awaitable[DiaryEntry]]: # noqa: E501
2613
+ """[EXPERIMENTAL] UpsertDiaryEntryTypeValuationPoint: Upsert Valuation Point. # noqa: E501
2613
2614
 
2614
- Update or insert one or more properties onto a single Fund. A property will be updated if it already exists and inserted if it does not. All properties must be of the domain 'Fund'. Upserting a property that exists for an Fund, with a null value, will delete the instance of the property for that group. Properties have an <i>effectiveFrom</i> datetime for which the property is valid, and an <i>effectiveUntil</i> datetime until which the property is valid. Not supplying an <i>effectiveUntil</i> datetime results in the property being valid indefinitely, or until the next <i>effectiveFrom</i> datetime of the property. # noqa: E501
2615
+ Update or insert the estimate Valuation Point. If the Valuation Point does not exist, this method will create it in estimate state. If the Valuation Point already exists and is in estimate state, the Valuation Point will be updated with the newly specified information in this request. # noqa: E501
2615
2616
  This method makes a synchronous HTTP request by default. To make an
2616
2617
  asynchronous HTTP request, please pass async_req=True
2617
2618
 
2618
- >>> thread = api.upsert_fund_properties(scope, code, request_body, async_req=True)
2619
+ >>> thread = api.upsert_diary_entry_type_valuation_point(scope, code, upsert_valuation_point_request, async_req=True)
2619
2620
  >>> result = thread.get()
2620
2621
 
2621
- :param scope: The scope of the Fund to update or insert the properties onto. (required)
2622
+ :param scope: The scope of the Fund. (required)
2622
2623
  :type scope: str
2623
- :param code: The code of the Fund to update or insert the properties onto. Together with the scope this uniquely identifies the Fund. (required)
2624
+ :param code: The code of the Fund. Together with the scope this uniquely identifies the Fund. (required)
2624
2625
  :type code: str
2625
- :param request_body: The properties to be updated or inserted onto the Fund. Each property in the request must be keyed by its unique property key. This has the format {domain}/{scope}/{code} e.g. \"Fund/Manager/Id\".
2626
+ :param upsert_valuation_point_request: The Valuation Point Estimate definition to Upsert (required)
2627
+ :type upsert_valuation_point_request: UpsertValuationPointRequest
2628
+ :param async_req: Whether to execute the request asynchronously.
2629
+ :type async_req: bool, optional
2630
+ :param _request_timeout: timeout setting for this request.
2631
+ If one number provided, it will be total request
2632
+ timeout. It can also be a pair (tuple) of
2633
+ (connection, read) timeouts.
2634
+ :return: Returns the result object.
2635
+ If the method is called asynchronously,
2636
+ returns the request thread.
2637
+ :rtype: DiaryEntry
2638
+ """
2639
+ kwargs['_return_http_data_only'] = True
2640
+ if '_preload_content' in kwargs:
2641
+ message = "Error! Please call the upsert_diary_entry_type_valuation_point_with_http_info method with `_preload_content` instead and obtain raw data from ApiResponse.raw_data" # noqa: E501
2642
+ raise ValueError(message)
2643
+ if async_req is not None:
2644
+ kwargs['async_req'] = async_req
2645
+ return self.upsert_diary_entry_type_valuation_point_with_http_info(scope, code, upsert_valuation_point_request, **kwargs) # noqa: E501
2646
+
2647
+ @validate_arguments
2648
+ def upsert_diary_entry_type_valuation_point_with_http_info(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the Fund.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the Fund. Together with the scope this uniquely identifies the Fund.")], upsert_valuation_point_request : Annotated[UpsertValuationPointRequest, Field(..., description="The Valuation Point Estimate definition to Upsert")], **kwargs) -> ApiResponse: # noqa: E501
2649
+ """[EXPERIMENTAL] UpsertDiaryEntryTypeValuationPoint: Upsert Valuation Point. # noqa: E501
2650
+
2651
+ Update or insert the estimate Valuation Point. If the Valuation Point does not exist, this method will create it in estimate state. If the Valuation Point already exists and is in estimate state, the Valuation Point will be updated with the newly specified information in this request. # noqa: E501
2652
+ This method makes a synchronous HTTP request by default. To make an
2653
+ asynchronous HTTP request, please pass async_req=True
2654
+
2655
+ >>> thread = api.upsert_diary_entry_type_valuation_point_with_http_info(scope, code, upsert_valuation_point_request, async_req=True)
2656
+ >>> result = thread.get()
2657
+
2658
+ :param scope: The scope of the Fund. (required)
2659
+ :type scope: str
2660
+ :param code: The code of the Fund. Together with the scope this uniquely identifies the Fund. (required)
2661
+ :type code: str
2662
+ :param upsert_valuation_point_request: The Valuation Point Estimate definition to Upsert (required)
2663
+ :type upsert_valuation_point_request: UpsertValuationPointRequest
2664
+ :param async_req: Whether to execute the request asynchronously.
2665
+ :type async_req: bool, optional
2666
+ :param _preload_content: if False, the ApiResponse.data will
2667
+ be set to none and raw_data will store the
2668
+ HTTP response body without reading/decoding.
2669
+ Default is True.
2670
+ :type _preload_content: bool, optional
2671
+ :param _return_http_data_only: response data instead of ApiResponse
2672
+ object with status code, headers, etc
2673
+ :type _return_http_data_only: bool, optional
2674
+ :param _request_timeout: timeout setting for this request. If one
2675
+ number provided, it will be total request
2676
+ timeout. It can also be a pair (tuple) of
2677
+ (connection, read) timeouts.
2678
+ :param _request_auth: set to override the auth_settings for an a single
2679
+ request; this effectively ignores the authentication
2680
+ in the spec for a single request.
2681
+ :type _request_auth: dict, optional
2682
+ :type _content_type: string, optional: force content-type for the request
2683
+ :return: Returns the result object.
2684
+ If the method is called asynchronously,
2685
+ returns the request thread.
2686
+ :rtype: tuple(DiaryEntry, status_code(int), headers(HTTPHeaderDict))
2687
+ """
2688
+
2689
+ _params = locals()
2690
+
2691
+ _all_params = [
2692
+ 'scope',
2693
+ 'code',
2694
+ 'upsert_valuation_point_request'
2695
+ ]
2696
+ _all_params.extend(
2697
+ [
2698
+ 'async_req',
2699
+ '_return_http_data_only',
2700
+ '_preload_content',
2701
+ '_request_timeout',
2702
+ '_request_auth',
2703
+ '_content_type',
2704
+ '_headers'
2705
+ ]
2706
+ )
2707
+
2708
+ # validate the arguments
2709
+ for _key, _val in _params['kwargs'].items():
2710
+ if _key not in _all_params:
2711
+ raise ApiTypeError(
2712
+ "Got an unexpected keyword argument '%s'"
2713
+ " to method upsert_diary_entry_type_valuation_point" % _key
2714
+ )
2715
+ _params[_key] = _val
2716
+ del _params['kwargs']
2717
+
2718
+ _collection_formats = {}
2719
+
2720
+ # process the path parameters
2721
+ _path_params = {}
2722
+ if _params['scope']:
2723
+ _path_params['scope'] = _params['scope']
2724
+
2725
+ if _params['code']:
2726
+ _path_params['code'] = _params['code']
2727
+
2728
+
2729
+ # process the query parameters
2730
+ _query_params = []
2731
+ # process the header parameters
2732
+ _header_params = dict(_params.get('_headers', {}))
2733
+ # process the form parameters
2734
+ _form_params = []
2735
+ _files = {}
2736
+ # process the body parameter
2737
+ _body_params = None
2738
+ if _params['upsert_valuation_point_request'] is not None:
2739
+ _body_params = _params['upsert_valuation_point_request']
2740
+
2741
+ # set the HTTP header `Accept`
2742
+ _header_params['Accept'] = self.api_client.select_header_accept(
2743
+ ['text/plain', 'application/json', 'text/json']) # noqa: E501
2744
+
2745
+ # set the HTTP header `Content-Type`
2746
+ _content_types_list = _params.get('_content_type',
2747
+ self.api_client.select_header_content_type(
2748
+ ['application/json-patch+json', 'application/json', 'text/json', 'application/*+json']))
2749
+ if _content_types_list:
2750
+ _header_params['Content-Type'] = _content_types_list
2751
+
2752
+ # authentication setting
2753
+ _auth_settings = ['oauth2'] # noqa: E501
2754
+
2755
+ _response_types_map = {
2756
+ '200': "DiaryEntry",
2757
+ '400': "LusidValidationProblemDetails",
2758
+ }
2759
+
2760
+ return self.api_client.call_api(
2761
+ '/api/funds/{scope}/{code}/valuationpoints/$upsert', 'POST',
2762
+ _path_params,
2763
+ _query_params,
2764
+ _header_params,
2765
+ body=_body_params,
2766
+ post_params=_form_params,
2767
+ files=_files,
2768
+ response_types_map=_response_types_map,
2769
+ auth_settings=_auth_settings,
2770
+ async_req=_params.get('async_req'),
2771
+ _return_http_data_only=_params.get('_return_http_data_only'), # noqa: E501
2772
+ _preload_content=_params.get('_preload_content', True),
2773
+ _request_timeout=_params.get('_request_timeout'),
2774
+ collection_formats=_collection_formats,
2775
+ _request_auth=_params.get('_request_auth'))
2776
+
2777
+ @overload
2778
+ async def upsert_fee_properties(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the Fund.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the Fund. Together with the scope this uniquely identifies the Fund.")], fee_code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the Fee to update or insert the properties onto.")], request_body : Annotated[Optional[Dict[str, ModelProperty]], Field(description="The properties to be updated or inserted onto the Fee. Each property in the request must be keyed by its unique property key. This has the format {domain}/{scope}/{code} e.g. \"Fee/Manager/Id\".")] = None, **kwargs) -> FeeProperties: # noqa: E501
2779
+ ...
2780
+
2781
+ @overload
2782
+ def upsert_fee_properties(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the Fund.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the Fund. Together with the scope this uniquely identifies the Fund.")], fee_code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the Fee to update or insert the properties onto.")], request_body : Annotated[Optional[Dict[str, ModelProperty]], Field(description="The properties to be updated or inserted onto the Fee. Each property in the request must be keyed by its unique property key. This has the format {domain}/{scope}/{code} e.g. \"Fee/Manager/Id\".")] = None, async_req: Optional[bool]=True, **kwargs) -> FeeProperties: # noqa: E501
2783
+ ...
2784
+
2785
+ @validate_arguments
2786
+ def upsert_fee_properties(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the Fund.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the Fund. Together with the scope this uniquely identifies the Fund.")], fee_code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the Fee to update or insert the properties onto.")], request_body : Annotated[Optional[Dict[str, ModelProperty]], Field(description="The properties to be updated or inserted onto the Fee. Each property in the request must be keyed by its unique property key. This has the format {domain}/{scope}/{code} e.g. \"Fee/Manager/Id\".")] = None, async_req: Optional[bool]=None, **kwargs) -> Union[FeeProperties, Awaitable[FeeProperties]]: # noqa: E501
2787
+ """[EXPERIMENTAL] UpsertFeeProperties: Upsert Fee properties. # noqa: E501
2788
+
2789
+ Update or insert one or more properties onto a single Fee. A property will be updated if it already exists and inserted if it does not. All properties must be of the domain 'Fee'. Upserting a property that exists for an Fee, with a null value, will delete the instance of the property for that group. Properties have an <i>effectiveFrom</i> datetime for which the property is valid, and an <i>effectiveUntil</i> datetime until which the property is valid. Not supplying an <i>effectiveUntil</i> datetime results in the property being valid indefinitely, or until the next <i>effectiveFrom</i> datetime of the property. # noqa: E501
2790
+ This method makes a synchronous HTTP request by default. To make an
2791
+ asynchronous HTTP request, please pass async_req=True
2792
+
2793
+ >>> thread = api.upsert_fee_properties(scope, code, fee_code, request_body, async_req=True)
2794
+ >>> result = thread.get()
2795
+
2796
+ :param scope: The scope of the Fund. (required)
2797
+ :type scope: str
2798
+ :param code: The code of the Fund. Together with the scope this uniquely identifies the Fund. (required)
2799
+ :type code: str
2800
+ :param fee_code: The code of the Fee to update or insert the properties onto. (required)
2801
+ :type fee_code: str
2802
+ :param request_body: The properties to be updated or inserted onto the Fee. Each property in the request must be keyed by its unique property key. This has the format {domain}/{scope}/{code} e.g. \"Fee/Manager/Id\".
2626
2803
  :type request_body: Dict[str, ModelProperty]
2627
2804
  :param async_req: Whether to execute the request asynchronously.
2628
2805
  :type async_req: bool, optional
@@ -2633,32 +2810,34 @@ class FundsApi:
2633
2810
  :return: Returns the result object.
2634
2811
  If the method is called asynchronously,
2635
2812
  returns the request thread.
2636
- :rtype: FundProperties
2813
+ :rtype: FeeProperties
2637
2814
  """
2638
2815
  kwargs['_return_http_data_only'] = True
2639
2816
  if '_preload_content' in kwargs:
2640
- message = "Error! Please call the upsert_fund_properties_with_http_info method with `_preload_content` instead and obtain raw data from ApiResponse.raw_data" # noqa: E501
2817
+ message = "Error! Please call the upsert_fee_properties_with_http_info method with `_preload_content` instead and obtain raw data from ApiResponse.raw_data" # noqa: E501
2641
2818
  raise ValueError(message)
2642
2819
  if async_req is not None:
2643
2820
  kwargs['async_req'] = async_req
2644
- return self.upsert_fund_properties_with_http_info(scope, code, request_body, **kwargs) # noqa: E501
2821
+ return self.upsert_fee_properties_with_http_info(scope, code, fee_code, request_body, **kwargs) # noqa: E501
2645
2822
 
2646
2823
  @validate_arguments
2647
- def upsert_fund_properties_with_http_info(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the Fund to update or insert the properties onto.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the Fund to update or insert the properties onto. Together with the scope this uniquely identifies the Fund.")], request_body : Annotated[Optional[Dict[str, ModelProperty]], Field(description="The properties to be updated or inserted onto the Fund. Each property in the request must be keyed by its unique property key. This has the format {domain}/{scope}/{code} e.g. \"Fund/Manager/Id\".")] = None, **kwargs) -> ApiResponse: # noqa: E501
2648
- """[EXPERIMENTAL] UpsertFundProperties: Upsert Fund properties. # noqa: E501
2824
+ def upsert_fee_properties_with_http_info(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the Fund.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the Fund. Together with the scope this uniquely identifies the Fund.")], fee_code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the Fee to update or insert the properties onto.")], request_body : Annotated[Optional[Dict[str, ModelProperty]], Field(description="The properties to be updated or inserted onto the Fee. Each property in the request must be keyed by its unique property key. This has the format {domain}/{scope}/{code} e.g. \"Fee/Manager/Id\".")] = None, **kwargs) -> ApiResponse: # noqa: E501
2825
+ """[EXPERIMENTAL] UpsertFeeProperties: Upsert Fee properties. # noqa: E501
2649
2826
 
2650
- Update or insert one or more properties onto a single Fund. A property will be updated if it already exists and inserted if it does not. All properties must be of the domain 'Fund'. Upserting a property that exists for an Fund, with a null value, will delete the instance of the property for that group. Properties have an <i>effectiveFrom</i> datetime for which the property is valid, and an <i>effectiveUntil</i> datetime until which the property is valid. Not supplying an <i>effectiveUntil</i> datetime results in the property being valid indefinitely, or until the next <i>effectiveFrom</i> datetime of the property. # noqa: E501
2827
+ Update or insert one or more properties onto a single Fee. A property will be updated if it already exists and inserted if it does not. All properties must be of the domain 'Fee'. Upserting a property that exists for an Fee, with a null value, will delete the instance of the property for that group. Properties have an <i>effectiveFrom</i> datetime for which the property is valid, and an <i>effectiveUntil</i> datetime until which the property is valid. Not supplying an <i>effectiveUntil</i> datetime results in the property being valid indefinitely, or until the next <i>effectiveFrom</i> datetime of the property. # noqa: E501
2651
2828
  This method makes a synchronous HTTP request by default. To make an
2652
2829
  asynchronous HTTP request, please pass async_req=True
2653
2830
 
2654
- >>> thread = api.upsert_fund_properties_with_http_info(scope, code, request_body, async_req=True)
2831
+ >>> thread = api.upsert_fee_properties_with_http_info(scope, code, fee_code, request_body, async_req=True)
2655
2832
  >>> result = thread.get()
2656
2833
 
2657
- :param scope: The scope of the Fund to update or insert the properties onto. (required)
2834
+ :param scope: The scope of the Fund. (required)
2658
2835
  :type scope: str
2659
- :param code: The code of the Fund to update or insert the properties onto. Together with the scope this uniquely identifies the Fund. (required)
2836
+ :param code: The code of the Fund. Together with the scope this uniquely identifies the Fund. (required)
2660
2837
  :type code: str
2661
- :param request_body: The properties to be updated or inserted onto the Fund. Each property in the request must be keyed by its unique property key. This has the format {domain}/{scope}/{code} e.g. \"Fund/Manager/Id\".
2838
+ :param fee_code: The code of the Fee to update or insert the properties onto. (required)
2839
+ :type fee_code: str
2840
+ :param request_body: The properties to be updated or inserted onto the Fee. Each property in the request must be keyed by its unique property key. This has the format {domain}/{scope}/{code} e.g. \"Fee/Manager/Id\".
2662
2841
  :type request_body: Dict[str, ModelProperty]
2663
2842
  :param async_req: Whether to execute the request asynchronously.
2664
2843
  :type async_req: bool, optional
@@ -2682,7 +2861,7 @@ class FundsApi:
2682
2861
  :return: Returns the result object.
2683
2862
  If the method is called asynchronously,
2684
2863
  returns the request thread.
2685
- :rtype: tuple(FundProperties, status_code(int), headers(HTTPHeaderDict))
2864
+ :rtype: tuple(FeeProperties, status_code(int), headers(HTTPHeaderDict))
2686
2865
  """
2687
2866
 
2688
2867
  _params = locals()
@@ -2690,6 +2869,7 @@ class FundsApi:
2690
2869
  _all_params = [
2691
2870
  'scope',
2692
2871
  'code',
2872
+ 'fee_code',
2693
2873
  'request_body'
2694
2874
  ]
2695
2875
  _all_params.extend(
@@ -2709,7 +2889,7 @@ class FundsApi:
2709
2889
  if _key not in _all_params:
2710
2890
  raise ApiTypeError(
2711
2891
  "Got an unexpected keyword argument '%s'"
2712
- " to method upsert_fund_properties" % _key
2892
+ " to method upsert_fee_properties" % _key
2713
2893
  )
2714
2894
  _params[_key] = _val
2715
2895
  del _params['kwargs']
@@ -2724,6 +2904,9 @@ class FundsApi:
2724
2904
  if _params['code']:
2725
2905
  _path_params['code'] = _params['code']
2726
2906
 
2907
+ if _params['fee_code']:
2908
+ _path_params['feeCode'] = _params['fee_code']
2909
+
2727
2910
 
2728
2911
  # process the query parameters
2729
2912
  _query_params = []
@@ -2752,12 +2935,12 @@ class FundsApi:
2752
2935
  _auth_settings = ['oauth2'] # noqa: E501
2753
2936
 
2754
2937
  _response_types_map = {
2755
- '200': "FundProperties",
2938
+ '200': "FeeProperties",
2756
2939
  '400': "LusidValidationProblemDetails",
2757
2940
  }
2758
2941
 
2759
2942
  return self.api_client.call_api(
2760
- '/api/funds/{scope}/{code}/properties/$upsert', 'POST',
2943
+ '/api/funds/{scope}/{code}/fees/{feeCode}/properties/$upsert', 'POST',
2761
2944
  _path_params,
2762
2945
  _query_params,
2763
2946
  _header_params,
@@ -2774,30 +2957,30 @@ class FundsApi:
2774
2957
  _request_auth=_params.get('_request_auth'))
2775
2958
 
2776
2959
  @overload
2777
- async def upsert_valuation_point(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the Fund.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the Fund. Together with the scope this uniquely identifies the Fund.")], upsert_valuation_point_request : Annotated[UpsertValuationPointRequest, Field(..., description="The Valuation Point Estimate definition to Upsert")], **kwargs) -> DiaryEntry: # noqa: E501
2960
+ async def upsert_fund_properties(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the Fund to update or insert the properties onto.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the Fund to update or insert the properties onto. Together with the scope this uniquely identifies the Fund.")], request_body : Annotated[Optional[Dict[str, ModelProperty]], Field(description="The properties to be updated or inserted onto the Fund. Each property in the request must be keyed by its unique property key. This has the format {domain}/{scope}/{code} e.g. \"Fund/Manager/Id\".")] = None, **kwargs) -> FundProperties: # noqa: E501
2778
2961
  ...
2779
2962
 
2780
2963
  @overload
2781
- def upsert_valuation_point(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the Fund.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the Fund. Together with the scope this uniquely identifies the Fund.")], upsert_valuation_point_request : Annotated[UpsertValuationPointRequest, Field(..., description="The Valuation Point Estimate definition to Upsert")], async_req: Optional[bool]=True, **kwargs) -> DiaryEntry: # noqa: E501
2964
+ def upsert_fund_properties(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the Fund to update or insert the properties onto.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the Fund to update or insert the properties onto. Together with the scope this uniquely identifies the Fund.")], request_body : Annotated[Optional[Dict[str, ModelProperty]], Field(description="The properties to be updated or inserted onto the Fund. Each property in the request must be keyed by its unique property key. This has the format {domain}/{scope}/{code} e.g. \"Fund/Manager/Id\".")] = None, async_req: Optional[bool]=True, **kwargs) -> FundProperties: # noqa: E501
2782
2965
  ...
2783
2966
 
2784
2967
  @validate_arguments
2785
- def upsert_valuation_point(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the Fund.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the Fund. Together with the scope this uniquely identifies the Fund.")], upsert_valuation_point_request : Annotated[UpsertValuationPointRequest, Field(..., description="The Valuation Point Estimate definition to Upsert")], async_req: Optional[bool]=None, **kwargs) -> Union[DiaryEntry, Awaitable[DiaryEntry]]: # noqa: E501
2786
- """[EXPERIMENTAL] UpsertValuationPoint: Upsert Valuation Point. # noqa: E501
2968
+ def upsert_fund_properties(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the Fund to update or insert the properties onto.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the Fund to update or insert the properties onto. Together with the scope this uniquely identifies the Fund.")], request_body : Annotated[Optional[Dict[str, ModelProperty]], Field(description="The properties to be updated or inserted onto the Fund. Each property in the request must be keyed by its unique property key. This has the format {domain}/{scope}/{code} e.g. \"Fund/Manager/Id\".")] = None, async_req: Optional[bool]=None, **kwargs) -> Union[FundProperties, Awaitable[FundProperties]]: # noqa: E501
2969
+ """[EXPERIMENTAL] UpsertFundProperties: Upsert Fund properties. # noqa: E501
2787
2970
 
2788
- Update or insert the estimate Valuation Point. If the Valuation Point does not exist, this method will create it in estimate state. If the Valuation Point already exists and is in estimate state, the Valuation Point will be updated with the newly specified information in this request. # noqa: E501
2971
+ Update or insert one or more properties onto a single Fund. A property will be updated if it already exists and inserted if it does not. All properties must be of the domain 'Fund'. Upserting a property that exists for an Fund, with a null value, will delete the instance of the property for that group. Properties have an <i>effectiveFrom</i> datetime for which the property is valid, and an <i>effectiveUntil</i> datetime until which the property is valid. Not supplying an <i>effectiveUntil</i> datetime results in the property being valid indefinitely, or until the next <i>effectiveFrom</i> datetime of the property. # noqa: E501
2789
2972
  This method makes a synchronous HTTP request by default. To make an
2790
2973
  asynchronous HTTP request, please pass async_req=True
2791
2974
 
2792
- >>> thread = api.upsert_valuation_point(scope, code, upsert_valuation_point_request, async_req=True)
2975
+ >>> thread = api.upsert_fund_properties(scope, code, request_body, async_req=True)
2793
2976
  >>> result = thread.get()
2794
2977
 
2795
- :param scope: The scope of the Fund. (required)
2978
+ :param scope: The scope of the Fund to update or insert the properties onto. (required)
2796
2979
  :type scope: str
2797
- :param code: The code of the Fund. Together with the scope this uniquely identifies the Fund. (required)
2980
+ :param code: The code of the Fund to update or insert the properties onto. Together with the scope this uniquely identifies the Fund. (required)
2798
2981
  :type code: str
2799
- :param upsert_valuation_point_request: The Valuation Point Estimate definition to Upsert (required)
2800
- :type upsert_valuation_point_request: UpsertValuationPointRequest
2982
+ :param request_body: The properties to be updated or inserted onto the Fund. Each property in the request must be keyed by its unique property key. This has the format {domain}/{scope}/{code} e.g. \"Fund/Manager/Id\".
2983
+ :type request_body: Dict[str, ModelProperty]
2801
2984
  :param async_req: Whether to execute the request asynchronously.
2802
2985
  :type async_req: bool, optional
2803
2986
  :param _request_timeout: timeout setting for this request.
@@ -2807,33 +2990,33 @@ class FundsApi:
2807
2990
  :return: Returns the result object.
2808
2991
  If the method is called asynchronously,
2809
2992
  returns the request thread.
2810
- :rtype: DiaryEntry
2993
+ :rtype: FundProperties
2811
2994
  """
2812
2995
  kwargs['_return_http_data_only'] = True
2813
2996
  if '_preload_content' in kwargs:
2814
- message = "Error! Please call the upsert_valuation_point_with_http_info method with `_preload_content` instead and obtain raw data from ApiResponse.raw_data" # noqa: E501
2997
+ message = "Error! Please call the upsert_fund_properties_with_http_info method with `_preload_content` instead and obtain raw data from ApiResponse.raw_data" # noqa: E501
2815
2998
  raise ValueError(message)
2816
2999
  if async_req is not None:
2817
3000
  kwargs['async_req'] = async_req
2818
- return self.upsert_valuation_point_with_http_info(scope, code, upsert_valuation_point_request, **kwargs) # noqa: E501
3001
+ return self.upsert_fund_properties_with_http_info(scope, code, request_body, **kwargs) # noqa: E501
2819
3002
 
2820
3003
  @validate_arguments
2821
- def upsert_valuation_point_with_http_info(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the Fund.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the Fund. Together with the scope this uniquely identifies the Fund.")], upsert_valuation_point_request : Annotated[UpsertValuationPointRequest, Field(..., description="The Valuation Point Estimate definition to Upsert")], **kwargs) -> ApiResponse: # noqa: E501
2822
- """[EXPERIMENTAL] UpsertValuationPoint: Upsert Valuation Point. # noqa: E501
3004
+ def upsert_fund_properties_with_http_info(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the Fund to update or insert the properties onto.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the Fund to update or insert the properties onto. Together with the scope this uniquely identifies the Fund.")], request_body : Annotated[Optional[Dict[str, ModelProperty]], Field(description="The properties to be updated or inserted onto the Fund. Each property in the request must be keyed by its unique property key. This has the format {domain}/{scope}/{code} e.g. \"Fund/Manager/Id\".")] = None, **kwargs) -> ApiResponse: # noqa: E501
3005
+ """[EXPERIMENTAL] UpsertFundProperties: Upsert Fund properties. # noqa: E501
2823
3006
 
2824
- Update or insert the estimate Valuation Point. If the Valuation Point does not exist, this method will create it in estimate state. If the Valuation Point already exists and is in estimate state, the Valuation Point will be updated with the newly specified information in this request. # noqa: E501
3007
+ Update or insert one or more properties onto a single Fund. A property will be updated if it already exists and inserted if it does not. All properties must be of the domain 'Fund'. Upserting a property that exists for an Fund, with a null value, will delete the instance of the property for that group. Properties have an <i>effectiveFrom</i> datetime for which the property is valid, and an <i>effectiveUntil</i> datetime until which the property is valid. Not supplying an <i>effectiveUntil</i> datetime results in the property being valid indefinitely, or until the next <i>effectiveFrom</i> datetime of the property. # noqa: E501
2825
3008
  This method makes a synchronous HTTP request by default. To make an
2826
3009
  asynchronous HTTP request, please pass async_req=True
2827
3010
 
2828
- >>> thread = api.upsert_valuation_point_with_http_info(scope, code, upsert_valuation_point_request, async_req=True)
3011
+ >>> thread = api.upsert_fund_properties_with_http_info(scope, code, request_body, async_req=True)
2829
3012
  >>> result = thread.get()
2830
3013
 
2831
- :param scope: The scope of the Fund. (required)
3014
+ :param scope: The scope of the Fund to update or insert the properties onto. (required)
2832
3015
  :type scope: str
2833
- :param code: The code of the Fund. Together with the scope this uniquely identifies the Fund. (required)
3016
+ :param code: The code of the Fund to update or insert the properties onto. Together with the scope this uniquely identifies the Fund. (required)
2834
3017
  :type code: str
2835
- :param upsert_valuation_point_request: The Valuation Point Estimate definition to Upsert (required)
2836
- :type upsert_valuation_point_request: UpsertValuationPointRequest
3018
+ :param request_body: The properties to be updated or inserted onto the Fund. Each property in the request must be keyed by its unique property key. This has the format {domain}/{scope}/{code} e.g. \"Fund/Manager/Id\".
3019
+ :type request_body: Dict[str, ModelProperty]
2837
3020
  :param async_req: Whether to execute the request asynchronously.
2838
3021
  :type async_req: bool, optional
2839
3022
  :param _preload_content: if False, the ApiResponse.data will
@@ -2856,7 +3039,7 @@ class FundsApi:
2856
3039
  :return: Returns the result object.
2857
3040
  If the method is called asynchronously,
2858
3041
  returns the request thread.
2859
- :rtype: tuple(DiaryEntry, status_code(int), headers(HTTPHeaderDict))
3042
+ :rtype: tuple(FundProperties, status_code(int), headers(HTTPHeaderDict))
2860
3043
  """
2861
3044
 
2862
3045
  _params = locals()
@@ -2864,7 +3047,7 @@ class FundsApi:
2864
3047
  _all_params = [
2865
3048
  'scope',
2866
3049
  'code',
2867
- 'upsert_valuation_point_request'
3050
+ 'request_body'
2868
3051
  ]
2869
3052
  _all_params.extend(
2870
3053
  [
@@ -2883,7 +3066,7 @@ class FundsApi:
2883
3066
  if _key not in _all_params:
2884
3067
  raise ApiTypeError(
2885
3068
  "Got an unexpected keyword argument '%s'"
2886
- " to method upsert_valuation_point" % _key
3069
+ " to method upsert_fund_properties" % _key
2887
3070
  )
2888
3071
  _params[_key] = _val
2889
3072
  del _params['kwargs']
@@ -2908,8 +3091,8 @@ class FundsApi:
2908
3091
  _files = {}
2909
3092
  # process the body parameter
2910
3093
  _body_params = None
2911
- if _params['upsert_valuation_point_request'] is not None:
2912
- _body_params = _params['upsert_valuation_point_request']
3094
+ if _params['request_body'] is not None:
3095
+ _body_params = _params['request_body']
2913
3096
 
2914
3097
  # set the HTTP header `Accept`
2915
3098
  _header_params['Accept'] = self.api_client.select_header_accept(
@@ -2926,12 +3109,12 @@ class FundsApi:
2926
3109
  _auth_settings = ['oauth2'] # noqa: E501
2927
3110
 
2928
3111
  _response_types_map = {
2929
- '200': "DiaryEntry",
3112
+ '200': "FundProperties",
2930
3113
  '400': "LusidValidationProblemDetails",
2931
3114
  }
2932
3115
 
2933
3116
  return self.api_client.call_api(
2934
- '/api/funds/{scope}/{code}/valuationpoints/$upsert', 'POST',
3117
+ '/api/funds/{scope}/{code}/properties/$upsert', 'POST',
2935
3118
  _path_params,
2936
3119
  _query_params,
2937
3120
  _header_params,
lusid/configuration.py CHANGED
@@ -373,7 +373,7 @@ class Configuration:
373
373
  return "Python SDK Debug Report:\n"\
374
374
  "OS: {env}\n"\
375
375
  "Python Version: {pyversion}\n"\
376
- "Version of the API: 0.11.6608\n"\
376
+ "Version of the API: 0.11.6618\n"\
377
377
  "SDK Package Version: {package_version}".\
378
378
  format(env=sys.platform, pyversion=sys.version, package_version=package_version)
379
379
 
lusid/models/__init__.py CHANGED
@@ -312,6 +312,7 @@ from lusid.models.expanded_group import ExpandedGroup
312
312
  from lusid.models.expiry_event import ExpiryEvent
313
313
  from lusid.models.fee import Fee
314
314
  from lusid.models.fee_accrual import FeeAccrual
315
+ from lusid.models.fee_properties import FeeProperties
315
316
  from lusid.models.fee_request import FeeRequest
316
317
  from lusid.models.fee_rule import FeeRule
317
318
  from lusid.models.fee_rule_upsert_request import FeeRuleUpsertRequest
@@ -1306,6 +1307,7 @@ __all__ = [
1306
1307
  "ExpiryEvent",
1307
1308
  "Fee",
1308
1309
  "FeeAccrual",
1310
+ "FeeProperties",
1309
1311
  "FeeRequest",
1310
1312
  "FeeRule",
1311
1313
  "FeeRuleUpsertRequest",
@@ -26,7 +26,7 @@ class CreateDerivedPropertyDefinitionRequest(BaseModel):
26
26
  """
27
27
  CreateDerivedPropertyDefinitionRequest
28
28
  """
29
- domain: StrictStr = Field(..., description="The domain that the property exists in. Not all available values are currently supported, please check the documentation: https://support.lusid.com/knowledgebase/article/KA-01719/. The available values are: NotDefined, Transaction, Portfolio, Holding, ReferenceHolding, TransactionConfiguration, Instrument, CutLabelDefinition, Analytic, PortfolioGroup, Person, AccessMetadata, Order, UnitResult, MarketData, ConfigurationRecipe, Allocation, Calendar, LegalEntity, Placement, Execution, Block, Participation, Package, OrderInstruction, NextBestAction, CustomEntity, InstrumentEvent, Account, ChartOfAccounts, CustodianAccount, Abor, AborConfiguration, Fund, Fee, Reconciliation, PropertyDefinition, Compliance, DiaryEntry, Leg, DerivedValuation")
29
+ domain: StrictStr = Field(..., description="The domain that the property exists in. Not all available values are currently supported, please check the documentation: https://support.lusid.com/knowledgebase/article/KA-01719/. The available values are: NotDefined, Transaction, Portfolio, Holding, ReferenceHolding, TransactionConfiguration, Instrument, CutLabelDefinition, Analytic, PortfolioGroup, Person, AccessMetadata, Order, UnitResult, MarketData, ConfigurationRecipe, Allocation, Calendar, LegalEntity, Placement, Execution, Block, Participation, Package, OrderInstruction, NextBestAction, CustomEntity, InstrumentEvent, Account, ChartOfAccounts, CustodianAccount, Abor, AborConfiguration, Fund, FundConfiguration, Fee, Reconciliation, PropertyDefinition, Compliance, DiaryEntry, Leg, DerivedValuation")
30
30
  scope: StrictStr = Field(..., description="The scope that the property exists in.")
31
31
  code: StrictStr = Field(..., description="The code of the property. Together with the domain and scope this uniquely identifies the property.")
32
32
  display_name: constr(strict=True, min_length=1) = Field(..., alias="displayName", description="The display name of the property.")
@@ -38,8 +38,8 @@ class CreateDerivedPropertyDefinitionRequest(BaseModel):
38
38
  @validator('domain')
39
39
  def domain_validate_enum(cls, value):
40
40
  """Validates the enum"""
41
- if value not in ('NotDefined', 'Transaction', 'Portfolio', 'Holding', 'ReferenceHolding', 'TransactionConfiguration', 'Instrument', 'CutLabelDefinition', 'Analytic', 'PortfolioGroup', 'Person', 'AccessMetadata', 'Order', 'UnitResult', 'MarketData', 'ConfigurationRecipe', 'Allocation', 'Calendar', 'LegalEntity', 'Placement', 'Execution', 'Block', 'Participation', 'Package', 'OrderInstruction', 'NextBestAction', 'CustomEntity', 'InstrumentEvent', 'Account', 'ChartOfAccounts', 'CustodianAccount', 'Abor', 'AborConfiguration', 'Fund', 'Fee', 'Reconciliation', 'PropertyDefinition', 'Compliance', 'DiaryEntry', 'Leg', 'DerivedValuation'):
42
- raise ValueError("must be one of enum values ('NotDefined', 'Transaction', 'Portfolio', 'Holding', 'ReferenceHolding', 'TransactionConfiguration', 'Instrument', 'CutLabelDefinition', 'Analytic', 'PortfolioGroup', 'Person', 'AccessMetadata', 'Order', 'UnitResult', 'MarketData', 'ConfigurationRecipe', 'Allocation', 'Calendar', 'LegalEntity', 'Placement', 'Execution', 'Block', 'Participation', 'Package', 'OrderInstruction', 'NextBestAction', 'CustomEntity', 'InstrumentEvent', 'Account', 'ChartOfAccounts', 'CustodianAccount', 'Abor', 'AborConfiguration', 'Fund', 'Fee', 'Reconciliation', 'PropertyDefinition', 'Compliance', 'DiaryEntry', 'Leg', 'DerivedValuation')")
41
+ if value not in ('NotDefined', 'Transaction', 'Portfolio', 'Holding', 'ReferenceHolding', 'TransactionConfiguration', 'Instrument', 'CutLabelDefinition', 'Analytic', 'PortfolioGroup', 'Person', 'AccessMetadata', 'Order', 'UnitResult', 'MarketData', 'ConfigurationRecipe', 'Allocation', 'Calendar', 'LegalEntity', 'Placement', 'Execution', 'Block', 'Participation', 'Package', 'OrderInstruction', 'NextBestAction', 'CustomEntity', 'InstrumentEvent', 'Account', 'ChartOfAccounts', 'CustodianAccount', 'Abor', 'AborConfiguration', 'Fund', 'FundConfiguration', 'Fee', 'Reconciliation', 'PropertyDefinition', 'Compliance', 'DiaryEntry', 'Leg', 'DerivedValuation'):
42
+ raise ValueError("must be one of enum values ('NotDefined', 'Transaction', 'Portfolio', 'Holding', 'ReferenceHolding', 'TransactionConfiguration', 'Instrument', 'CutLabelDefinition', 'Analytic', 'PortfolioGroup', 'Person', 'AccessMetadata', 'Order', 'UnitResult', 'MarketData', 'ConfigurationRecipe', 'Allocation', 'Calendar', 'LegalEntity', 'Placement', 'Execution', 'Block', 'Participation', 'Package', 'OrderInstruction', 'NextBestAction', 'CustomEntity', 'InstrumentEvent', 'Account', 'ChartOfAccounts', 'CustodianAccount', 'Abor', 'AborConfiguration', 'Fund', 'FundConfiguration', 'Fee', 'Reconciliation', 'PropertyDefinition', 'Compliance', 'DiaryEntry', 'Leg', 'DerivedValuation')")
43
43
  return value
44
44
 
45
45
  class Config:
@@ -26,7 +26,7 @@ class CreatePropertyDefinitionRequest(BaseModel):
26
26
  """
27
27
  CreatePropertyDefinitionRequest
28
28
  """
29
- domain: StrictStr = Field(..., description="The domain that the property exists in. The available values are: NotDefined, Transaction, Portfolio, Holding, ReferenceHolding, TransactionConfiguration, Instrument, CutLabelDefinition, Analytic, PortfolioGroup, Person, AccessMetadata, Order, UnitResult, MarketData, ConfigurationRecipe, Allocation, Calendar, LegalEntity, Placement, Execution, Block, Participation, Package, OrderInstruction, NextBestAction, CustomEntity, InstrumentEvent, Account, ChartOfAccounts, CustodianAccount, Abor, AborConfiguration, Fund, Fee, Reconciliation, PropertyDefinition, Compliance, DiaryEntry, Leg, DerivedValuation")
29
+ domain: StrictStr = Field(..., description="The domain that the property exists in. The available values are: NotDefined, Transaction, Portfolio, Holding, ReferenceHolding, TransactionConfiguration, Instrument, CutLabelDefinition, Analytic, PortfolioGroup, Person, AccessMetadata, Order, UnitResult, MarketData, ConfigurationRecipe, Allocation, Calendar, LegalEntity, Placement, Execution, Block, Participation, Package, OrderInstruction, NextBestAction, CustomEntity, InstrumentEvent, Account, ChartOfAccounts, CustodianAccount, Abor, AborConfiguration, Fund, FundConfiguration, Fee, Reconciliation, PropertyDefinition, Compliance, DiaryEntry, Leg, DerivedValuation")
30
30
  scope: StrictStr = Field(..., description="The scope that the property exists in.")
31
31
  code: StrictStr = Field(..., description="The code of the property. Together with the domain and scope this uniquely identifies the property.")
32
32
  value_required: Optional[StrictBool] = Field(None, alias="valueRequired", description="This field is not implemented and should be disregarded.")
@@ -41,8 +41,8 @@ class CreatePropertyDefinitionRequest(BaseModel):
41
41
  @validator('domain')
42
42
  def domain_validate_enum(cls, value):
43
43
  """Validates the enum"""
44
- if value not in ('NotDefined', 'Transaction', 'Portfolio', 'Holding', 'ReferenceHolding', 'TransactionConfiguration', 'Instrument', 'CutLabelDefinition', 'Analytic', 'PortfolioGroup', 'Person', 'AccessMetadata', 'Order', 'UnitResult', 'MarketData', 'ConfigurationRecipe', 'Allocation', 'Calendar', 'LegalEntity', 'Placement', 'Execution', 'Block', 'Participation', 'Package', 'OrderInstruction', 'NextBestAction', 'CustomEntity', 'InstrumentEvent', 'Account', 'ChartOfAccounts', 'CustodianAccount', 'Abor', 'AborConfiguration', 'Fund', 'Fee', 'Reconciliation', 'PropertyDefinition', 'Compliance', 'DiaryEntry', 'Leg', 'DerivedValuation'):
45
- raise ValueError("must be one of enum values ('NotDefined', 'Transaction', 'Portfolio', 'Holding', 'ReferenceHolding', 'TransactionConfiguration', 'Instrument', 'CutLabelDefinition', 'Analytic', 'PortfolioGroup', 'Person', 'AccessMetadata', 'Order', 'UnitResult', 'MarketData', 'ConfigurationRecipe', 'Allocation', 'Calendar', 'LegalEntity', 'Placement', 'Execution', 'Block', 'Participation', 'Package', 'OrderInstruction', 'NextBestAction', 'CustomEntity', 'InstrumentEvent', 'Account', 'ChartOfAccounts', 'CustodianAccount', 'Abor', 'AborConfiguration', 'Fund', 'Fee', 'Reconciliation', 'PropertyDefinition', 'Compliance', 'DiaryEntry', 'Leg', 'DerivedValuation')")
44
+ if value not in ('NotDefined', 'Transaction', 'Portfolio', 'Holding', 'ReferenceHolding', 'TransactionConfiguration', 'Instrument', 'CutLabelDefinition', 'Analytic', 'PortfolioGroup', 'Person', 'AccessMetadata', 'Order', 'UnitResult', 'MarketData', 'ConfigurationRecipe', 'Allocation', 'Calendar', 'LegalEntity', 'Placement', 'Execution', 'Block', 'Participation', 'Package', 'OrderInstruction', 'NextBestAction', 'CustomEntity', 'InstrumentEvent', 'Account', 'ChartOfAccounts', 'CustodianAccount', 'Abor', 'AborConfiguration', 'Fund', 'FundConfiguration', 'Fee', 'Reconciliation', 'PropertyDefinition', 'Compliance', 'DiaryEntry', 'Leg', 'DerivedValuation'):
45
+ raise ValueError("must be one of enum values ('NotDefined', 'Transaction', 'Portfolio', 'Holding', 'ReferenceHolding', 'TransactionConfiguration', 'Instrument', 'CutLabelDefinition', 'Analytic', 'PortfolioGroup', 'Person', 'AccessMetadata', 'Order', 'UnitResult', 'MarketData', 'ConfigurationRecipe', 'Allocation', 'Calendar', 'LegalEntity', 'Placement', 'Execution', 'Block', 'Participation', 'Package', 'OrderInstruction', 'NextBestAction', 'CustomEntity', 'InstrumentEvent', 'Account', 'ChartOfAccounts', 'CustodianAccount', 'Abor', 'AborConfiguration', 'Fund', 'FundConfiguration', 'Fee', 'Reconciliation', 'PropertyDefinition', 'Compliance', 'DiaryEntry', 'Leg', 'DerivedValuation')")
46
46
  return value
47
47
 
48
48
  @validator('life_time')
@@ -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.model_property import ModelProperty
25
+ from lusid.models.version import Version
26
+
27
+ class FeeProperties(BaseModel):
28
+ """
29
+ FeeProperties
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
+ properties: Optional[Dict[str, ModelProperty]] = Field(None, description="The Fee properties. These will be from the 'Fee' domain.")
33
+ version: Optional[Version] = None
34
+ links: Optional[conlist(Link)] = None
35
+ __properties = ["href", "properties", "version", "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) -> FeeProperties:
52
+ """Create an instance of FeeProperties 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 each value in properties (dict)
62
+ _field_dict = {}
63
+ if self.properties:
64
+ for _key in self.properties:
65
+ if self.properties[_key]:
66
+ _field_dict[_key] = self.properties[_key].to_dict()
67
+ _dict['properties'] = _field_dict
68
+ # override the default output from pydantic by calling `to_dict()` of version
69
+ if self.version:
70
+ _dict['version'] = self.version.to_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) -> FeeProperties:
97
+ """Create an instance of FeeProperties from a dict"""
98
+ if obj is None:
99
+ return None
100
+
101
+ if not isinstance(obj, dict):
102
+ return FeeProperties.parse_obj(obj)
103
+
104
+ _obj = FeeProperties.parse_obj({
105
+ "href": obj.get("href"),
106
+ "properties": dict(
107
+ (_k, ModelProperty.from_dict(_v))
108
+ for _k, _v in obj.get("properties").items()
109
+ )
110
+ if obj.get("properties") is not None
111
+ else None,
112
+ "version": Version.from_dict(obj.get("version")) if obj.get("version") is not None 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
@@ -28,7 +28,7 @@ class JournalEntryLinesQueryParameters(BaseModel):
28
28
  """
29
29
  start: Optional[DateOrDiaryEntry] = None
30
30
  end: Optional[DateOrDiaryEntry] = None
31
- date_mode: Optional[StrictStr] = Field(None, alias="dateMode", description="The mode of calculation of the journal entry lines. The available values are: ActivityDate.")
31
+ date_mode: Optional[StrictStr] = Field(None, alias="dateMode", description="The mode of calculation of the journal entry lines. The available values are: ActivityDate, AccountingDate.")
32
32
  general_ledger_profile_code: Optional[constr(strict=True, max_length=64, min_length=1)] = Field(None, alias="generalLedgerProfileCode", description="The optional code of a general ledger profile used to decorate journal entry lines with levels.")
33
33
  property_keys: Optional[conlist(StrictStr)] = Field(None, alias="propertyKeys", description="A list of property keys from the 'Instrument', 'Transaction', 'Portfolio', 'Account', 'LegalEntity' or 'CustodianAccount' domain to decorate onto the journal entry lines.")
34
34
  __properties = ["start", "end", "dateMode", "generalLedgerProfileCode", "propertyKeys"]
@@ -36,7 +36,7 @@ class PropertyDefinition(BaseModel):
36
36
  data_type_id: Optional[ResourceId] = Field(None, alias="dataTypeId")
37
37
  type: Optional[StrictStr] = Field(None, description="The type of the property. The available values are: Label, Metric, Information")
38
38
  unit_schema: Optional[StrictStr] = Field(None, alias="unitSchema", description="The units that can be associated with the property's values. This is defined by the property's data type. The available values are: NoUnits, Basic, Iso4217Currency")
39
- domain: Optional[StrictStr] = Field(None, description="The domain that the property exists in. The available values are: NotDefined, Transaction, Portfolio, Holding, ReferenceHolding, TransactionConfiguration, Instrument, CutLabelDefinition, Analytic, PortfolioGroup, Person, AccessMetadata, Order, UnitResult, MarketData, ConfigurationRecipe, Allocation, Calendar, LegalEntity, Placement, Execution, Block, Participation, Package, OrderInstruction, NextBestAction, CustomEntity, InstrumentEvent, Account, ChartOfAccounts, CustodianAccount, Abor, AborConfiguration, Fund, Fee, Reconciliation, PropertyDefinition, Compliance, DiaryEntry, Leg, DerivedValuation")
39
+ domain: Optional[StrictStr] = Field(None, description="The domain that the property exists in. The available values are: NotDefined, Transaction, Portfolio, Holding, ReferenceHolding, TransactionConfiguration, Instrument, CutLabelDefinition, Analytic, PortfolioGroup, Person, AccessMetadata, Order, UnitResult, MarketData, ConfigurationRecipe, Allocation, Calendar, LegalEntity, Placement, Execution, Block, Participation, Package, OrderInstruction, NextBestAction, CustomEntity, InstrumentEvent, Account, ChartOfAccounts, CustodianAccount, Abor, AborConfiguration, Fund, FundConfiguration, Fee, Reconciliation, PropertyDefinition, Compliance, DiaryEntry, Leg, DerivedValuation")
40
40
  scope: Optional[StrictStr] = Field(None, description="The scope that the property exists in.")
41
41
  code: Optional[StrictStr] = Field(None, description="The code of the property. Together with the domain and scope this uniquely identifies the property.")
42
42
  value_required: Optional[StrictBool] = Field(None, alias="valueRequired", description="This field is not implemented and should be disregarded.")
@@ -87,8 +87,8 @@ class PropertyDefinition(BaseModel):
87
87
  if value is None:
88
88
  return value
89
89
 
90
- if value not in ('NotDefined', 'Transaction', 'Portfolio', 'Holding', 'ReferenceHolding', 'TransactionConfiguration', 'Instrument', 'CutLabelDefinition', 'Analytic', 'PortfolioGroup', 'Person', 'AccessMetadata', 'Order', 'UnitResult', 'MarketData', 'ConfigurationRecipe', 'Allocation', 'Calendar', 'LegalEntity', 'Placement', 'Execution', 'Block', 'Participation', 'Package', 'OrderInstruction', 'NextBestAction', 'CustomEntity', 'InstrumentEvent', 'Account', 'ChartOfAccounts', 'CustodianAccount', 'Abor', 'AborConfiguration', 'Fund', 'Fee', 'Reconciliation', 'PropertyDefinition', 'Compliance', 'DiaryEntry', 'Leg', 'DerivedValuation'):
91
- raise ValueError("must be one of enum values ('NotDefined', 'Transaction', 'Portfolio', 'Holding', 'ReferenceHolding', 'TransactionConfiguration', 'Instrument', 'CutLabelDefinition', 'Analytic', 'PortfolioGroup', 'Person', 'AccessMetadata', 'Order', 'UnitResult', 'MarketData', 'ConfigurationRecipe', 'Allocation', 'Calendar', 'LegalEntity', 'Placement', 'Execution', 'Block', 'Participation', 'Package', 'OrderInstruction', 'NextBestAction', 'CustomEntity', 'InstrumentEvent', 'Account', 'ChartOfAccounts', 'CustodianAccount', 'Abor', 'AborConfiguration', 'Fund', 'Fee', 'Reconciliation', 'PropertyDefinition', 'Compliance', 'DiaryEntry', 'Leg', 'DerivedValuation')")
90
+ if value not in ('NotDefined', 'Transaction', 'Portfolio', 'Holding', 'ReferenceHolding', 'TransactionConfiguration', 'Instrument', 'CutLabelDefinition', 'Analytic', 'PortfolioGroup', 'Person', 'AccessMetadata', 'Order', 'UnitResult', 'MarketData', 'ConfigurationRecipe', 'Allocation', 'Calendar', 'LegalEntity', 'Placement', 'Execution', 'Block', 'Participation', 'Package', 'OrderInstruction', 'NextBestAction', 'CustomEntity', 'InstrumentEvent', 'Account', 'ChartOfAccounts', 'CustodianAccount', 'Abor', 'AborConfiguration', 'Fund', 'FundConfiguration', 'Fee', 'Reconciliation', 'PropertyDefinition', 'Compliance', 'DiaryEntry', 'Leg', 'DerivedValuation'):
91
+ raise ValueError("must be one of enum values ('NotDefined', 'Transaction', 'Portfolio', 'Holding', 'ReferenceHolding', 'TransactionConfiguration', 'Instrument', 'CutLabelDefinition', 'Analytic', 'PortfolioGroup', 'Person', 'AccessMetadata', 'Order', 'UnitResult', 'MarketData', 'ConfigurationRecipe', 'Allocation', 'Calendar', 'LegalEntity', 'Placement', 'Execution', 'Block', 'Participation', 'Package', 'OrderInstruction', 'NextBestAction', 'CustomEntity', 'InstrumentEvent', 'Account', 'ChartOfAccounts', 'CustodianAccount', 'Abor', 'AborConfiguration', 'Fund', 'FundConfiguration', 'Fee', 'Reconciliation', 'PropertyDefinition', 'Compliance', 'DiaryEntry', 'Leg', 'DerivedValuation')")
92
92
  return value
93
93
 
94
94
  @validator('life_time')
@@ -34,7 +34,7 @@ class PropertyDefinitionSearchResult(BaseModel):
34
34
  data_type_id: Optional[ResourceId] = Field(None, alias="dataTypeId")
35
35
  type: Optional[StrictStr] = Field(None, description="The type of the property. The available values are: Label, Metric, Information")
36
36
  unit_schema: Optional[StrictStr] = Field(None, alias="unitSchema", description="The units that can be associated with the property's values. This is defined by the property's data type. The available values are: NoUnits, Basic, Iso4217Currency")
37
- domain: Optional[StrictStr] = Field(None, description="The domain that the property exists in. The available values are: NotDefined, Transaction, Portfolio, Holding, ReferenceHolding, TransactionConfiguration, Instrument, CutLabelDefinition, Analytic, PortfolioGroup, Person, AccessMetadata, Order, UnitResult, MarketData, ConfigurationRecipe, Allocation, Calendar, LegalEntity, Placement, Execution, Block, Participation, Package, OrderInstruction, NextBestAction, CustomEntity, InstrumentEvent, Account, ChartOfAccounts, CustodianAccount, Abor, AborConfiguration, Fund, Fee, Reconciliation, PropertyDefinition, Compliance, DiaryEntry, Leg, DerivedValuation")
37
+ domain: Optional[StrictStr] = Field(None, description="The domain that the property exists in. The available values are: NotDefined, Transaction, Portfolio, Holding, ReferenceHolding, TransactionConfiguration, Instrument, CutLabelDefinition, Analytic, PortfolioGroup, Person, AccessMetadata, Order, UnitResult, MarketData, ConfigurationRecipe, Allocation, Calendar, LegalEntity, Placement, Execution, Block, Participation, Package, OrderInstruction, NextBestAction, CustomEntity, InstrumentEvent, Account, ChartOfAccounts, CustodianAccount, Abor, AborConfiguration, Fund, FundConfiguration, Fee, Reconciliation, PropertyDefinition, Compliance, DiaryEntry, Leg, DerivedValuation")
38
38
  scope: Optional[StrictStr] = Field(None, description="The scope that the property exists in.")
39
39
  code: Optional[StrictStr] = Field(None, description="The code of the property. Together with the domain and scope this uniquely identifies the property.")
40
40
  value_required: Optional[StrictBool] = Field(None, alias="valueRequired", description="This field is not implemented and should be disregarded.")
@@ -82,8 +82,8 @@ class PropertyDefinitionSearchResult(BaseModel):
82
82
  if value is None:
83
83
  return value
84
84
 
85
- if value not in ('NotDefined', 'Transaction', 'Portfolio', 'Holding', 'ReferenceHolding', 'TransactionConfiguration', 'Instrument', 'CutLabelDefinition', 'Analytic', 'PortfolioGroup', 'Person', 'AccessMetadata', 'Order', 'UnitResult', 'MarketData', 'ConfigurationRecipe', 'Allocation', 'Calendar', 'LegalEntity', 'Placement', 'Execution', 'Block', 'Participation', 'Package', 'OrderInstruction', 'NextBestAction', 'CustomEntity', 'InstrumentEvent', 'Account', 'ChartOfAccounts', 'CustodianAccount', 'Abor', 'AborConfiguration', 'Fund', 'Fee', 'Reconciliation', 'PropertyDefinition', 'Compliance', 'DiaryEntry', 'Leg', 'DerivedValuation'):
86
- raise ValueError("must be one of enum values ('NotDefined', 'Transaction', 'Portfolio', 'Holding', 'ReferenceHolding', 'TransactionConfiguration', 'Instrument', 'CutLabelDefinition', 'Analytic', 'PortfolioGroup', 'Person', 'AccessMetadata', 'Order', 'UnitResult', 'MarketData', 'ConfigurationRecipe', 'Allocation', 'Calendar', 'LegalEntity', 'Placement', 'Execution', 'Block', 'Participation', 'Package', 'OrderInstruction', 'NextBestAction', 'CustomEntity', 'InstrumentEvent', 'Account', 'ChartOfAccounts', 'CustodianAccount', 'Abor', 'AborConfiguration', 'Fund', 'Fee', 'Reconciliation', 'PropertyDefinition', 'Compliance', 'DiaryEntry', 'Leg', 'DerivedValuation')")
85
+ if value not in ('NotDefined', 'Transaction', 'Portfolio', 'Holding', 'ReferenceHolding', 'TransactionConfiguration', 'Instrument', 'CutLabelDefinition', 'Analytic', 'PortfolioGroup', 'Person', 'AccessMetadata', 'Order', 'UnitResult', 'MarketData', 'ConfigurationRecipe', 'Allocation', 'Calendar', 'LegalEntity', 'Placement', 'Execution', 'Block', 'Participation', 'Package', 'OrderInstruction', 'NextBestAction', 'CustomEntity', 'InstrumentEvent', 'Account', 'ChartOfAccounts', 'CustodianAccount', 'Abor', 'AborConfiguration', 'Fund', 'FundConfiguration', 'Fee', 'Reconciliation', 'PropertyDefinition', 'Compliance', 'DiaryEntry', 'Leg', 'DerivedValuation'):
86
+ raise ValueError("must be one of enum values ('NotDefined', 'Transaction', 'Portfolio', 'Holding', 'ReferenceHolding', 'TransactionConfiguration', 'Instrument', 'CutLabelDefinition', 'Analytic', 'PortfolioGroup', 'Person', 'AccessMetadata', 'Order', 'UnitResult', 'MarketData', 'ConfigurationRecipe', 'Allocation', 'Calendar', 'LegalEntity', 'Placement', 'Execution', 'Block', 'Participation', 'Package', 'OrderInstruction', 'NextBestAction', 'CustomEntity', 'InstrumentEvent', 'Account', 'ChartOfAccounts', 'CustodianAccount', 'Abor', 'AborConfiguration', 'Fund', 'FundConfiguration', 'Fee', 'Reconciliation', 'PropertyDefinition', 'Compliance', 'DiaryEntry', 'Leg', 'DerivedValuation')")
87
87
  return value
88
88
 
89
89
  @validator('life_time')
@@ -63,6 +63,7 @@ class PropertyDomain(str, Enum):
63
63
  ABOR = 'Abor'
64
64
  ABORCONFIGURATION = 'AborConfiguration'
65
65
  FUND = 'Fund'
66
+ FUNDCONFIGURATION = 'FundConfiguration'
66
67
  FEE = 'Fee'
67
68
  RECONCILIATION = 'Reconciliation'
68
69
  PROPERTYDEFINITION = 'PropertyDefinition'
@@ -28,7 +28,7 @@ class TrialBalanceQueryParameters(BaseModel):
28
28
  """
29
29
  start: Optional[DateOrDiaryEntry] = None
30
30
  end: Optional[DateOrDiaryEntry] = None
31
- date_mode: Optional[StrictStr] = Field(None, alias="dateMode", description="The mode of calculation of the trial balance. The available values are: ActivityDate.")
31
+ date_mode: Optional[StrictStr] = Field(None, alias="dateMode", description="The mode of calculation of the trial balance. The available values are: ActivityDate, AccountingDate.")
32
32
  general_ledger_profile_code: Optional[constr(strict=True, max_length=64, min_length=1)] = Field(None, alias="generalLedgerProfileCode", description="The optional code of a general ledger profile used to decorate trial balance with levels.")
33
33
  property_keys: Optional[conlist(StrictStr)] = Field(None, alias="propertyKeys", description="A list of property keys from the 'Instrument', 'Transaction', 'Portfolio', 'Account', 'LegalEntity' or 'CustodianAccount' domain to decorate onto the trial balance.")
34
34
  exclude_cleardown_module: Optional[StrictBool] = Field(None, alias="excludeCleardownModule", description="By deafult this flag is set to false, if this is set to true, no cleardown module will be applied to the trial balance.")
@@ -26,9 +26,9 @@ class UpsertValuationPointRequest(BaseModel):
26
26
  """
27
27
  A definition for the period you wish to close # noqa: E501
28
28
  """
29
- diary_entry_code: Optional[constr(strict=True, max_length=64, min_length=1)] = Field(None, alias="diaryEntryCode", description="Unique code for the Valuation Point.")
29
+ diary_entry_code: constr(strict=True, max_length=64, min_length=1) = Field(..., alias="diaryEntryCode", description="Unique code for the Valuation Point.")
30
30
  name: Optional[constr(strict=True, max_length=512, min_length=1)] = Field(None, description="Identifiable Name assigned to the Valuation Point.")
31
- effective_at: Optional[datetime] = Field(None, alias="effectiveAt", description="The effective time of the diary entry.")
31
+ effective_at: datetime = Field(..., alias="effectiveAt", description="The effective time of the diary entry.")
32
32
  query_as_at: Optional[datetime] = Field(None, alias="queryAsAt", description="The query time of the diary entry. Defaults to latest.")
33
33
  properties: Optional[Dict[str, ModelProperty]] = Field(None, description="A set of properties for the diary entry.")
34
34
  __properties = ["diaryEntryCode", "name", "effectiveAt", "queryAsAt", "properties"]
@@ -36,9 +36,6 @@ class UpsertValuationPointRequest(BaseModel):
36
36
  @validator('diary_entry_code')
37
37
  def diary_entry_code_validate_regular_expression(cls, value):
38
38
  """Validates the regular expression"""
39
- if value is None:
40
- return value
41
-
42
39
  if not re.match(r"^[a-zA-Z0-9\-_]+$", value):
43
40
  raise ValueError(r"must validate the regular expression /^[a-zA-Z0-9\-_]+$/")
44
41
  return value
@@ -84,21 +81,11 @@ class UpsertValuationPointRequest(BaseModel):
84
81
  if self.properties[_key]:
85
82
  _field_dict[_key] = self.properties[_key].to_dict()
86
83
  _dict['properties'] = _field_dict
87
- # set to None if diary_entry_code (nullable) is None
88
- # and __fields_set__ contains the field
89
- if self.diary_entry_code is None and "diary_entry_code" in self.__fields_set__:
90
- _dict['diaryEntryCode'] = None
91
-
92
84
  # set to None if name (nullable) is None
93
85
  # and __fields_set__ contains the field
94
86
  if self.name is None and "name" in self.__fields_set__:
95
87
  _dict['name'] = None
96
88
 
97
- # set to None if effective_at (nullable) is None
98
- # and __fields_set__ contains the field
99
- if self.effective_at is None and "effective_at" in self.__fields_set__:
100
- _dict['effectiveAt'] = None
101
-
102
89
  # set to None if query_as_at (nullable) is None
103
90
  # and __fields_set__ contains the field
104
91
  if self.query_as_at is None and "query_as_at" in self.__fields_set__:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: lusid-sdk
3
- Version: 2.1.174
3
+ Version: 2.1.184
4
4
  Summary: LUSID API
5
5
  Home-page: https://github.com/finbourne/lusid-sdk-python
6
6
  License: MIT
@@ -29,8 +29,8 @@ FINBOURNE Technology
29
29
 
30
30
  This Python package is automatically generated by the [OpenAPI Generator](https://openapi-generator.tech) project:
31
31
 
32
- - API version: 0.11.6608
33
- - Package version: 2.1.174
32
+ - API version: 0.11.6618
33
+ - Package version: 2.1.184
34
34
  - Build package: org.openapitools.codegen.languages.PythonClientCodegen
35
35
  For more information, please visit [https://www.finbourne.com](https://www.finbourne.com)
36
36
 
@@ -403,22 +403,23 @@ Class | Method | HTTP request | Description
403
403
  *FeeTypesApi* | [**get_fee_type**](docs/FeeTypesApi.md#get_fee_type) | **GET** /api/feetypes/{scope}/{code} | [EXPERIMENTAL] GetFeeType: Get a FeeType
404
404
  *FeeTypesApi* | [**list_fee_types**](docs/FeeTypesApi.md#list_fee_types) | **GET** /api/feetypes | [EXPERIMENTAL] ListFeeTypes: List FeeTypes
405
405
  *FeeTypesApi* | [**update_fee_type**](docs/FeeTypesApi.md#update_fee_type) | **PUT** /api/feetypes/{scope}/{code} | [EXPERIMENTAL] UpdateFeeType: Update a FeeType.
406
- *FundsApi* | [**accept_estimate_point**](docs/FundsApi.md#accept_estimate_point) | **POST** /api/funds/{scope}/{code}/valuationpoints/$acceptestimate | [EXPERIMENTAL] AcceptEstimatePoint: Accepts an Estimate Valuation Point.
406
+ *FundsApi* | [**accept_estimate_valuation_point**](docs/FundsApi.md#accept_estimate_valuation_point) | **POST** /api/funds/{scope}/{code}/valuationpoints/$acceptestimate | [EXPERIMENTAL] AcceptEstimateValuationPoint: Accepts an Estimate Valuation Point.
407
407
  *FundsApi* | [**create_fee**](docs/FundsApi.md#create_fee) | **POST** /api/funds/{scope}/{code}/fees/{feeCode} | [EXPERIMENTAL] CreateFee: Create a Fee.
408
408
  *FundsApi* | [**create_fund**](docs/FundsApi.md#create_fund) | **POST** /api/funds/{scope} | [EXPERIMENTAL] CreateFund: Create a Fund.
409
409
  *FundsApi* | [**delete_fee**](docs/FundsApi.md#delete_fee) | **DELETE** /api/funds/{scope}/{code}/fees/{feeCode} | [EXPERIMENTAL] DeleteFee: Delete a Fee.
410
410
  *FundsApi* | [**delete_fund**](docs/FundsApi.md#delete_fund) | **DELETE** /api/funds/{scope}/{code} | [EXPERIMENTAL] DeleteFund: Delete a Fund.
411
411
  *FundsApi* | [**delete_valuation_point**](docs/FundsApi.md#delete_valuation_point) | **DELETE** /api/funds/{scope}/{code}/valuationpoints/{diaryEntryCode} | [EXPERIMENTAL] DeleteValuationPoint: Delete a Valuation Point.
412
- *FundsApi* | [**finalise_candidate_valuation**](docs/FundsApi.md#finalise_candidate_valuation) | **POST** /api/funds/{scope}/{code}/valuationpoints/$finalisecandidate | [EXPERIMENTAL] FinaliseCandidateValuation: Finalise Candidate.
412
+ *FundsApi* | [**finalise_candidate_valuation_point**](docs/FundsApi.md#finalise_candidate_valuation_point) | **POST** /api/funds/{scope}/{code}/valuationpoints/$finalisecandidate | [EXPERIMENTAL] FinaliseCandidateValuationPoint: Finalise Candidate.
413
413
  *FundsApi* | [**get_fee**](docs/FundsApi.md#get_fee) | **GET** /api/funds/{scope}/{code}/fees/{feeCode} | [EXPERIMENTAL] GetFee: Get a Fee for a specified Fund.
414
414
  *FundsApi* | [**get_fund**](docs/FundsApi.md#get_fund) | **GET** /api/funds/{scope}/{code} | [EXPERIMENTAL] GetFund: Get a Fund.
415
- *FundsApi* | [**get_valuation_point_data**](docs/FundsApi.md#get_valuation_point_data) | **POST** /api/funds/{scope}/{code}/valuationpoints | [EXPERIMENTAL] GetValuationPointData: Get Valuation Point Data for a Fund.
415
+ *FundsApi* | [**get_valuation_point_data**](docs/FundsApi.md#get_valuation_point_data) | **POST** /api/funds/{scope}/{code}/valuationpoints/$query | [EXPERIMENTAL] GetValuationPointData: Get Valuation Point Data for a Fund.
416
416
  *FundsApi* | [**list_fees**](docs/FundsApi.md#list_fees) | **GET** /api/funds/{scope}/{code}/fees | [EXPERIMENTAL] ListFees: List Fees for a specified Fund.
417
417
  *FundsApi* | [**list_funds**](docs/FundsApi.md#list_funds) | **GET** /api/funds | [EXPERIMENTAL] ListFunds: List Funds.
418
418
  *FundsApi* | [**patch_fee**](docs/FundsApi.md#patch_fee) | **PATCH** /api/funds/{scope}/{code}/fees/{feeCode} | [EXPERIMENTAL] PatchFee: Patch Fee.
419
419
  *FundsApi* | [**set_share_class_instruments**](docs/FundsApi.md#set_share_class_instruments) | **PUT** /api/funds/{scope}/{code}/shareclasses | [EXPERIMENTAL] SetShareClassInstruments: Set the ShareClass Instruments on a fund.
420
+ *FundsApi* | [**upsert_diary_entry_type_valuation_point**](docs/FundsApi.md#upsert_diary_entry_type_valuation_point) | **POST** /api/funds/{scope}/{code}/valuationpoints/$upsert | [EXPERIMENTAL] UpsertDiaryEntryTypeValuationPoint: Upsert Valuation Point.
421
+ *FundsApi* | [**upsert_fee_properties**](docs/FundsApi.md#upsert_fee_properties) | **POST** /api/funds/{scope}/{code}/fees/{feeCode}/properties/$upsert | [EXPERIMENTAL] UpsertFeeProperties: Upsert Fee properties.
420
422
  *FundsApi* | [**upsert_fund_properties**](docs/FundsApi.md#upsert_fund_properties) | **POST** /api/funds/{scope}/{code}/properties/$upsert | [EXPERIMENTAL] UpsertFundProperties: Upsert Fund properties.
421
- *FundsApi* | [**upsert_valuation_point**](docs/FundsApi.md#upsert_valuation_point) | **POST** /api/funds/{scope}/{code}/valuationpoints/$upsert | [EXPERIMENTAL] UpsertValuationPoint: Upsert Valuation Point.
422
423
  *InstrumentEventTypesApi* | [**create_transaction_template**](docs/InstrumentEventTypesApi.md#create_transaction_template) | **POST** /api/instrumenteventtypes/{instrumentEventType}/transactiontemplates/{instrumentType}/{scope} | [EXPERIMENTAL] CreateTransactionTemplate: Create Transaction Template
423
424
  *InstrumentEventTypesApi* | [**delete_transaction_template**](docs/InstrumentEventTypesApi.md#delete_transaction_template) | **DELETE** /api/instrumenteventtypes/{instrumentEventType}/transactiontemplates/{instrumentType}/{scope} | [EXPERIMENTAL] DeleteTransactionTemplate: Delete Transaction Template
424
425
  *InstrumentEventTypesApi* | [**get_transaction_template**](docs/InstrumentEventTypesApi.md#get_transaction_template) | **GET** /api/instrumenteventtypes/{instrumentEventType}/transactiontemplates/{instrumentType}/{scope} | [EXPERIMENTAL] GetTransactionTemplate: Get Transaction Template
@@ -1042,6 +1043,7 @@ Class | Method | HTTP request | Description
1042
1043
  - [ExpiryEvent](docs/ExpiryEvent.md)
1043
1044
  - [Fee](docs/Fee.md)
1044
1045
  - [FeeAccrual](docs/FeeAccrual.md)
1046
+ - [FeeProperties](docs/FeeProperties.md)
1045
1047
  - [FeeRequest](docs/FeeRequest.md)
1046
1048
  - [FeeRule](docs/FeeRule.md)
1047
1049
  - [FeeRuleUpsertRequest](docs/FeeRuleUpsertRequest.md)
@@ -1,4 +1,4 @@
1
- lusid/__init__.py,sha256=29aQU6eqFGfAB6ItLl1g0ZgHgCasjbgFhHUqeXi7stY,110278
1
+ lusid/__init__.py,sha256=Fc_eQH5FJ4vyUWkKiCFXKQ2bKVEAvPTEvg28Xt9b7Y8,110353
2
2
  lusid/api/__init__.py,sha256=PFpT-ADthWd08-JqKOqQTbVW6cz9wdP_us6bg3aBFfs,5555
3
3
  lusid/api/abor_api.py,sha256=AvgsHuWE7qRSYJhKveBE2htSjHpqqS0VNJrysAfwME0,159655
4
4
  lusid/api/abor_configuration_api.py,sha256=G2bKPtMYOZ2GhUrg-nPJtCa9XIZdZYK7oafcbJWDMP8,64033
@@ -25,7 +25,7 @@ lusid/api/derived_transaction_portfolios_api.py,sha256=cKv5mKNmTiuHzWGwupwcSBibj
25
25
  lusid/api/entities_api.py,sha256=I2uoCBwmvGj8TzyoWycuVU7wPbfIAD67lxtW0fYx010,21342
26
26
  lusid/api/executions_api.py,sha256=u92G5bsNwzMlKt9OyV7MQy6BTJc3TC9_7qgg8xXAuL0,44375
27
27
  lusid/api/fee_types_api.py,sha256=conpVPkoLCcUY9f817882MTqrZ_uFlMuoPFo1swqTp4,49609
28
- lusid/api/funds_api.py,sha256=8mMYv829sQVOBrpC4m3KFRdbch5_Tpe5S3ZQe_DuPDk,184218
28
+ lusid/api/funds_api.py,sha256=qkjHfZ6wncbFnINHQUfbPtqhrErPQCVAzpMz6_YWdTs,197201
29
29
  lusid/api/instrument_event_types_api.py,sha256=shwiW-AatQw-mEwD-TS1d8M2AtV62gqvfF3utyIqe0Y,81546
30
30
  lusid/api/instrument_events_api.py,sha256=UPQV3mxxrcnAQ8Yscsb1aUUdg7ItSFDpU03Fwg1Ij1s,58508
31
31
  lusid/api/instruments_api.py,sha256=fujR7OV0OhvegttvAMq6oy_xn9xYcXw3ks_JMj9_XQM,281273
@@ -67,7 +67,7 @@ lusid/api/transaction_portfolios_api.py,sha256=7G5m6iTQXTKCc6ASdxnlVJjvFascHxEgD
67
67
  lusid/api/translation_api.py,sha256=xTAaKEW96JTDIZBXCjxSguCa7Gz4oVd5jdObUE2egwo,20092
68
68
  lusid/api_client.py,sha256=dF6l9RAsdxdQjf6Qn4ny6LB-QXlJmsscWiozCvyyBFA,30709
69
69
  lusid/api_response.py,sha256=6-gnhty6lu8MMAERt3_kTVD7UxQgWFfcjgpcq6iN5IU,855
70
- lusid/configuration.py,sha256=793UE1lzczT9tg6XakAM9XGw1S4dF81XMB3jny2DL6o,14404
70
+ lusid/configuration.py,sha256=Xau2qJMXvhH13PVRNVhZHdJZIu9IHDzYc_tui-uGk_g,14404
71
71
  lusid/exceptions.py,sha256=HIQwgmQrszLlcVCLaqex8dO0laVuejUyOMz7U2ZWJ6s,5326
72
72
  lusid/extensions/__init__.py,sha256=L7EF4zKjcq1g2GodEumg1-C9xKs7YrQ0QHGPi8XbpO4,629
73
73
  lusid/extensions/api_client.py,sha256=Ob06urm4Em3MLzgP_geyeeGsPCkU225msW_1kpIeABM,30567
@@ -81,7 +81,7 @@ lusid/extensions/rest.py,sha256=tjVCu-cRrYcjp-ttB975vebPKtBNyBWaeoAdO3QXG2I,1269
81
81
  lusid/extensions/retry.py,sha256=orBJ1uF1iT1IncjWX1iGHVqsCgTh0SBe9rtiV_sPnwk,11564
82
82
  lusid/extensions/socket_keep_alive.py,sha256=NGlqsv-E25IjJOLGZhXZY6kUdx51nEF8qCQyVdzayRk,1653
83
83
  lusid/extensions/tcp_keep_alive_connector.py,sha256=zaGtUsygRsxB1_4B3x39K3ILwztdhMLDv5bFZV7zmGE,3877
84
- lusid/models/__init__.py,sha256=9hrPZx7c4_tVf6ZIhX_uoLgwwZvI1g3A6YeVzC0uaik,103691
84
+ lusid/models/__init__.py,sha256=NaO3YY2YePlhZOMBPjDwDP347uGNyfQcMo0GjUWjukg,103766
85
85
  lusid/models/a2_b_breakdown.py,sha256=Txi12EIQw3mH6NM-25QkOnHSQc3BVAWrP7yl9bZswSY,2947
86
86
  lusid/models/a2_b_category.py,sha256=k6NPAACi0CUjKyhdQac4obQSrPmp2PXD6lkAtCnyEFM,2725
87
87
  lusid/models/a2_b_data_record.py,sha256=zKGS2P4fzNpzdcGJiSIpkY4P3d_jAcawYfyuPCDeQgk,9737
@@ -270,11 +270,11 @@ lusid/models/create_cut_label_definition_request.py,sha256=ipEHtZQsHX832_UDmsbhj
270
270
  lusid/models/create_data_map_request.py,sha256=uLO0ZBiCDek4dtTbY1sLXn_jBjpGk1h9P6eH71ZgokY,2478
271
271
  lusid/models/create_data_type_request.py,sha256=E4Ju3BNYIU23RmE0naixPbKYDRiKhRkmXgtgdIAeq9I,8058
272
272
  lusid/models/create_date_request.py,sha256=BewoN8Nijcbuc2SKo40yMbGVFo9pdaeinGlZYFrQ1Aw,4785
273
- lusid/models/create_derived_property_definition_request.py,sha256=FfzhTETM7huC1viyBtvezyXnyPFFIPpBiXvRrSfQSjM,5970
273
+ lusid/models/create_derived_property_definition_request.py,sha256=uLbHxHP9ktdhXwfPcW6g4AMlWKtP3fE8iZUaZqcaTng,6031
274
274
  lusid/models/create_derived_transaction_portfolio_request.py,sha256=jDqgwK3j-A5UHaeBSHZ_BADAo1fP5j3zZBkA7osrkfE,10150
275
275
  lusid/models/create_portfolio_details.py,sha256=yn9QqByAqH1RLx3lDnzr5PYj-y0xihxLzBYhhCRRq8A,2364
276
276
  lusid/models/create_portfolio_group_request.py,sha256=sRqA38fZ0Zj7Olc0fnCQnFliDBlQm-tjGp0mqtl-u9E,6132
277
- lusid/models/create_property_definition_request.py,sha256=UThbjqKr-J3dLE0qC-1w7QwpKgA6pIqKFBOmpczR6IQ,7448
277
+ lusid/models/create_property_definition_request.py,sha256=8mhq4_Patvkw8t-u9FnDsBz33MkYSEoSRvV8_GL4k_o,7509
278
278
  lusid/models/create_recipe_request.py,sha256=995tNY8Fkn_Pxsw1s4b5Nwc2Hh7Ux0uwtrq-14H85s0,3733
279
279
  lusid/models/create_reconciliation_request.py,sha256=QDbK3rJRsKeobn7VnR5Dp0Gm49FKgexNC9ZKj3Apjn0,6391
280
280
  lusid/models/create_reference_portfolio_request.py,sha256=yFEKW__RlQH7FtOh4aX88VJPwESgwaQEDdvrr_heDtc,5018
@@ -380,6 +380,7 @@ lusid/models/expanded_group.py,sha256=e1fIiusdlI_VtjJlF4g5O_yg6A_5VDOg2LaW94CUyJ
380
380
  lusid/models/expiry_event.py,sha256=o1jn1kCnF2zSL8WJ3TSuJ-E9t-s22esebwaJGrqUGKg,4686
381
381
  lusid/models/fee.py,sha256=NmBhi0yLXK18pRbL-jiaDlm4SrVv6Ddgm-Lc_IwaEUY,11510
382
382
  lusid/models/fee_accrual.py,sha256=A9DaaFrEY1JqMbym_7TIcMMQxSqnQFMxuVZzljnggIk,2862
383
+ lusid/models/fee_properties.py,sha256=Q92whmRw6aIwyxsgLVF9vntTY5WLwtrDdJMw9sSNoEQ,4232
383
384
  lusid/models/fee_request.py,sha256=aJbg758cpQ9tDD30G9_HLgnOOJcpxBvUDOPNvy7FL4E,8633
384
385
  lusid/models/fee_rule.py,sha256=Ez0GUE-1FlzEO8VF1IbH3p2I6gjMaQ6arWzo3VCyi5Q,6070
385
386
  lusid/models/fee_rule_upsert_request.py,sha256=0s31dKcYP1kUfOdeuwqbCTxNL6VQ42ryi_QPzayIrXw,6166
@@ -512,7 +513,7 @@ lusid/models/ir_vol_cube_data.py,sha256=2USuuiZigPzS0kwmMMTu1Ih9GHln6TAkPamcYNmU
512
513
  lusid/models/ir_vol_dependency.py,sha256=D937a4jaVJw75aCY4iQfkwVQW9T5F_vL8g6pbULBmMQ,4523
513
514
  lusid/models/is_business_day_response.py,sha256=LMwNCeJaC1JJ1W5Qp9WkWOBQ-mBA036kPYkG7p-7Yjs,2163
514
515
  lusid/models/journal_entry_line.py,sha256=YjyJvtQU-O4v-ss1822bqmvsjBRZBKmkitL0Q2N2gws,13873
515
- lusid/models/journal_entry_lines_query_parameters.py,sha256=tsqx7hMZb0WhG-dzZ0_bOUZ4w3HineT1lZpEUj8aNJg,4647
516
+ lusid/models/journal_entry_lines_query_parameters.py,sha256=ZZhOnG3yXxNvfzL9gxLO0OzFdg_O4R5ZqIz83EE-CwE,4663
516
517
  lusid/models/label_value_set.py,sha256=LmKlXRjeEx_uT1enh_EthgQx6e9JKNyGkBKkTd2eijI,1895
517
518
  lusid/models/leg_definition.py,sha256=WgraquXV_a2tt9Zo4TetGUz8_CMEh-PsxI90VN_1yJk,11100
518
519
  lusid/models/legal_entity.py,sha256=2WuI808Ns047_-yE32B7o1zWSd5McBJUCRxdJfRdwWI,8147
@@ -712,10 +713,10 @@ lusid/models/pricing_context.py,sha256=E8B73sz2c6A2o4HykfbMMfaspv4F6gQfx4fjzDLr6
712
713
  lusid/models/pricing_model.py,sha256=DqxFxGtRJHj3BIDdHqND5MwI9X3d1jh6cPc3hDkzuCk,1447
713
714
  lusid/models/pricing_options.py,sha256=ueSekxM9_XWSVd7uVELUtY86w-ul8WnLJR2gtTQm264,7961
714
715
  lusid/models/processed_command.py,sha256=YJ13QMu5M7XCkOqabOvkh3d-w_7P_2VEgRkliLsjTn4,2970
715
- lusid/models/property_definition.py,sha256=4l_jY5DfqfDrZaBczvZC6VXweFUKE5WnheM5RMV-Czc,14755
716
- lusid/models/property_definition_search_result.py,sha256=5naIPfxsgMzejUrgMaap9bmDaYMqb2mwp2GDKyqUcA4,12870
716
+ lusid/models/property_definition.py,sha256=vkZqzG7vUsTrf0G48ljdnLp8LeTpUJovC-iDLZvRQL0,14816
717
+ lusid/models/property_definition_search_result.py,sha256=BZTBhBAaoI295ZMnvFvt5hMGuaj7ZZxBP78TqLTUNxc,12931
717
718
  lusid/models/property_definition_type.py,sha256=0OhOMXLaFU6yGWTx0XfyrbQL3LSWYiVW2eFE6D9y9Pw,731
718
- lusid/models/property_domain.py,sha256=f7LSmpi5U1oewQyXQGFuLdmY0UndHjzLCvwhoLIsJOU,2076
719
+ lusid/models/property_domain.py,sha256=DOTnD-dqTuMIV2e7TGLVpTWX8cX1BKbQ1FCtBpaKkpQ,2120
719
720
  lusid/models/property_filter.py,sha256=DZ3_PZe4U9pJapQ69CH5zGFbJuVPQkUUfHP4OoAkw0I,3647
720
721
  lusid/models/property_interval.py,sha256=d8Beue8awpdtK-bLATPbQyqg91RQVgkq3GddTa_4q9k,3221
721
722
  lusid/models/property_key_compliance_parameter.py,sha256=pXUQRaKuNZ1NLiVoADRcDQQ4aA7YaESaH6TyU6C3Fpo,5316
@@ -976,7 +977,7 @@ lusid/models/translation_result.py,sha256=1mQyACCRXhEO02CPTUgcbUZjMnbIkgKKdWMDAm
976
977
  lusid/models/translation_script.py,sha256=j-UdU56HTuGFwrkTaJiq0Z6KFgE9GVGG9a9_jXoVcjw,2684
977
978
  lusid/models/translation_script_id.py,sha256=5JWxbDjiPVpsDZuz8RNmiC3JkVGOhodnLc2_NNmw17Q,3279
978
979
  lusid/models/trial_balance.py,sha256=Kv-qKEzG4UPxyYsY9As1LqojQ2BL5y4ijw6DuNkZvno,6216
979
- lusid/models/trial_balance_query_parameters.py,sha256=nkhAUaYSW9IDNDWKZBjjdm5fJx5ep2ypDgyOPpAk0mI,4934
980
+ lusid/models/trial_balance_query_parameters.py,sha256=u9ivqLRFnZMsHpAqEIX7RFkK3nkEVkgMR0VW1r2EE7Y,4950
980
981
  lusid/models/trigger_event.py,sha256=qAQyAOy6ilEy1RqoyQfsnP3mVINRXce4UnbG4GIPCV8,5687
981
982
  lusid/models/typed_resource_id.py,sha256=wu3n9oSrautEnoz1iqHvX8I6Uu_PO0ETQQObHW01PD8,3908
982
983
  lusid/models/unit_schema.py,sha256=i--1Gb0hYLo7lLH51nBC2Uzz8Sr6wOsKh6mdHjMN-aQ,675
@@ -1041,7 +1042,7 @@ lusid/models/upsert_structured_data_response.py,sha256=7YcDIwv6XBmd43sF9P2M3lVjP
1041
1042
  lusid/models/upsert_structured_result_data_request.py,sha256=kip4j0FlU1rrFteImXMG370rgVMkcRyqyDh2qSz5bOg,2696
1042
1043
  lusid/models/upsert_transaction_properties_response.py,sha256=ov0d64HIMWOFts6xlTbB0loa0Kz-SOzwjsvV7PGVnps,4345
1043
1044
  lusid/models/upsert_translation_script_request.py,sha256=2q-8ojXCtfdAefR9ZOgmHU2inlKLPTeczr5H6-18LKg,2417
1044
- lusid/models/upsert_valuation_point_request.py,sha256=hlw9CvSsgZh50poPjwzoW59QMfyGsgH_wDTXpmVBa8g,5323
1045
+ lusid/models/upsert_valuation_point_request.py,sha256=7_wa5XPGbnaViZsKr5lEBIBmfICC-vH15F9QbyJ_n_c,4782
1045
1046
  lusid/models/user.py,sha256=0lccLmhN2l5KyhvbEBYWp8LGpgIBOMYF_hgTGJniADE,2028
1046
1047
  lusid/models/valuation_point_data_query_parameters.py,sha256=vZq_o0zKM0Ez1BpNwoTqijrkLX8zE64UcufqEjKwL5o,2271
1047
1048
  lusid/models/valuation_point_data_request.py,sha256=KNfLFJEFGgXlVj22bH97HhCknNEtl9uUk4jNvjf-WFk,2394
@@ -1075,6 +1076,6 @@ lusid/models/weighted_instruments.py,sha256=1y_y_vw4-LPsbkQx4FOzWdZc5fJnzhVkf1D3
1075
1076
  lusid/models/yield_curve_data.py,sha256=SbxvdJ4-GWK9kpMdw4Fnxc7_kvIMwgsRsd_31UJn7nw,6330
1076
1077
  lusid/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1077
1078
  lusid/rest.py,sha256=TNUzQ3yLNT2L053EdR7R0vNzQh2J3TlYD1T56Dye0W0,10138
1078
- lusid_sdk-2.1.174.dist-info/METADATA,sha256=0BED3KgSBHAJazvI2A6geWRkXMRO_Dg5YR-e2Pr6QRU,188018
1079
- lusid_sdk-2.1.174.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
1080
- lusid_sdk-2.1.174.dist-info/RECORD,,
1079
+ lusid_sdk-2.1.184.dist-info/METADATA,sha256=7yn8sVR7rahqSxEC2hO3efAzTuXJWBcEPmmfO42bWHk,188374
1080
+ lusid_sdk-2.1.184.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
1081
+ lusid_sdk-2.1.184.dist-info/RECORD,,