lusid-sdk 2.1.310__py3-none-any.whl → 2.1.319__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.
- lusid/__init__.py +8 -0
- lusid/api/order_management_api.py +159 -0
- lusid/configuration.py +1 -1
- lusid/extensions/configuration_loaders.py +9 -1
- lusid/models/__init__.py +8 -0
- lusid/models/cancel_orders_response.py +153 -0
- lusid/models/cancelled_order_result.py +73 -0
- lusid/models/fund_pnl_breakdown.py +110 -0
- lusid/models/fund_valuation_point_data.py +5 -13
- lusid/models/share_class_breakdown.py +5 -13
- lusid/models/share_class_pnl_breakdown.py +110 -0
- lusid/models/template_field.py +3 -1
- {lusid_sdk-2.1.310.dist-info → lusid_sdk-2.1.319.dist-info}/METADATA +13 -214
- {lusid_sdk-2.1.310.dist-info → lusid_sdk-2.1.319.dist-info}/RECORD +15 -11
- {lusid_sdk-2.1.310.dist-info → lusid_sdk-2.1.319.dist-info}/WHEEL +0 -0
lusid/__init__.py
CHANGED
@@ -185,7 +185,9 @@ from lusid.models.calculation_info import CalculationInfo
|
|
185
185
|
from lusid.models.calendar import Calendar
|
186
186
|
from lusid.models.calendar_date import CalendarDate
|
187
187
|
from lusid.models.calendar_dependency import CalendarDependency
|
188
|
+
from lusid.models.cancel_orders_response import CancelOrdersResponse
|
188
189
|
from lusid.models.cancel_placements_response import CancelPlacementsResponse
|
190
|
+
from lusid.models.cancelled_order_result import CancelledOrderResult
|
189
191
|
from lusid.models.cancelled_placement_result import CancelledPlacementResult
|
190
192
|
from lusid.models.cap_floor import CapFloor
|
191
193
|
from lusid.models.capital_distribution_event import CapitalDistributionEvent
|
@@ -427,6 +429,7 @@ from lusid.models.fund_amount import FundAmount
|
|
427
429
|
from lusid.models.fund_configuration import FundConfiguration
|
428
430
|
from lusid.models.fund_configuration_properties import FundConfigurationProperties
|
429
431
|
from lusid.models.fund_configuration_request import FundConfigurationRequest
|
432
|
+
from lusid.models.fund_pnl_breakdown import FundPnlBreakdown
|
430
433
|
from lusid.models.fund_previous_nav import FundPreviousNAV
|
431
434
|
from lusid.models.fund_properties import FundProperties
|
432
435
|
from lusid.models.fund_request import FundRequest
|
@@ -928,6 +931,7 @@ from lusid.models.share_class_amount import ShareClassAmount
|
|
928
931
|
from lusid.models.share_class_breakdown import ShareClassBreakdown
|
929
932
|
from lusid.models.share_class_data import ShareClassData
|
930
933
|
from lusid.models.share_class_details import ShareClassDetails
|
934
|
+
from lusid.models.share_class_pnl_breakdown import ShareClassPnlBreakdown
|
931
935
|
from lusid.models.side_configuration_data import SideConfigurationData
|
932
936
|
from lusid.models.side_configuration_data_request import SideConfigurationDataRequest
|
933
937
|
from lusid.models.side_definition import SideDefinition
|
@@ -1290,7 +1294,9 @@ __all__ = [
|
|
1290
1294
|
"Calendar",
|
1291
1295
|
"CalendarDate",
|
1292
1296
|
"CalendarDependency",
|
1297
|
+
"CancelOrdersResponse",
|
1293
1298
|
"CancelPlacementsResponse",
|
1299
|
+
"CancelledOrderResult",
|
1294
1300
|
"CancelledPlacementResult",
|
1295
1301
|
"CapFloor",
|
1296
1302
|
"CapitalDistributionEvent",
|
@@ -1532,6 +1538,7 @@ __all__ = [
|
|
1532
1538
|
"FundConfiguration",
|
1533
1539
|
"FundConfigurationProperties",
|
1534
1540
|
"FundConfigurationRequest",
|
1541
|
+
"FundPnlBreakdown",
|
1535
1542
|
"FundPreviousNAV",
|
1536
1543
|
"FundProperties",
|
1537
1544
|
"FundRequest",
|
@@ -2033,6 +2040,7 @@ __all__ = [
|
|
2033
2040
|
"ShareClassBreakdown",
|
2034
2041
|
"ShareClassData",
|
2035
2042
|
"ShareClassDetails",
|
2043
|
+
"ShareClassPnlBreakdown",
|
2036
2044
|
"SideConfigurationData",
|
2037
2045
|
"SideConfigurationDataRequest",
|
2038
2046
|
"SideDefinition",
|
@@ -28,6 +28,7 @@ from lusid.models.allocation_service_run_response import AllocationServiceRunRes
|
|
28
28
|
from lusid.models.block_and_orders_create_request import BlockAndOrdersCreateRequest
|
29
29
|
from lusid.models.book_transactions_request import BookTransactionsRequest
|
30
30
|
from lusid.models.book_transactions_response import BookTransactionsResponse
|
31
|
+
from lusid.models.cancel_orders_response import CancelOrdersResponse
|
31
32
|
from lusid.models.cancel_placements_response import CancelPlacementsResponse
|
32
33
|
from lusid.models.move_orders_to_different_blocks_request import MoveOrdersToDifferentBlocksRequest
|
33
34
|
from lusid.models.place_blocks_request import PlaceBlocksRequest
|
@@ -224,6 +225,164 @@ class OrderManagementApi:
|
|
224
225
|
collection_formats=_collection_formats,
|
225
226
|
_request_auth=_params.get('_request_auth'))
|
226
227
|
|
228
|
+
@overload
|
229
|
+
async def cancel_orders(self, request_body : Annotated[Dict[str, ResourceId], Field(..., description="The request containing the ids of the orders to be cancelled.")], **kwargs) -> CancelOrdersResponse: # noqa: E501
|
230
|
+
...
|
231
|
+
|
232
|
+
@overload
|
233
|
+
def cancel_orders(self, request_body : Annotated[Dict[str, ResourceId], Field(..., description="The request containing the ids of the orders to be cancelled.")], async_req: Optional[bool]=True, **kwargs) -> CancelOrdersResponse: # noqa: E501
|
234
|
+
...
|
235
|
+
|
236
|
+
@validate_arguments
|
237
|
+
def cancel_orders(self, request_body : Annotated[Dict[str, ResourceId], Field(..., description="The request containing the ids of the orders to be cancelled.")], async_req: Optional[bool]=None, **kwargs) -> Union[CancelOrdersResponse, Awaitable[CancelOrdersResponse]]: # noqa: E501
|
238
|
+
"""[EARLY ACCESS] CancelOrders: Cancel existing orders # noqa: E501
|
239
|
+
|
240
|
+
The response returns both the collection of successfully canceled orders, as well as those that failed. For each failure, a reason is provided. It is important to check the failed set for unsuccessful results. # noqa: E501
|
241
|
+
This method makes a synchronous HTTP request by default. To make an
|
242
|
+
asynchronous HTTP request, please pass async_req=True
|
243
|
+
|
244
|
+
>>> thread = api.cancel_orders(request_body, async_req=True)
|
245
|
+
>>> result = thread.get()
|
246
|
+
|
247
|
+
:param request_body: The request containing the ids of the orders to be cancelled. (required)
|
248
|
+
:type request_body: Dict[str, ResourceId]
|
249
|
+
:param async_req: Whether to execute the request asynchronously.
|
250
|
+
:type async_req: bool, optional
|
251
|
+
:param _request_timeout: timeout setting for this request.
|
252
|
+
If one number provided, it will be total request
|
253
|
+
timeout. It can also be a pair (tuple) of
|
254
|
+
(connection, read) timeouts.
|
255
|
+
:return: Returns the result object.
|
256
|
+
If the method is called asynchronously,
|
257
|
+
returns the request thread.
|
258
|
+
:rtype: CancelOrdersResponse
|
259
|
+
"""
|
260
|
+
kwargs['_return_http_data_only'] = True
|
261
|
+
if '_preload_content' in kwargs:
|
262
|
+
message = "Error! Please call the cancel_orders_with_http_info method with `_preload_content` instead and obtain raw data from ApiResponse.raw_data" # noqa: E501
|
263
|
+
raise ValueError(message)
|
264
|
+
if async_req is not None:
|
265
|
+
kwargs['async_req'] = async_req
|
266
|
+
return self.cancel_orders_with_http_info(request_body, **kwargs) # noqa: E501
|
267
|
+
|
268
|
+
@validate_arguments
|
269
|
+
def cancel_orders_with_http_info(self, request_body : Annotated[Dict[str, ResourceId], Field(..., description="The request containing the ids of the orders to be cancelled.")], **kwargs) -> ApiResponse: # noqa: E501
|
270
|
+
"""[EARLY ACCESS] CancelOrders: Cancel existing orders # noqa: E501
|
271
|
+
|
272
|
+
The response returns both the collection of successfully canceled orders, as well as those that failed. For each failure, a reason is provided. It is important to check the failed set for unsuccessful results. # noqa: E501
|
273
|
+
This method makes a synchronous HTTP request by default. To make an
|
274
|
+
asynchronous HTTP request, please pass async_req=True
|
275
|
+
|
276
|
+
>>> thread = api.cancel_orders_with_http_info(request_body, async_req=True)
|
277
|
+
>>> result = thread.get()
|
278
|
+
|
279
|
+
:param request_body: The request containing the ids of the orders to be cancelled. (required)
|
280
|
+
:type request_body: Dict[str, ResourceId]
|
281
|
+
:param async_req: Whether to execute the request asynchronously.
|
282
|
+
:type async_req: bool, optional
|
283
|
+
:param _preload_content: if False, the ApiResponse.data will
|
284
|
+
be set to none and raw_data will store the
|
285
|
+
HTTP response body without reading/decoding.
|
286
|
+
Default is True.
|
287
|
+
:type _preload_content: bool, optional
|
288
|
+
:param _return_http_data_only: response data instead of ApiResponse
|
289
|
+
object with status code, headers, etc
|
290
|
+
:type _return_http_data_only: bool, optional
|
291
|
+
:param _request_timeout: timeout setting for this request. If one
|
292
|
+
number provided, it will be total request
|
293
|
+
timeout. It can also be a pair (tuple) of
|
294
|
+
(connection, read) timeouts.
|
295
|
+
:param _request_auth: set to override the auth_settings for an a single
|
296
|
+
request; this effectively ignores the authentication
|
297
|
+
in the spec for a single request.
|
298
|
+
:type _request_auth: dict, optional
|
299
|
+
:type _content_type: string, optional: force content-type for the request
|
300
|
+
:return: Returns the result object.
|
301
|
+
If the method is called asynchronously,
|
302
|
+
returns the request thread.
|
303
|
+
:rtype: tuple(CancelOrdersResponse, status_code(int), headers(HTTPHeaderDict))
|
304
|
+
"""
|
305
|
+
|
306
|
+
_params = locals()
|
307
|
+
|
308
|
+
_all_params = [
|
309
|
+
'request_body'
|
310
|
+
]
|
311
|
+
_all_params.extend(
|
312
|
+
[
|
313
|
+
'async_req',
|
314
|
+
'_return_http_data_only',
|
315
|
+
'_preload_content',
|
316
|
+
'_request_timeout',
|
317
|
+
'_request_auth',
|
318
|
+
'_content_type',
|
319
|
+
'_headers'
|
320
|
+
]
|
321
|
+
)
|
322
|
+
|
323
|
+
# validate the arguments
|
324
|
+
for _key, _val in _params['kwargs'].items():
|
325
|
+
if _key not in _all_params:
|
326
|
+
raise ApiTypeError(
|
327
|
+
"Got an unexpected keyword argument '%s'"
|
328
|
+
" to method cancel_orders" % _key
|
329
|
+
)
|
330
|
+
_params[_key] = _val
|
331
|
+
del _params['kwargs']
|
332
|
+
|
333
|
+
_collection_formats = {}
|
334
|
+
|
335
|
+
# process the path parameters
|
336
|
+
_path_params = {}
|
337
|
+
|
338
|
+
# process the query parameters
|
339
|
+
_query_params = []
|
340
|
+
# process the header parameters
|
341
|
+
_header_params = dict(_params.get('_headers', {}))
|
342
|
+
# process the form parameters
|
343
|
+
_form_params = []
|
344
|
+
_files = {}
|
345
|
+
# process the body parameter
|
346
|
+
_body_params = None
|
347
|
+
if _params['request_body'] is not None:
|
348
|
+
_body_params = _params['request_body']
|
349
|
+
|
350
|
+
# set the HTTP header `Accept`
|
351
|
+
_header_params['Accept'] = self.api_client.select_header_accept(
|
352
|
+
['text/plain', 'application/json', 'text/json']) # noqa: E501
|
353
|
+
|
354
|
+
# set the HTTP header `Content-Type`
|
355
|
+
_content_types_list = _params.get('_content_type',
|
356
|
+
self.api_client.select_header_content_type(
|
357
|
+
['application/json-patch+json', 'application/json', 'text/json', 'application/*+json']))
|
358
|
+
if _content_types_list:
|
359
|
+
_header_params['Content-Type'] = _content_types_list
|
360
|
+
|
361
|
+
# authentication setting
|
362
|
+
_auth_settings = ['oauth2'] # noqa: E501
|
363
|
+
|
364
|
+
_response_types_map = {
|
365
|
+
'200': "CancelOrdersResponse",
|
366
|
+
'400': "LusidValidationProblemDetails",
|
367
|
+
}
|
368
|
+
|
369
|
+
return self.api_client.call_api(
|
370
|
+
'/api/ordermanagement/cancelorders', 'POST',
|
371
|
+
_path_params,
|
372
|
+
_query_params,
|
373
|
+
_header_params,
|
374
|
+
body=_body_params,
|
375
|
+
post_params=_form_params,
|
376
|
+
files=_files,
|
377
|
+
response_types_map=_response_types_map,
|
378
|
+
auth_settings=_auth_settings,
|
379
|
+
async_req=_params.get('async_req'),
|
380
|
+
_return_http_data_only=_params.get('_return_http_data_only'), # noqa: E501
|
381
|
+
_preload_content=_params.get('_preload_content', True),
|
382
|
+
_request_timeout=_params.get('_request_timeout'),
|
383
|
+
collection_formats=_collection_formats,
|
384
|
+
_request_auth=_params.get('_request_auth'))
|
385
|
+
|
227
386
|
@overload
|
228
387
|
async def cancel_placements(self, request_body : Annotated[Dict[str, ResourceId], Field(..., description="The request containing the ids of the placements to be cancelled.")], **kwargs) -> CancelPlacementsResponse: # noqa: E501
|
229
388
|
...
|
lusid/configuration.py
CHANGED
@@ -373,7 +373,7 @@ class Configuration:
|
|
373
373
|
return "Python SDK Debug Report:\n"\
|
374
374
|
"OS: {env}\n"\
|
375
375
|
"Python Version: {pyversion}\n"\
|
376
|
-
"Version of the API: 0.11.
|
376
|
+
"Version of the API: 0.11.6750\n"\
|
377
377
|
"SDK Package Version: {package_version}".\
|
378
378
|
format(env=sys.platform, pyversion=sys.version, package_version=package_version)
|
379
379
|
|
@@ -10,7 +10,8 @@ logger = logging.getLogger(__name__)
|
|
10
10
|
|
11
11
|
ENVIRONMENT_CONFIG_KEYS = {
|
12
12
|
"token_url": "FBN_TOKEN_URL",
|
13
|
-
"api_url": "
|
13
|
+
"api_url": "FBN_LUSID_URL",
|
14
|
+
"previous_api_url": "FBN_LUSID_API_URL",
|
14
15
|
"username": "FBN_USERNAME",
|
15
16
|
"password": "FBN_PASSWORD",
|
16
17
|
"client_id": "FBN_CLIENT_ID",
|
@@ -26,6 +27,7 @@ ENVIRONMENT_CONFIG_KEYS = {
|
|
26
27
|
SECRETS_FILE_CONFIG_KEYS = {
|
27
28
|
"token_url": "tokenUrl",
|
28
29
|
"api_url": "lusidUrl",
|
30
|
+
"previous_api_url": "lusidUrl",
|
29
31
|
"username": "username",
|
30
32
|
"password": "password",
|
31
33
|
"client_id": "clientId",
|
@@ -96,6 +98,9 @@ class SecretsFileConfigurationLoader:
|
|
96
98
|
for key, value in SECRETS_FILE_CONFIG_KEYS.items()
|
97
99
|
if "proxy" not in key
|
98
100
|
}
|
101
|
+
if not populated_api_config_values["api_url"]:
|
102
|
+
populated_api_config_values["api_url"] = populated_api_config_values["previous_api_url"]
|
103
|
+
del(populated_api_config_values["previous_api_url"])
|
99
104
|
proxy_config_section = config.get(proxy_config_key, {})
|
100
105
|
populated_proxy_values = {
|
101
106
|
key: proxy_config_section.get(value)
|
@@ -127,6 +132,9 @@ class EnvironmentVariablesConfigurationLoader:
|
|
127
132
|
for key, value in ENVIRONMENT_CONFIG_KEYS.items()
|
128
133
|
if "proxy" not in key
|
129
134
|
}
|
135
|
+
if not populated_api_config_values["api_url"]:
|
136
|
+
populated_api_config_values["api_url"] = populated_api_config_values["previous_api_url"]
|
137
|
+
del(populated_api_config_values["previous_api_url"])
|
130
138
|
populated_proxy_values = {
|
131
139
|
key: os.environ.get(value)
|
132
140
|
for key, value in ENVIRONMENT_CONFIG_KEYS.items()
|
lusid/models/__init__.py
CHANGED
@@ -106,7 +106,9 @@ from lusid.models.calculation_info import CalculationInfo
|
|
106
106
|
from lusid.models.calendar import Calendar
|
107
107
|
from lusid.models.calendar_date import CalendarDate
|
108
108
|
from lusid.models.calendar_dependency import CalendarDependency
|
109
|
+
from lusid.models.cancel_orders_response import CancelOrdersResponse
|
109
110
|
from lusid.models.cancel_placements_response import CancelPlacementsResponse
|
111
|
+
from lusid.models.cancelled_order_result import CancelledOrderResult
|
110
112
|
from lusid.models.cancelled_placement_result import CancelledPlacementResult
|
111
113
|
from lusid.models.cap_floor import CapFloor
|
112
114
|
from lusid.models.capital_distribution_event import CapitalDistributionEvent
|
@@ -348,6 +350,7 @@ from lusid.models.fund_amount import FundAmount
|
|
348
350
|
from lusid.models.fund_configuration import FundConfiguration
|
349
351
|
from lusid.models.fund_configuration_properties import FundConfigurationProperties
|
350
352
|
from lusid.models.fund_configuration_request import FundConfigurationRequest
|
353
|
+
from lusid.models.fund_pnl_breakdown import FundPnlBreakdown
|
351
354
|
from lusid.models.fund_previous_nav import FundPreviousNAV
|
352
355
|
from lusid.models.fund_properties import FundProperties
|
353
356
|
from lusid.models.fund_request import FundRequest
|
@@ -849,6 +852,7 @@ from lusid.models.share_class_amount import ShareClassAmount
|
|
849
852
|
from lusid.models.share_class_breakdown import ShareClassBreakdown
|
850
853
|
from lusid.models.share_class_data import ShareClassData
|
851
854
|
from lusid.models.share_class_details import ShareClassDetails
|
855
|
+
from lusid.models.share_class_pnl_breakdown import ShareClassPnlBreakdown
|
852
856
|
from lusid.models.side_configuration_data import SideConfigurationData
|
853
857
|
from lusid.models.side_configuration_data_request import SideConfigurationDataRequest
|
854
858
|
from lusid.models.side_definition import SideDefinition
|
@@ -1133,7 +1137,9 @@ __all__ = [
|
|
1133
1137
|
"Calendar",
|
1134
1138
|
"CalendarDate",
|
1135
1139
|
"CalendarDependency",
|
1140
|
+
"CancelOrdersResponse",
|
1136
1141
|
"CancelPlacementsResponse",
|
1142
|
+
"CancelledOrderResult",
|
1137
1143
|
"CancelledPlacementResult",
|
1138
1144
|
"CapFloor",
|
1139
1145
|
"CapitalDistributionEvent",
|
@@ -1375,6 +1381,7 @@ __all__ = [
|
|
1375
1381
|
"FundConfiguration",
|
1376
1382
|
"FundConfigurationProperties",
|
1377
1383
|
"FundConfigurationRequest",
|
1384
|
+
"FundPnlBreakdown",
|
1378
1385
|
"FundPreviousNAV",
|
1379
1386
|
"FundProperties",
|
1380
1387
|
"FundRequest",
|
@@ -1876,6 +1883,7 @@ __all__ = [
|
|
1876
1883
|
"ShareClassBreakdown",
|
1877
1884
|
"ShareClassData",
|
1878
1885
|
"ShareClassDetails",
|
1886
|
+
"ShareClassPnlBreakdown",
|
1879
1887
|
"SideConfigurationData",
|
1880
1888
|
"SideConfigurationDataRequest",
|
1881
1889
|
"SideDefinition",
|
@@ -0,0 +1,153 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
|
3
|
+
"""
|
4
|
+
LUSID API
|
5
|
+
|
6
|
+
FINBOURNE Technology # noqa: E501
|
7
|
+
|
8
|
+
Contact: info@finbourne.com
|
9
|
+
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
10
|
+
|
11
|
+
Do not edit the class manually.
|
12
|
+
"""
|
13
|
+
|
14
|
+
|
15
|
+
from __future__ import annotations
|
16
|
+
import pprint
|
17
|
+
import re # noqa: F401
|
18
|
+
import json
|
19
|
+
|
20
|
+
|
21
|
+
from typing import Any, Dict, List, Optional
|
22
|
+
from pydantic.v1 import BaseModel, Field, StrictStr, conlist
|
23
|
+
from lusid.models.cancelled_order_result import CancelledOrderResult
|
24
|
+
from lusid.models.error_detail import ErrorDetail
|
25
|
+
from lusid.models.link import Link
|
26
|
+
from lusid.models.response_meta_data import ResponseMetaData
|
27
|
+
|
28
|
+
class CancelOrdersResponse(BaseModel):
|
29
|
+
"""
|
30
|
+
CancelOrdersResponse
|
31
|
+
"""
|
32
|
+
href: Optional[StrictStr] = Field(None, description="The specific Uniform Resource Identifier (URI) for this resource at the requested effective and asAt datetime.")
|
33
|
+
values: Optional[Dict[str, CancelledOrderResult]] = Field(None, description="The orders which have been successfully cancelled.")
|
34
|
+
failed: Optional[Dict[str, ErrorDetail]] = Field(None, description="The orders that could not be cancelled, along with a reason for their failure.")
|
35
|
+
metadata: Optional[Dict[str, conlist(ResponseMetaData)]] = Field(None, description="Meta data associated with the cancellation event.")
|
36
|
+
links: Optional[conlist(Link)] = None
|
37
|
+
__properties = ["href", "values", "failed", "metadata", "links"]
|
38
|
+
|
39
|
+
class Config:
|
40
|
+
"""Pydantic configuration"""
|
41
|
+
allow_population_by_field_name = True
|
42
|
+
validate_assignment = True
|
43
|
+
|
44
|
+
def to_str(self) -> str:
|
45
|
+
"""Returns the string representation of the model using alias"""
|
46
|
+
return pprint.pformat(self.dict(by_alias=True))
|
47
|
+
|
48
|
+
def to_json(self) -> str:
|
49
|
+
"""Returns the JSON representation of the model using alias"""
|
50
|
+
return json.dumps(self.to_dict())
|
51
|
+
|
52
|
+
@classmethod
|
53
|
+
def from_json(cls, json_str: str) -> CancelOrdersResponse:
|
54
|
+
"""Create an instance of CancelOrdersResponse from a JSON string"""
|
55
|
+
return cls.from_dict(json.loads(json_str))
|
56
|
+
|
57
|
+
def to_dict(self):
|
58
|
+
"""Returns the dictionary representation of the model using alias"""
|
59
|
+
_dict = self.dict(by_alias=True,
|
60
|
+
exclude={
|
61
|
+
},
|
62
|
+
exclude_none=True)
|
63
|
+
# override the default output from pydantic by calling `to_dict()` of each value in values (dict)
|
64
|
+
_field_dict = {}
|
65
|
+
if self.values:
|
66
|
+
for _key in self.values:
|
67
|
+
if self.values[_key]:
|
68
|
+
_field_dict[_key] = self.values[_key].to_dict()
|
69
|
+
_dict['values'] = _field_dict
|
70
|
+
# override the default output from pydantic by calling `to_dict()` of each value in failed (dict)
|
71
|
+
_field_dict = {}
|
72
|
+
if self.failed:
|
73
|
+
for _key in self.failed:
|
74
|
+
if self.failed[_key]:
|
75
|
+
_field_dict[_key] = self.failed[_key].to_dict()
|
76
|
+
_dict['failed'] = _field_dict
|
77
|
+
# override the default output from pydantic by calling `to_dict()` of each value in metadata (dict of array)
|
78
|
+
_field_dict_of_array = {}
|
79
|
+
if self.metadata:
|
80
|
+
for _key in self.metadata:
|
81
|
+
if self.metadata[_key]:
|
82
|
+
_field_dict_of_array[_key] = [
|
83
|
+
_item.to_dict() for _item in self.metadata[_key]
|
84
|
+
]
|
85
|
+
_dict['metadata'] = _field_dict_of_array
|
86
|
+
# override the default output from pydantic by calling `to_dict()` of each item in links (list)
|
87
|
+
_items = []
|
88
|
+
if self.links:
|
89
|
+
for _item in self.links:
|
90
|
+
if _item:
|
91
|
+
_items.append(_item.to_dict())
|
92
|
+
_dict['links'] = _items
|
93
|
+
# set to None if href (nullable) is None
|
94
|
+
# and __fields_set__ contains the field
|
95
|
+
if self.href is None and "href" in self.__fields_set__:
|
96
|
+
_dict['href'] = None
|
97
|
+
|
98
|
+
# set to None if values (nullable) is None
|
99
|
+
# and __fields_set__ contains the field
|
100
|
+
if self.values is None and "values" in self.__fields_set__:
|
101
|
+
_dict['values'] = None
|
102
|
+
|
103
|
+
# set to None if failed (nullable) is None
|
104
|
+
# and __fields_set__ contains the field
|
105
|
+
if self.failed is None and "failed" in self.__fields_set__:
|
106
|
+
_dict['failed'] = None
|
107
|
+
|
108
|
+
# set to None if metadata (nullable) is None
|
109
|
+
# and __fields_set__ contains the field
|
110
|
+
if self.metadata is None and "metadata" in self.__fields_set__:
|
111
|
+
_dict['metadata'] = None
|
112
|
+
|
113
|
+
# set to None if links (nullable) is None
|
114
|
+
# and __fields_set__ contains the field
|
115
|
+
if self.links is None and "links" in self.__fields_set__:
|
116
|
+
_dict['links'] = None
|
117
|
+
|
118
|
+
return _dict
|
119
|
+
|
120
|
+
@classmethod
|
121
|
+
def from_dict(cls, obj: dict) -> CancelOrdersResponse:
|
122
|
+
"""Create an instance of CancelOrdersResponse from a dict"""
|
123
|
+
if obj is None:
|
124
|
+
return None
|
125
|
+
|
126
|
+
if not isinstance(obj, dict):
|
127
|
+
return CancelOrdersResponse.parse_obj(obj)
|
128
|
+
|
129
|
+
_obj = CancelOrdersResponse.parse_obj({
|
130
|
+
"href": obj.get("href"),
|
131
|
+
"values": dict(
|
132
|
+
(_k, CancelledOrderResult.from_dict(_v))
|
133
|
+
for _k, _v in obj.get("values").items()
|
134
|
+
)
|
135
|
+
if obj.get("values") is not None
|
136
|
+
else None,
|
137
|
+
"failed": dict(
|
138
|
+
(_k, ErrorDetail.from_dict(_v))
|
139
|
+
for _k, _v in obj.get("failed").items()
|
140
|
+
)
|
141
|
+
if obj.get("failed") is not None
|
142
|
+
else None,
|
143
|
+
"metadata": dict(
|
144
|
+
(_k,
|
145
|
+
[ResponseMetaData.from_dict(_item) for _item in _v]
|
146
|
+
if _v is not None
|
147
|
+
else None
|
148
|
+
)
|
149
|
+
for _k, _v in obj.get("metadata").items()
|
150
|
+
),
|
151
|
+
"links": [Link.from_dict(_item) for _item in obj.get("links")] if obj.get("links") is not None else None
|
152
|
+
})
|
153
|
+
return _obj
|
@@ -0,0 +1,73 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
|
3
|
+
"""
|
4
|
+
LUSID API
|
5
|
+
|
6
|
+
FINBOURNE Technology # noqa: E501
|
7
|
+
|
8
|
+
Contact: info@finbourne.com
|
9
|
+
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
10
|
+
|
11
|
+
Do not edit the class manually.
|
12
|
+
"""
|
13
|
+
|
14
|
+
|
15
|
+
from __future__ import annotations
|
16
|
+
import pprint
|
17
|
+
import re # noqa: F401
|
18
|
+
import json
|
19
|
+
|
20
|
+
|
21
|
+
from typing import Any, Dict, Optional
|
22
|
+
from pydantic.v1 import BaseModel, Field
|
23
|
+
from lusid.models.order import Order
|
24
|
+
|
25
|
+
class CancelledOrderResult(BaseModel):
|
26
|
+
"""
|
27
|
+
CancelledOrderResult
|
28
|
+
"""
|
29
|
+
order_state: Optional[Order] = Field(None, alias="orderState")
|
30
|
+
__properties = ["orderState"]
|
31
|
+
|
32
|
+
class Config:
|
33
|
+
"""Pydantic configuration"""
|
34
|
+
allow_population_by_field_name = True
|
35
|
+
validate_assignment = True
|
36
|
+
|
37
|
+
def to_str(self) -> str:
|
38
|
+
"""Returns the string representation of the model using alias"""
|
39
|
+
return pprint.pformat(self.dict(by_alias=True))
|
40
|
+
|
41
|
+
def to_json(self) -> str:
|
42
|
+
"""Returns the JSON representation of the model using alias"""
|
43
|
+
return json.dumps(self.to_dict())
|
44
|
+
|
45
|
+
@classmethod
|
46
|
+
def from_json(cls, json_str: str) -> CancelledOrderResult:
|
47
|
+
"""Create an instance of CancelledOrderResult from a JSON string"""
|
48
|
+
return cls.from_dict(json.loads(json_str))
|
49
|
+
|
50
|
+
def to_dict(self):
|
51
|
+
"""Returns the dictionary representation of the model using alias"""
|
52
|
+
_dict = self.dict(by_alias=True,
|
53
|
+
exclude={
|
54
|
+
},
|
55
|
+
exclude_none=True)
|
56
|
+
# override the default output from pydantic by calling `to_dict()` of order_state
|
57
|
+
if self.order_state:
|
58
|
+
_dict['orderState'] = self.order_state.to_dict()
|
59
|
+
return _dict
|
60
|
+
|
61
|
+
@classmethod
|
62
|
+
def from_dict(cls, obj: dict) -> CancelledOrderResult:
|
63
|
+
"""Create an instance of CancelledOrderResult from a dict"""
|
64
|
+
if obj is None:
|
65
|
+
return None
|
66
|
+
|
67
|
+
if not isinstance(obj, dict):
|
68
|
+
return CancelledOrderResult.parse_obj(obj)
|
69
|
+
|
70
|
+
_obj = CancelledOrderResult.parse_obj({
|
71
|
+
"order_state": Order.from_dict(obj.get("orderState")) if obj.get("orderState") is not None else None
|
72
|
+
})
|
73
|
+
return _obj
|
@@ -0,0 +1,110 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
|
3
|
+
"""
|
4
|
+
LUSID API
|
5
|
+
|
6
|
+
FINBOURNE Technology # noqa: E501
|
7
|
+
|
8
|
+
Contact: info@finbourne.com
|
9
|
+
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
10
|
+
|
11
|
+
Do not edit the class manually.
|
12
|
+
"""
|
13
|
+
|
14
|
+
|
15
|
+
from __future__ import annotations
|
16
|
+
import pprint
|
17
|
+
import re # noqa: F401
|
18
|
+
import json
|
19
|
+
|
20
|
+
|
21
|
+
from typing import Any, Dict
|
22
|
+
from pydantic.v1 import BaseModel, Field
|
23
|
+
from lusid.models.fund_amount import FundAmount
|
24
|
+
|
25
|
+
class FundPnlBreakdown(BaseModel):
|
26
|
+
"""
|
27
|
+
The breakdown of PnL for a Fund on a specified date. # noqa: E501
|
28
|
+
"""
|
29
|
+
non_class_specific_pnl: Dict[str, FundAmount] = Field(..., alias="nonClassSpecificPnl", description="Bucket of detail for PnL within the queried period that is not specific to any share class.")
|
30
|
+
aggregated_class_pnl: Dict[str, FundAmount] = Field(..., alias="aggregatedClassPnl", description="Bucket of detail for the sum of class PnL across all share classes in a fund and within the queried period.")
|
31
|
+
total_pnl: Dict[str, FundAmount] = Field(..., alias="totalPnl", description="Bucket of detail for the sum of class PnL and PnL not specific to a class within the queried period.")
|
32
|
+
__properties = ["nonClassSpecificPnl", "aggregatedClassPnl", "totalPnl"]
|
33
|
+
|
34
|
+
class Config:
|
35
|
+
"""Pydantic configuration"""
|
36
|
+
allow_population_by_field_name = True
|
37
|
+
validate_assignment = True
|
38
|
+
|
39
|
+
def to_str(self) -> str:
|
40
|
+
"""Returns the string representation of the model using alias"""
|
41
|
+
return pprint.pformat(self.dict(by_alias=True))
|
42
|
+
|
43
|
+
def to_json(self) -> str:
|
44
|
+
"""Returns the JSON representation of the model using alias"""
|
45
|
+
return json.dumps(self.to_dict())
|
46
|
+
|
47
|
+
@classmethod
|
48
|
+
def from_json(cls, json_str: str) -> FundPnlBreakdown:
|
49
|
+
"""Create an instance of FundPnlBreakdown from a JSON string"""
|
50
|
+
return cls.from_dict(json.loads(json_str))
|
51
|
+
|
52
|
+
def to_dict(self):
|
53
|
+
"""Returns the dictionary representation of the model using alias"""
|
54
|
+
_dict = self.dict(by_alias=True,
|
55
|
+
exclude={
|
56
|
+
},
|
57
|
+
exclude_none=True)
|
58
|
+
# override the default output from pydantic by calling `to_dict()` of each value in non_class_specific_pnl (dict)
|
59
|
+
_field_dict = {}
|
60
|
+
if self.non_class_specific_pnl:
|
61
|
+
for _key in self.non_class_specific_pnl:
|
62
|
+
if self.non_class_specific_pnl[_key]:
|
63
|
+
_field_dict[_key] = self.non_class_specific_pnl[_key].to_dict()
|
64
|
+
_dict['nonClassSpecificPnl'] = _field_dict
|
65
|
+
# override the default output from pydantic by calling `to_dict()` of each value in aggregated_class_pnl (dict)
|
66
|
+
_field_dict = {}
|
67
|
+
if self.aggregated_class_pnl:
|
68
|
+
for _key in self.aggregated_class_pnl:
|
69
|
+
if self.aggregated_class_pnl[_key]:
|
70
|
+
_field_dict[_key] = self.aggregated_class_pnl[_key].to_dict()
|
71
|
+
_dict['aggregatedClassPnl'] = _field_dict
|
72
|
+
# override the default output from pydantic by calling `to_dict()` of each value in total_pnl (dict)
|
73
|
+
_field_dict = {}
|
74
|
+
if self.total_pnl:
|
75
|
+
for _key in self.total_pnl:
|
76
|
+
if self.total_pnl[_key]:
|
77
|
+
_field_dict[_key] = self.total_pnl[_key].to_dict()
|
78
|
+
_dict['totalPnl'] = _field_dict
|
79
|
+
return _dict
|
80
|
+
|
81
|
+
@classmethod
|
82
|
+
def from_dict(cls, obj: dict) -> FundPnlBreakdown:
|
83
|
+
"""Create an instance of FundPnlBreakdown from a dict"""
|
84
|
+
if obj is None:
|
85
|
+
return None
|
86
|
+
|
87
|
+
if not isinstance(obj, dict):
|
88
|
+
return FundPnlBreakdown.parse_obj(obj)
|
89
|
+
|
90
|
+
_obj = FundPnlBreakdown.parse_obj({
|
91
|
+
"non_class_specific_pnl": dict(
|
92
|
+
(_k, FundAmount.from_dict(_v))
|
93
|
+
for _k, _v in obj.get("nonClassSpecificPnl").items()
|
94
|
+
)
|
95
|
+
if obj.get("nonClassSpecificPnl") is not None
|
96
|
+
else None,
|
97
|
+
"aggregated_class_pnl": dict(
|
98
|
+
(_k, FundAmount.from_dict(_v))
|
99
|
+
for _k, _v in obj.get("aggregatedClassPnl").items()
|
100
|
+
)
|
101
|
+
if obj.get("aggregatedClassPnl") is not None
|
102
|
+
else None,
|
103
|
+
"total_pnl": dict(
|
104
|
+
(_k, FundAmount.from_dict(_v))
|
105
|
+
for _k, _v in obj.get("totalPnl").items()
|
106
|
+
)
|
107
|
+
if obj.get("totalPnl") is not None
|
108
|
+
else None
|
109
|
+
})
|
110
|
+
return _obj
|
@@ -22,6 +22,7 @@ from typing import Any, Dict, Optional, Union
|
|
22
22
|
from pydantic.v1 import BaseModel, Field, StrictFloat, StrictInt
|
23
23
|
from lusid.models.fee_accrual import FeeAccrual
|
24
24
|
from lusid.models.fund_amount import FundAmount
|
25
|
+
from lusid.models.fund_pnl_breakdown import FundPnlBreakdown
|
25
26
|
from lusid.models.previous_fund_valuation_point_data import PreviousFundValuationPointData
|
26
27
|
from lusid.models.unitisation_data import UnitisationData
|
27
28
|
|
@@ -31,7 +32,7 @@ class FundValuationPointData(BaseModel):
|
|
31
32
|
"""
|
32
33
|
back_out: Dict[str, FundAmount] = Field(..., alias="backOut", description="Bucket of detail for the Valuation Point where data points have been 'backed out'.")
|
33
34
|
dealing: Dict[str, FundAmount] = Field(..., description="Bucket of detail for any 'Dealing' that has occured inside the queried period.")
|
34
|
-
pn_l:
|
35
|
+
pn_l: FundPnlBreakdown = Field(..., alias="pnL")
|
35
36
|
gav: Union[StrictFloat, StrictInt] = Field(..., description="The Gross Asset Value of the Fund or Share Class at the Valuation Point. This is effectively a summation of all Trial balance entries linked to accounts of types 'Asset' and 'Liabilities'.")
|
36
37
|
fees: Dict[str, FeeAccrual] = Field(..., description="Bucket of detail for any 'Fees' that have been charged in the selected period.")
|
37
38
|
nav: Union[StrictFloat, StrictInt] = Field(..., description="The Net Asset Value of the Fund or Share Class at the Valuation Point. This represents the GAV with any fees applied in the period.")
|
@@ -78,13 +79,9 @@ class FundValuationPointData(BaseModel):
|
|
78
79
|
if self.dealing[_key]:
|
79
80
|
_field_dict[_key] = self.dealing[_key].to_dict()
|
80
81
|
_dict['dealing'] = _field_dict
|
81
|
-
# override the default output from pydantic by calling `to_dict()` of
|
82
|
-
_field_dict = {}
|
82
|
+
# override the default output from pydantic by calling `to_dict()` of pn_l
|
83
83
|
if self.pn_l:
|
84
|
-
|
85
|
-
if self.pn_l[_key]:
|
86
|
-
_field_dict[_key] = self.pn_l[_key].to_dict()
|
87
|
-
_dict['pnL'] = _field_dict
|
84
|
+
_dict['pnL'] = self.pn_l.to_dict()
|
88
85
|
# override the default output from pydantic by calling `to_dict()` of each value in fees (dict)
|
89
86
|
_field_dict = {}
|
90
87
|
if self.fees:
|
@@ -134,12 +131,7 @@ class FundValuationPointData(BaseModel):
|
|
134
131
|
)
|
135
132
|
if obj.get("dealing") is not None
|
136
133
|
else None,
|
137
|
-
"pn_l":
|
138
|
-
(_k, FundAmount.from_dict(_v))
|
139
|
-
for _k, _v in obj.get("pnL").items()
|
140
|
-
)
|
141
|
-
if obj.get("pnL") is not None
|
142
|
-
else None,
|
134
|
+
"pn_l": FundPnlBreakdown.from_dict(obj.get("pnL")) if obj.get("pnL") is not None else None,
|
143
135
|
"gav": obj.get("gav"),
|
144
136
|
"fees": dict(
|
145
137
|
(_k, FeeAccrual.from_dict(_v))
|
@@ -24,6 +24,7 @@ from lusid.models.fee_accrual import FeeAccrual
|
|
24
24
|
from lusid.models.multi_currency_amounts import MultiCurrencyAmounts
|
25
25
|
from lusid.models.previous_share_class_breakdown import PreviousShareClassBreakdown
|
26
26
|
from lusid.models.share_class_amount import ShareClassAmount
|
27
|
+
from lusid.models.share_class_pnl_breakdown import ShareClassPnlBreakdown
|
27
28
|
from lusid.models.unitisation_data import UnitisationData
|
28
29
|
|
29
30
|
class ShareClassBreakdown(BaseModel):
|
@@ -32,7 +33,7 @@ class ShareClassBreakdown(BaseModel):
|
|
32
33
|
"""
|
33
34
|
back_out: Dict[str, ShareClassAmount] = Field(..., alias="backOut", description="Bucket of detail for the Valuation Point where data points have been 'backed out'.")
|
34
35
|
dealing: Dict[str, ShareClassAmount] = Field(..., description="Bucket of detail for any 'Dealing' that has occured inside the queried period.")
|
35
|
-
pn_l:
|
36
|
+
pn_l: ShareClassPnlBreakdown = Field(..., alias="pnL")
|
36
37
|
gav: MultiCurrencyAmounts = Field(...)
|
37
38
|
fees: Dict[str, FeeAccrual] = Field(..., description="Bucket of detail for any 'Fees' that have been charged in the selected period.")
|
38
39
|
nav: MultiCurrencyAmounts = Field(...)
|
@@ -81,13 +82,9 @@ class ShareClassBreakdown(BaseModel):
|
|
81
82
|
if self.dealing[_key]:
|
82
83
|
_field_dict[_key] = self.dealing[_key].to_dict()
|
83
84
|
_dict['dealing'] = _field_dict
|
84
|
-
# override the default output from pydantic by calling `to_dict()` of
|
85
|
-
_field_dict = {}
|
85
|
+
# override the default output from pydantic by calling `to_dict()` of pn_l
|
86
86
|
if self.pn_l:
|
87
|
-
|
88
|
-
if self.pn_l[_key]:
|
89
|
-
_field_dict[_key] = self.pn_l[_key].to_dict()
|
90
|
-
_dict['pnL'] = _field_dict
|
87
|
+
_dict['pnL'] = self.pn_l.to_dict()
|
91
88
|
# override the default output from pydantic by calling `to_dict()` of gav
|
92
89
|
if self.gav:
|
93
90
|
_dict['gav'] = self.gav.to_dict()
|
@@ -143,12 +140,7 @@ class ShareClassBreakdown(BaseModel):
|
|
143
140
|
)
|
144
141
|
if obj.get("dealing") is not None
|
145
142
|
else None,
|
146
|
-
"pn_l":
|
147
|
-
(_k, ShareClassAmount.from_dict(_v))
|
148
|
-
for _k, _v in obj.get("pnL").items()
|
149
|
-
)
|
150
|
-
if obj.get("pnL") is not None
|
151
|
-
else None,
|
143
|
+
"pn_l": ShareClassPnlBreakdown.from_dict(obj.get("pnL")) if obj.get("pnL") is not None else None,
|
152
144
|
"gav": MultiCurrencyAmounts.from_dict(obj.get("gav")) if obj.get("gav") is not None else None,
|
153
145
|
"fees": dict(
|
154
146
|
(_k, FeeAccrual.from_dict(_v))
|
@@ -0,0 +1,110 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
|
3
|
+
"""
|
4
|
+
LUSID API
|
5
|
+
|
6
|
+
FINBOURNE Technology # noqa: E501
|
7
|
+
|
8
|
+
Contact: info@finbourne.com
|
9
|
+
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
10
|
+
|
11
|
+
Do not edit the class manually.
|
12
|
+
"""
|
13
|
+
|
14
|
+
|
15
|
+
from __future__ import annotations
|
16
|
+
import pprint
|
17
|
+
import re # noqa: F401
|
18
|
+
import json
|
19
|
+
|
20
|
+
|
21
|
+
from typing import Any, Dict
|
22
|
+
from pydantic.v1 import BaseModel, Field
|
23
|
+
from lusid.models.share_class_amount import ShareClassAmount
|
24
|
+
|
25
|
+
class ShareClassPnlBreakdown(BaseModel):
|
26
|
+
"""
|
27
|
+
The breakdown of PnL for a Share Class on a specified date. # noqa: E501
|
28
|
+
"""
|
29
|
+
apportioned_non_class_specific_pnl: Dict[str, ShareClassAmount] = Field(..., alias="apportionedNonClassSpecificPnl", description="Bucket of detail for PnL within the queried period not explicitly allocated to any share class but has been apportioned to the share class.")
|
30
|
+
class_pnl: Dict[str, ShareClassAmount] = Field(..., alias="classPnl", description="Bucket of detail for PnL specific to the share class within the queried period.")
|
31
|
+
total_pnl: Dict[str, ShareClassAmount] = Field(..., alias="totalPnl", description="Bucket of detail for the sum of class PnL and PnL not specific to a class within the queried period.")
|
32
|
+
__properties = ["apportionedNonClassSpecificPnl", "classPnl", "totalPnl"]
|
33
|
+
|
34
|
+
class Config:
|
35
|
+
"""Pydantic configuration"""
|
36
|
+
allow_population_by_field_name = True
|
37
|
+
validate_assignment = True
|
38
|
+
|
39
|
+
def to_str(self) -> str:
|
40
|
+
"""Returns the string representation of the model using alias"""
|
41
|
+
return pprint.pformat(self.dict(by_alias=True))
|
42
|
+
|
43
|
+
def to_json(self) -> str:
|
44
|
+
"""Returns the JSON representation of the model using alias"""
|
45
|
+
return json.dumps(self.to_dict())
|
46
|
+
|
47
|
+
@classmethod
|
48
|
+
def from_json(cls, json_str: str) -> ShareClassPnlBreakdown:
|
49
|
+
"""Create an instance of ShareClassPnlBreakdown from a JSON string"""
|
50
|
+
return cls.from_dict(json.loads(json_str))
|
51
|
+
|
52
|
+
def to_dict(self):
|
53
|
+
"""Returns the dictionary representation of the model using alias"""
|
54
|
+
_dict = self.dict(by_alias=True,
|
55
|
+
exclude={
|
56
|
+
},
|
57
|
+
exclude_none=True)
|
58
|
+
# override the default output from pydantic by calling `to_dict()` of each value in apportioned_non_class_specific_pnl (dict)
|
59
|
+
_field_dict = {}
|
60
|
+
if self.apportioned_non_class_specific_pnl:
|
61
|
+
for _key in self.apportioned_non_class_specific_pnl:
|
62
|
+
if self.apportioned_non_class_specific_pnl[_key]:
|
63
|
+
_field_dict[_key] = self.apportioned_non_class_specific_pnl[_key].to_dict()
|
64
|
+
_dict['apportionedNonClassSpecificPnl'] = _field_dict
|
65
|
+
# override the default output from pydantic by calling `to_dict()` of each value in class_pnl (dict)
|
66
|
+
_field_dict = {}
|
67
|
+
if self.class_pnl:
|
68
|
+
for _key in self.class_pnl:
|
69
|
+
if self.class_pnl[_key]:
|
70
|
+
_field_dict[_key] = self.class_pnl[_key].to_dict()
|
71
|
+
_dict['classPnl'] = _field_dict
|
72
|
+
# override the default output from pydantic by calling `to_dict()` of each value in total_pnl (dict)
|
73
|
+
_field_dict = {}
|
74
|
+
if self.total_pnl:
|
75
|
+
for _key in self.total_pnl:
|
76
|
+
if self.total_pnl[_key]:
|
77
|
+
_field_dict[_key] = self.total_pnl[_key].to_dict()
|
78
|
+
_dict['totalPnl'] = _field_dict
|
79
|
+
return _dict
|
80
|
+
|
81
|
+
@classmethod
|
82
|
+
def from_dict(cls, obj: dict) -> ShareClassPnlBreakdown:
|
83
|
+
"""Create an instance of ShareClassPnlBreakdown from a dict"""
|
84
|
+
if obj is None:
|
85
|
+
return None
|
86
|
+
|
87
|
+
if not isinstance(obj, dict):
|
88
|
+
return ShareClassPnlBreakdown.parse_obj(obj)
|
89
|
+
|
90
|
+
_obj = ShareClassPnlBreakdown.parse_obj({
|
91
|
+
"apportioned_non_class_specific_pnl": dict(
|
92
|
+
(_k, ShareClassAmount.from_dict(_v))
|
93
|
+
for _k, _v in obj.get("apportionedNonClassSpecificPnl").items()
|
94
|
+
)
|
95
|
+
if obj.get("apportionedNonClassSpecificPnl") is not None
|
96
|
+
else None,
|
97
|
+
"class_pnl": dict(
|
98
|
+
(_k, ShareClassAmount.from_dict(_v))
|
99
|
+
for _k, _v in obj.get("classPnl").items()
|
100
|
+
)
|
101
|
+
if obj.get("classPnl") is not None
|
102
|
+
else None,
|
103
|
+
"total_pnl": dict(
|
104
|
+
(_k, ShareClassAmount.from_dict(_v))
|
105
|
+
for _k, _v in obj.get("totalPnl").items()
|
106
|
+
)
|
107
|
+
if obj.get("totalPnl") is not None
|
108
|
+
else None
|
109
|
+
})
|
110
|
+
return _obj
|
lusid/models/template_field.py
CHANGED
@@ -29,8 +29,9 @@ class TemplateField(BaseModel):
|
|
29
29
|
specificity: constr(strict=True, min_length=1) = Field(...)
|
30
30
|
description: constr(strict=True, min_length=1) = Field(...)
|
31
31
|
type: constr(strict=True, min_length=1) = Field(...)
|
32
|
+
availability: constr(strict=True, min_length=1) = Field(...)
|
32
33
|
usage: conlist(StrictStr) = Field(...)
|
33
|
-
__properties = ["fieldName", "specificity", "description", "type", "usage"]
|
34
|
+
__properties = ["fieldName", "specificity", "description", "type", "availability", "usage"]
|
34
35
|
|
35
36
|
class Config:
|
36
37
|
"""Pydantic configuration"""
|
@@ -72,6 +73,7 @@ class TemplateField(BaseModel):
|
|
72
73
|
"specificity": obj.get("specificity"),
|
73
74
|
"description": obj.get("description"),
|
74
75
|
"type": obj.get("type"),
|
76
|
+
"availability": obj.get("availability"),
|
75
77
|
"usage": obj.get("usage")
|
76
78
|
})
|
77
79
|
return _obj
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: lusid-sdk
|
3
|
-
Version: 2.1.
|
3
|
+
Version: 2.1.319
|
4
4
|
Summary: LUSID API
|
5
5
|
Home-page: https://github.com/finbourne/lusid-sdk-python
|
6
6
|
License: MIT
|
@@ -24,194 +24,7 @@ Requires-Dist: urllib3 (>=1.25.3,<2.0.0)
|
|
24
24
|
Project-URL: Repository, https://github.com/finbourne/lusid-sdk-python
|
25
25
|
Description-Content-Type: text/markdown
|
26
26
|
|
27
|
-
|
28
|
-
FINBOURNE Technology
|
29
|
-
|
30
|
-
This Python package is automatically generated by the [OpenAPI Generator](https://openapi-generator.tech) project:
|
31
|
-
|
32
|
-
- API version: 0.11.6741
|
33
|
-
- Package version: 2.1.310
|
34
|
-
- Build package: org.openapitools.codegen.languages.PythonClientCodegen
|
35
|
-
For more information, please visit [https://www.finbourne.com](https://www.finbourne.com)
|
36
|
-
|
37
|
-
## Requirements.
|
38
|
-
|
39
|
-
Python 3.7+
|
40
|
-
|
41
|
-
## Installation & Usage
|
42
|
-
### pip install
|
43
|
-
|
44
|
-
If the python package is hosted on a repository, you can install directly using:
|
45
|
-
|
46
|
-
```sh
|
47
|
-
pip install git+https://github.com/finbourne/lusid-sdk-python.git
|
48
|
-
```
|
49
|
-
(you may need to run `pip` with root permission: `sudo pip install git+https://github.com/finbourne/lusid-sdk-python.git`)
|
50
|
-
|
51
|
-
Then import the package:
|
52
|
-
```python
|
53
|
-
import lusid
|
54
|
-
```
|
55
|
-
|
56
|
-
### Setuptools
|
57
|
-
|
58
|
-
Install via [Setuptools](http://pypi.python.org/pypi/setuptools).
|
59
|
-
|
60
|
-
```sh
|
61
|
-
python setup.py install --user
|
62
|
-
```
|
63
|
-
(or `sudo python setup.py install` to install the package for all users)
|
64
|
-
|
65
|
-
Then import the package:
|
66
|
-
```python
|
67
|
-
import lusid
|
68
|
-
```
|
69
|
-
|
70
|
-
### Tests
|
71
|
-
|
72
|
-
Execute `pytest` to run the tests.
|
73
|
-
|
74
|
-
## Getting Started
|
75
|
-
|
76
|
-
You'll need to provide some configuration to connect to the lusid application.
|
77
|
-
These can be provided using a secrets file or environment variables.
|
78
|
-
|
79
|
-
### Environment variables
|
80
|
-
|
81
|
-
In order to use [short lived access tokens](https://support.lusid.com/knowledgebase/article/KA-01654/en-us) you will need to have appropriate values set for the following environment variables:
|
82
|
-
|
83
|
-
```
|
84
|
-
FBN_TOKEN_URL,
|
85
|
-
FBN_LUSID_API_URL,
|
86
|
-
FBN_USERNAME,
|
87
|
-
FBN_PASSWORD,
|
88
|
-
FBN_CLIENT_ID,
|
89
|
-
FBN_CLIENT_SECRET
|
90
|
-
```
|
91
|
-
|
92
|
-
To use a long lived Personal Access Token, you must provide the following environment variables:
|
93
|
-
```
|
94
|
-
FBN_LUSID_API_URL,
|
95
|
-
FBN_ACCESS_TOKEN
|
96
|
-
```
|
97
|
-
|
98
|
-
You can send your requests to lusid via a proxy, by setting `FBN_PROXY_ADDRESS`.
|
99
|
-
If your proxy has basic auth enabled, you must akso supply `FBN_PROXY_USERNAME` and `FBN_PROXY_PASSWORD`
|
100
|
-
|
101
|
-
### Secrets file
|
102
|
-
|
103
|
-
In order to use [short lived access tokens](https://support.lusid.com/knowledgebase/article/KA-01654/en-us) you will need to have appropriate values set in a `secrets.json` file in the same folder as your script.
|
104
|
-
|
105
|
-
```
|
106
|
-
{
|
107
|
-
"api":
|
108
|
-
{
|
109
|
-
"tokenUrl":"<your-token-url>",
|
110
|
-
"lusidUrl":"<FINBOURNE-application-url>",
|
111
|
-
"username":"<your-username>",
|
112
|
-
"password":"<your-password>",
|
113
|
-
"clientId":"<your-client-id>",
|
114
|
-
"clientSecret":"<your-client-secret>",
|
115
|
-
}
|
116
|
-
}
|
117
|
-
```
|
118
|
-
|
119
|
-
To use a long lived Personal Access Token, you must provide a `secrets.json` with the following variables:
|
120
|
-
```
|
121
|
-
{
|
122
|
-
"api":
|
123
|
-
{
|
124
|
-
"lusidUrl":"<FINBOURNE-application-url>",
|
125
|
-
"accessToken":"<your-access-token>"
|
126
|
-
}
|
127
|
-
}
|
128
|
-
```
|
129
|
-
|
130
|
-
You can send your requests to lusid via a proxy, by adding a proxy section to your `secrets.json`.
|
131
|
-
If your proxy has basic auth enabled, you must also supply a `username` and `password` in this section.
|
132
|
-
|
133
|
-
```
|
134
|
-
{
|
135
|
-
"api":
|
136
|
-
{
|
137
|
-
"lusidUrl":"<FINBOURNE-application-url>",
|
138
|
-
"accessToken":"<your-access-token>"
|
139
|
-
},
|
140
|
-
"proxy":
|
141
|
-
{
|
142
|
-
"address":"<your-proxy-address>",
|
143
|
-
"username":"<your-proxy-username>",
|
144
|
-
"password":"<your-proxy-password>"
|
145
|
-
}
|
146
|
-
}
|
147
|
-
```
|
148
|
-
|
149
|
-
### Using the SDK
|
150
|
-
|
151
|
-
Please follow the [installation procedure](#installation--usage) and then run the following:
|
152
|
-
|
153
|
-
```python
|
154
|
-
|
155
|
-
import time
|
156
|
-
import lusid
|
157
|
-
from lusid.exceptions import ApiException
|
158
|
-
from pprint import pprint
|
159
|
-
|
160
|
-
import os
|
161
|
-
from lusid import (
|
162
|
-
ApiClientFactory,
|
163
|
-
AborApi,
|
164
|
-
EnvironmentVariablesConfigurationLoader,
|
165
|
-
SecretsFileConfigurationLoader,
|
166
|
-
ArgsConfigurationLoader
|
167
|
-
)
|
168
|
-
|
169
|
-
# Use the lusid ApiClientFactory to build Api instances with a configured api client
|
170
|
-
# By default this will read config from environment variables
|
171
|
-
# Then from a secrets.json file found in the current working directory
|
172
|
-
api_client_factory = ApiClientFactory()
|
173
|
-
|
174
|
-
# The ApiClientFactory can be passed an iterable of configuration loaders to read configuration from
|
175
|
-
|
176
|
-
api_url = "https://www.lusid.com/api"
|
177
|
-
# Path to a secrets.json file containing authentication credentials
|
178
|
-
# See https://support.lusid.com/knowledgebase/article/KA-01667/en-us
|
179
|
-
# for a detailed guide to setting up the SDK make authenticated calls to LUSID APIs
|
180
|
-
secrets_path = os.getenv("FBN_SECRETS_PATH")
|
181
|
-
app_name="LusidJupyterNotebook"
|
182
|
-
|
183
|
-
config_loaders = [
|
184
|
-
EnvironmentVariablesConfigurationLoader(),
|
185
|
-
SecretsFileConfigurationLoader(api_secrets_file=secrets_path),
|
186
|
-
ArgsConfigurationLoader(api_url=api_url, app_name=app_name)
|
187
|
-
]
|
188
|
-
api_client_factory = ApiClientFactory(config_loaders=config_loaders)
|
189
|
-
|
190
|
-
|
191
|
-
# The client must configure the authentication and authorization parameters
|
192
|
-
# in accordance with the API server security policy.
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
# Enter a context with an instance of the ApiClientFactory to ensure the connection pool is closed after use
|
197
|
-
async with api_client_factory:
|
198
|
-
# Create an instance of the API class
|
199
|
-
api_instance = api_client_factory.build(AborApi)
|
200
|
-
scope = 'scope_example' # str | The scope of the Abor.
|
201
|
-
code = 'code_example' # str | The code of the Abor.
|
202
|
-
diary_entry_code = 'diary_entry_code_example' # str | Diary entry code
|
203
|
-
diary_entry_request = {"name":"2023_Q1","status":"Estimate","effectiveAt":"2023-04-02T15:10:10.0000000+00:00","queryAsAt":"2023-04-15T15:10:10.0000000+00:00","properties":{"DiaryEntry/AccountingDiary/Reports":{"key":"DiaryEntry/AccountingDiary/Reports","value":{"labelValue":"Some comments"}}}} # DiaryEntryRequest | The diary entry to add.
|
204
|
-
|
205
|
-
try:
|
206
|
-
# [EXPERIMENTAL] AddDiaryEntry: Add a diary entry to the specified Abor.
|
207
|
-
api_response = await api_instance.add_diary_entry(scope, code, diary_entry_code, diary_entry_request)
|
208
|
-
print("The response of AborApi->add_diary_entry:\n")
|
209
|
-
pprint(api_response)
|
210
|
-
except ApiException as e:
|
211
|
-
print("Exception when calling AborApi->add_diary_entry: %s\n" % e)
|
212
|
-
|
213
|
-
```
|
214
|
-
|
27
|
+
<a id="documentation-for-api-endpoints"></a>
|
215
28
|
## Documentation for API Endpoints
|
216
29
|
|
217
30
|
All URIs are relative to *https://www.lusid.com/api*
|
@@ -240,7 +53,7 @@ Class | Method | HTTP request | Description
|
|
240
53
|
*AddressKeyDefinitionApi* | [**get_address_key_definition**](docs/AddressKeyDefinitionApi.md#get_address_key_definition) | **GET** /api/addresskeydefinitions/{key} | [EARLY ACCESS] GetAddressKeyDefinition: Get an AddressKeyDefinition.
|
241
54
|
*AddressKeyDefinitionApi* | [**list_address_key_definitions**](docs/AddressKeyDefinitionApi.md#list_address_key_definitions) | **GET** /api/addresskeydefinitions | [EARLY ACCESS] ListAddressKeyDefinitions: List AddressKeyDefinitions.
|
242
55
|
*AggregationApi* | [**generate_configuration_recipe**](docs/AggregationApi.md#generate_configuration_recipe) | **POST** /api/aggregation/{scope}/{code}/$generateconfigurationrecipe | [EXPERIMENTAL] GenerateConfigurationRecipe: Generates a recipe sufficient to perform valuations for the given portfolio.
|
243
|
-
*AggregationApi* | [**get_queryable_keys**](docs/AggregationApi.md#get_queryable_keys) | **GET** /api/results/queryable/keys | GetQueryableKeys: Query the set of supported
|
56
|
+
*AggregationApi* | [**get_queryable_keys**](docs/AggregationApi.md#get_queryable_keys) | **GET** /api/results/queryable/keys | GetQueryableKeys: Query the set of supported \"addresses\" that can be queried from the aggregation endpoint.
|
244
57
|
*AggregationApi* | [**get_valuation**](docs/AggregationApi.md#get_valuation) | **POST** /api/aggregation/$valuation | GetValuation: Perform valuation for a list of portfolios and/or portfolio groups
|
245
58
|
*AggregationApi* | [**get_valuation_of_weighted_instruments**](docs/AggregationApi.md#get_valuation_of_weighted_instruments) | **POST** /api/aggregation/$valuationinlined | GetValuationOfWeightedInstruments: Perform valuation for an inlined portfolio
|
246
59
|
*AllocationsApi* | [**delete_allocation**](docs/AllocationsApi.md#delete_allocation) | **DELETE** /api/allocations/{scope}/{code} | [EARLY ACCESS] DeleteAllocation: Delete allocation
|
@@ -268,7 +81,7 @@ Class | Method | HTTP request | Description
|
|
268
81
|
*CalendarsApi* | [**generate_schedule**](docs/CalendarsApi.md#generate_schedule) | **POST** /api/calendars/schedule/{scope} | [EARLY ACCESS] GenerateSchedule: Generate an ordered schedule of dates.
|
269
82
|
*CalendarsApi* | [**get_calendar**](docs/CalendarsApi.md#get_calendar) | **GET** /api/calendars/generic/{scope}/{code} | GetCalendar: Get a calendar in its generic form
|
270
83
|
*CalendarsApi* | [**get_dates**](docs/CalendarsApi.md#get_dates) | **GET** /api/calendars/generic/{scope}/{code}/dates | [EARLY ACCESS] GetDates: Get dates for a specific calendar
|
271
|
-
*CalendarsApi* | [**is_business_date_time**](docs/CalendarsApi.md#is_business_date_time) | **GET** /api/calendars/businessday/{scope}/{code} | [EARLY ACCESS] IsBusinessDateTime: Check whether a DateTime is a
|
84
|
+
*CalendarsApi* | [**is_business_date_time**](docs/CalendarsApi.md#is_business_date_time) | **GET** /api/calendars/businessday/{scope}/{code} | [EARLY ACCESS] IsBusinessDateTime: Check whether a DateTime is a \"Business DateTime\"
|
272
85
|
*CalendarsApi* | [**list_calendars**](docs/CalendarsApi.md#list_calendars) | **GET** /api/calendars/generic | [EARLY ACCESS] ListCalendars: List Calendars
|
273
86
|
*CalendarsApi* | [**list_calendars_in_scope**](docs/CalendarsApi.md#list_calendars_in_scope) | **GET** /api/calendars/generic/{scope} | ListCalendarsInScope: List all calenders in a specified scope
|
274
87
|
*CalendarsApi* | [**update_calendar**](docs/CalendarsApi.md#update_calendar) | **POST** /api/calendars/generic/{scope}/{code} | [EARLY ACCESS] UpdateCalendar: Update a calendar
|
@@ -497,6 +310,7 @@ Class | Method | HTTP request | Description
|
|
497
310
|
*OrderInstructionsApi* | [**list_order_instructions**](docs/OrderInstructionsApi.md#list_order_instructions) | **GET** /api/orderinstructions | [EXPERIMENTAL] ListOrderInstructions: List OrderInstructions
|
498
311
|
*OrderInstructionsApi* | [**upsert_order_instructions**](docs/OrderInstructionsApi.md#upsert_order_instructions) | **POST** /api/orderinstructions | [EXPERIMENTAL] UpsertOrderInstructions: Upsert OrderInstruction
|
499
312
|
*OrderManagementApi* | [**book_transactions**](docs/OrderManagementApi.md#book_transactions) | **POST** /api/ordermanagement/booktransactions | [EXPERIMENTAL] BookTransactions: Books transactions using specific allocations as a source.
|
313
|
+
*OrderManagementApi* | [**cancel_orders**](docs/OrderManagementApi.md#cancel_orders) | **POST** /api/ordermanagement/cancelorders | [EARLY ACCESS] CancelOrders: Cancel existing orders
|
500
314
|
*OrderManagementApi* | [**cancel_placements**](docs/OrderManagementApi.md#cancel_placements) | **POST** /api/ordermanagement/$cancelplacements | [EARLY ACCESS] CancelPlacements: Cancel existing placements
|
501
315
|
*OrderManagementApi* | [**create_orders**](docs/OrderManagementApi.md#create_orders) | **POST** /api/ordermanagement/createorders | [EARLY ACCESS] CreateOrders: Upsert a Block and associated orders
|
502
316
|
*OrderManagementApi* | [**move_orders**](docs/OrderManagementApi.md#move_orders) | **POST** /api/ordermanagement/moveorders | [EARLY ACCESS] MoveOrders: Move orders to new or existing block
|
@@ -604,7 +418,7 @@ Class | Method | HTTP request | Description
|
|
604
418
|
*PropertyDefinitionsApi* | [**update_derived_property_definition**](docs/PropertyDefinitionsApi.md#update_derived_property_definition) | **PUT** /api/propertydefinitions/derived/{domain}/{scope}/{code} | [EARLY ACCESS] UpdateDerivedPropertyDefinition: Update a pre-existing derived property definition
|
605
419
|
*PropertyDefinitionsApi* | [**update_property_definition**](docs/PropertyDefinitionsApi.md#update_property_definition) | **PUT** /api/propertydefinitions/{domain}/{scope}/{code} | UpdatePropertyDefinition: Update property definition
|
606
420
|
*PropertyDefinitionsApi* | [**upsert_property_definition_properties**](docs/PropertyDefinitionsApi.md#upsert_property_definition_properties) | **POST** /api/propertydefinitions/{domain}/{scope}/{code}/properties | UpsertPropertyDefinitionProperties: Upsert properties to a property definition
|
607
|
-
*QueryableKeysApi* | [**get_all_queryable_keys**](docs/QueryableKeysApi.md#get_all_queryable_keys) | **GET** /api/queryablekeys | [EARLY ACCESS] GetAllQueryableKeys: Query the set of supported
|
421
|
+
*QueryableKeysApi* | [**get_all_queryable_keys**](docs/QueryableKeysApi.md#get_all_queryable_keys) | **GET** /api/queryablekeys | [EARLY ACCESS] GetAllQueryableKeys: Query the set of supported \"addresses\" that can be queried from all endpoints.
|
608
422
|
*QuotesApi* | [**delete_quote_access_metadata_rule**](docs/QuotesApi.md#delete_quote_access_metadata_rule) | **DELETE** /api/metadata/quotes/rules/{scope} | [EXPERIMENTAL] DeleteQuoteAccessMetadataRule: Delete a Quote Access Metadata Rule
|
609
423
|
*QuotesApi* | [**delete_quotes**](docs/QuotesApi.md#delete_quotes) | **POST** /api/quotes/{scope}/$delete | DeleteQuotes: Delete quotes
|
610
424
|
*QuotesApi* | [**get_quotes**](docs/QuotesApi.md#get_quotes) | **POST** /api/quotes/{scope}/$get | GetQuotes: Get quotes
|
@@ -621,7 +435,7 @@ Class | Method | HTTP request | Description
|
|
621
435
|
*ReconciliationsApi* | [**get_reconciliation_mapping**](docs/ReconciliationsApi.md#get_reconciliation_mapping) | **GET** /api/portfolios/mapping/{scope}/{code} | [EARLY ACCESS] GetReconciliationMapping: Get a mapping
|
622
436
|
*ReconciliationsApi* | [**list_reconciliation_mappings**](docs/ReconciliationsApi.md#list_reconciliation_mappings) | **GET** /api/portfolios/mapping | [EARLY ACCESS] ListReconciliationMappings: List the reconciliation mappings
|
623
437
|
*ReconciliationsApi* | [**list_reconciliations**](docs/ReconciliationsApi.md#list_reconciliations) | **GET** /api/portfolios/$scheduledReconciliations | [EXPERIMENTAL] ListReconciliations: List scheduled reconciliations
|
624
|
-
*ReconciliationsApi* | [**reconcile_generic**](docs/ReconciliationsApi.md#reconcile_generic) | **POST** /api/portfolios/$reconcileGeneric | ReconcileGeneric: Reconcile either holdings or valuations performed on one or two sets of holdings using one or two configuration recipes. The output is configurable for various types of comparisons, to allow tolerances on numerical and date-time data or case-insensitivity on strings, and elision of resulting differences where they are
|
438
|
+
*ReconciliationsApi* | [**reconcile_generic**](docs/ReconciliationsApi.md#reconcile_generic) | **POST** /api/portfolios/$reconcileGeneric | ReconcileGeneric: Reconcile either holdings or valuations performed on one or two sets of holdings using one or two configuration recipes. The output is configurable for various types of comparisons, to allow tolerances on numerical and date-time data or case-insensitivity on strings, and elision of resulting differences where they are 'empty' or null or zero.
|
625
439
|
*ReconciliationsApi* | [**reconcile_holdings**](docs/ReconciliationsApi.md#reconcile_holdings) | **POST** /api/portfolios/$reconcileholdings | [EARLY ACCESS] ReconcileHoldings: Reconcile portfolio holdings
|
626
440
|
*ReconciliationsApi* | [**reconcile_inline**](docs/ReconciliationsApi.md#reconcile_inline) | **POST** /api/portfolios/$reconcileInline | ReconcileInline: Reconcile valuations performed on one or two sets of inline instruments using one or two configuration recipes.
|
627
441
|
*ReconciliationsApi* | [**reconcile_transactions**](docs/ReconciliationsApi.md#reconcile_transactions) | **POST** /api/portfolios/$reconcileTransactions | [EARLY ACCESS] ReconcileTransactions: Perform a Transactions Reconciliation.
|
@@ -757,7 +571,8 @@ Class | Method | HTTP request | Description
|
|
757
571
|
*TranslationApi* | [**translate_trade_tickets**](docs/TranslationApi.md#translate_trade_tickets) | **POST** /api/translation/tradetickets | [EXPERIMENTAL] TranslateTradeTickets: Translate trade ticket
|
758
572
|
|
759
573
|
|
760
|
-
|
574
|
+
<a id="documentation-for-models"></a>
|
575
|
+
## Documentation for Models
|
761
576
|
|
762
577
|
- [A2BBreakdown](docs/A2BBreakdown.md)
|
763
578
|
- [A2BCategory](docs/A2BCategory.md)
|
@@ -851,7 +666,9 @@ Class | Method | HTTP request | Description
|
|
851
666
|
- [Calendar](docs/Calendar.md)
|
852
667
|
- [CalendarDate](docs/CalendarDate.md)
|
853
668
|
- [CalendarDependency](docs/CalendarDependency.md)
|
669
|
+
- [CancelOrdersResponse](docs/CancelOrdersResponse.md)
|
854
670
|
- [CancelPlacementsResponse](docs/CancelPlacementsResponse.md)
|
671
|
+
- [CancelledOrderResult](docs/CancelledOrderResult.md)
|
855
672
|
- [CancelledPlacementResult](docs/CancelledPlacementResult.md)
|
856
673
|
- [CapFloor](docs/CapFloor.md)
|
857
674
|
- [CapitalDistributionEvent](docs/CapitalDistributionEvent.md)
|
@@ -1093,6 +910,7 @@ Class | Method | HTTP request | Description
|
|
1093
910
|
- [FundConfiguration](docs/FundConfiguration.md)
|
1094
911
|
- [FundConfigurationProperties](docs/FundConfigurationProperties.md)
|
1095
912
|
- [FundConfigurationRequest](docs/FundConfigurationRequest.md)
|
913
|
+
- [FundPnlBreakdown](docs/FundPnlBreakdown.md)
|
1096
914
|
- [FundPreviousNAV](docs/FundPreviousNAV.md)
|
1097
915
|
- [FundProperties](docs/FundProperties.md)
|
1098
916
|
- [FundRequest](docs/FundRequest.md)
|
@@ -1594,6 +1412,7 @@ Class | Method | HTTP request | Description
|
|
1594
1412
|
- [ShareClassBreakdown](docs/ShareClassBreakdown.md)
|
1595
1413
|
- [ShareClassData](docs/ShareClassData.md)
|
1596
1414
|
- [ShareClassDetails](docs/ShareClassDetails.md)
|
1415
|
+
- [ShareClassPnlBreakdown](docs/ShareClassPnlBreakdown.md)
|
1597
1416
|
- [SideConfigurationData](docs/SideConfigurationData.md)
|
1598
1417
|
- [SideConfigurationDataRequest](docs/SideConfigurationDataRequest.md)
|
1599
1418
|
- [SideDefinition](docs/SideDefinition.md)
|
@@ -1785,23 +1604,3 @@ Class | Method | HTTP request | Description
|
|
1785
1604
|
- [YieldCurveData](docs/YieldCurveData.md)
|
1786
1605
|
|
1787
1606
|
|
1788
|
-
<a id="documentation-for-authorization"></a>
|
1789
|
-
## Documentation For Authorization
|
1790
|
-
|
1791
|
-
|
1792
|
-
Authentication schemes defined for the API:
|
1793
|
-
<a id="oauth2"></a>
|
1794
|
-
### oauth2
|
1795
|
-
|
1796
|
-
- **Type**: OAuth
|
1797
|
-
- **Flow**: implicit
|
1798
|
-
- **Authorization URL**: https://lusid.okta.com/oauth2/default/v1/authorize
|
1799
|
-
- **Scopes**: N/A
|
1800
|
-
|
1801
|
-
|
1802
|
-
## Author
|
1803
|
-
|
1804
|
-
info@finbourne.com
|
1805
|
-
|
1806
|
-
|
1807
|
-
|
@@ -1,4 +1,4 @@
|
|
1
|
-
lusid/__init__.py,sha256=
|
1
|
+
lusid/__init__.py,sha256=ISA3XY7Oek2VGwUe-Oihg0f1avsl9h69ONkP9A19__s,113998
|
2
2
|
lusid/api/__init__.py,sha256=EuHJI-4kmmibn1IVmY9akKMT-R1Bnth9msFll5hlBGY,5652
|
3
3
|
lusid/api/abor_api.py,sha256=AvgsHuWE7qRSYJhKveBE2htSjHpqqS0VNJrysAfwME0,159655
|
4
4
|
lusid/api/abor_configuration_api.py,sha256=G2bKPtMYOZ2GhUrg-nPJtCa9XIZdZYK7oafcbJWDMP8,64033
|
@@ -34,7 +34,7 @@ lusid/api/legacy_compliance_api.py,sha256=EjYqCQTemq71q2_sfHU9ptr-ULhNk1EJ0Vejrf
|
|
34
34
|
lusid/api/legal_entities_api.py,sha256=DFpQxYU_illhMl8_CnlmpLKcBEaxOt7ECiHT51Xl49Q,267854
|
35
35
|
lusid/api/order_graph_api.py,sha256=YcL-SdC42ufKcFgbzD_qwVpWRZKkRDRijGpBviizbVU,45280
|
36
36
|
lusid/api/order_instructions_api.py,sha256=HZn9ZwVgp6bF32GIHpBwaejKKri0tG_KLfgHWfllR8U,46091
|
37
|
-
lusid/api/order_management_api.py,sha256=
|
37
|
+
lusid/api/order_management_api.py,sha256=c8TqR7NdABfR-FRE0k0D9eo4D9aLYjhwlztX9BJ9D4o,68646
|
38
38
|
lusid/api/orders_api.py,sha256=PjkqtLhbS6lQEEfZiXXAiIa5ls0jLokiqizseg7_nx0,43527
|
39
39
|
lusid/api/packages_api.py,sha256=-2mdoL2HSQ2aCXqYUMxt-1rrlezyQhgCNtevVazqM9o,43985
|
40
40
|
lusid/api/participations_api.py,sha256=nlVzeyfE33X9Ue9HC9rqCW3WACEPKBvcrEjFEmT8wlk,45263
|
@@ -68,13 +68,13 @@ lusid/api/transaction_portfolios_api.py,sha256=7G5m6iTQXTKCc6ASdxnlVJjvFascHxEgD
|
|
68
68
|
lusid/api/translation_api.py,sha256=xTAaKEW96JTDIZBXCjxSguCa7Gz4oVd5jdObUE2egwo,20092
|
69
69
|
lusid/api_client.py,sha256=dF6l9RAsdxdQjf6Qn4ny6LB-QXlJmsscWiozCvyyBFA,30709
|
70
70
|
lusid/api_response.py,sha256=6-gnhty6lu8MMAERt3_kTVD7UxQgWFfcjgpcq6iN5IU,855
|
71
|
-
lusid/configuration.py,sha256=
|
71
|
+
lusid/configuration.py,sha256=OjAoRUPvUiCsSkl6P7k8-MHd1DkEERbftQqV4L52uw8,14404
|
72
72
|
lusid/exceptions.py,sha256=HIQwgmQrszLlcVCLaqex8dO0laVuejUyOMz7U2ZWJ6s,5326
|
73
73
|
lusid/extensions/__init__.py,sha256=dzDHEzpn-9smd2-_UMWQzeyX6Ha4jGf6fnqx7qxKxNI,630
|
74
74
|
lusid/extensions/api_client.py,sha256=Ob06urm4Em3MLzgP_geyeeGsPCkU225msW_1kpIeABM,30567
|
75
75
|
lusid/extensions/api_client_factory.py,sha256=qPlqYe8AMzXUZrQPMbO5YJrKWLYy01rWNdNcKZVi1Xg,9772
|
76
76
|
lusid/extensions/api_configuration.py,sha256=LbuhaM-PcrY0a4cZ-ff7GBP8UybSqI5Ys2WQOBcr_8I,8052
|
77
|
-
lusid/extensions/configuration_loaders.py,sha256=
|
77
|
+
lusid/extensions/configuration_loaders.py,sha256=avW3Xrl4BMLp4BbsM8w1zb20PGwlMWLFG_PB3Hv2rds,9759
|
78
78
|
lusid/extensions/file_access_token.py,sha256=Qfk_tl2bBh9kpxYhNZ-9XlVuV36udeWT97mazZYI1ns,1469
|
79
79
|
lusid/extensions/proxy_config.py,sha256=UUHQhd8ub-mKVIVbzDbmNQYLLemPX1b209ZcDrCFOWw,2187
|
80
80
|
lusid/extensions/refreshing_token.py,sha256=i5z2-LS8WG_VKWuFX1IM_f4waAr-fAQOzusFv2Vc7NA,11032
|
@@ -82,7 +82,7 @@ lusid/extensions/rest.py,sha256=tjVCu-cRrYcjp-ttB975vebPKtBNyBWaeoAdO3QXG2I,1269
|
|
82
82
|
lusid/extensions/retry.py,sha256=orBJ1uF1iT1IncjWX1iGHVqsCgTh0SBe9rtiV_sPnwk,11564
|
83
83
|
lusid/extensions/socket_keep_alive.py,sha256=NGlqsv-E25IjJOLGZhXZY6kUdx51nEF8qCQyVdzayRk,1653
|
84
84
|
lusid/extensions/tcp_keep_alive_connector.py,sha256=zaGtUsygRsxB1_4B3x39K3ILwztdhMLDv5bFZV7zmGE,3877
|
85
|
-
lusid/models/__init__.py,sha256=
|
85
|
+
lusid/models/__init__.py,sha256=2H_-odxZOoZHJBLzWc7235Wy2YrrUo-ybMykyvuCA_8,107314
|
86
86
|
lusid/models/a2_b_breakdown.py,sha256=Txi12EIQw3mH6NM-25QkOnHSQc3BVAWrP7yl9bZswSY,2947
|
87
87
|
lusid/models/a2_b_category.py,sha256=k6NPAACi0CUjKyhdQac4obQSrPmp2PXD6lkAtCnyEFM,2725
|
88
88
|
lusid/models/a2_b_data_record.py,sha256=zKGS2P4fzNpzdcGJiSIpkY4P3d_jAcawYfyuPCDeQgk,9737
|
@@ -175,7 +175,9 @@ lusid/models/calculation_info.py,sha256=ZdZp4VUza1yaBFDfPGZi6UHn4iy2N-pTbeVLdoNI
|
|
175
175
|
lusid/models/calendar.py,sha256=ZxD15NO_vvFHi6CTvYvYn0-oUOesbyGsRFzO47viJn4,3961
|
176
176
|
lusid/models/calendar_date.py,sha256=CtQHbrmTnJdrjtVTL5AWd6rYn6bl5rtPi1-Lm5KFEUE,3688
|
177
177
|
lusid/models/calendar_dependency.py,sha256=XYN9AYoLnwuL234DkyDbXArsWalMIdG8U2iU_3dBXrY,3871
|
178
|
+
lusid/models/cancel_orders_response.py,sha256=dbef36DqyiejdxVA9NwzQ5e0DGT9g7IfA4s6ZpfM4Xg,6033
|
178
179
|
lusid/models/cancel_placements_response.py,sha256=xe43QiiMvapew4BvR1C3wj5tYgn-zLy3cX54sdjbt3o,6089
|
180
|
+
lusid/models/cancelled_order_result.py,sha256=ZAwAhNd7IouFTPRwwYvAflZqlYkbweSttNmJ6cHoIkw,2187
|
179
181
|
lusid/models/cancelled_placement_result.py,sha256=eW3lgoyFakoGKcFSp3WN11bpuJyJun9jm8rVS4hdxwg,3127
|
180
182
|
lusid/models/cap_floor.py,sha256=njXRS6hQ-0fmlpaX7VVzLaxB5NpJHTYn_4HMp9e6BSA,6051
|
181
183
|
lusid/models/capital_distribution_event.py,sha256=UXD4-9IBaDXgMWueV-ivEeJ8RDDbPsPAq6Xx4bH5dyg,6691
|
@@ -417,11 +419,12 @@ lusid/models/fund_amount.py,sha256=F298PikXvooYgorqtdWwwOmSclzxqNfu6Q1BUK5Yt_E,1
|
|
417
419
|
lusid/models/fund_configuration.py,sha256=LjXCL02_v9d2MlAFq_a2lHZPMwCTLQKHszt0yHSk5y0,6659
|
418
420
|
lusid/models/fund_configuration_properties.py,sha256=hqKaBSMkSYC5UcWxkgDos41GYnm__6-Q23Z6SDsBgM4,4373
|
419
421
|
lusid/models/fund_configuration_request.py,sha256=pE74oPYKgMuNVGANRIqUV5I4j47VMQc7swDHIHFScNo,5681
|
422
|
+
lusid/models/fund_pnl_breakdown.py,sha256=FVWePhLbtAjdikBOG3yipSUD4fIbNnmsM7PsOe1cL4w,4421
|
420
423
|
lusid/models/fund_previous_nav.py,sha256=Vd6qd-nvikHAMjutM1QSYA4xYGWz45NGyLyg2v8pAsE,1930
|
421
424
|
lusid/models/fund_properties.py,sha256=f2PxknZIPrfAXR1MHSJxO1sdj_wNJfmulzYYEqdCByA,4242
|
422
425
|
lusid/models/fund_request.py,sha256=fBU3prGytCvKWfAzP0gHj4VUANarueKwB7r9evPoIEI,8345
|
423
426
|
lusid/models/fund_share_class.py,sha256=06VL9vb5vKCEmNFQbKPmj_uvJjn9QAyk9WjdD5ICBAA,6623
|
424
|
-
lusid/models/fund_valuation_point_data.py,sha256=
|
427
|
+
lusid/models/fund_valuation_point_data.py,sha256=iAuj4b7Kz8Ty67myYntjROcZBkhckc552Qj8YcpXDog,7240
|
425
428
|
lusid/models/funding_leg.py,sha256=b_0D_GqQCPqOllNvb6VSqyjBO4H2v7YYefAj7joTsBI,7455
|
426
429
|
lusid/models/funding_leg_options.py,sha256=_GxHVcvcsd96OaNcb7iHs43UUfrwVno_x2cNowUSwjw,3515
|
427
430
|
lusid/models/future.py,sha256=9jcXTZJxaijpVAz-8-65Jv9yig4qYQEeU2z9oRdEPaU,9084
|
@@ -915,9 +918,10 @@ lusid/models/set_transaction_configuration_alias.py,sha256=FTa9WQPxzZYO6DguFirEw
|
|
915
918
|
lusid/models/set_transaction_configuration_source_request.py,sha256=Sz1Kp__LcFo1ubK2S7lf5_NTjFL9Ab23kHikaj8DWxQ,4226
|
916
919
|
lusid/models/settlement_schedule.py,sha256=59PJAHeLK6_fxSRjQ7wGk4zUbyIMjZhiZ-RJ1aH22FY,2420
|
917
920
|
lusid/models/share_class_amount.py,sha256=l-3zCMzmy84d1c0co0t_DgXOCk8t2RKBZ1XljO1jOks,2133
|
918
|
-
lusid/models/share_class_breakdown.py,sha256=
|
921
|
+
lusid/models/share_class_breakdown.py,sha256=IrD_nQ6cMUod_fA8V_vWAVGgbPh8ccQgP6xQ_hodTJk,8058
|
919
922
|
lusid/models/share_class_data.py,sha256=dQp2IM-pzSazRdXT4aIHN3BsWiso360CemAwWmu_UH0,2903
|
920
923
|
lusid/models/share_class_details.py,sha256=dBbEwt4rC4zox8dzf0XiZQwJv_s8kSqgNWmXIqJTym4,4040
|
924
|
+
lusid/models/share_class_pnl_breakdown.py,sha256=fKJrgNp-Fn9c52DXeNdwAWz-WZ2suJ8-LdyAl5iZRrY,4551
|
921
925
|
lusid/models/side_configuration_data.py,sha256=iv4nyDEEAYA2TUfY-dlqOGwn-mft8qMGVQk6itgxqe4,3518
|
922
926
|
lusid/models/side_configuration_data_request.py,sha256=qWt-UDjQbcoPpHCUpRwcSN8NFfcZ4TpHMn2dRuR3WVw,2842
|
923
927
|
lusid/models/side_definition.py,sha256=GpAnmArPMxwMe_BHZVihoYi9-Dl8HbQJ3nW4QAxXXow,4149
|
@@ -954,7 +958,7 @@ lusid/models/target_tax_lot.py,sha256=0rexGWPhEdOaj5_Z6OLxb-7AVTMYL4PfaI_Xcw5ZLm
|
|
954
958
|
lusid/models/target_tax_lot_request.py,sha256=UwhPoC9hMlbjBZ3dL28Yq2orn1v3vJ7eLctnEGkjKy4,4290
|
955
959
|
lusid/models/tax_rule.py,sha256=Mwc712YrMyeqXxJB6aUgNjCxy872or0_dtoNUZFNOBw,3530
|
956
960
|
lusid/models/tax_rule_set.py,sha256=aBWdkCHrurQHB4ZdyVUxOj0CJaZ6muaCcCenCtpJlqc,5007
|
957
|
-
lusid/models/template_field.py,sha256=
|
961
|
+
lusid/models/template_field.py,sha256=uwh7AKQ-BnT54KvMZrVmyi3o0NUUzmtLvxwoXHwNs9A,2473
|
958
962
|
lusid/models/term_deposit.py,sha256=HiLQimepReB53MDPkupZ3TFpRuvks2LNYJjvSJtr3ik,6727
|
959
963
|
lusid/models/total_return_swap.py,sha256=PnMrI8rROBNQTcOy7pz72aPiPIMz1LlBnD0_t6biLz4,7122
|
960
964
|
lusid/models/touch.py,sha256=OECUpEFcCT1kPT5SJIsoNHtR8k2AhEAbDd6P86NcF4s,2726
|
@@ -1109,6 +1113,6 @@ lusid/models/weighted_instruments.py,sha256=1y_y_vw4-LPsbkQx4FOzWdZc5fJnzhVkf1D3
|
|
1109
1113
|
lusid/models/yield_curve_data.py,sha256=SbxvdJ4-GWK9kpMdw4Fnxc7_kvIMwgsRsd_31UJn7nw,6330
|
1110
1114
|
lusid/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1111
1115
|
lusid/rest.py,sha256=TNUzQ3yLNT2L053EdR7R0vNzQh2J3TlYD1T56Dye0W0,10138
|
1112
|
-
lusid_sdk-2.1.
|
1113
|
-
lusid_sdk-2.1.
|
1114
|
-
lusid_sdk-2.1.
|
1116
|
+
lusid_sdk-2.1.319.dist-info/METADATA,sha256=K-YfXK-0xxb49vOWYwWARK6MTZ8PgCAz3gEdo5okuBs,187771
|
1117
|
+
lusid_sdk-2.1.319.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
|
1118
|
+
lusid_sdk-2.1.319.dist-info/RECORD,,
|
File without changes
|