lusid-sdk 2.0.455__py3-none-any.whl → 2.0.485__py3-none-any.whl

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

Potentially problematic release.


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

Files changed (32) hide show
  1. lusid/__init__.py +26 -0
  2. lusid/api/__init__.py +2 -0
  3. lusid/api/funds_api.py +1179 -125
  4. lusid/api/staging_rule_set_api.py +885 -0
  5. lusid/configuration.py +1 -1
  6. lusid/extensions/api_client_factory.py +4 -1
  7. lusid/models/__init__.py +24 -0
  8. lusid/models/create_derived_property_definition_request.py +3 -3
  9. lusid/models/create_property_definition_request.py +3 -3
  10. lusid/models/create_staging_rule_set_request.py +91 -0
  11. lusid/models/fund_request.py +1 -1
  12. lusid/models/instrument_event_configuration.py +8 -2
  13. lusid/models/order_graph_block_order_synopsis.py +9 -2
  14. lusid/models/order_graph_block_placement_synopsis.py +9 -2
  15. lusid/models/paged_resource_list_of_staging_rule_set.py +113 -0
  16. lusid/models/property_definition.py +3 -3
  17. lusid/models/property_definition_search_result.py +3 -3
  18. lusid/models/property_domain.py +1 -0
  19. lusid/models/set_share_class_instruments_request.py +79 -0
  20. lusid/models/staging_rule.py +90 -0
  21. lusid/models/staging_rule_approval_criteria.py +81 -0
  22. lusid/models/staging_rule_match_criteria.py +95 -0
  23. lusid/models/staging_rule_set.py +103 -0
  24. lusid/models/transaction_property_map.py +9 -8
  25. lusid/models/update_staging_rule_set_request.py +91 -0
  26. lusid/models/upsert_valuation_point_request.py +135 -0
  27. lusid/models/valuation_point_data_query_parameters.py +73 -0
  28. lusid/models/valuation_point_data_request.py +76 -0
  29. lusid/models/valuation_point_data_response.py +107 -0
  30. {lusid_sdk-2.0.455.dist-info → lusid_sdk-2.0.485.dist-info}/METADATA +28 -6
  31. {lusid_sdk-2.0.455.dist-info → lusid_sdk-2.0.485.dist-info}/RECORD +32 -19
  32. {lusid_sdk-2.0.455.dist-info → lusid_sdk-2.0.485.dist-info}/WHEEL +0 -0
lusid/api/funds_api.py CHANGED
@@ -27,11 +27,17 @@ from pydantic import Field, StrictStr, conint, conlist, constr, validator
27
27
  from typing import Dict, Optional
28
28
 
29
29
  from lusid.models.deleted_entity_response import DeletedEntityResponse
30
+ from lusid.models.diary_entry import DiaryEntry
30
31
  from lusid.models.fund import Fund
31
32
  from lusid.models.fund_properties import FundProperties
32
33
  from lusid.models.fund_request import FundRequest
33
34
  from lusid.models.model_property import ModelProperty
34
35
  from lusid.models.paged_resource_list_of_fund import PagedResourceListOfFund
36
+ from lusid.models.set_share_class_instruments_request import SetShareClassInstrumentsRequest
37
+ from lusid.models.upsert_valuation_point_request import UpsertValuationPointRequest
38
+ from lusid.models.valuation_point_data_query_parameters import ValuationPointDataQueryParameters
39
+ from lusid.models.valuation_point_data_request import ValuationPointDataRequest
40
+ from lusid.models.valuation_point_data_response import ValuationPointDataResponse
35
41
 
36
42
  from lusid.api_client import ApiClient
37
43
  from lusid.api_response import ApiResponse
@@ -53,6 +59,180 @@ class FundsApi:
53
59
  api_client = ApiClient.get_default()
54
60
  self.api_client = api_client
55
61
 
62
+ @overload
63
+ 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 Final state.")], **kwargs) -> ValuationPointDataResponse: # noqa: E501
64
+ ...
65
+
66
+ @overload
67
+ 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 Final state.")], async_req: Optional[bool]=True, **kwargs) -> ValuationPointDataResponse: # noqa: E501
68
+ ...
69
+
70
+ @validate_arguments
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 Final state.")], async_req: Optional[bool]=None, **kwargs) -> Union[ValuationPointDataResponse, Awaitable[ValuationPointDataResponse]]: # noqa: E501
72
+ """[EXPERIMENTAL] AcceptEstimatePoint: Accepts an Estimate Valuation Point. # noqa: E501
73
+
74
+ 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
75
+ This method makes a synchronous HTTP request by default. To make an
76
+ asynchronous HTTP request, please pass async_req=True
77
+
78
+ >>> thread = api.accept_estimate_point(scope, code, valuation_point_data_request, async_req=True)
79
+ >>> result = thread.get()
80
+
81
+ :param scope: The scope of the Fund. (required)
82
+ :type scope: str
83
+ :param code: The code of the Fund. Together with the scope this uniquely identifies the Fund. (required)
84
+ :type code: str
85
+ :param valuation_point_data_request: The valuationPointDataRequest which contains the Diary Entry code for the Estimate Valuation Point to move to Final state. (required)
86
+ :type valuation_point_data_request: ValuationPointDataRequest
87
+ :param async_req: Whether to execute the request asynchronously.
88
+ :type async_req: bool, optional
89
+ :param _request_timeout: timeout setting for this request.
90
+ If one number provided, it will be total request
91
+ timeout. It can also be a pair (tuple) of
92
+ (connection, read) timeouts.
93
+ :return: Returns the result object.
94
+ If the method is called asynchronously,
95
+ returns the request thread.
96
+ :rtype: ValuationPointDataResponse
97
+ """
98
+ kwargs['_return_http_data_only'] = True
99
+ if '_preload_content' in kwargs:
100
+ 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
101
+ raise ValueError(message)
102
+ if async_req is not None:
103
+ kwargs['async_req'] = async_req
104
+ return self.accept_estimate_point_with_http_info(scope, code, valuation_point_data_request, **kwargs) # noqa: E501
105
+
106
+ @validate_arguments
107
+ 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 Final state.")], **kwargs) -> ApiResponse: # noqa: E501
108
+ """[EXPERIMENTAL] AcceptEstimatePoint: Accepts an Estimate Valuation Point. # noqa: E501
109
+
110
+ 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
111
+ This method makes a synchronous HTTP request by default. To make an
112
+ asynchronous HTTP request, please pass async_req=True
113
+
114
+ >>> thread = api.accept_estimate_point_with_http_info(scope, code, valuation_point_data_request, async_req=True)
115
+ >>> result = thread.get()
116
+
117
+ :param scope: The scope of the Fund. (required)
118
+ :type scope: str
119
+ :param code: The code of the Fund. Together with the scope this uniquely identifies the Fund. (required)
120
+ :type code: str
121
+ :param valuation_point_data_request: The valuationPointDataRequest which contains the Diary Entry code for the Estimate Valuation Point to move to Final state. (required)
122
+ :type valuation_point_data_request: ValuationPointDataRequest
123
+ :param async_req: Whether to execute the request asynchronously.
124
+ :type async_req: bool, optional
125
+ :param _preload_content: if False, the ApiResponse.data will
126
+ be set to none and raw_data will store the
127
+ HTTP response body without reading/decoding.
128
+ Default is True.
129
+ :type _preload_content: bool, optional
130
+ :param _return_http_data_only: response data instead of ApiResponse
131
+ object with status code, headers, etc
132
+ :type _return_http_data_only: bool, optional
133
+ :param _request_timeout: timeout setting for this request. If one
134
+ number provided, it will be total request
135
+ timeout. It can also be a pair (tuple) of
136
+ (connection, read) timeouts.
137
+ :param _request_auth: set to override the auth_settings for an a single
138
+ request; this effectively ignores the authentication
139
+ in the spec for a single request.
140
+ :type _request_auth: dict, optional
141
+ :type _content_type: string, optional: force content-type for the request
142
+ :return: Returns the result object.
143
+ If the method is called asynchronously,
144
+ returns the request thread.
145
+ :rtype: tuple(ValuationPointDataResponse, status_code(int), headers(HTTPHeaderDict))
146
+ """
147
+
148
+ _params = locals()
149
+
150
+ _all_params = [
151
+ 'scope',
152
+ 'code',
153
+ 'valuation_point_data_request'
154
+ ]
155
+ _all_params.extend(
156
+ [
157
+ 'async_req',
158
+ '_return_http_data_only',
159
+ '_preload_content',
160
+ '_request_timeout',
161
+ '_request_auth',
162
+ '_content_type',
163
+ '_headers'
164
+ ]
165
+ )
166
+
167
+ # validate the arguments
168
+ for _key, _val in _params['kwargs'].items():
169
+ if _key not in _all_params:
170
+ raise ApiTypeError(
171
+ "Got an unexpected keyword argument '%s'"
172
+ " to method accept_estimate_point" % _key
173
+ )
174
+ _params[_key] = _val
175
+ del _params['kwargs']
176
+
177
+ _collection_formats = {}
178
+
179
+ # process the path parameters
180
+ _path_params = {}
181
+ if _params['scope']:
182
+ _path_params['scope'] = _params['scope']
183
+
184
+ if _params['code']:
185
+ _path_params['code'] = _params['code']
186
+
187
+
188
+ # process the query parameters
189
+ _query_params = []
190
+ # process the header parameters
191
+ _header_params = dict(_params.get('_headers', {}))
192
+ # process the form parameters
193
+ _form_params = []
194
+ _files = {}
195
+ # process the body parameter
196
+ _body_params = None
197
+ if _params['valuation_point_data_request'] is not None:
198
+ _body_params = _params['valuation_point_data_request']
199
+
200
+ # set the HTTP header `Accept`
201
+ _header_params['Accept'] = self.api_client.select_header_accept(
202
+ ['text/plain', 'application/json', 'text/json']) # noqa: E501
203
+
204
+ # set the HTTP header `Content-Type`
205
+ _content_types_list = _params.get('_content_type',
206
+ self.api_client.select_header_content_type(
207
+ ['application/json-patch+json', 'application/json', 'text/json', 'application/*+json']))
208
+ if _content_types_list:
209
+ _header_params['Content-Type'] = _content_types_list
210
+
211
+ # authentication setting
212
+ _auth_settings = ['oauth2'] # noqa: E501
213
+
214
+ _response_types_map = {
215
+ '200': "ValuationPointDataResponse",
216
+ '400': "LusidValidationProblemDetails",
217
+ }
218
+
219
+ return self.api_client.call_api(
220
+ '/api/funds/{scope}/{code}/valuationpoints/$acceptestimate', 'POST',
221
+ _path_params,
222
+ _query_params,
223
+ _header_params,
224
+ body=_body_params,
225
+ post_params=_form_params,
226
+ files=_files,
227
+ response_types_map=_response_types_map,
228
+ auth_settings=_auth_settings,
229
+ async_req=_params.get('async_req'),
230
+ _return_http_data_only=_params.get('_return_http_data_only'), # noqa: E501
231
+ _preload_content=_params.get('_preload_content', True),
232
+ _request_timeout=_params.get('_request_timeout'),
233
+ collection_formats=_collection_formats,
234
+ _request_auth=_params.get('_request_auth'))
235
+
56
236
  @overload
57
237
  async def create_fund(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the Fund.")], fund_request : Annotated[FundRequest, Field(..., description="The definition of the Fund.")], **kwargs) -> Fund: # noqa: E501
58
238
  ...
@@ -379,34 +559,30 @@ class FundsApi:
379
559
  _request_auth=_params.get('_request_auth'))
380
560
 
381
561
  @overload
382
- async def get_fund(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.")], effective_at : Annotated[Optional[StrictStr], Field(description="The effective datetime or cut label at which to retrieve the Fund properties. Defaults to the current LUSID system datetime if not specified.")] = None, as_at : Annotated[Optional[datetime], Field(description="The asAt datetime at which to retrieve the Fund definition. Defaults to returning the latest version of the Fund definition if not specified.")] = None, property_keys : Annotated[Optional[conlist(StrictStr)], Field(description="A list of property keys from the 'Fund' domain to decorate onto the Fund. These must take the format {domain}/{scope}/{code}, for example 'Fund/Manager/Id'. If no properties are specified, then no properties will be returned.")] = None, **kwargs) -> Fund: # noqa: E501
562
+ async def delete_valuation_point(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the Fund for the valuation point to be deleted.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the Fund containing the Valuation Point to be deleted. Together with the scope this uniquely identifies the Fund.")], diary_entry_code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The diary entry code for the valuation Point to be deleted.")], **kwargs) -> DeletedEntityResponse: # noqa: E501
383
563
  ...
384
564
 
385
565
  @overload
386
- def get_fund(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.")], effective_at : Annotated[Optional[StrictStr], Field(description="The effective datetime or cut label at which to retrieve the Fund properties. Defaults to the current LUSID system datetime if not specified.")] = None, as_at : Annotated[Optional[datetime], Field(description="The asAt datetime at which to retrieve the Fund definition. Defaults to returning the latest version of the Fund definition if not specified.")] = None, property_keys : Annotated[Optional[conlist(StrictStr)], Field(description="A list of property keys from the 'Fund' domain to decorate onto the Fund. These must take the format {domain}/{scope}/{code}, for example 'Fund/Manager/Id'. If no properties are specified, then no properties will be returned.")] = None, async_req: Optional[bool]=True, **kwargs) -> Fund: # noqa: E501
566
+ def delete_valuation_point(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the Fund for the valuation point to be deleted.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the Fund containing the Valuation Point to be deleted. Together with the scope this uniquely identifies the Fund.")], diary_entry_code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The diary entry code for the valuation Point to be deleted.")], async_req: Optional[bool]=True, **kwargs) -> DeletedEntityResponse: # noqa: E501
387
567
  ...
388
568
 
389
569
  @validate_arguments
390
- def get_fund(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.")], effective_at : Annotated[Optional[StrictStr], Field(description="The effective datetime or cut label at which to retrieve the Fund properties. Defaults to the current LUSID system datetime if not specified.")] = None, as_at : Annotated[Optional[datetime], Field(description="The asAt datetime at which to retrieve the Fund definition. Defaults to returning the latest version of the Fund definition if not specified.")] = None, property_keys : Annotated[Optional[conlist(StrictStr)], Field(description="A list of property keys from the 'Fund' domain to decorate onto the Fund. These must take the format {domain}/{scope}/{code}, for example 'Fund/Manager/Id'. If no properties are specified, then no properties will be returned.")] = None, async_req: Optional[bool]=None, **kwargs) -> Union[Fund, Awaitable[Fund]]: # noqa: E501
391
- """[EXPERIMENTAL] GetFund: Get a Fund. # noqa: E501
570
+ def delete_valuation_point(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the Fund for the valuation point to be deleted.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the Fund containing the Valuation Point to be deleted. Together with the scope this uniquely identifies the Fund.")], diary_entry_code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The diary entry code for the valuation Point to be deleted.")], async_req: Optional[bool]=None, **kwargs) -> Union[DeletedEntityResponse, Awaitable[DeletedEntityResponse]]: # noqa: E501
571
+ """[EXPERIMENTAL] DeleteValuationPoint: Delete a Valuation Point. # noqa: E501
392
572
 
393
- Retrieve the definition of a particular Fund. # noqa: E501
573
+ Deletes the given Valuation Point. # noqa: E501
394
574
  This method makes a synchronous HTTP request by default. To make an
395
575
  asynchronous HTTP request, please pass async_req=True
396
576
 
397
- >>> thread = api.get_fund(scope, code, effective_at, as_at, property_keys, async_req=True)
577
+ >>> thread = api.delete_valuation_point(scope, code, diary_entry_code, async_req=True)
398
578
  >>> result = thread.get()
399
579
 
400
- :param scope: The scope of the Fund. (required)
580
+ :param scope: The scope of the Fund for the valuation point to be deleted. (required)
401
581
  :type scope: str
402
- :param code: The code of the Fund. Together with the scope this uniquely identifies the Fund. (required)
582
+ :param code: The code of the Fund containing the Valuation Point to be deleted. Together with the scope this uniquely identifies the Fund. (required)
403
583
  :type code: str
404
- :param effective_at: The effective datetime or cut label at which to retrieve the Fund properties. Defaults to the current LUSID system datetime if not specified.
405
- :type effective_at: str
406
- :param as_at: The asAt datetime at which to retrieve the Fund definition. Defaults to returning the latest version of the Fund definition if not specified.
407
- :type as_at: datetime
408
- :param property_keys: A list of property keys from the 'Fund' domain to decorate onto the Fund. These must take the format {domain}/{scope}/{code}, for example 'Fund/Manager/Id'. If no properties are specified, then no properties will be returned.
409
- :type property_keys: List[str]
584
+ :param diary_entry_code: The diary entry code for the valuation Point to be deleted. (required)
585
+ :type diary_entry_code: str
410
586
  :param async_req: Whether to execute the request asynchronously.
411
587
  :type async_req: bool, optional
412
588
  :param _request_timeout: timeout setting for this request.
@@ -416,37 +592,33 @@ class FundsApi:
416
592
  :return: Returns the result object.
417
593
  If the method is called asynchronously,
418
594
  returns the request thread.
419
- :rtype: Fund
595
+ :rtype: DeletedEntityResponse
420
596
  """
421
597
  kwargs['_return_http_data_only'] = True
422
598
  if '_preload_content' in kwargs:
423
- message = "Error! Please call the get_fund_with_http_info method with `_preload_content` instead and obtain raw data from ApiResponse.raw_data" # noqa: E501
599
+ message = "Error! Please call the delete_valuation_point_with_http_info method with `_preload_content` instead and obtain raw data from ApiResponse.raw_data" # noqa: E501
424
600
  raise ValueError(message)
425
601
  if async_req is not None:
426
602
  kwargs['async_req'] = async_req
427
- return self.get_fund_with_http_info(scope, code, effective_at, as_at, property_keys, **kwargs) # noqa: E501
603
+ return self.delete_valuation_point_with_http_info(scope, code, diary_entry_code, **kwargs) # noqa: E501
428
604
 
429
605
  @validate_arguments
430
- def get_fund_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.")], effective_at : Annotated[Optional[StrictStr], Field(description="The effective datetime or cut label at which to retrieve the Fund properties. Defaults to the current LUSID system datetime if not specified.")] = None, as_at : Annotated[Optional[datetime], Field(description="The asAt datetime at which to retrieve the Fund definition. Defaults to returning the latest version of the Fund definition if not specified.")] = None, property_keys : Annotated[Optional[conlist(StrictStr)], Field(description="A list of property keys from the 'Fund' domain to decorate onto the Fund. These must take the format {domain}/{scope}/{code}, for example 'Fund/Manager/Id'. If no properties are specified, then no properties will be returned.")] = None, **kwargs) -> ApiResponse: # noqa: E501
431
- """[EXPERIMENTAL] GetFund: Get a Fund. # noqa: E501
606
+ def delete_valuation_point_with_http_info(self, scope : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The scope of the Fund for the valuation point to be deleted.")], code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The code of the Fund containing the Valuation Point to be deleted. Together with the scope this uniquely identifies the Fund.")], diary_entry_code : Annotated[constr(strict=True, max_length=64, min_length=1), Field(..., description="The diary entry code for the valuation Point to be deleted.")], **kwargs) -> ApiResponse: # noqa: E501
607
+ """[EXPERIMENTAL] DeleteValuationPoint: Delete a Valuation Point. # noqa: E501
432
608
 
433
- Retrieve the definition of a particular Fund. # noqa: E501
609
+ Deletes the given Valuation Point. # noqa: E501
434
610
  This method makes a synchronous HTTP request by default. To make an
435
611
  asynchronous HTTP request, please pass async_req=True
436
612
 
437
- >>> thread = api.get_fund_with_http_info(scope, code, effective_at, as_at, property_keys, async_req=True)
613
+ >>> thread = api.delete_valuation_point_with_http_info(scope, code, diary_entry_code, async_req=True)
438
614
  >>> result = thread.get()
439
615
 
440
- :param scope: The scope of the Fund. (required)
616
+ :param scope: The scope of the Fund for the valuation point to be deleted. (required)
441
617
  :type scope: str
442
- :param code: The code of the Fund. Together with the scope this uniquely identifies the Fund. (required)
618
+ :param code: The code of the Fund containing the Valuation Point to be deleted. Together with the scope this uniquely identifies the Fund. (required)
443
619
  :type code: str
444
- :param effective_at: The effective datetime or cut label at which to retrieve the Fund properties. Defaults to the current LUSID system datetime if not specified.
445
- :type effective_at: str
446
- :param as_at: The asAt datetime at which to retrieve the Fund definition. Defaults to returning the latest version of the Fund definition if not specified.
447
- :type as_at: datetime
448
- :param property_keys: A list of property keys from the 'Fund' domain to decorate onto the Fund. These must take the format {domain}/{scope}/{code}, for example 'Fund/Manager/Id'. If no properties are specified, then no properties will be returned.
449
- :type property_keys: List[str]
620
+ :param diary_entry_code: The diary entry code for the valuation Point to be deleted. (required)
621
+ :type diary_entry_code: str
450
622
  :param async_req: Whether to execute the request asynchronously.
451
623
  :type async_req: bool, optional
452
624
  :param _preload_content: if False, the ApiResponse.data will
@@ -469,7 +641,7 @@ class FundsApi:
469
641
  :return: Returns the result object.
470
642
  If the method is called asynchronously,
471
643
  returns the request thread.
472
- :rtype: tuple(Fund, status_code(int), headers(HTTPHeaderDict))
644
+ :rtype: tuple(DeletedEntityResponse, status_code(int), headers(HTTPHeaderDict))
473
645
  """
474
646
 
475
647
  _params = locals()
@@ -477,9 +649,7 @@ class FundsApi:
477
649
  _all_params = [
478
650
  'scope',
479
651
  'code',
480
- 'effective_at',
481
- 'as_at',
482
- 'property_keys'
652
+ 'diary_entry_code'
483
653
  ]
484
654
  _all_params.extend(
485
655
  [
@@ -498,7 +668,7 @@ class FundsApi:
498
668
  if _key not in _all_params:
499
669
  raise ApiTypeError(
500
670
  "Got an unexpected keyword argument '%s'"
501
- " to method get_fund" % _key
671
+ " to method delete_valuation_point" % _key
502
672
  )
503
673
  _params[_key] = _val
504
674
  del _params['kwargs']
@@ -513,22 +683,12 @@ class FundsApi:
513
683
  if _params['code']:
514
684
  _path_params['code'] = _params['code']
515
685
 
686
+ if _params['diary_entry_code']:
687
+ _path_params['diaryEntryCode'] = _params['diary_entry_code']
688
+
516
689
 
517
690
  # process the query parameters
518
691
  _query_params = []
519
- if _params.get('effective_at') is not None: # noqa: E501
520
- _query_params.append(('effectiveAt', _params['effective_at']))
521
-
522
- if _params.get('as_at') is not None: # noqa: E501
523
- if isinstance(_params['as_at'], datetime):
524
- _query_params.append(('asAt', _params['as_at'].strftime(self.api_client.configuration.datetime_format)))
525
- else:
526
- _query_params.append(('asAt', _params['as_at']))
527
-
528
- if _params.get('property_keys') is not None: # noqa: E501
529
- _query_params.append(('propertyKeys', _params['property_keys']))
530
- _collection_formats['propertyKeys'] = 'multi'
531
-
532
692
  # process the header parameters
533
693
  _header_params = dict(_params.get('_headers', {}))
534
694
  # process the form parameters
@@ -544,12 +704,12 @@ class FundsApi:
544
704
  _auth_settings = ['oauth2'] # noqa: E501
545
705
 
546
706
  _response_types_map = {
547
- '200': "Fund",
707
+ '200': "DeletedEntityResponse",
548
708
  '400': "LusidValidationProblemDetails",
549
709
  }
550
710
 
551
711
  return self.api_client.call_api(
552
- '/api/funds/{scope}/{code}', 'GET',
712
+ '/api/funds/{scope}/{code}/valuationpoints/{diaryEntryCode}', 'DELETE',
553
713
  _path_params,
554
714
  _query_params,
555
715
  _header_params,
@@ -566,38 +726,30 @@ class FundsApi:
566
726
  _request_auth=_params.get('_request_auth'))
567
727
 
568
728
  @overload
569
- async def list_funds(self, effective_at : Annotated[Optional[StrictStr], Field(description="The effective datetime or cut label at which to list the TimeVariant properties for the Funds. Defaults to the current LUSID system datetime if not specified.")] = None, as_at : Annotated[Optional[datetime], Field(description="The asAt datetime at which to list the Funds. Defaults to returning the latest version of each Fund if not specified.")] = None, page : Annotated[Optional[constr(strict=True, max_length=500, min_length=1)], Field(description="The pagination token to use to continue listing Funds; this value is returned from the previous call. If a pagination token is provided, the filter, effectiveAt and asAt fields must not have changed since the original request.")] = None, limit : Annotated[Optional[conint(strict=True, le=5000, ge=1)], Field(description="When paginating, limit the results to this number. Defaults to 100 if not specified.")] = None, filter : Annotated[Optional[constr(strict=True, max_length=16384, min_length=0)], Field(description="Expression to filter the results. For example, to filter on the Fund type, specify \"id.Code eq 'Fund1'\". For more information about filtering results, see https://support.lusid.com/knowledgebase/article/KA-01914.")] = None, sort_by : Annotated[Optional[conlist(StrictStr)], Field(description="A list of field names or properties to sort by, each suffixed by \" ASC\" or \" DESC\"")] = None, property_keys : Annotated[Optional[conlist(StrictStr)], Field(description="A list of property keys from the 'Fund' domain to decorate onto each Fund. These must take the format {domain}/{scope}/{code}, for example 'Fund/Manager/Id'.")] = None, **kwargs) -> PagedResourceListOfFund: # noqa: E501
729
+ 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
570
730
  ...
571
731
 
572
732
  @overload
573
- def list_funds(self, effective_at : Annotated[Optional[StrictStr], Field(description="The effective datetime or cut label at which to list the TimeVariant properties for the Funds. Defaults to the current LUSID system datetime if not specified.")] = None, as_at : Annotated[Optional[datetime], Field(description="The asAt datetime at which to list the Funds. Defaults to returning the latest version of each Fund if not specified.")] = None, page : Annotated[Optional[constr(strict=True, max_length=500, min_length=1)], Field(description="The pagination token to use to continue listing Funds; this value is returned from the previous call. If a pagination token is provided, the filter, effectiveAt and asAt fields must not have changed since the original request.")] = None, limit : Annotated[Optional[conint(strict=True, le=5000, ge=1)], Field(description="When paginating, limit the results to this number. Defaults to 100 if not specified.")] = None, filter : Annotated[Optional[constr(strict=True, max_length=16384, min_length=0)], Field(description="Expression to filter the results. For example, to filter on the Fund type, specify \"id.Code eq 'Fund1'\". For more information about filtering results, see https://support.lusid.com/knowledgebase/article/KA-01914.")] = None, sort_by : Annotated[Optional[conlist(StrictStr)], Field(description="A list of field names or properties to sort by, each suffixed by \" ASC\" or \" DESC\"")] = None, property_keys : Annotated[Optional[conlist(StrictStr)], Field(description="A list of property keys from the 'Fund' domain to decorate onto each Fund. These must take the format {domain}/{scope}/{code}, for example 'Fund/Manager/Id'.")] = None, async_req: Optional[bool]=True, **kwargs) -> PagedResourceListOfFund: # noqa: E501
733
+ 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
574
734
  ...
575
735
 
576
736
  @validate_arguments
577
- def list_funds(self, effective_at : Annotated[Optional[StrictStr], Field(description="The effective datetime or cut label at which to list the TimeVariant properties for the Funds. Defaults to the current LUSID system datetime if not specified.")] = None, as_at : Annotated[Optional[datetime], Field(description="The asAt datetime at which to list the Funds. Defaults to returning the latest version of each Fund if not specified.")] = None, page : Annotated[Optional[constr(strict=True, max_length=500, min_length=1)], Field(description="The pagination token to use to continue listing Funds; this value is returned from the previous call. If a pagination token is provided, the filter, effectiveAt and asAt fields must not have changed since the original request.")] = None, limit : Annotated[Optional[conint(strict=True, le=5000, ge=1)], Field(description="When paginating, limit the results to this number. Defaults to 100 if not specified.")] = None, filter : Annotated[Optional[constr(strict=True, max_length=16384, min_length=0)], Field(description="Expression to filter the results. For example, to filter on the Fund type, specify \"id.Code eq 'Fund1'\". For more information about filtering results, see https://support.lusid.com/knowledgebase/article/KA-01914.")] = None, sort_by : Annotated[Optional[conlist(StrictStr)], Field(description="A list of field names or properties to sort by, each suffixed by \" ASC\" or \" DESC\"")] = None, property_keys : Annotated[Optional[conlist(StrictStr)], Field(description="A list of property keys from the 'Fund' domain to decorate onto each Fund. These must take the format {domain}/{scope}/{code}, for example 'Fund/Manager/Id'.")] = None, async_req: Optional[bool]=None, **kwargs) -> Union[PagedResourceListOfFund, Awaitable[PagedResourceListOfFund]]: # noqa: E501
578
- """[EXPERIMENTAL] ListFunds: List Funds. # noqa: E501
737
+ 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
738
+ """[EXPERIMENTAL] FinaliseCandidateValuation: Finalise Candidate. # noqa: E501
579
739
 
580
- List all the Funds matching particular criteria. # noqa: E501
740
+ Moves a 'Candidate' status Valuation Point to status 'Final'. # noqa: E501
581
741
  This method makes a synchronous HTTP request by default. To make an
582
742
  asynchronous HTTP request, please pass async_req=True
583
743
 
584
- >>> thread = api.list_funds(effective_at, as_at, page, limit, filter, sort_by, property_keys, async_req=True)
744
+ >>> thread = api.finalise_candidate_valuation(scope, code, valuation_point_data_request, async_req=True)
585
745
  >>> result = thread.get()
586
746
 
587
- :param effective_at: The effective datetime or cut label at which to list the TimeVariant properties for the Funds. Defaults to the current LUSID system datetime if not specified.
588
- :type effective_at: str
589
- :param as_at: The asAt datetime at which to list the Funds. Defaults to returning the latest version of each Fund if not specified.
590
- :type as_at: datetime
591
- :param page: The pagination token to use to continue listing Funds; this value is returned from the previous call. If a pagination token is provided, the filter, effectiveAt and asAt fields must not have changed since the original request.
592
- :type page: str
593
- :param limit: When paginating, limit the results to this number. Defaults to 100 if not specified.
594
- :type limit: int
595
- :param filter: Expression to filter the results. For example, to filter on the Fund type, specify \"id.Code eq 'Fund1'\". For more information about filtering results, see https://support.lusid.com/knowledgebase/article/KA-01914.
596
- :type filter: str
597
- :param sort_by: A list of field names or properties to sort by, each suffixed by \" ASC\" or \" DESC\"
598
- :type sort_by: List[str]
599
- :param property_keys: A list of property keys from the 'Fund' domain to decorate onto each Fund. These must take the format {domain}/{scope}/{code}, for example 'Fund/Manager/Id'.
600
- :type property_keys: List[str]
747
+ :param scope: The scope of the Fund. (required)
748
+ :type scope: str
749
+ :param code: The code of the Fund. Together with the scope this uniquely identifies the Fund. (required)
750
+ :type code: str
751
+ :param valuation_point_data_request: The valuationPointDataRequest which contains the diary entry code to mark as final. (required)
752
+ :type valuation_point_data_request: ValuationPointDataRequest
601
753
  :param async_req: Whether to execute the request asynchronously.
602
754
  :type async_req: bool, optional
603
755
  :param _request_timeout: timeout setting for this request.
@@ -607,41 +759,33 @@ class FundsApi:
607
759
  :return: Returns the result object.
608
760
  If the method is called asynchronously,
609
761
  returns the request thread.
610
- :rtype: PagedResourceListOfFund
762
+ :rtype: ValuationPointDataResponse
611
763
  """
612
764
  kwargs['_return_http_data_only'] = True
613
765
  if '_preload_content' in kwargs:
614
- message = "Error! Please call the list_funds_with_http_info method with `_preload_content` instead and obtain raw data from ApiResponse.raw_data" # noqa: E501
766
+ 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
615
767
  raise ValueError(message)
616
768
  if async_req is not None:
617
769
  kwargs['async_req'] = async_req
618
- return self.list_funds_with_http_info(effective_at, as_at, page, limit, filter, sort_by, property_keys, **kwargs) # noqa: E501
770
+ return self.finalise_candidate_valuation_with_http_info(scope, code, valuation_point_data_request, **kwargs) # noqa: E501
619
771
 
620
772
  @validate_arguments
621
- def list_funds_with_http_info(self, effective_at : Annotated[Optional[StrictStr], Field(description="The effective datetime or cut label at which to list the TimeVariant properties for the Funds. Defaults to the current LUSID system datetime if not specified.")] = None, as_at : Annotated[Optional[datetime], Field(description="The asAt datetime at which to list the Funds. Defaults to returning the latest version of each Fund if not specified.")] = None, page : Annotated[Optional[constr(strict=True, max_length=500, min_length=1)], Field(description="The pagination token to use to continue listing Funds; this value is returned from the previous call. If a pagination token is provided, the filter, effectiveAt and asAt fields must not have changed since the original request.")] = None, limit : Annotated[Optional[conint(strict=True, le=5000, ge=1)], Field(description="When paginating, limit the results to this number. Defaults to 100 if not specified.")] = None, filter : Annotated[Optional[constr(strict=True, max_length=16384, min_length=0)], Field(description="Expression to filter the results. For example, to filter on the Fund type, specify \"id.Code eq 'Fund1'\". For more information about filtering results, see https://support.lusid.com/knowledgebase/article/KA-01914.")] = None, sort_by : Annotated[Optional[conlist(StrictStr)], Field(description="A list of field names or properties to sort by, each suffixed by \" ASC\" or \" DESC\"")] = None, property_keys : Annotated[Optional[conlist(StrictStr)], Field(description="A list of property keys from the 'Fund' domain to decorate onto each Fund. These must take the format {domain}/{scope}/{code}, for example 'Fund/Manager/Id'.")] = None, **kwargs) -> ApiResponse: # noqa: E501
622
- """[EXPERIMENTAL] ListFunds: List Funds. # noqa: E501
773
+ 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
774
+ """[EXPERIMENTAL] FinaliseCandidateValuation: Finalise Candidate. # noqa: E501
623
775
 
624
- List all the Funds matching particular criteria. # noqa: E501
776
+ Moves a 'Candidate' status Valuation Point to status 'Final'. # noqa: E501
625
777
  This method makes a synchronous HTTP request by default. To make an
626
778
  asynchronous HTTP request, please pass async_req=True
627
779
 
628
- >>> thread = api.list_funds_with_http_info(effective_at, as_at, page, limit, filter, sort_by, property_keys, async_req=True)
780
+ >>> thread = api.finalise_candidate_valuation_with_http_info(scope, code, valuation_point_data_request, async_req=True)
629
781
  >>> result = thread.get()
630
782
 
631
- :param effective_at: The effective datetime or cut label at which to list the TimeVariant properties for the Funds. Defaults to the current LUSID system datetime if not specified.
632
- :type effective_at: str
633
- :param as_at: The asAt datetime at which to list the Funds. Defaults to returning the latest version of each Fund if not specified.
634
- :type as_at: datetime
635
- :param page: The pagination token to use to continue listing Funds; this value is returned from the previous call. If a pagination token is provided, the filter, effectiveAt and asAt fields must not have changed since the original request.
636
- :type page: str
637
- :param limit: When paginating, limit the results to this number. Defaults to 100 if not specified.
638
- :type limit: int
639
- :param filter: Expression to filter the results. For example, to filter on the Fund type, specify \"id.Code eq 'Fund1'\". For more information about filtering results, see https://support.lusid.com/knowledgebase/article/KA-01914.
640
- :type filter: str
641
- :param sort_by: A list of field names or properties to sort by, each suffixed by \" ASC\" or \" DESC\"
642
- :type sort_by: List[str]
643
- :param property_keys: A list of property keys from the 'Fund' domain to decorate onto each Fund. These must take the format {domain}/{scope}/{code}, for example 'Fund/Manager/Id'.
644
- :type property_keys: List[str]
783
+ :param scope: The scope of the Fund. (required)
784
+ :type scope: str
785
+ :param code: The code of the Fund. Together with the scope this uniquely identifies the Fund. (required)
786
+ :type code: str
787
+ :param valuation_point_data_request: The valuationPointDataRequest which contains the diary entry code to mark as final. (required)
788
+ :type valuation_point_data_request: ValuationPointDataRequest
645
789
  :param async_req: Whether to execute the request asynchronously.
646
790
  :type async_req: bool, optional
647
791
  :param _preload_content: if False, the ApiResponse.data will
@@ -664,15 +808,577 @@ class FundsApi:
664
808
  :return: Returns the result object.
665
809
  If the method is called asynchronously,
666
810
  returns the request thread.
667
- :rtype: tuple(PagedResourceListOfFund, status_code(int), headers(HTTPHeaderDict))
811
+ :rtype: tuple(ValuationPointDataResponse, status_code(int), headers(HTTPHeaderDict))
668
812
  """
669
813
 
670
814
  _params = locals()
671
815
 
672
816
  _all_params = [
673
- 'effective_at',
674
- 'as_at',
675
- 'page',
817
+ 'scope',
818
+ 'code',
819
+ 'valuation_point_data_request'
820
+ ]
821
+ _all_params.extend(
822
+ [
823
+ 'async_req',
824
+ '_return_http_data_only',
825
+ '_preload_content',
826
+ '_request_timeout',
827
+ '_request_auth',
828
+ '_content_type',
829
+ '_headers'
830
+ ]
831
+ )
832
+
833
+ # validate the arguments
834
+ for _key, _val in _params['kwargs'].items():
835
+ if _key not in _all_params:
836
+ raise ApiTypeError(
837
+ "Got an unexpected keyword argument '%s'"
838
+ " to method finalise_candidate_valuation" % _key
839
+ )
840
+ _params[_key] = _val
841
+ del _params['kwargs']
842
+
843
+ _collection_formats = {}
844
+
845
+ # process the path parameters
846
+ _path_params = {}
847
+ if _params['scope']:
848
+ _path_params['scope'] = _params['scope']
849
+
850
+ if _params['code']:
851
+ _path_params['code'] = _params['code']
852
+
853
+
854
+ # process the query parameters
855
+ _query_params = []
856
+ # process the header parameters
857
+ _header_params = dict(_params.get('_headers', {}))
858
+ # process the form parameters
859
+ _form_params = []
860
+ _files = {}
861
+ # process the body parameter
862
+ _body_params = None
863
+ if _params['valuation_point_data_request'] is not None:
864
+ _body_params = _params['valuation_point_data_request']
865
+
866
+ # set the HTTP header `Accept`
867
+ _header_params['Accept'] = self.api_client.select_header_accept(
868
+ ['text/plain', 'application/json', 'text/json']) # noqa: E501
869
+
870
+ # set the HTTP header `Content-Type`
871
+ _content_types_list = _params.get('_content_type',
872
+ self.api_client.select_header_content_type(
873
+ ['application/json-patch+json', 'application/json', 'text/json', 'application/*+json']))
874
+ if _content_types_list:
875
+ _header_params['Content-Type'] = _content_types_list
876
+
877
+ # authentication setting
878
+ _auth_settings = ['oauth2'] # noqa: E501
879
+
880
+ _response_types_map = {
881
+ '200': "ValuationPointDataResponse",
882
+ '400': "LusidValidationProblemDetails",
883
+ }
884
+
885
+ return self.api_client.call_api(
886
+ '/api/funds/{scope}/{code}/valuationpoints/$finalisecandidate', 'POST',
887
+ _path_params,
888
+ _query_params,
889
+ _header_params,
890
+ body=_body_params,
891
+ post_params=_form_params,
892
+ files=_files,
893
+ response_types_map=_response_types_map,
894
+ auth_settings=_auth_settings,
895
+ async_req=_params.get('async_req'),
896
+ _return_http_data_only=_params.get('_return_http_data_only'), # noqa: E501
897
+ _preload_content=_params.get('_preload_content', True),
898
+ _request_timeout=_params.get('_request_timeout'),
899
+ collection_formats=_collection_formats,
900
+ _request_auth=_params.get('_request_auth'))
901
+
902
+ @overload
903
+ async def get_fund(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.")], effective_at : Annotated[Optional[StrictStr], Field(description="The effective datetime or cut label at which to retrieve the Fund properties. Defaults to the current LUSID system datetime if not specified.")] = None, as_at : Annotated[Optional[datetime], Field(description="The asAt datetime at which to retrieve the Fund definition. Defaults to returning the latest version of the Fund definition if not specified.")] = None, property_keys : Annotated[Optional[conlist(StrictStr)], Field(description="A list of property keys from the 'Fund' domain to decorate onto the Fund. These must take the format {domain}/{scope}/{code}, for example 'Fund/Manager/Id'. If no properties are specified, then no properties will be returned.")] = None, **kwargs) -> Fund: # noqa: E501
904
+ ...
905
+
906
+ @overload
907
+ def get_fund(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.")], effective_at : Annotated[Optional[StrictStr], Field(description="The effective datetime or cut label at which to retrieve the Fund properties. Defaults to the current LUSID system datetime if not specified.")] = None, as_at : Annotated[Optional[datetime], Field(description="The asAt datetime at which to retrieve the Fund definition. Defaults to returning the latest version of the Fund definition if not specified.")] = None, property_keys : Annotated[Optional[conlist(StrictStr)], Field(description="A list of property keys from the 'Fund' domain to decorate onto the Fund. These must take the format {domain}/{scope}/{code}, for example 'Fund/Manager/Id'. If no properties are specified, then no properties will be returned.")] = None, async_req: Optional[bool]=True, **kwargs) -> Fund: # noqa: E501
908
+ ...
909
+
910
+ @validate_arguments
911
+ def get_fund(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.")], effective_at : Annotated[Optional[StrictStr], Field(description="The effective datetime or cut label at which to retrieve the Fund properties. Defaults to the current LUSID system datetime if not specified.")] = None, as_at : Annotated[Optional[datetime], Field(description="The asAt datetime at which to retrieve the Fund definition. Defaults to returning the latest version of the Fund definition if not specified.")] = None, property_keys : Annotated[Optional[conlist(StrictStr)], Field(description="A list of property keys from the 'Fund' domain to decorate onto the Fund. These must take the format {domain}/{scope}/{code}, for example 'Fund/Manager/Id'. If no properties are specified, then no properties will be returned.")] = None, async_req: Optional[bool]=None, **kwargs) -> Union[Fund, Awaitable[Fund]]: # noqa: E501
912
+ """[EXPERIMENTAL] GetFund: Get a Fund. # noqa: E501
913
+
914
+ Retrieve the definition of a particular Fund. # noqa: E501
915
+ This method makes a synchronous HTTP request by default. To make an
916
+ asynchronous HTTP request, please pass async_req=True
917
+
918
+ >>> thread = api.get_fund(scope, code, effective_at, as_at, property_keys, async_req=True)
919
+ >>> result = thread.get()
920
+
921
+ :param scope: The scope of the Fund. (required)
922
+ :type scope: str
923
+ :param code: The code of the Fund. Together with the scope this uniquely identifies the Fund. (required)
924
+ :type code: str
925
+ :param effective_at: The effective datetime or cut label at which to retrieve the Fund properties. Defaults to the current LUSID system datetime if not specified.
926
+ :type effective_at: str
927
+ :param as_at: The asAt datetime at which to retrieve the Fund definition. Defaults to returning the latest version of the Fund definition if not specified.
928
+ :type as_at: datetime
929
+ :param property_keys: A list of property keys from the 'Fund' domain to decorate onto the Fund. These must take the format {domain}/{scope}/{code}, for example 'Fund/Manager/Id'. If no properties are specified, then no properties will be returned.
930
+ :type property_keys: List[str]
931
+ :param async_req: Whether to execute the request asynchronously.
932
+ :type async_req: bool, optional
933
+ :param _request_timeout: timeout setting for this request.
934
+ If one number provided, it will be total request
935
+ timeout. It can also be a pair (tuple) of
936
+ (connection, read) timeouts.
937
+ :return: Returns the result object.
938
+ If the method is called asynchronously,
939
+ returns the request thread.
940
+ :rtype: Fund
941
+ """
942
+ kwargs['_return_http_data_only'] = True
943
+ if '_preload_content' in kwargs:
944
+ message = "Error! Please call the get_fund_with_http_info method with `_preload_content` instead and obtain raw data from ApiResponse.raw_data" # noqa: E501
945
+ raise ValueError(message)
946
+ if async_req is not None:
947
+ kwargs['async_req'] = async_req
948
+ return self.get_fund_with_http_info(scope, code, effective_at, as_at, property_keys, **kwargs) # noqa: E501
949
+
950
+ @validate_arguments
951
+ def get_fund_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.")], effective_at : Annotated[Optional[StrictStr], Field(description="The effective datetime or cut label at which to retrieve the Fund properties. Defaults to the current LUSID system datetime if not specified.")] = None, as_at : Annotated[Optional[datetime], Field(description="The asAt datetime at which to retrieve the Fund definition. Defaults to returning the latest version of the Fund definition if not specified.")] = None, property_keys : Annotated[Optional[conlist(StrictStr)], Field(description="A list of property keys from the 'Fund' domain to decorate onto the Fund. These must take the format {domain}/{scope}/{code}, for example 'Fund/Manager/Id'. If no properties are specified, then no properties will be returned.")] = None, **kwargs) -> ApiResponse: # noqa: E501
952
+ """[EXPERIMENTAL] GetFund: Get a Fund. # noqa: E501
953
+
954
+ Retrieve the definition of a particular Fund. # noqa: E501
955
+ This method makes a synchronous HTTP request by default. To make an
956
+ asynchronous HTTP request, please pass async_req=True
957
+
958
+ >>> thread = api.get_fund_with_http_info(scope, code, effective_at, as_at, property_keys, async_req=True)
959
+ >>> result = thread.get()
960
+
961
+ :param scope: The scope of the Fund. (required)
962
+ :type scope: str
963
+ :param code: The code of the Fund. Together with the scope this uniquely identifies the Fund. (required)
964
+ :type code: str
965
+ :param effective_at: The effective datetime or cut label at which to retrieve the Fund properties. Defaults to the current LUSID system datetime if not specified.
966
+ :type effective_at: str
967
+ :param as_at: The asAt datetime at which to retrieve the Fund definition. Defaults to returning the latest version of the Fund definition if not specified.
968
+ :type as_at: datetime
969
+ :param property_keys: A list of property keys from the 'Fund' domain to decorate onto the Fund. These must take the format {domain}/{scope}/{code}, for example 'Fund/Manager/Id'. If no properties are specified, then no properties will be returned.
970
+ :type property_keys: List[str]
971
+ :param async_req: Whether to execute the request asynchronously.
972
+ :type async_req: bool, optional
973
+ :param _preload_content: if False, the ApiResponse.data will
974
+ be set to none and raw_data will store the
975
+ HTTP response body without reading/decoding.
976
+ Default is True.
977
+ :type _preload_content: bool, optional
978
+ :param _return_http_data_only: response data instead of ApiResponse
979
+ object with status code, headers, etc
980
+ :type _return_http_data_only: bool, optional
981
+ :param _request_timeout: timeout setting for this request. If one
982
+ number provided, it will be total request
983
+ timeout. It can also be a pair (tuple) of
984
+ (connection, read) timeouts.
985
+ :param _request_auth: set to override the auth_settings for an a single
986
+ request; this effectively ignores the authentication
987
+ in the spec for a single request.
988
+ :type _request_auth: dict, optional
989
+ :type _content_type: string, optional: force content-type for the request
990
+ :return: Returns the result object.
991
+ If the method is called asynchronously,
992
+ returns the request thread.
993
+ :rtype: tuple(Fund, status_code(int), headers(HTTPHeaderDict))
994
+ """
995
+
996
+ _params = locals()
997
+
998
+ _all_params = [
999
+ 'scope',
1000
+ 'code',
1001
+ 'effective_at',
1002
+ 'as_at',
1003
+ 'property_keys'
1004
+ ]
1005
+ _all_params.extend(
1006
+ [
1007
+ 'async_req',
1008
+ '_return_http_data_only',
1009
+ '_preload_content',
1010
+ '_request_timeout',
1011
+ '_request_auth',
1012
+ '_content_type',
1013
+ '_headers'
1014
+ ]
1015
+ )
1016
+
1017
+ # validate the arguments
1018
+ for _key, _val in _params['kwargs'].items():
1019
+ if _key not in _all_params:
1020
+ raise ApiTypeError(
1021
+ "Got an unexpected keyword argument '%s'"
1022
+ " to method get_fund" % _key
1023
+ )
1024
+ _params[_key] = _val
1025
+ del _params['kwargs']
1026
+
1027
+ _collection_formats = {}
1028
+
1029
+ # process the path parameters
1030
+ _path_params = {}
1031
+ if _params['scope']:
1032
+ _path_params['scope'] = _params['scope']
1033
+
1034
+ if _params['code']:
1035
+ _path_params['code'] = _params['code']
1036
+
1037
+
1038
+ # process the query parameters
1039
+ _query_params = []
1040
+ if _params.get('effective_at') is not None: # noqa: E501
1041
+ _query_params.append(('effectiveAt', _params['effective_at']))
1042
+
1043
+ if _params.get('as_at') is not None: # noqa: E501
1044
+ if isinstance(_params['as_at'], datetime):
1045
+ _query_params.append(('asAt', _params['as_at'].strftime(self.api_client.configuration.datetime_format)))
1046
+ else:
1047
+ _query_params.append(('asAt', _params['as_at']))
1048
+
1049
+ if _params.get('property_keys') is not None: # noqa: E501
1050
+ _query_params.append(('propertyKeys', _params['property_keys']))
1051
+ _collection_formats['propertyKeys'] = 'multi'
1052
+
1053
+ # process the header parameters
1054
+ _header_params = dict(_params.get('_headers', {}))
1055
+ # process the form parameters
1056
+ _form_params = []
1057
+ _files = {}
1058
+ # process the body parameter
1059
+ _body_params = None
1060
+ # set the HTTP header `Accept`
1061
+ _header_params['Accept'] = self.api_client.select_header_accept(
1062
+ ['text/plain', 'application/json', 'text/json']) # noqa: E501
1063
+
1064
+ # authentication setting
1065
+ _auth_settings = ['oauth2'] # noqa: E501
1066
+
1067
+ _response_types_map = {
1068
+ '200': "Fund",
1069
+ '400': "LusidValidationProblemDetails",
1070
+ }
1071
+
1072
+ return self.api_client.call_api(
1073
+ '/api/funds/{scope}/{code}', 'GET',
1074
+ _path_params,
1075
+ _query_params,
1076
+ _header_params,
1077
+ body=_body_params,
1078
+ post_params=_form_params,
1079
+ files=_files,
1080
+ response_types_map=_response_types_map,
1081
+ auth_settings=_auth_settings,
1082
+ async_req=_params.get('async_req'),
1083
+ _return_http_data_only=_params.get('_return_http_data_only'), # noqa: E501
1084
+ _preload_content=_params.get('_preload_content', True),
1085
+ _request_timeout=_params.get('_request_timeout'),
1086
+ collection_formats=_collection_formats,
1087
+ _request_auth=_params.get('_request_auth'))
1088
+
1089
+ @overload
1090
+ async def get_valuation_point_data(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_query_parameters : Annotated[ValuationPointDataQueryParameters, Field(..., description="The arguments to use for querying the Valuation Point data")], as_at : Annotated[Optional[datetime], Field(description="The asAt datetime at which to retrieve the Fund definition. Defaults to returning the latest version of the Fund definition if not specified.")] = None, **kwargs) -> ValuationPointDataResponse: # noqa: E501
1091
+ ...
1092
+
1093
+ @overload
1094
+ def get_valuation_point_data(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_query_parameters : Annotated[ValuationPointDataQueryParameters, Field(..., description="The arguments to use for querying the Valuation Point data")], as_at : Annotated[Optional[datetime], Field(description="The asAt datetime at which to retrieve the Fund definition. Defaults to returning the latest version of the Fund definition if not specified.")] = None, async_req: Optional[bool]=True, **kwargs) -> ValuationPointDataResponse: # noqa: E501
1095
+ ...
1096
+
1097
+ @validate_arguments
1098
+ def get_valuation_point_data(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_query_parameters : Annotated[ValuationPointDataQueryParameters, Field(..., description="The arguments to use for querying the Valuation Point data")], as_at : Annotated[Optional[datetime], Field(description="The asAt datetime at which to retrieve the Fund definition. Defaults to returning the latest version of the Fund definition if not specified.")] = None, async_req: Optional[bool]=None, **kwargs) -> Union[ValuationPointDataResponse, Awaitable[ValuationPointDataResponse]]: # noqa: E501
1099
+ """[EXPERIMENTAL] GetValuationPointData: Get Valuation Point Data for a Fund. # noqa: E501
1100
+
1101
+ Retrieves the Valuation Point data for a date or specified Diary Entry Id. The endpoint will internally extract all 'Assets' and 'Liabilities' from the related ABOR's Trial balance to produce a GAV. Start date will be assumed from the last 'official' DiaryEntry and EndDate will be as provided. # noqa: E501
1102
+ This method makes a synchronous HTTP request by default. To make an
1103
+ asynchronous HTTP request, please pass async_req=True
1104
+
1105
+ >>> thread = api.get_valuation_point_data(scope, code, valuation_point_data_query_parameters, as_at, async_req=True)
1106
+ >>> result = thread.get()
1107
+
1108
+ :param scope: The scope of the Fund. (required)
1109
+ :type scope: str
1110
+ :param code: The code of the Fund. Together with the scope this uniquely identifies the Fund. (required)
1111
+ :type code: str
1112
+ :param valuation_point_data_query_parameters: The arguments to use for querying the Valuation Point data (required)
1113
+ :type valuation_point_data_query_parameters: ValuationPointDataQueryParameters
1114
+ :param as_at: The asAt datetime at which to retrieve the Fund definition. Defaults to returning the latest version of the Fund definition if not specified.
1115
+ :type as_at: datetime
1116
+ :param async_req: Whether to execute the request asynchronously.
1117
+ :type async_req: bool, optional
1118
+ :param _request_timeout: timeout setting for this request.
1119
+ If one number provided, it will be total request
1120
+ timeout. It can also be a pair (tuple) of
1121
+ (connection, read) timeouts.
1122
+ :return: Returns the result object.
1123
+ If the method is called asynchronously,
1124
+ returns the request thread.
1125
+ :rtype: ValuationPointDataResponse
1126
+ """
1127
+ kwargs['_return_http_data_only'] = True
1128
+ if '_preload_content' in kwargs:
1129
+ message = "Error! Please call the get_valuation_point_data_with_http_info method with `_preload_content` instead and obtain raw data from ApiResponse.raw_data" # noqa: E501
1130
+ raise ValueError(message)
1131
+ if async_req is not None:
1132
+ kwargs['async_req'] = async_req
1133
+ return self.get_valuation_point_data_with_http_info(scope, code, valuation_point_data_query_parameters, as_at, **kwargs) # noqa: E501
1134
+
1135
+ @validate_arguments
1136
+ def get_valuation_point_data_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_query_parameters : Annotated[ValuationPointDataQueryParameters, Field(..., description="The arguments to use for querying the Valuation Point data")], as_at : Annotated[Optional[datetime], Field(description="The asAt datetime at which to retrieve the Fund definition. Defaults to returning the latest version of the Fund definition if not specified.")] = None, **kwargs) -> ApiResponse: # noqa: E501
1137
+ """[EXPERIMENTAL] GetValuationPointData: Get Valuation Point Data for a Fund. # noqa: E501
1138
+
1139
+ Retrieves the Valuation Point data for a date or specified Diary Entry Id. The endpoint will internally extract all 'Assets' and 'Liabilities' from the related ABOR's Trial balance to produce a GAV. Start date will be assumed from the last 'official' DiaryEntry and EndDate will be as provided. # noqa: E501
1140
+ This method makes a synchronous HTTP request by default. To make an
1141
+ asynchronous HTTP request, please pass async_req=True
1142
+
1143
+ >>> thread = api.get_valuation_point_data_with_http_info(scope, code, valuation_point_data_query_parameters, as_at, async_req=True)
1144
+ >>> result = thread.get()
1145
+
1146
+ :param scope: The scope of the Fund. (required)
1147
+ :type scope: str
1148
+ :param code: The code of the Fund. Together with the scope this uniquely identifies the Fund. (required)
1149
+ :type code: str
1150
+ :param valuation_point_data_query_parameters: The arguments to use for querying the Valuation Point data (required)
1151
+ :type valuation_point_data_query_parameters: ValuationPointDataQueryParameters
1152
+ :param as_at: The asAt datetime at which to retrieve the Fund definition. Defaults to returning the latest version of the Fund definition if not specified.
1153
+ :type as_at: datetime
1154
+ :param async_req: Whether to execute the request asynchronously.
1155
+ :type async_req: bool, optional
1156
+ :param _preload_content: if False, the ApiResponse.data will
1157
+ be set to none and raw_data will store the
1158
+ HTTP response body without reading/decoding.
1159
+ Default is True.
1160
+ :type _preload_content: bool, optional
1161
+ :param _return_http_data_only: response data instead of ApiResponse
1162
+ object with status code, headers, etc
1163
+ :type _return_http_data_only: bool, optional
1164
+ :param _request_timeout: timeout setting for this request. If one
1165
+ number provided, it will be total request
1166
+ timeout. It can also be a pair (tuple) of
1167
+ (connection, read) timeouts.
1168
+ :param _request_auth: set to override the auth_settings for an a single
1169
+ request; this effectively ignores the authentication
1170
+ in the spec for a single request.
1171
+ :type _request_auth: dict, optional
1172
+ :type _content_type: string, optional: force content-type for the request
1173
+ :return: Returns the result object.
1174
+ If the method is called asynchronously,
1175
+ returns the request thread.
1176
+ :rtype: tuple(ValuationPointDataResponse, status_code(int), headers(HTTPHeaderDict))
1177
+ """
1178
+
1179
+ _params = locals()
1180
+
1181
+ _all_params = [
1182
+ 'scope',
1183
+ 'code',
1184
+ 'valuation_point_data_query_parameters',
1185
+ 'as_at'
1186
+ ]
1187
+ _all_params.extend(
1188
+ [
1189
+ 'async_req',
1190
+ '_return_http_data_only',
1191
+ '_preload_content',
1192
+ '_request_timeout',
1193
+ '_request_auth',
1194
+ '_content_type',
1195
+ '_headers'
1196
+ ]
1197
+ )
1198
+
1199
+ # validate the arguments
1200
+ for _key, _val in _params['kwargs'].items():
1201
+ if _key not in _all_params:
1202
+ raise ApiTypeError(
1203
+ "Got an unexpected keyword argument '%s'"
1204
+ " to method get_valuation_point_data" % _key
1205
+ )
1206
+ _params[_key] = _val
1207
+ del _params['kwargs']
1208
+
1209
+ _collection_formats = {}
1210
+
1211
+ # process the path parameters
1212
+ _path_params = {}
1213
+ if _params['scope']:
1214
+ _path_params['scope'] = _params['scope']
1215
+
1216
+ if _params['code']:
1217
+ _path_params['code'] = _params['code']
1218
+
1219
+
1220
+ # process the query parameters
1221
+ _query_params = []
1222
+ if _params.get('as_at') is not None: # noqa: E501
1223
+ if isinstance(_params['as_at'], datetime):
1224
+ _query_params.append(('asAt', _params['as_at'].strftime(self.api_client.configuration.datetime_format)))
1225
+ else:
1226
+ _query_params.append(('asAt', _params['as_at']))
1227
+
1228
+ # process the header parameters
1229
+ _header_params = dict(_params.get('_headers', {}))
1230
+ # process the form parameters
1231
+ _form_params = []
1232
+ _files = {}
1233
+ # process the body parameter
1234
+ _body_params = None
1235
+ if _params['valuation_point_data_query_parameters'] is not None:
1236
+ _body_params = _params['valuation_point_data_query_parameters']
1237
+
1238
+ # set the HTTP header `Accept`
1239
+ _header_params['Accept'] = self.api_client.select_header_accept(
1240
+ ['text/plain', 'application/json', 'text/json']) # noqa: E501
1241
+
1242
+ # set the HTTP header `Content-Type`
1243
+ _content_types_list = _params.get('_content_type',
1244
+ self.api_client.select_header_content_type(
1245
+ ['application/json-patch+json', 'application/json', 'text/json', 'application/*+json']))
1246
+ if _content_types_list:
1247
+ _header_params['Content-Type'] = _content_types_list
1248
+
1249
+ # authentication setting
1250
+ _auth_settings = ['oauth2'] # noqa: E501
1251
+
1252
+ _response_types_map = {
1253
+ '200': "ValuationPointDataResponse",
1254
+ '400': "LusidValidationProblemDetails",
1255
+ }
1256
+
1257
+ return self.api_client.call_api(
1258
+ '/api/funds/{scope}/{code}/valuationpoints', 'POST',
1259
+ _path_params,
1260
+ _query_params,
1261
+ _header_params,
1262
+ body=_body_params,
1263
+ post_params=_form_params,
1264
+ files=_files,
1265
+ response_types_map=_response_types_map,
1266
+ auth_settings=_auth_settings,
1267
+ async_req=_params.get('async_req'),
1268
+ _return_http_data_only=_params.get('_return_http_data_only'), # noqa: E501
1269
+ _preload_content=_params.get('_preload_content', True),
1270
+ _request_timeout=_params.get('_request_timeout'),
1271
+ collection_formats=_collection_formats,
1272
+ _request_auth=_params.get('_request_auth'))
1273
+
1274
+ @overload
1275
+ async def list_funds(self, effective_at : Annotated[Optional[StrictStr], Field(description="The effective datetime or cut label at which to list the TimeVariant properties for the Funds. Defaults to the current LUSID system datetime if not specified.")] = None, as_at : Annotated[Optional[datetime], Field(description="The asAt datetime at which to list the Funds. Defaults to returning the latest version of each Fund if not specified.")] = None, page : Annotated[Optional[constr(strict=True, max_length=500, min_length=1)], Field(description="The pagination token to use to continue listing Funds; this value is returned from the previous call. If a pagination token is provided, the filter, effectiveAt and asAt fields must not have changed since the original request.")] = None, limit : Annotated[Optional[conint(strict=True, le=5000, ge=1)], Field(description="When paginating, limit the results to this number. Defaults to 100 if not specified.")] = None, filter : Annotated[Optional[constr(strict=True, max_length=16384, min_length=0)], Field(description="Expression to filter the results. For example, to filter on the Fund type, specify \"id.Code eq 'Fund1'\". For more information about filtering results, see https://support.lusid.com/knowledgebase/article/KA-01914.")] = None, sort_by : Annotated[Optional[conlist(StrictStr)], Field(description="A list of field names or properties to sort by, each suffixed by \" ASC\" or \" DESC\"")] = None, property_keys : Annotated[Optional[conlist(StrictStr)], Field(description="A list of property keys from the 'Fund' domain to decorate onto each Fund. These must take the format {domain}/{scope}/{code}, for example 'Fund/Manager/Id'.")] = None, **kwargs) -> PagedResourceListOfFund: # noqa: E501
1276
+ ...
1277
+
1278
+ @overload
1279
+ def list_funds(self, effective_at : Annotated[Optional[StrictStr], Field(description="The effective datetime or cut label at which to list the TimeVariant properties for the Funds. Defaults to the current LUSID system datetime if not specified.")] = None, as_at : Annotated[Optional[datetime], Field(description="The asAt datetime at which to list the Funds. Defaults to returning the latest version of each Fund if not specified.")] = None, page : Annotated[Optional[constr(strict=True, max_length=500, min_length=1)], Field(description="The pagination token to use to continue listing Funds; this value is returned from the previous call. If a pagination token is provided, the filter, effectiveAt and asAt fields must not have changed since the original request.")] = None, limit : Annotated[Optional[conint(strict=True, le=5000, ge=1)], Field(description="When paginating, limit the results to this number. Defaults to 100 if not specified.")] = None, filter : Annotated[Optional[constr(strict=True, max_length=16384, min_length=0)], Field(description="Expression to filter the results. For example, to filter on the Fund type, specify \"id.Code eq 'Fund1'\". For more information about filtering results, see https://support.lusid.com/knowledgebase/article/KA-01914.")] = None, sort_by : Annotated[Optional[conlist(StrictStr)], Field(description="A list of field names or properties to sort by, each suffixed by \" ASC\" or \" DESC\"")] = None, property_keys : Annotated[Optional[conlist(StrictStr)], Field(description="A list of property keys from the 'Fund' domain to decorate onto each Fund. These must take the format {domain}/{scope}/{code}, for example 'Fund/Manager/Id'.")] = None, async_req: Optional[bool]=True, **kwargs) -> PagedResourceListOfFund: # noqa: E501
1280
+ ...
1281
+
1282
+ @validate_arguments
1283
+ def list_funds(self, effective_at : Annotated[Optional[StrictStr], Field(description="The effective datetime or cut label at which to list the TimeVariant properties for the Funds. Defaults to the current LUSID system datetime if not specified.")] = None, as_at : Annotated[Optional[datetime], Field(description="The asAt datetime at which to list the Funds. Defaults to returning the latest version of each Fund if not specified.")] = None, page : Annotated[Optional[constr(strict=True, max_length=500, min_length=1)], Field(description="The pagination token to use to continue listing Funds; this value is returned from the previous call. If a pagination token is provided, the filter, effectiveAt and asAt fields must not have changed since the original request.")] = None, limit : Annotated[Optional[conint(strict=True, le=5000, ge=1)], Field(description="When paginating, limit the results to this number. Defaults to 100 if not specified.")] = None, filter : Annotated[Optional[constr(strict=True, max_length=16384, min_length=0)], Field(description="Expression to filter the results. For example, to filter on the Fund type, specify \"id.Code eq 'Fund1'\". For more information about filtering results, see https://support.lusid.com/knowledgebase/article/KA-01914.")] = None, sort_by : Annotated[Optional[conlist(StrictStr)], Field(description="A list of field names or properties to sort by, each suffixed by \" ASC\" or \" DESC\"")] = None, property_keys : Annotated[Optional[conlist(StrictStr)], Field(description="A list of property keys from the 'Fund' domain to decorate onto each Fund. These must take the format {domain}/{scope}/{code}, for example 'Fund/Manager/Id'.")] = None, async_req: Optional[bool]=None, **kwargs) -> Union[PagedResourceListOfFund, Awaitable[PagedResourceListOfFund]]: # noqa: E501
1284
+ """[EXPERIMENTAL] ListFunds: List Funds. # noqa: E501
1285
+
1286
+ List all the Funds matching particular criteria. # noqa: E501
1287
+ This method makes a synchronous HTTP request by default. To make an
1288
+ asynchronous HTTP request, please pass async_req=True
1289
+
1290
+ >>> thread = api.list_funds(effective_at, as_at, page, limit, filter, sort_by, property_keys, async_req=True)
1291
+ >>> result = thread.get()
1292
+
1293
+ :param effective_at: The effective datetime or cut label at which to list the TimeVariant properties for the Funds. Defaults to the current LUSID system datetime if not specified.
1294
+ :type effective_at: str
1295
+ :param as_at: The asAt datetime at which to list the Funds. Defaults to returning the latest version of each Fund if not specified.
1296
+ :type as_at: datetime
1297
+ :param page: The pagination token to use to continue listing Funds; this value is returned from the previous call. If a pagination token is provided, the filter, effectiveAt and asAt fields must not have changed since the original request.
1298
+ :type page: str
1299
+ :param limit: When paginating, limit the results to this number. Defaults to 100 if not specified.
1300
+ :type limit: int
1301
+ :param filter: Expression to filter the results. For example, to filter on the Fund type, specify \"id.Code eq 'Fund1'\". For more information about filtering results, see https://support.lusid.com/knowledgebase/article/KA-01914.
1302
+ :type filter: str
1303
+ :param sort_by: A list of field names or properties to sort by, each suffixed by \" ASC\" or \" DESC\"
1304
+ :type sort_by: List[str]
1305
+ :param property_keys: A list of property keys from the 'Fund' domain to decorate onto each Fund. These must take the format {domain}/{scope}/{code}, for example 'Fund/Manager/Id'.
1306
+ :type property_keys: List[str]
1307
+ :param async_req: Whether to execute the request asynchronously.
1308
+ :type async_req: bool, optional
1309
+ :param _request_timeout: timeout setting for this request.
1310
+ If one number provided, it will be total request
1311
+ timeout. It can also be a pair (tuple) of
1312
+ (connection, read) timeouts.
1313
+ :return: Returns the result object.
1314
+ If the method is called asynchronously,
1315
+ returns the request thread.
1316
+ :rtype: PagedResourceListOfFund
1317
+ """
1318
+ kwargs['_return_http_data_only'] = True
1319
+ if '_preload_content' in kwargs:
1320
+ message = "Error! Please call the list_funds_with_http_info method with `_preload_content` instead and obtain raw data from ApiResponse.raw_data" # noqa: E501
1321
+ raise ValueError(message)
1322
+ if async_req is not None:
1323
+ kwargs['async_req'] = async_req
1324
+ return self.list_funds_with_http_info(effective_at, as_at, page, limit, filter, sort_by, property_keys, **kwargs) # noqa: E501
1325
+
1326
+ @validate_arguments
1327
+ def list_funds_with_http_info(self, effective_at : Annotated[Optional[StrictStr], Field(description="The effective datetime or cut label at which to list the TimeVariant properties for the Funds. Defaults to the current LUSID system datetime if not specified.")] = None, as_at : Annotated[Optional[datetime], Field(description="The asAt datetime at which to list the Funds. Defaults to returning the latest version of each Fund if not specified.")] = None, page : Annotated[Optional[constr(strict=True, max_length=500, min_length=1)], Field(description="The pagination token to use to continue listing Funds; this value is returned from the previous call. If a pagination token is provided, the filter, effectiveAt and asAt fields must not have changed since the original request.")] = None, limit : Annotated[Optional[conint(strict=True, le=5000, ge=1)], Field(description="When paginating, limit the results to this number. Defaults to 100 if not specified.")] = None, filter : Annotated[Optional[constr(strict=True, max_length=16384, min_length=0)], Field(description="Expression to filter the results. For example, to filter on the Fund type, specify \"id.Code eq 'Fund1'\". For more information about filtering results, see https://support.lusid.com/knowledgebase/article/KA-01914.")] = None, sort_by : Annotated[Optional[conlist(StrictStr)], Field(description="A list of field names or properties to sort by, each suffixed by \" ASC\" or \" DESC\"")] = None, property_keys : Annotated[Optional[conlist(StrictStr)], Field(description="A list of property keys from the 'Fund' domain to decorate onto each Fund. These must take the format {domain}/{scope}/{code}, for example 'Fund/Manager/Id'.")] = None, **kwargs) -> ApiResponse: # noqa: E501
1328
+ """[EXPERIMENTAL] ListFunds: List Funds. # noqa: E501
1329
+
1330
+ List all the Funds matching particular criteria. # noqa: E501
1331
+ This method makes a synchronous HTTP request by default. To make an
1332
+ asynchronous HTTP request, please pass async_req=True
1333
+
1334
+ >>> thread = api.list_funds_with_http_info(effective_at, as_at, page, limit, filter, sort_by, property_keys, async_req=True)
1335
+ >>> result = thread.get()
1336
+
1337
+ :param effective_at: The effective datetime or cut label at which to list the TimeVariant properties for the Funds. Defaults to the current LUSID system datetime if not specified.
1338
+ :type effective_at: str
1339
+ :param as_at: The asAt datetime at which to list the Funds. Defaults to returning the latest version of each Fund if not specified.
1340
+ :type as_at: datetime
1341
+ :param page: The pagination token to use to continue listing Funds; this value is returned from the previous call. If a pagination token is provided, the filter, effectiveAt and asAt fields must not have changed since the original request.
1342
+ :type page: str
1343
+ :param limit: When paginating, limit the results to this number. Defaults to 100 if not specified.
1344
+ :type limit: int
1345
+ :param filter: Expression to filter the results. For example, to filter on the Fund type, specify \"id.Code eq 'Fund1'\". For more information about filtering results, see https://support.lusid.com/knowledgebase/article/KA-01914.
1346
+ :type filter: str
1347
+ :param sort_by: A list of field names or properties to sort by, each suffixed by \" ASC\" or \" DESC\"
1348
+ :type sort_by: List[str]
1349
+ :param property_keys: A list of property keys from the 'Fund' domain to decorate onto each Fund. These must take the format {domain}/{scope}/{code}, for example 'Fund/Manager/Id'.
1350
+ :type property_keys: List[str]
1351
+ :param async_req: Whether to execute the request asynchronously.
1352
+ :type async_req: bool, optional
1353
+ :param _preload_content: if False, the ApiResponse.data will
1354
+ be set to none and raw_data will store the
1355
+ HTTP response body without reading/decoding.
1356
+ Default is True.
1357
+ :type _preload_content: bool, optional
1358
+ :param _return_http_data_only: response data instead of ApiResponse
1359
+ object with status code, headers, etc
1360
+ :type _return_http_data_only: bool, optional
1361
+ :param _request_timeout: timeout setting for this request. If one
1362
+ number provided, it will be total request
1363
+ timeout. It can also be a pair (tuple) of
1364
+ (connection, read) timeouts.
1365
+ :param _request_auth: set to override the auth_settings for an a single
1366
+ request; this effectively ignores the authentication
1367
+ in the spec for a single request.
1368
+ :type _request_auth: dict, optional
1369
+ :type _content_type: string, optional: force content-type for the request
1370
+ :return: Returns the result object.
1371
+ If the method is called asynchronously,
1372
+ returns the request thread.
1373
+ :rtype: tuple(PagedResourceListOfFund, status_code(int), headers(HTTPHeaderDict))
1374
+ """
1375
+
1376
+ _params = locals()
1377
+
1378
+ _all_params = [
1379
+ 'effective_at',
1380
+ 'as_at',
1381
+ 'page',
676
1382
  'limit',
677
1383
  'filter',
678
1384
  'sort_by',
@@ -695,7 +1401,191 @@ class FundsApi:
695
1401
  if _key not in _all_params:
696
1402
  raise ApiTypeError(
697
1403
  "Got an unexpected keyword argument '%s'"
698
- " to method list_funds" % _key
1404
+ " to method list_funds" % _key
1405
+ )
1406
+ _params[_key] = _val
1407
+ del _params['kwargs']
1408
+
1409
+ _collection_formats = {}
1410
+
1411
+ # process the path parameters
1412
+ _path_params = {}
1413
+
1414
+ # process the query parameters
1415
+ _query_params = []
1416
+ if _params.get('effective_at') is not None: # noqa: E501
1417
+ _query_params.append(('effectiveAt', _params['effective_at']))
1418
+
1419
+ if _params.get('as_at') is not None: # noqa: E501
1420
+ if isinstance(_params['as_at'], datetime):
1421
+ _query_params.append(('asAt', _params['as_at'].strftime(self.api_client.configuration.datetime_format)))
1422
+ else:
1423
+ _query_params.append(('asAt', _params['as_at']))
1424
+
1425
+ if _params.get('page') is not None: # noqa: E501
1426
+ _query_params.append(('page', _params['page']))
1427
+
1428
+ if _params.get('limit') is not None: # noqa: E501
1429
+ _query_params.append(('limit', _params['limit']))
1430
+
1431
+ if _params.get('filter') is not None: # noqa: E501
1432
+ _query_params.append(('filter', _params['filter']))
1433
+
1434
+ if _params.get('sort_by') is not None: # noqa: E501
1435
+ _query_params.append(('sortBy', _params['sort_by']))
1436
+ _collection_formats['sortBy'] = 'multi'
1437
+
1438
+ if _params.get('property_keys') is not None: # noqa: E501
1439
+ _query_params.append(('propertyKeys', _params['property_keys']))
1440
+ _collection_formats['propertyKeys'] = 'multi'
1441
+
1442
+ # process the header parameters
1443
+ _header_params = dict(_params.get('_headers', {}))
1444
+ # process the form parameters
1445
+ _form_params = []
1446
+ _files = {}
1447
+ # process the body parameter
1448
+ _body_params = None
1449
+ # set the HTTP header `Accept`
1450
+ _header_params['Accept'] = self.api_client.select_header_accept(
1451
+ ['text/plain', 'application/json', 'text/json']) # noqa: E501
1452
+
1453
+ # authentication setting
1454
+ _auth_settings = ['oauth2'] # noqa: E501
1455
+
1456
+ _response_types_map = {
1457
+ '200': "PagedResourceListOfFund",
1458
+ '400': "LusidValidationProblemDetails",
1459
+ }
1460
+
1461
+ return self.api_client.call_api(
1462
+ '/api/funds', 'GET',
1463
+ _path_params,
1464
+ _query_params,
1465
+ _header_params,
1466
+ body=_body_params,
1467
+ post_params=_form_params,
1468
+ files=_files,
1469
+ response_types_map=_response_types_map,
1470
+ auth_settings=_auth_settings,
1471
+ async_req=_params.get('async_req'),
1472
+ _return_http_data_only=_params.get('_return_http_data_only'), # noqa: E501
1473
+ _preload_content=_params.get('_preload_content', True),
1474
+ _request_timeout=_params.get('_request_timeout'),
1475
+ collection_formats=_collection_formats,
1476
+ _request_auth=_params.get('_request_auth'))
1477
+
1478
+ @overload
1479
+ async def set_share_class_instruments(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.")], set_share_class_instruments_request : Annotated[SetShareClassInstrumentsRequest, Field(..., description="The scopes and instrument identifiers for the instruments to be set.")], **kwargs) -> Fund: # noqa: E501
1480
+ ...
1481
+
1482
+ @overload
1483
+ def set_share_class_instruments(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.")], set_share_class_instruments_request : Annotated[SetShareClassInstrumentsRequest, Field(..., description="The scopes and instrument identifiers for the instruments to be set.")], async_req: Optional[bool]=True, **kwargs) -> Fund: # noqa: E501
1484
+ ...
1485
+
1486
+ @validate_arguments
1487
+ def set_share_class_instruments(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.")], set_share_class_instruments_request : Annotated[SetShareClassInstrumentsRequest, Field(..., description="The scopes and instrument identifiers for the instruments to be set.")], async_req: Optional[bool]=None, **kwargs) -> Union[Fund, Awaitable[Fund]]: # noqa: E501
1488
+ """[EXPERIMENTAL] SetShareClassInstruments: Set the ShareClass Instruments on a fund. # noqa: E501
1489
+
1490
+ Update the ShareClass Instruments on an existing fund with the set of instruments provided. # noqa: E501
1491
+ This method makes a synchronous HTTP request by default. To make an
1492
+ asynchronous HTTP request, please pass async_req=True
1493
+
1494
+ >>> thread = api.set_share_class_instruments(scope, code, set_share_class_instruments_request, async_req=True)
1495
+ >>> result = thread.get()
1496
+
1497
+ :param scope: The scope of the Fund. (required)
1498
+ :type scope: str
1499
+ :param code: The code of the Fund. (required)
1500
+ :type code: str
1501
+ :param set_share_class_instruments_request: The scopes and instrument identifiers for the instruments to be set. (required)
1502
+ :type set_share_class_instruments_request: SetShareClassInstrumentsRequest
1503
+ :param async_req: Whether to execute the request asynchronously.
1504
+ :type async_req: bool, optional
1505
+ :param _request_timeout: timeout setting for this request.
1506
+ If one number provided, it will be total request
1507
+ timeout. It can also be a pair (tuple) of
1508
+ (connection, read) timeouts.
1509
+ :return: Returns the result object.
1510
+ If the method is called asynchronously,
1511
+ returns the request thread.
1512
+ :rtype: Fund
1513
+ """
1514
+ kwargs['_return_http_data_only'] = True
1515
+ if '_preload_content' in kwargs:
1516
+ message = "Error! Please call the set_share_class_instruments_with_http_info method with `_preload_content` instead and obtain raw data from ApiResponse.raw_data" # noqa: E501
1517
+ raise ValueError(message)
1518
+ if async_req is not None:
1519
+ kwargs['async_req'] = async_req
1520
+ return self.set_share_class_instruments_with_http_info(scope, code, set_share_class_instruments_request, **kwargs) # noqa: E501
1521
+
1522
+ @validate_arguments
1523
+ def set_share_class_instruments_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.")], set_share_class_instruments_request : Annotated[SetShareClassInstrumentsRequest, Field(..., description="The scopes and instrument identifiers for the instruments to be set.")], **kwargs) -> ApiResponse: # noqa: E501
1524
+ """[EXPERIMENTAL] SetShareClassInstruments: Set the ShareClass Instruments on a fund. # noqa: E501
1525
+
1526
+ Update the ShareClass Instruments on an existing fund with the set of instruments provided. # noqa: E501
1527
+ This method makes a synchronous HTTP request by default. To make an
1528
+ asynchronous HTTP request, please pass async_req=True
1529
+
1530
+ >>> thread = api.set_share_class_instruments_with_http_info(scope, code, set_share_class_instruments_request, async_req=True)
1531
+ >>> result = thread.get()
1532
+
1533
+ :param scope: The scope of the Fund. (required)
1534
+ :type scope: str
1535
+ :param code: The code of the Fund. (required)
1536
+ :type code: str
1537
+ :param set_share_class_instruments_request: The scopes and instrument identifiers for the instruments to be set. (required)
1538
+ :type set_share_class_instruments_request: SetShareClassInstrumentsRequest
1539
+ :param async_req: Whether to execute the request asynchronously.
1540
+ :type async_req: bool, optional
1541
+ :param _preload_content: if False, the ApiResponse.data will
1542
+ be set to none and raw_data will store the
1543
+ HTTP response body without reading/decoding.
1544
+ Default is True.
1545
+ :type _preload_content: bool, optional
1546
+ :param _return_http_data_only: response data instead of ApiResponse
1547
+ object with status code, headers, etc
1548
+ :type _return_http_data_only: bool, optional
1549
+ :param _request_timeout: timeout setting for this request. If one
1550
+ number provided, it will be total request
1551
+ timeout. It can also be a pair (tuple) of
1552
+ (connection, read) timeouts.
1553
+ :param _request_auth: set to override the auth_settings for an a single
1554
+ request; this effectively ignores the authentication
1555
+ in the spec for a single request.
1556
+ :type _request_auth: dict, optional
1557
+ :type _content_type: string, optional: force content-type for the request
1558
+ :return: Returns the result object.
1559
+ If the method is called asynchronously,
1560
+ returns the request thread.
1561
+ :rtype: tuple(Fund, status_code(int), headers(HTTPHeaderDict))
1562
+ """
1563
+
1564
+ _params = locals()
1565
+
1566
+ _all_params = [
1567
+ 'scope',
1568
+ 'code',
1569
+ 'set_share_class_instruments_request'
1570
+ ]
1571
+ _all_params.extend(
1572
+ [
1573
+ 'async_req',
1574
+ '_return_http_data_only',
1575
+ '_preload_content',
1576
+ '_request_timeout',
1577
+ '_request_auth',
1578
+ '_content_type',
1579
+ '_headers'
1580
+ ]
1581
+ )
1582
+
1583
+ # validate the arguments
1584
+ for _key, _val in _params['kwargs'].items():
1585
+ if _key not in _all_params:
1586
+ raise ApiTypeError(
1587
+ "Got an unexpected keyword argument '%s'"
1588
+ " to method set_share_class_instruments" % _key
699
1589
  )
700
1590
  _params[_key] = _val
701
1591
  del _params['kwargs']
@@ -704,35 +1594,15 @@ class FundsApi:
704
1594
 
705
1595
  # process the path parameters
706
1596
  _path_params = {}
1597
+ if _params['scope']:
1598
+ _path_params['scope'] = _params['scope']
707
1599
 
708
- # process the query parameters
709
- _query_params = []
710
- if _params.get('effective_at') is not None: # noqa: E501
711
- _query_params.append(('effectiveAt', _params['effective_at']))
712
-
713
- if _params.get('as_at') is not None: # noqa: E501
714
- if isinstance(_params['as_at'], datetime):
715
- _query_params.append(('asAt', _params['as_at'].strftime(self.api_client.configuration.datetime_format)))
716
- else:
717
- _query_params.append(('asAt', _params['as_at']))
718
-
719
- if _params.get('page') is not None: # noqa: E501
720
- _query_params.append(('page', _params['page']))
721
-
722
- if _params.get('limit') is not None: # noqa: E501
723
- _query_params.append(('limit', _params['limit']))
724
-
725
- if _params.get('filter') is not None: # noqa: E501
726
- _query_params.append(('filter', _params['filter']))
727
-
728
- if _params.get('sort_by') is not None: # noqa: E501
729
- _query_params.append(('sortBy', _params['sort_by']))
730
- _collection_formats['sortBy'] = 'multi'
1600
+ if _params['code']:
1601
+ _path_params['code'] = _params['code']
731
1602
 
732
- if _params.get('property_keys') is not None: # noqa: E501
733
- _query_params.append(('propertyKeys', _params['property_keys']))
734
- _collection_formats['propertyKeys'] = 'multi'
735
1603
 
1604
+ # process the query parameters
1605
+ _query_params = []
736
1606
  # process the header parameters
737
1607
  _header_params = dict(_params.get('_headers', {}))
738
1608
  # process the form parameters
@@ -740,20 +1610,30 @@ class FundsApi:
740
1610
  _files = {}
741
1611
  # process the body parameter
742
1612
  _body_params = None
1613
+ if _params['set_share_class_instruments_request'] is not None:
1614
+ _body_params = _params['set_share_class_instruments_request']
1615
+
743
1616
  # set the HTTP header `Accept`
744
1617
  _header_params['Accept'] = self.api_client.select_header_accept(
745
1618
  ['text/plain', 'application/json', 'text/json']) # noqa: E501
746
1619
 
1620
+ # set the HTTP header `Content-Type`
1621
+ _content_types_list = _params.get('_content_type',
1622
+ self.api_client.select_header_content_type(
1623
+ ['application/json-patch+json', 'application/json', 'text/json', 'application/*+json']))
1624
+ if _content_types_list:
1625
+ _header_params['Content-Type'] = _content_types_list
1626
+
747
1627
  # authentication setting
748
1628
  _auth_settings = ['oauth2'] # noqa: E501
749
1629
 
750
1630
  _response_types_map = {
751
- '200': "PagedResourceListOfFund",
1631
+ '201': "Fund",
752
1632
  '400': "LusidValidationProblemDetails",
753
1633
  }
754
1634
 
755
1635
  return self.api_client.call_api(
756
- '/api/funds', 'GET',
1636
+ '/api/funds/{scope}/{code}/shareclasses', 'POST',
757
1637
  _path_params,
758
1638
  _query_params,
759
1639
  _header_params,
@@ -779,7 +1659,7 @@ class FundsApi:
779
1659
 
780
1660
  @validate_arguments
781
1661
  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
782
- """[EXPERIMENTAL] UpsertFundProperties: Upsert Fund properties # noqa: E501
1662
+ """[EXPERIMENTAL] UpsertFundProperties: Upsert Fund properties. # noqa: E501
783
1663
 
784
1664
  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
785
1665
  This method makes a synchronous HTTP request by default. To make an
@@ -815,7 +1695,7 @@ class FundsApi:
815
1695
 
816
1696
  @validate_arguments
817
1697
  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
818
- """[EXPERIMENTAL] UpsertFundProperties: Upsert Fund properties # noqa: E501
1698
+ """[EXPERIMENTAL] UpsertFundProperties: Upsert Fund properties. # noqa: E501
819
1699
 
820
1700
  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
821
1701
  This method makes a synchronous HTTP request by default. To make an
@@ -942,3 +1822,177 @@ class FundsApi:
942
1822
  _request_timeout=_params.get('_request_timeout'),
943
1823
  collection_formats=_collection_formats,
944
1824
  _request_auth=_params.get('_request_auth'))
1825
+
1826
+ @overload
1827
+ 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
1828
+ ...
1829
+
1830
+ @overload
1831
+ 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
1832
+ ...
1833
+
1834
+ @validate_arguments
1835
+ 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
1836
+ """[EXPERIMENTAL] UpsertValuationPoint: Upsert Valuation Point. # noqa: E501
1837
+
1838
+ 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
1839
+ This method makes a synchronous HTTP request by default. To make an
1840
+ asynchronous HTTP request, please pass async_req=True
1841
+
1842
+ >>> thread = api.upsert_valuation_point(scope, code, upsert_valuation_point_request, async_req=True)
1843
+ >>> result = thread.get()
1844
+
1845
+ :param scope: The scope of the Fund. (required)
1846
+ :type scope: str
1847
+ :param code: The code of the Fund. Together with the scope this uniquely identifies the Fund. (required)
1848
+ :type code: str
1849
+ :param upsert_valuation_point_request: The Valuation Point Estimate definition to Upsert (required)
1850
+ :type upsert_valuation_point_request: UpsertValuationPointRequest
1851
+ :param async_req: Whether to execute the request asynchronously.
1852
+ :type async_req: bool, optional
1853
+ :param _request_timeout: timeout setting for this request.
1854
+ If one number provided, it will be total request
1855
+ timeout. It can also be a pair (tuple) of
1856
+ (connection, read) timeouts.
1857
+ :return: Returns the result object.
1858
+ If the method is called asynchronously,
1859
+ returns the request thread.
1860
+ :rtype: DiaryEntry
1861
+ """
1862
+ kwargs['_return_http_data_only'] = True
1863
+ if '_preload_content' in kwargs:
1864
+ 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
1865
+ raise ValueError(message)
1866
+ if async_req is not None:
1867
+ kwargs['async_req'] = async_req
1868
+ return self.upsert_valuation_point_with_http_info(scope, code, upsert_valuation_point_request, **kwargs) # noqa: E501
1869
+
1870
+ @validate_arguments
1871
+ 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
1872
+ """[EXPERIMENTAL] UpsertValuationPoint: Upsert Valuation Point. # noqa: E501
1873
+
1874
+ 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
1875
+ This method makes a synchronous HTTP request by default. To make an
1876
+ asynchronous HTTP request, please pass async_req=True
1877
+
1878
+ >>> thread = api.upsert_valuation_point_with_http_info(scope, code, upsert_valuation_point_request, async_req=True)
1879
+ >>> result = thread.get()
1880
+
1881
+ :param scope: The scope of the Fund. (required)
1882
+ :type scope: str
1883
+ :param code: The code of the Fund. Together with the scope this uniquely identifies the Fund. (required)
1884
+ :type code: str
1885
+ :param upsert_valuation_point_request: The Valuation Point Estimate definition to Upsert (required)
1886
+ :type upsert_valuation_point_request: UpsertValuationPointRequest
1887
+ :param async_req: Whether to execute the request asynchronously.
1888
+ :type async_req: bool, optional
1889
+ :param _preload_content: if False, the ApiResponse.data will
1890
+ be set to none and raw_data will store the
1891
+ HTTP response body without reading/decoding.
1892
+ Default is True.
1893
+ :type _preload_content: bool, optional
1894
+ :param _return_http_data_only: response data instead of ApiResponse
1895
+ object with status code, headers, etc
1896
+ :type _return_http_data_only: bool, optional
1897
+ :param _request_timeout: timeout setting for this request. If one
1898
+ number provided, it will be total request
1899
+ timeout. It can also be a pair (tuple) of
1900
+ (connection, read) timeouts.
1901
+ :param _request_auth: set to override the auth_settings for an a single
1902
+ request; this effectively ignores the authentication
1903
+ in the spec for a single request.
1904
+ :type _request_auth: dict, optional
1905
+ :type _content_type: string, optional: force content-type for the request
1906
+ :return: Returns the result object.
1907
+ If the method is called asynchronously,
1908
+ returns the request thread.
1909
+ :rtype: tuple(DiaryEntry, status_code(int), headers(HTTPHeaderDict))
1910
+ """
1911
+
1912
+ _params = locals()
1913
+
1914
+ _all_params = [
1915
+ 'scope',
1916
+ 'code',
1917
+ 'upsert_valuation_point_request'
1918
+ ]
1919
+ _all_params.extend(
1920
+ [
1921
+ 'async_req',
1922
+ '_return_http_data_only',
1923
+ '_preload_content',
1924
+ '_request_timeout',
1925
+ '_request_auth',
1926
+ '_content_type',
1927
+ '_headers'
1928
+ ]
1929
+ )
1930
+
1931
+ # validate the arguments
1932
+ for _key, _val in _params['kwargs'].items():
1933
+ if _key not in _all_params:
1934
+ raise ApiTypeError(
1935
+ "Got an unexpected keyword argument '%s'"
1936
+ " to method upsert_valuation_point" % _key
1937
+ )
1938
+ _params[_key] = _val
1939
+ del _params['kwargs']
1940
+
1941
+ _collection_formats = {}
1942
+
1943
+ # process the path parameters
1944
+ _path_params = {}
1945
+ if _params['scope']:
1946
+ _path_params['scope'] = _params['scope']
1947
+
1948
+ if _params['code']:
1949
+ _path_params['code'] = _params['code']
1950
+
1951
+
1952
+ # process the query parameters
1953
+ _query_params = []
1954
+ # process the header parameters
1955
+ _header_params = dict(_params.get('_headers', {}))
1956
+ # process the form parameters
1957
+ _form_params = []
1958
+ _files = {}
1959
+ # process the body parameter
1960
+ _body_params = None
1961
+ if _params['upsert_valuation_point_request'] is not None:
1962
+ _body_params = _params['upsert_valuation_point_request']
1963
+
1964
+ # set the HTTP header `Accept`
1965
+ _header_params['Accept'] = self.api_client.select_header_accept(
1966
+ ['text/plain', 'application/json', 'text/json']) # noqa: E501
1967
+
1968
+ # set the HTTP header `Content-Type`
1969
+ _content_types_list = _params.get('_content_type',
1970
+ self.api_client.select_header_content_type(
1971
+ ['application/json-patch+json', 'application/json', 'text/json', 'application/*+json']))
1972
+ if _content_types_list:
1973
+ _header_params['Content-Type'] = _content_types_list
1974
+
1975
+ # authentication setting
1976
+ _auth_settings = ['oauth2'] # noqa: E501
1977
+
1978
+ _response_types_map = {
1979
+ '200': "DiaryEntry",
1980
+ '400': "LusidValidationProblemDetails",
1981
+ }
1982
+
1983
+ return self.api_client.call_api(
1984
+ '/api/funds/{scope}/{code}/valuationpoints/$upsert', 'POST',
1985
+ _path_params,
1986
+ _query_params,
1987
+ _header_params,
1988
+ body=_body_params,
1989
+ post_params=_form_params,
1990
+ files=_files,
1991
+ response_types_map=_response_types_map,
1992
+ auth_settings=_auth_settings,
1993
+ async_req=_params.get('async_req'),
1994
+ _return_http_data_only=_params.get('_return_http_data_only'), # noqa: E501
1995
+ _preload_content=_params.get('_preload_content', True),
1996
+ _request_timeout=_params.get('_request_timeout'),
1997
+ collection_formats=_collection_formats,
1998
+ _request_auth=_params.get('_request_auth'))